• Sage Weil's avatar
    ceph: fix null pointer deref on anon root dentry release · ca04d9c3
    Sage Weil authored
    When we release a root dentry, particularly after a splice, the parent
    (actually our) inode was evaluating to NULL and was getting dereferenced
    by ceph_snap().  This is reproduced by something as simple as
    
     mount -t ceph monhost:/a/b mnt
     mount -t ceph monhost:/a mnt2
     ls mnt2
    
    A splice_dentry() would kill the old 'b' inode's root dentry, and we'd
    crash while releasing it.
    
    Fix by checking for both the ROOT and NULL cases explicitly.  We only need
    to invalidate the parent dir when we have a correct parent to invalidate.
    Signed-off-by: default avatarSage Weil <sage@newdream.net>
    ca04d9c3
dir.c 34.2 KB