Forum | Documentation | Website | Blog

Skip to content
Snippets Groups Projects
  1. May 06, 2008
    • Greg Kroah-Hartman's avatar
      Linux 2.6.24.7 · 928bb8c4
      Greg Kroah-Hartman authored
      v2.6.24.7
      928bb8c4
    • Al Viro's avatar
      fix SMP ordering hole in fcntl_setlk() (CVE-2008-1669) · 0bbbae3b
      Al Viro authored
      commit 0b2bac2f
      
       upstream.
      
      fcntl_setlk()/close() race prevention has a subtle hole - we need to
      make sure that if we *do* have an fcntl/close race on SMP box, the
      access to descriptor table and inode->i_flock won't get reordered.
      
      As it is, we get STORE inode->i_flock, LOAD descriptor table entry vs.
      STORE descriptor table entry, LOAD inode->i_flock with not a single
      lock in common on both sides.  We do have BKL around the first STORE,
      but check in locks_remove_posix() is outside of BKL and for a good
      reason - we don't want BKL on common path of close(2).
      
      Solution is to hold ->file_lock around fcheck() in there; that orders
      us wrt removal from descriptor table that preceded locks_remove_posix()
      on close path and we either come first (in which case eviction will be
      handled by the close side) or we'll see the effect of close and do
      eviction ourselves.  Note that even though it's read-only access,
      we do need ->file_lock here - rcu_read_lock() won't be enough to
      order the things.
      
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      0bbbae3b
  2. May 01, 2008
  3. Apr 18, 2008