Re: [bug report] zram: unlock slot during recompression

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

 



On (25/01/30 09:08), Dan Carpenter wrote:
> Commit 7ec2cb65ef0d ("zram: unlock slot during recompression") from
> Jan 27, 2025 (linux-next), leads to the following Smatch static
> checker warning:
> 
> 	drivers/block/zram/zram_drv.c:1960 recompress_slot()
> 	warn: passing freed memory 'zstrm' (line 1943)
> 

Hi Dan,
Thank you for the report.

[..]
>     1923         for (; prio < prio_max; prio++) {
>     1924                 if (!zram->comps[prio])
>     1925                         continue;
>     1926 
>     1927                 num_recomps++;
>     1928                 zstrm = zcomp_stream_get(zram->comps[prio]);
>     1929                 src = kmap_local_page(page);
>     1930                 ret = zcomp_compress(zram->comps[prio], zstrm,
>     1931                                      src, &comp_len_new);
>     1932                 kunmap_local(src);
>     1933 
>     1934                 if (ret)
>     1935                         break;
>     1936 
>     1937                 class_index_new = zs_lookup_class_index(zram->mem_pool,
>     1938                                                         comp_len_new);
>     1939 
>     1940                 /* Continue until we make progress */
>     1941                 if (class_index_new >= class_index_old ||
>     1942                     (threshold && comp_len_new >= threshold)) {
>     1943                         zcomp_stream_put(zram->comps[prio], zstrm);
> 
> Imagine we hit this continue path.  The right thing is probably to set
> zstrm = NULL before the continue or it might be to set ret = -EINVAL.

We still need to make sure that ZRAM_INCOMPRESSIBLE is set appropriately,
so zstrm = NULL won't do the trick.  Let me take a look.




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux