Discussion:
[PATCH] rbd: Fix error recovery in rbd_obj_read_sync()
Jan Kara
2014-10-22 07:17:24 UTC
Permalink
When we fail to allocate page vector in rbd_obj_read_sync() we just
basically ignore the problem and continue which will result in an oops
later. Fix the problem by returning proper error.

CC: Yehuda Sadeh <***@inktank.com>
CC: Sage Weil <***@inktank.com>
CC: ceph-***@vger.kernel.org
CC: ***@vger.kernel.org
Coverity-id: 1226882
Signed-off-by: Jan Kara <***@suse.cz>
---
drivers/block/rbd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index 0a54c588e433..8f714c3ed25f 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -3532,7 +3532,7 @@ static int rbd_obj_read_sync(struct rbd_device *rbd_dev,
page_count = (u32) calc_pages_for(offset, length);
pages = ceph_alloc_page_vector(page_count, GFP_KERNEL);
if (IS_ERR(pages))
- ret = PTR_ERR(pages);
+ return PTR_ERR(pages);

ret = -ENOMEM;
obj_request = rbd_obj_request_create(object_name, offset, length,
--
1.8.1.4

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Ilya Dryomov
2014-10-22 07:44:17 UTC
Permalink
Post by Jan Kara
When we fail to allocate page vector in rbd_obj_read_sync() we just
basically ignore the problem and continue which will result in an oops
later. Fix the problem by returning proper error.
Coverity-id: 1226882
---
drivers/block/rbd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index 0a54c588e433..8f714c3ed25f 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -3532,7 +3532,7 @@ static int rbd_obj_read_sync(struct rbd_device *rbd_dev,
page_count = (u32) calc_pages_for(offset, length);
pages = ceph_alloc_page_vector(page_count, GFP_KERNEL);
if (IS_ERR(pages))
- ret = PTR_ERR(pages);
+ return PTR_ERR(pages);
ret = -ENOMEM;
obj_request = rbd_obj_request_create(object_name, offset, length,
Applied.

Thanks,

Ilya

Loading...