1. 15 May, 2010 3 commits
    • Dan Carpenter's avatar
      fs/sysv: dereferencing ERR_PTR() · 404e7812
      Dan Carpenter authored
      I moved the dir_put_page() inside the if condition so we don't dereference
      "page", if it's an ERR_PTR().
      Signed-off-by: default avatarDan Carpenter <error27@gmail.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      404e7812
    • Al Viro's avatar
      Fix double-free in logfs · 26562449
      Al Viro authored
      iput() is needed *until* we'd done successful d_alloc_root()
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      26562449
    • Al Viro's avatar
      Fix the regression created by "set S_DEAD on unlink()..." commit · d83c49f3
      Al Viro authored
      1) i_flags simply doesn't work for mount/unlink race prevention;
      we may have many links to file and rm on one of those obviously
      shouldn't prevent bind on top of another later on.  To fix it
      right way we need to mark _dentry_ as unsuitable for mounting
      upon; new flag (DCACHE_CANT_MOUNT) is protected by d_flags and
      i_mutex on the inode in question.  Set it (with dont_mount(dentry))
      in unlink/rmdir/etc., check (with cant_mount(dentry)) in places
      in namespace.c that used to check for S_DEAD.  Setting S_DEAD
      is still needed in places where we used to set it (for directories
      getting killed), since we rely on it for readdir/rmdir race
      prevention.
      
      2) rename()/mount() protection has another bogosity - we unhash
      the target before we'd checked that it's not a mountpoint.  Fixed.
      
      3) ancient bogosity in pivot_root() - we locked i_mutex on the
      right directory, but checked S_DEAD on the different (and wrong)
      one.  Noticed and fixed.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      d83c49f3
  2. 13 May, 2010 27 commits
  3. 12 May, 2010 10 commits