Florian Westphal
2018-Dec-29 09:52 UTC
[Bridge] [PATCH] netfilter: account ebt_table_info to kmemcg
Michal Hocko <mhocko at kernel.org> wrote:> On Fri 28-12-18 17:55:24, Shakeel Butt wrote: > > The [ip,ip6,arp]_tables use x_tables_info internally and the underlying > > memory is already accounted to kmemcg. Do the same for ebtables. The > > syzbot, by using setsockopt(EBT_SO_SET_ENTRIES), was able to OOM the > > whole system from a restricted memcg, a potential DoS. > > What is the lifetime of these objects? Are they bound to any process?No, they are not. They are free'd only when userspace requests it or the netns is destroyed.
Michal Hocko
2018-Dec-29 10:06 UTC
[Bridge] [PATCH] netfilter: account ebt_table_info to kmemcg
On Sat 29-12-18 10:52:15, Florian Westphal wrote:> Michal Hocko <mhocko at kernel.org> wrote: > > On Fri 28-12-18 17:55:24, Shakeel Butt wrote: > > > The [ip,ip6,arp]_tables use x_tables_info internally and the underlying > > > memory is already accounted to kmemcg. Do the same for ebtables. The > > > syzbot, by using setsockopt(EBT_SO_SET_ENTRIES), was able to OOM the > > > whole system from a restricted memcg, a potential DoS. > > > > What is the lifetime of these objects? Are they bound to any process? > > No, they are not. > They are free'd only when userspace requests it or the netns is > destroyed.Then this is problematic, because the oom killer is not able to guarantee the hard limit and so the excessive memory consumption cannot be really contained. As a result the memcg will be basically useless until somebody tears down the charged objects by other means. The memcg oom killer will surely kill all the existing tasks in the cgroup and this could somehow reduce the problem. Maybe this is sufficient for some usecases but that should be properly analyzed and described in the changelog. -- Michal Hocko SUSE Labs