summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/block/zram/zram_drv.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index bab21b44bdcb..b96e40f9a9dd 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -1429,21 +1429,21 @@ static void zram_async_read_endio(struct bio *bio)
queue_work(system_highpri_wq, &req->work);
}
-static void read_from_bdev_async(struct zram *zram, struct page *page,
- u32 index, unsigned long blk_idx,
- struct bio *parent)
+static int read_from_bdev_async(struct zram *zram, struct page *page,
+ u32 index, unsigned long blk_idx,
+ struct bio *parent)
{
struct zram_rb_req *req;
struct bio *bio;
req = kmalloc_obj(*req, GFP_NOIO);
if (!req)
- return;
+ return -ENOMEM;
bio = bio_alloc(zram->bdev, 1, parent->bi_opf, GFP_NOIO);
if (!bio) {
kfree(req);
- return;
+ return -ENOMEM;
}
req->zram = zram;
@@ -1459,6 +1459,8 @@ static void read_from_bdev_async(struct zram *zram, struct page *page,
__bio_add_page(bio, page, PAGE_SIZE, 0);
bio_inc_remaining(parent);
submit_bio(bio);
+
+ return 0;
}
static void zram_sync_read(struct work_struct *w)
@@ -1507,8 +1509,7 @@ static int read_from_bdev(struct zram *zram, struct page *page, u32 index,
return -EIO;
return read_from_bdev_sync(zram, page, index, blk_idx);
}
- read_from_bdev_async(zram, page, index, blk_idx, parent);
- return 0;
+ return read_from_bdev_async(zram, page, index, blk_idx, parent);
}
#else
static inline void reset_bdev(struct zram *zram) {};