fs/ntfs3: Use __GFP_NOWARN allocation at ntfs_load_attr_list()
authorTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Tue, 28 Mar 2023 11:05:16 +0000 (20:05 +0900)
committerKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
Sun, 2 Jul 2023 20:21:23 +0000 (00:21 +0400)
syzbot is reporting too large allocation at ntfs_load_attr_list(), for
a crafted filesystem can have huge data_size.

Reported-by: syzbot <syzbot+89dbb3a789a5b9711793@syzkaller.appspotmail.com>
Link: https://syzkaller.appspot.com/bug?extid=89dbb3a789a5b9711793
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3/attrlist.c

index c0c6bcb..81c22df 100644 (file)
@@ -52,7 +52,7 @@ int ntfs_load_attr_list(struct ntfs_inode *ni, struct ATTRIB *attr)
 
        if (!attr->non_res) {
                lsize = le32_to_cpu(attr->res.data_size);
-               le = kmalloc(al_aligned(lsize), GFP_NOFS);
+               le = kmalloc(al_aligned(lsize), GFP_NOFS | __GFP_NOWARN);
                if (!le) {
                        err = -ENOMEM;
                        goto out;
@@ -80,7 +80,7 @@ int ntfs_load_attr_list(struct ntfs_inode *ni, struct ATTRIB *attr)
                if (err < 0)
                        goto out;
 
-               le = kmalloc(al_aligned(lsize), GFP_NOFS);
+               le = kmalloc(al_aligned(lsize), GFP_NOFS | __GFP_NOWARN);
                if (!le) {
                        err = -ENOMEM;
                        goto out;