From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Serge E. Hallyn" Subject: Re: cgroup: BUG: unable to handle kernel NULL pointer dereference Date: Sat, 2 Jan 2016 21:41:24 -0600 Message-ID: <20160103034124.GA6569@mail.hallyn.com> References: <20160101234028.GA1750@hudson.localdomain> <20160102115437.GE3660@htj.duckdns.org> <20160102182416.GA3957@mail.hallyn.com> <20160102215049.GA18564@hudson.localdomain> <20160103005916.GA5956@mail.hallyn.com> Mime-Version: 1.0 Return-path: Content-Disposition: inline In-Reply-To: <20160103005916.GA5956-7LNsyQBKDXoIagZqoN9o3w@public.gmane.org> Sender: cgroups-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-ID: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: "Serge E. Hallyn" Cc: Jeremiah Mahler , Tejun Heo , cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Stephen Rothwell , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Dan Williams On Sat, Jan 02, 2016 at 06:59:16PM -0600, Serge E. Hallyn wrote: > On Sat, Jan 02, 2016 at 01:50:49PM -0800, Jeremiah Mahler wrote: > > Serge, > > > > On Sat, Jan 02, 2016 at 12:24:16PM -0600, Serge E. Hallyn wrote: > > [...] > > > > > > Tried to reproduce with setting CONFIG_CFQ_GROUP_IOSCHED=y, but did not > > > succeed. Could you send me the .config? Also, if someone could send > > > the objdump -d output that might help. Though really, it seems clear > > > that current->nsproxy must be NULL. Hm, that's right - we used to have > > > that issue in pidns (or was it netns) during process exit. I don't know > > > that I'll get time this afternoon, but I'll look into it asap. > > > > > > thanks. > > > > Attached is the .config I used. I can send an objdump, but do you want > > a dump of the kernel, where the cgroup code is? > > > > -- > > - Jeremiah Mahler > > Thanks - Shoulda looked at the exit path before - exit_io_context is called > after exit_task_namespaces(). > > I'll have to figure out the best way to handle this. In the past we've > restructured exit code to ensure that anything wanting to dereference > nsproxy happened before exit_task_namespaces(). However, this is only > happening in a debug stmt at blkg_path() in > http://lxr.free-electrons.com/source/include/linux/blk-cgroup.h#L344 > so simply returning the init_cgroup_namespace is actually the right thing > to do. I'm tempted to add a init_cgroup_path() which ignores namespaces, > for use in debugging statements. Or really I think it makes more sense to make cgroup_path_ns() take the namespace into account, switch over cgroup_path() users who want _ns(), and leave cgroup_path() using the initial cgroup namespace.