Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'locks-v3.16-2' of git://git.samba.org/jlayton/linux

Pull file locking fixes from Jeff Layton:
"File locking related bugfixes

Nothing too earth-shattering here. A fix for a potential regression
due to a patch in pile #1, and the addition of a memory barrier to
prevent a race condition between break_deleg and generic_add_lease"

* tag 'locks-v3.16-2' of git://git.samba.org/jlayton/linux:
locks: set fl_owner for leases back to current->files
locks: add missing memory barrier in break_deleg

+7 -1
+1 -1
fs/locks.c
··· 431 431 if (assign_type(fl, type) != 0) 432 432 return -EINVAL; 433 433 434 - fl->fl_owner = (fl_owner_t)filp; 434 + fl->fl_owner = (fl_owner_t)current->files; 435 435 fl->fl_pid = current->tgid; 436 436 437 437 fl->fl_file = filp;
+6
include/linux/fs.h
··· 1921 1921 1922 1922 static inline int break_deleg(struct inode *inode, unsigned int mode) 1923 1923 { 1924 + /* 1925 + * Since this check is lockless, we must ensure that any refcounts 1926 + * taken are done before checking inode->i_flock. Otherwise, we could 1927 + * end up racing with tasks trying to set a new lease on this file. 1928 + */ 1929 + smp_mb(); 1924 1930 if (inode->i_flock) 1925 1931 return __break_lease(inode, mode, FL_DELEG); 1926 1932 return 0;