diff mbox series

zram: fix error return codes not being returned in writeback_store

Message ID 20191128122958.178290-1-colin.king@canonical.com (mailing list archive)
State New, archived
Headers show
Series zram: fix error return codes not being returned in writeback_store | expand

Commit Message

Colin King Nov. 28, 2019, 12:29 p.m. UTC
From: Colin Ian King <colin.king@canonical.com>

Currently when an error code -EIO or -ENOSPC in the for-loop of
writeback_store the error code is being overwritten by a ret = len
assignment at the end of the function and the error codes are being
lost.  Fix this by assigning ret = len at the start of the function
and remove the assignment from the end, hence allowing ret to be
preserved when error codes are assigned to it.

Addresses-Coverity: ("Unused value")
Fixes: a939888ec38b ("zram: support idle/huge page writeback")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 drivers/block/zram/zram_drv.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Minchan Kim Dec. 4, 2019, 1:16 a.m. UTC | #1
On Thu, Nov 28, 2019 at 12:29:58PM +0000, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
> 
> Currently when an error code -EIO or -ENOSPC in the for-loop of
> writeback_store the error code is being overwritten by a ret = len
> assignment at the end of the function and the error codes are being
> lost.  Fix this by assigning ret = len at the start of the function
> and remove the assignment from the end, hence allowing ret to be
> preserved when error codes are assigned to it.
> 
> Addresses-Coverity: ("Unused value")
> Fixes: a939888ec38b ("zram: support idle/huge page writeback")
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
Acked-by: Minchan Kim <minchan@kernel.org>

Thanks!
diff mbox series

Patch

diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index 4285e75e52c3..1bf4a908a0bd 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -626,7 +626,7 @@  static ssize_t writeback_store(struct device *dev,
 	struct bio bio;
 	struct bio_vec bio_vec;
 	struct page *page;
-	ssize_t ret;
+	ssize_t ret = len;
 	int mode;
 	unsigned long blk_idx = 0;
 
@@ -762,7 +762,6 @@  static ssize_t writeback_store(struct device *dev,
 
 	if (blk_idx)
 		free_block_bdev(zram, blk_idx);
-	ret = len;
 	__free_page(page);
 release_init_lock:
 	up_read(&zram->init_lock);