On Mon, Jan 13, 2020 at 11:03:29AM +0100, Zaslonko Mikhail wrote: > Hello David, > > On 09.01.2020 02:10, David Sterba wrote: > > On Wed, Jan 08, 2020 at 07:48:31PM +0100, Zaslonko Mikhail wrote: > >>>> + } else if (workspace->strm.avail_out == 0) { > >>>> + /* get another page for the stream end */ > >>>> + kunmap(out_page); > >>>> + if (nr_pages == nr_dest_pages) { > >>>> + out_page = NULL; > >>>> + ret = -E2BIG; > >>>> + goto out; > >>>> + } > >>>> + out_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM); > >>>> + if (out_page == NULL) { > >>>> + ret = -ENOMEM; > >>>> + goto out; > >>>> + } > >>> > >>> Do we need zlib_deflateEnd() for the above error cases? Thanks, > >> > >> The original btrfs code did not call zlib_deflateEnd() for -E2BIG and > >> -ENOMEM cases, so I stick to the same logic. > >> Unlike userspace zlib where deflateEnd() frees all dynamically allocated > >> memory, in the kernel it doesn't do much apart from setting the return > >> code (since all the memory allocations for kernel zlib are performed in advance). > > > > Agreed, deflateEnd is not necessary in the error cases. > > Can I consider this as 'Acked-by' from your side? Yes, I also sent rev-by to the patch.