|
@@ -217,11 +217,12 @@ static int zram_bvec_read(struct zram *zram, struct bio_vec *bvec,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- user_mem = kmap_atomic(page);
|
|
|
if (is_partial_io(bvec))
|
|
|
/* Use a temporary buffer to decompress the page */
|
|
|
- uncmem = kmalloc(PAGE_SIZE, GFP_KERNEL);
|
|
|
- else
|
|
|
+ uncmem = kmalloc(PAGE_SIZE, GFP_NOIO);
|
|
|
+
|
|
|
+ user_mem = kmap_atomic(page);
|
|
|
+ if (!is_partial_io(bvec))
|
|
|
uncmem = user_mem;
|
|
|
|
|
|
if (!uncmem) {
|
|
@@ -268,7 +269,7 @@ static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec, u32 index,
|
|
|
* This is a partial IO. We need to read the full page
|
|
|
* before to write the changes.
|
|
|
*/
|
|
|
- uncmem = kmalloc(PAGE_SIZE, GFP_KERNEL);
|
|
|
+ uncmem = kmalloc(PAGE_SIZE, GFP_NOIO);
|
|
|
if (!uncmem) {
|
|
|
pr_info("Error allocating temp memory!\n");
|
|
|
ret = -ENOMEM;
|