| From: Al Viro <viro@zeniv.linux.org.uk> |
| Date: Tue, 29 Oct 2019 13:53:29 +0000 |
| Subject: ceph: add missing check in d_revalidate snapdir handling |
| |
| commit 1f08529c84cfecaf1261ed9b7e17fab18541c58f upstream. |
| |
| We should not play with dcache without parent locked... |
| |
| Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> |
| Signed-off-by: Jeff Layton <jlayton@kernel.org> |
| Signed-off-by: Ilya Dryomov <idryomov@gmail.com> |
| [bwh: Backported to 3.16: |
| - Test ceph_mds_request::r_locked_dir |
| - Adjust context] |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| fs/ceph/inode.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/fs/ceph/inode.c |
| +++ b/fs/ceph/inode.c |
| @@ -1260,6 +1260,7 @@ retry_lookup: |
| req->r_request_started); |
| dout(" final dn %p\n", dn); |
| } else if (!req->r_aborted && |
| + req->r_locked_dir && |
| (req->r_op == CEPH_MDS_OP_LOOKUPSNAP || |
| req->r_op == CEPH_MDS_OP_MKSNAP)) { |
| struct dentry *dn = req->r_dentry; |