ceph: fix null pointer deref of r_osd in debug output
authorSage Weil <sage@newdream.net>
Tue, 16 Mar 2010 05:20:39 +0000 (22:20 -0700)
committerSage Weil <sage@newdream.net>
Tue, 23 Mar 2010 14:46:51 +0000 (07:46 -0700)
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>
fs/ceph/osd_client.c

index dbe63db9762fc11048bbe5f3bcb37e0aad7f3e2c..221038253e61c70a098532f4e590ce8edbea89e6 100644 (file)
@@ -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) {