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
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