userns: move user access out of the mutex
authorJann Horn <jannh@google.com>
Mon, 25 Jun 2018 16:34:19 +0000 (18:34 +0200)
committerEric W. Biederman <ebiederm@xmission.com>
Sat, 11 Aug 2018 07:05:53 +0000 (02:05 -0500)
commit5820f140edef111a9ea2ef414ab2428b8cb805b1
tree3c8f89bbc5c3dcf1bdc0713dd1bcd1d9997c5da4
parent355139a8dba446cc11a424cddbf7afebc3041ba1
userns: move user access out of the mutex

The old code would hold the userns_state_mutex indefinitely if
memdup_user_nul stalled due to e.g. a userfault region. Prevent that by
moving the memdup_user_nul in front of the mutex_lock().

Note: This changes the error precedence of invalid buf/count/*ppos vs
map already written / capabilities missing.

Fixes: 22d917d80e84 ("userns: Rework the user_namespace adding uid/gid...")
Cc: stable@vger.kernel.org
Signed-off-by: Jann Horn <jannh@google.com>
Acked-by: Christian Brauner <christian@brauner.io>
Acked-by: Serge Hallyn <serge@hallyn.com>
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
kernel/user_namespace.c