|
Message-ID: <87lfp7h422.fsf@x220.int.ebiederm.org> Date: Wed, 12 Feb 2020 15:46:29 -0600 From: ebiederm@...ssion.com (Eric W. Biederman) To: Linus Torvalds <torvalds@...ux-foundation.org> Cc: Al Viro <viro@...iv.linux.org.uk>, LKML <linux-kernel@...r.kernel.org>, Kernel Hardening <kernel-hardening@...ts.openwall.com>, Linux API <linux-api@...r.kernel.org>, Linux FS Devel <linux-fsdevel@...r.kernel.org>, Linux Security Module <linux-security-module@...r.kernel.org>, Akinobu Mita <akinobu.mita@...il.com>, Alexey Dobriyan <adobriyan@...il.com>, Andrew Morton <akpm@...ux-foundation.org>, Andy Lutomirski <luto@...nel.org>, Daniel Micay <danielmicay@...il.com>, Djalal Harouni <tixxdz@...il.com>, "Dmitry V . Levin" <ldv@...linux.org>, Greg Kroah-Hartman <gregkh@...uxfoundation.org>, Ingo Molnar <mingo@...nel.org>, "J . Bruce Fields" <bfields@...ldses.org>, Jeff Layton <jlayton@...chiereds.net>, Jonathan Corbet <corbet@....net>, Kees Cook <keescook@...omium.org>, Oleg Nesterov <oleg@...hat.com>, Solar Designer <solar@...nwall.com> Subject: Re: [PATCH v8 07/11] proc: flush task dcache entries from all procfs instances Linus Torvalds <torvalds@...ux-foundation.org> writes: > On Wed, Feb 12, 2020 at 12:41 PM Al Viro <viro@...iv.linux.org.uk> wrote: >> >> On Wed, Feb 12, 2020 at 08:38:33PM +0000, Al Viro wrote: >> > >> > Wait, I thought the whole point of that had been to allow multiple >> > procfs instances for the same userns? Confused... >> >> s/userns/pidns/, sorry > > Right, but we still hold the ref to it here... > > [ Looks more ] > > Oooh. No we don't. Exactly because we don't hold the lock, only the > rcu lifetime, the ref can go away from under us. I see what your > concern is. > > Ouch, this is more painful than I expected - the code flow looked so > simple. I really wanted to avoid a new lock during process shutdown, > because that has always been somewhat painful. The good news is proc_flush_task isn't exactly called from process exit. proc_flush_task is called during zombie clean up. AKA release_task. So proc_flush_task isn't called with any locks held, and it is called in a context where it can sleep. Further after proc_flush_task does it's thing the code goes and does "write_lock_irq(&task_list_lock);" So the code is definitely serialized to one processor already. What would be downside of having a mutex for a list of proc superblocks? A mutex that is taken for both reading and writing the list. Eric
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.