2023-07-20 16:12:51

by Fedor Pchelkin

[permalink] [raw]
Subject: [PATCH] NFSv4/pnfs: minor fix for cleanup path in nfs4_get_device_info

It is an almost improbable error case but when page allocating loop in
nfs4_get_device_info() fails then we should only free the already
allocated pages, as __free_page() can't deal with NULL arguments.

Found by Linux Verification Center (linuxtesting.org).

Cc: [email protected]
Signed-off-by: Fedor Pchelkin <[email protected]>
---
fs/nfs/pnfs_dev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/nfs/pnfs_dev.c b/fs/nfs/pnfs_dev.c
index ddbbf4fcda86..178001c90156 100644
--- a/fs/nfs/pnfs_dev.c
+++ b/fs/nfs/pnfs_dev.c
@@ -154,7 +154,7 @@ nfs4_get_device_info(struct nfs_server *server,
set_bit(NFS_DEVICEID_NOCACHE, &d->flags);

out_free_pages:
- for (i = 0; i < max_pages; i++)
+ while (--i >= 0)
__free_page(pages[i]);
kfree(pages);
out_free_pdev:
--
2.41.0



2023-07-20 17:16:15

by Benjamin Coddington

[permalink] [raw]
Subject: Re: [PATCH] NFSv4/pnfs: minor fix for cleanup path in nfs4_get_device_info

On 20 Jul 2023, at 11:37, Fedor Pchelkin wrote:

> It is an almost improbable error case but when page allocating loop in
> nfs4_get_device_info() fails then we should only free the already
> allocated pages, as __free_page() can't deal with NULL arguments.
>
> Found by Linux Verification Center (linuxtesting.org).
>
> Cc: [email protected]
> Signed-off-by: Fedor Pchelkin <[email protected]>

This looks correct to me.

Reviewed-by: Benjamin Coddington <[email protected]>

Ben