summaryrefslogtreecommitdiff
path: root/fs/ceph/osd_client.c
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2010-03-15 22:20:39 -0700
committerSage Weil <sage@newdream.net>2010-03-23 07:46:51 -0700
commit12eadc190038e68b5884a4aa313b6ab89ba60f5e (patch)
treeba53a7209528981aec774f99132723b913a9e6ae /fs/ceph/osd_client.c
parent0a990e7093566ceb07e38951e1a01686923d4f09 (diff)
downloadlinux-3.10-12eadc190038e68b5884a4aa313b6ab89ba60f5e.tar.gz
linux-3.10-12eadc190038e68b5884a4aa313b6ab89ba60f5e.tar.bz2
linux-3.10-12eadc190038e68b5884a4aa313b6ab89ba60f5e.zip
ceph: fix null pointer deref of r_osd in debug output
This causes an oops when debug output is enabled and we kick an osd request with no current r_osd (sometime after an osd failure). Check the pointer before dereferencing. Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/osd_client.c')
-rw-r--r--fs/ceph/osd_client.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ceph/osd_client.c b/fs/ceph/osd_client.c
index dbe63db9762..221038253e6 100644
--- a/fs/ceph/osd_client.c
+++ b/fs/ceph/osd_client.c
@@ -913,7 +913,7 @@ static int __kick_requests(struct ceph_osd_client *osdc,
kick:
dout("kicking %p tid %llu osd%d\n", req, req->r_tid,
- req->r_osd->o_osd);
+ req->r_osd ? req->r_osd->o_osd : -1);
req->r_flags |= CEPH_OSD_FLAG_RETRY;
err = __send_request(osdc, req);
if (err) {