diff options
author | Josh Durgin <josh.durgin@inktank.com> | 2013-08-28 20:08:10 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-01-09 15:24:26 -0500 |
commit | dd932ee7a2453d86c920d3bbd2938602c5c9aaca (patch) | |
tree | 0577bef9a91c9d8bcef21589eff94826e7484538 /drivers/block | |
parent | b33b7132f0feeb0716390330bd5d53fabe057f25 (diff) |
rbd: fix null dereference in dout
commit c35455791c1131e7ccbf56ea6fbdd562401c2ce2 upstream.
The order parameter is sometimes NULL in _rbd_dev_v2_snap_size(), but
the dout() always derefences it. Move this to another dout() protected
by a check that order is non-NULL.
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
Reviewed-by: Alex Elder <alex.elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/rbd.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index bb9948725973..1d29dab42c0a 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c | |||
@@ -3712,12 +3712,14 @@ static int _rbd_dev_v2_snap_size(struct rbd_device *rbd_dev, u64 snap_id, | |||
3712 | if (ret < sizeof (size_buf)) | 3712 | if (ret < sizeof (size_buf)) |
3713 | return -ERANGE; | 3713 | return -ERANGE; |
3714 | 3714 | ||
3715 | if (order) | 3715 | if (order) { |
3716 | *order = size_buf.order; | 3716 | *order = size_buf.order; |
3717 | dout(" order %u", (unsigned int)*order); | ||
3718 | } | ||
3717 | *snap_size = le64_to_cpu(size_buf.size); | 3719 | *snap_size = le64_to_cpu(size_buf.size); |
3718 | 3720 | ||
3719 | dout(" snap_id 0x%016llx order = %u, snap_size = %llu\n", | 3721 | dout(" snap_id 0x%016llx snap_size = %llu\n", |
3720 | (unsigned long long)snap_id, (unsigned int)*order, | 3722 | (unsigned long long)snap_id, |
3721 | (unsigned long long)*snap_size); | 3723 | (unsigned long long)*snap_size); |
3722 | 3724 | ||
3723 | return 0; | 3725 | return 0; |