summaryrefslogtreecommitdiffstats
path: root/drivers/block
diff options
context:
space:
mode:
authorColin Ian King <colin.king@canonical.com>2020-01-30 22:15:25 -0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-02-24 08:36:31 +0100
commitb0d5c881d36ee822bdc57f70ec70f1ba232ee7e8 (patch)
tree3698adc0b67928a61f2263c1157992d674a6f580 /drivers/block
parent53aaa9f1a638e422871c71329f6e2c82b54cc0da (diff)
downloadlinux-stable-b0d5c881d36ee822bdc57f70ec70f1ba232ee7e8.tar.gz
linux-stable-b0d5c881d36ee822bdc57f70ec70f1ba232ee7e8.tar.bz2
linux-stable-b0d5c881d36ee822bdc57f70ec70f1ba232ee7e8.zip
drivers/block/zram/zram_drv.c: fix error return codes not being returned in writeback_store
[ Upstream commit 3b82a051c10143639a378dcd12019f2353cc9054 ] 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") Link: http://lkml.kernel.org/r/20191128122958.178290-1-colin.king@canonical.com 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> Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Cc: Jens Axboe <axboe@kernel.dk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/zram/zram_drv.c3
1 files changed, 1 insertions, 2 deletions
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 @@ next:
if (blk_idx)
free_block_bdev(zram, blk_idx);
- ret = len;
__free_page(page);
release_init_lock:
up_read(&zram->init_lock);