module: error out early on concurrent load of the same module file
[sfrench/cifs-2.6.git] / include / linux / fs.h
index 133f0640fb2411478a2dbaacbbee0fec9336c27b..86b50271b4f74e2352d161816c4b020797fe87c8 100644 (file)
@@ -2566,6 +2566,12 @@ static inline int deny_write_access(struct file *file)
        struct inode *inode = file_inode(file);
        return atomic_dec_unless_positive(&inode->i_writecount) ? 0 : -ETXTBSY;
 }
+static inline int exclusive_deny_write_access(struct file *file)
+{
+       int old = 0;
+       struct inode *inode = file_inode(file);
+       return atomic_try_cmpxchg(&inode->i_writecount, &old, -1) ? 0 : -ETXTBSY;
+}
 static inline void put_write_access(struct inode * inode)
 {
        atomic_dec(&inode->i_writecount);