xfs: memory barrier before wake_up_bit()
In xfs_ifunlock() there is a call to wake_up_bit() after clearing the flush lock on the xfs inode. This is not guaranteed to be safe, as noted in the comments above wake_up_bit() beginning with: In order for this to function properly, as it uses waitqueue_active() internally, some kind of memory barrier must be done prior to calling this. Signed-off-by: Alex Elder <elder@inktank.com> Reviewed-by: Dave Chinner <david@fromorbit.com> Signed-off-by: Ben Myers <bpm@sgi.com>
This commit is contained in:
Родитель
a21cd50367
Коммит
311f08acde
|
@ -419,6 +419,7 @@ static inline void xfs_iflock(struct xfs_inode *ip)
|
|||
static inline void xfs_ifunlock(struct xfs_inode *ip)
|
||||
{
|
||||
xfs_iflags_clear(ip, XFS_IFLOCK);
|
||||
smp_mb();
|
||||
wake_up_bit(&ip->i_flags, __XFS_IFLOCK_BIT);
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче