summaryrefslogtreecommitdiff
path: root/fs/aio.c
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2010-08-26 16:12:01 -0700
committerSage Weil <sage@newdream.net>2010-09-11 10:52:47 -0700
commitca04d9c3ec721e474f00992efc1b1afb625507f5 (patch)
tree9dfe95fe2a08ff008888a754db10f31ac04fbea4 /fs/aio.c
parent2bfc96a127bc1cc94d26bfaa40159966064f9c8c (diff)
downloadlinux-3.10-ca04d9c3ec721e474f00992efc1b1afb625507f5.tar.gz
linux-3.10-ca04d9c3ec721e474f00992efc1b1afb625507f5.tar.bz2
linux-3.10-ca04d9c3ec721e474f00992efc1b1afb625507f5.zip
ceph: fix null pointer deref on anon root dentry release
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: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/aio.c')
0 files changed, 0 insertions, 0 deletions