[PATCH] fs: 9p: avoid warning during xattr allocation

From: Fedor Pchelkin
Date: Fri Feb 02 2024 - 07:13:53 EST


An invalid server may reply with an xattr size which still fits into
ssize_t but is large enough to cause splat during kzalloc().

Add __GFP_NOWARN flag for the allocation. It seems client side can't do
much more about sanity checking here so it's better to return ENOMEM
silently.

Found by Linux Verification Center (linuxtesting.org) with Syzkaller.

Fixes: 85ff872d3f4a ("fs/9p: Implement POSIX ACL permission checking function")
Reported-by: syzbot+56fdf7f6291d819b9b19@xxxxxxxxxxxxxxxxxxxxxxxxx
Closes: https://lore.kernel.org/lkml/000000000000789bcd05c9aa3d5d@xxxxxxxxxx/
Reported-by: syzbot+a83dc51a78f0f4cf20da@xxxxxxxxxxxxxxxxxxxxxxxxx
Closes: https://lore.kernel.org/lkml/00000000000086a03405eec3a706@xxxxxxxxxx/
Suggested-by: Pavel Skripkin <paskripkin@xxxxxxxxx>
Signed-off-by: Fedor Pchelkin <pchelkin@xxxxxxxxx>
---
fs/9p/acl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/9p/acl.c b/fs/9p/acl.c
index eed551d8555f..e19a46192d2e 100644
--- a/fs/9p/acl.c
+++ b/fs/9p/acl.c
@@ -29,7 +29,7 @@ static struct posix_acl *v9fs_fid_get_acl(struct p9_fid *fid, const char *name)
if (size == 0)
return ERR_PTR(-ENODATA);

- value = kzalloc(size, GFP_NOFS);
+ value = kzalloc(size, GFP_NOFS | __GFP_NOWARN);
if (!value)
return ERR_PTR(-ENOMEM);

--
2.43.0