Commit 3b82a051 authored by Colin Ian King's avatar Colin Ian King Committed by Linus Torvalds

drivers/block/zram/zram_drv.c: fix error return codes not being returned in writeback_store

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: a939888e ("zram: support idle/huge page writeback")
Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
Acked-by: default avatarMinchan Kim <minchan@kernel.org>
Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: Jens Axboe <axboe@kernel.dk>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 90f82cbf
...@@ -629,7 +629,7 @@ static ssize_t writeback_store(struct device *dev, ...@@ -629,7 +629,7 @@ static ssize_t writeback_store(struct device *dev,
struct bio bio; struct bio bio;
struct bio_vec bio_vec; struct bio_vec bio_vec;
struct page *page; struct page *page;
ssize_t ret; ssize_t ret = len;
int mode; int mode;
unsigned long blk_idx = 0; unsigned long blk_idx = 0;
...@@ -765,7 +765,6 @@ static ssize_t writeback_store(struct device *dev, ...@@ -765,7 +765,6 @@ static ssize_t writeback_store(struct device *dev,
if (blk_idx) if (blk_idx)
free_block_bdev(zram, blk_idx); free_block_bdev(zram, blk_idx);
ret = len;
__free_page(page); __free_page(page);
release_init_lock: release_init_lock:
up_read(&zram->init_lock); up_read(&zram->init_lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment