mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 22:26:55 +00:00
NFSv4.2: fix error handling in nfs42_proc_getxattr
[ Upstream commit4e3733fd2b
] There is a slight issue with error handling code inside nfs42_proc_getxattr(). If page allocating loop fails then we free the failing page array element which is NULL but __free_page() can't deal with NULL args. Found by Linux Verification Center (linuxtesting.org). Fixes:a1f26739cc
("NFSv4.2: improve page handling for GETXATTR") Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru> Reviewed-by: Benjamin Coddington <bcodding@redhat.com> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
05d8970cca
commit
9e2388d814
1 changed files with 2 additions and 3 deletions
|
@ -1360,7 +1360,6 @@ ssize_t nfs42_proc_getxattr(struct inode *inode, const char *name,
|
|||
for (i = 0; i < np; i++) {
|
||||
pages[i] = alloc_page(GFP_KERNEL);
|
||||
if (!pages[i]) {
|
||||
np = i + 1;
|
||||
err = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
@ -1384,8 +1383,8 @@ ssize_t nfs42_proc_getxattr(struct inode *inode, const char *name,
|
|||
} while (exception.retry);
|
||||
|
||||
out:
|
||||
while (--np >= 0)
|
||||
__free_page(pages[np]);
|
||||
while (--i >= 0)
|
||||
__free_page(pages[i]);
|
||||
kfree(pages);
|
||||
|
||||
return err;
|
||||
|
|
Loading…
Reference in a new issue