diff options
author | Ilya Dryomov <ilya.dryomov@inktank.com> | 2014-02-05 14:19:55 +0100 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2014-02-07 20:37:07 +0100 |
commit | 0ec1d15ec6ed513ab2cc86c67d94761d71228a32 (patch) | |
tree | cc8da7ba4af20ea86d1dccdbedcffeb19ddd2059 /net | |
parent | libceph: take map_sem for read in handle_reply() (diff) | |
download | linux-0ec1d15ec6ed513ab2cc86c67d94761d71228a32.tar.xz linux-0ec1d15ec6ed513ab2cc86c67d94761d71228a32.zip |
libceph: do not dereference a NULL bio pointer
Commit f38a5181d9f3 ("ceph: Convert to immutable biovecs") introduced
a NULL pointer dereference, which broke rbd in -rc1. Fix it.
Cc: Kent Overstreet <kmo@daterainc.com>
Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
Diffstat (limited to '')
-rw-r--r-- | net/ceph/messenger.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c index 0e478a0f4204..30efc5c18622 100644 --- a/net/ceph/messenger.c +++ b/net/ceph/messenger.c @@ -840,9 +840,13 @@ static bool ceph_msg_data_bio_advance(struct ceph_msg_data_cursor *cursor, if (!cursor->bvec_iter.bi_size) { bio = bio->bi_next; - cursor->bvec_iter = bio->bi_iter; + cursor->bio = bio; + if (bio) + cursor->bvec_iter = bio->bi_iter; + else + memset(&cursor->bvec_iter, 0, + sizeof(cursor->bvec_iter)); } - cursor->bio = bio; if (!cursor->last_piece) { BUG_ON(!cursor->resid); |