2021-03-30 10:19:18

by Jiapeng Chong

[permalink] [raw]
Subject: [PATCH] btrfs: Remove useless call "zlib_inflateEnd"

Fix the following whitescan warning:

Calling "zlib_inflateEnd(&workspace->strm)" is only useful for its
return value, which is ignored.

Reported-by: Abaci Robot <[email protected]>
Signed-off-by: Jiapeng Chong <[email protected]>
---
fs/btrfs/zlib.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/fs/btrfs/zlib.c b/fs/btrfs/zlib.c
index d524acf..93537cc 100644
--- a/fs/btrfs/zlib.c
+++ b/fs/btrfs/zlib.c
@@ -357,7 +357,6 @@ int zlib_decompress_bio(struct list_head *ws, struct compressed_bio *cb)
else
ret = 0;
done:
- zlib_inflateEnd(&workspace->strm);
if (data_in)
kunmap(pages_in[page_in_index]);
if (!ret)
--
1.8.3.1


2021-04-01 18:01:57

by David Sterba

[permalink] [raw]
Subject: Re: [PATCH] btrfs: Remove useless call "zlib_inflateEnd"

On Tue, Mar 30, 2021 at 06:17:01PM +0800, Jiapeng Chong wrote:
> Fix the following whitescan warning:
>
> Calling "zlib_inflateEnd(&workspace->strm)" is only useful for its
> return value, which is ignored.

According to the zlib API documentation in include/linux/zlib.h

301 extern int zlib_deflateEnd (z_streamp strm);
302 /*
303 All dynamically allocated data structures for this stream are freed.
304 This function discards any unprocessed input and does not flush any
305 pending output.
306
307 deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
308 stream state was inconsistent, Z_DATA_ERROR if the stream was freed
309 prematurely (some input or output was discarded). In the error case,
310 msg may be set but then points to a static string (which must not be
311 deallocated).
312 */

The first paragraph says it could free data, so the call needs to be
there. The return value could have some meaning as it could point out to
some inconsistency in zlib internal state but just deleting is IMO
wrong.