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? Are there any unanswered questions left on this patch? > Thanks, Mikhail