Re: [RFC PATCH] fanotify: wake-up all waiters on release

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri 20-06-25 14:48:47, Sergey Senozhatsky wrote:
> On (25/06/20 13:53), Sergey Senozhatsky wrote:
> > On (25/05/26 23:12), Sergey Senozhatsky wrote:
> [..]
> > Surprisingly enough, this did not help.
> > 
> > Jan, one more silly question:
> > 
> > fsnotify_get_mark_safe() and fsnotify_put_mark_wake() can be called on
> > NULL mark.  Is it possible that between fsnotify_prepare_user_wait(iter_info)
> > and fsnotify_finish_user_wait(iter_info) iter_info->marks[type] changes in
> > such a way that creates imbalance?  That is, fsnotify_finish_user_wait() sees
> > more NULL marks and hence does not rollback all the group->user_waits
> > increments that fsnotify_prepare_user_wait() did?
> 
> No, that doesn't seem to be possible.  Sorry for the noise.

Yeah, iter_info is local and should not change outside of the call itself.

> My another silly idea was, fsnotify_put_mark_wake() is called in a loop
> and it tests group->shutdown locklessly, as far as I can tell, so maybe
> there is a speculative load and we use stale/"cached" group->shutdown
> value w/o ever waking up ->notification_waitq.  Am running out of ideas.

Well, but atomic_dec_and_test() in fsnotify_put_mark_wake() should be a
full memory barrier so such reordering should not be possible? At least
not on the CPU, you can check disassembly of fsnotify_put_mark_wake() on
your kernel whether the fetch of group->shutdown indeed happens after the
atomic_dec_and_test() (but it should because && is a sequencing point and
thus a compiler barrier).

								Honza

-- 
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux