diff options
author | David S. Miller <davem@davemloft.net> | 2014-06-25 22:40:43 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-06-25 22:40:43 -0700 |
commit | 9b8d90b963dcc6d3f3f6a616b3547ea1c8b03525 (patch) | |
tree | bca8230897630ca6721bdd7b959142984afa256a /include/linux/fs.h | |
parent | 644a918d20336a7deaa81f675c3c2f25bf3dafbb (diff) | |
parent | d7933ab727ed035bdf420d7381b831ba959cecc5 (diff) | |
download | op-kernel-dev-9b8d90b963dcc6d3f3f6a616b3547ea1c8b03525.zip op-kernel-dev-9b8d90b963dcc6d3f3f6a616b3547ea1c8b03525.tar.gz |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'include/linux/fs.h')
-rw-r--r-- | include/linux/fs.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index 338e6f7..e11d60c 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1921,6 +1921,12 @@ static inline int break_lease(struct inode *inode, unsigned int mode) static inline int break_deleg(struct inode *inode, unsigned int mode) { + /* + * Since this check is lockless, we must ensure that any refcounts + * taken are done before checking inode->i_flock. Otherwise, we could + * end up racing with tasks trying to set a new lease on this file. + */ + smp_mb(); if (inode->i_flock) return __break_lease(inode, mode, FL_DELEG); return 0; |