aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block
diff options
context:
space:
mode:
authorJosh Durgin <josh.durgin@inktank.com>2013-08-28 20:08:10 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-01-09 15:24:26 -0500
commitdd932ee7a2453d86c920d3bbd2938602c5c9aaca (patch)
tree0577bef9a91c9d8bcef21589eff94826e7484538 /drivers/block
parentb33b7132f0feeb0716390330bd5d53fabe057f25 (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.c8
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;