Fix up non-directory creation in SGID directories
commitc5f2c5be9d1787a7bde81186d093be54c0caeb34
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 4 Jul 2018 00:10:19 +0000 (3 17:10 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 22 Jul 2018 11:43:24 +0000 (22 13:43 +0200)
treedcbb2b1b0e233819d7f401e2e229a41830135b7b
parent56777c546d9e271792db6f60193eb3c003787eb6
Fix up non-directory creation in SGID directories

commit 0fa3ecd87848c9c93c2c828ef4c3a8ca36ce46c7 upstream.

sgid directories have special semantics, making newly created files in
the directory belong to the group of the directory, and newly created
subdirectories will also become sgid.  This is historically used for
group-shared directories.

But group directories writable by non-group members should not imply
that such non-group members can magically join the group, so make sure
to clear the sgid bit on non-directories for non-members (but remember
that sgid without group execute means "mandatory locking", just to
confuse things even more).

Reported-by: Jann Horn <jannh@google.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/inode.c