selinux: Add __GFP_NOWARN to allocation at str_read()
authorTetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Fri, 7 Sep 2018 16:42:58 +0000 (01:42 +0900)
committerPaul Moore <paul@paul-moore.com>
Thu, 13 Sep 2018 19:36:25 +0000 (15:36 -0400)
syzbot is hitting warning at str_read() [1] because len parameter can
become larger than KMALLOC_MAX_SIZE. We don't need to emit warning for
this case.

[1] https://syzkaller.appspot.com/bug?id=7f2f5aad79ea8663c296a2eedb81978401a908f0

Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Reported-by: syzbot <syzbot+ac488b9811036cea7ea0@syzkaller.appspotmail.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
security/selinux/ss/policydb.c

index e9394e7adc84d3b898a1732034154c646509cba7..f4eadd3f73500c1fb821de3669aa73b30814f2b3 100644 (file)
@@ -1101,7 +1101,7 @@ static int str_read(char **strp, gfp_t flags, void *fp, u32 len)
        if ((len == 0) || (len == (u32)-1))
                return -EINVAL;
 
-       str = kmalloc(len + 1, flags);
+       str = kmalloc(len + 1, flags | __GFP_NOWARN);
        if (!str)
                return -ENOMEM;