Btrfs: correct error-handling zlib error handling
find_zlib_workspace returns an ERR_PTR value in an error case instead of NULL. A simplified version of the semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @match exists@ expression x, E; statement S1, S2; @@ x = find_zlib_workspace(...) ... when != x = E ( * if (x == NULL || ...) S1 else S2 | * if (x == NULL && ...) S1 else S2 ) // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
Родитель
4baf8c9201
Коммит
60f2e8f8a0
|
@ -208,7 +208,7 @@ int btrfs_zlib_compress_pages(struct address_space *mapping,
|
|||
*total_in = 0;
|
||||
|
||||
workspace = find_zlib_workspace();
|
||||
if (!workspace)
|
||||
if (IS_ERR(workspace))
|
||||
return -1;
|
||||
|
||||
if (Z_OK != zlib_deflateInit(&workspace->def_strm, 3)) {
|
||||
|
@ -366,7 +366,7 @@ int btrfs_zlib_decompress_biovec(struct page **pages_in,
|
|||
char *kaddr;
|
||||
|
||||
workspace = find_zlib_workspace();
|
||||
if (!workspace)
|
||||
if (IS_ERR(workspace))
|
||||
return -ENOMEM;
|
||||
|
||||
data_in = kmap(pages_in[page_in_index]);
|
||||
|
@ -547,7 +547,7 @@ int btrfs_zlib_decompress(unsigned char *data_in,
|
|||
return -ENOMEM;
|
||||
|
||||
workspace = find_zlib_workspace();
|
||||
if (!workspace)
|
||||
if (IS_ERR(workspace))
|
||||
return -ENOMEM;
|
||||
|
||||
workspace->inf_strm.next_in = data_in;
|
||||
|
|
Загрузка…
Ссылка в новой задаче