[PATCH] xfs: take XFS_IOLOCK_EXCL if suid removal is required

Eric Sandeen sandeen at sandeen.net
Mon Jun 15 10:26:37 CDT 2015


On 3/6/15 3:09 PM, Dave Chinner wrote:
> On Fri, Mar 06, 2015 at 10:54:06AM -0600, Eric Sandeen wrote:
>> This sequence:
>>
>> # rm -f sparsefile
>> # truncate --size=1m sparsefile
>> # chmod ugo+rws sparsefile
>> # ls -l sparsefile
>> -rwSrwSrw-. 1 root root 1048576 Mar  6 10:29 sparsefile
>> # su tester
>>
>> $ xfs_io -d -c "pwrite 0 4096" sparsefile
>> wrote 4096/4096 bytes at offset 0
>> 4 KiB, 1 ops; 0.0000 sec (21.505 KiB/sec and 5.3763 ops/sec)
>> $ exit
>>
>> will lead to a WARN_ON() in notify change, because i_mutex is
>> not held, and we get to notify_change via suid removal with
>> only XFS_IOLOCK_SHARED held, i.e. no i_mutex.
>>
>> Upgrade the lock to XFS_IOLOCK_EXCL in this case.
>>
>> Signed-off-by: Eric Sandeen <sandeen at redhat.com>
> 
> I believe Jan Kara has already addressed this problem in
> this patchset:
> 
> http://oss.sgi.com/archives/xfs/2015-03/msg00051.html

Seems like that patchset never made it anywhere, though, so this
is still an outstanding problem.  :(

-Eric



More information about the xfs mailing list