• Eric Dumazet's avatar
    watch_queue: Free the page array when watch_queue is dismantled · b4902070
    Eric Dumazet authored
    Commit 7ea1a012 ("watch_queue: Free the alloc bitmap when the
    watch_queue is torn down") took care of the bitmap, but not the page
    array.
    
      BUG: memory leak
      unreferenced object 0xffff88810d9bc140 (size 32):
      comm "syz-executor335", pid 3603, jiffies 4294946994 (age 12.840s)
      hex dump (first 32 bytes):
        40 a7 40 04 00 ea ff ff 00 00 00 00 00 00 00 00  @.@.............
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
         kmalloc_array include/linux/slab.h:621 [inline]
         kcalloc include/linux/slab.h:652 [inline]
         watch_queue_set_size+0x12f/0x2e0 kernel/watch_queue.c:251
         pipe_ioctl+0x82/0x140 fs/pipe.c:632
         vfs_ioctl fs/ioctl.c:51 [inline]
         __do_sys_ioctl fs/ioctl.c:874 [inline]
         __se_sys_ioctl fs/ioctl.c:860 [inline]
         __x64_sys_ioctl+0xfc/0x140 fs/ioctl.c:860
         do_syscall_x64 arch/x86/entry/common.c:50 [inline]
    
    Reported-by: syzbot+25ea042ae28f3888727a@syzkaller.appspotmail.com
    Fixes: c73be61c ("pipe: Add general notification queue support")
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Cc: Jann Horn <jannh@google.com>
    Link: https://lore.kernel.org/r/20220322004654.618274-1-eric.dumazet@gmail.com/Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    b4902070
watch_queue.c 16.4 KB