Re: + zram-panic-when-use-ext4-over-zram.patch added to mm-hotfixes-unstable branch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On (24/11/29 19:04), Andrew Morton wrote:
> --- a/drivers/block/zram/zram_drv.c~zram-panic-when-use-ext4-over-zram
> +++ a/drivers/block/zram/zram_drv.c
> @@ -1633,6 +1633,7 @@ static int zram_write_page(struct zram *
>  	unsigned long alloced_pages;
>  	unsigned long handle = -ENOMEM;
>  	unsigned int comp_len = 0;
> +	unsigned int last_comp_len = 0;
>  	void *src, *dst, *mem;
>  	struct zcomp_strm *zstrm;
>  	unsigned long element = 0;
> @@ -1664,6 +1665,11 @@ compress_again:
>  
>  	if (comp_len >= huge_class_size)
>  		comp_len = PAGE_SIZE;
> +
> +	if (last_comp_len && (last_comp_len != comp_len)) {
> +		zs_free(zram->mem_pool, handle);
> +		handle = (unsigned long)ERR_PTR(-ENOMEM);
> +	}

I don't think this needs to be this complex.  A simple -ENOMEM should
work, that's the default handle value in this function.

Andrew, can you please fold this in?  (Or we can just ask for v2)

---

diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index 52a005face62..5de7f30d0aa6 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -1674,7 +1674,7 @@ static int zram_write_page(struct zram *zram, struct page *page, u32 index)
 
 	if (last_comp_len && (last_comp_len != comp_len)) {
 		zs_free(zram->mem_pool, handle);
-		handle = (unsigned long)ERR_PTR(-ENOMEM);
+		handle = -ENOMEM;
 	}
 	/*
 	 * handle allocation has 2 paths:




[Index of Archives]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux