Whamcloud - gitweb
LU-11944 llite: Lock inode on tiny write if setuid/setgid set 61/34461/4
authorAnn Koehler <amk@cray.com>
Fri, 8 Feb 2019 21:41:37 +0000 (15:41 -0600)
committerOleg Drokin <green@whamcloud.com>
Mon, 8 Apr 2019 06:32:48 +0000 (06:32 +0000)
commit009ee0ba61e965327ab0f91f151dbb5932e016d4
treef86b139c4b48ac080cc1cfa2a790ae3997d08e55
parent845338af031a26f4b42fa21352183bd4709ebddc
LU-11944 llite: Lock inode on tiny write if setuid/setgid set

During a write, the setuid/setgid bits must be reset if they are
enabled and the user does not have the correct permissions. Setting
any file attributes, including setuid and setgid, requires the inode
to be locked. Writes became lockless with the introduction of
LU-1669. Locking the inode in the setuid/setgid case was added to
vvp_io_write_start() as a special case. The inode locking was not
included when support for tiny writes was added with LU-9409. This
mod adds the necessary inode lock/unlock calls to ll_do_tiny_write().

If the inode is not locked when setuid/setgid are reset, the kernel
will issue a one time warning and Lustre may hang trying to get the
inode lock in ll_setattr_raw().

Lustre-change: https://review.whamcloud.com/34218
Lustre-commit: f39a552922ca2db0c6974374fa3a917a34a4a747

Signed-off-by: Ann Koehler <amk@cray.com>
Change-Id: I5e8a98789828de52dbff4226958741320aba92e6
Reviewed-by: Patrick Farrell <pfarrell@whamcloud.com>
Reviewed-by: Ben Evans <bevans@cray.com>
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Signed-off-by: Minh Diep <mdiep@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/34461
Tested-by: Jenkins
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/llite/file.c
lustre/llite/vvp_io.c