lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CANn89iLOCN8888SQFh6i1+yBZ=RWwDGE3BbPRbjpdKxApC1MxQ@mail.gmail.com>
Date:   Sat, 26 Mar 2022 11:39:09 -0700
From:   Eric Dumazet <edumazet@...gle.com>
To:     Eric Dumazet <eric.dumazet@...il.com>
Cc:     David Howells <dhowells@...hat.com>,
        linux-kernel <linux-kernel@...r.kernel.org>,
        syzbot <syzkaller@...glegroups.com>, Jann Horn <jannh@...gle.com>
Subject: Re: [PATCH] watch_queue: Free the page array when watch_queue is dismantled

ping ?

On Mon, Mar 21, 2022 at 5:47 PM Eric Dumazet <eric.dumazet@...il.com> wrote:
>
> From: Eric Dumazet <edumazet@...gle.com>
>
> Commit 7ea1a0124b6d ("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:
>     [<ffffffff81459bff>] kmalloc_array include/linux/slab.h:621 [inline]
>     [<ffffffff81459bff>] kcalloc include/linux/slab.h:652 [inline]
>     [<ffffffff81459bff>] watch_queue_set_size+0x12f/0x2e0 kernel/watch_queue.c:251
>     [<ffffffff8159fcf2>] pipe_ioctl+0x82/0x140 fs/pipe.c:632
>     [<ffffffff815b601c>] vfs_ioctl fs/ioctl.c:51 [inline]
>     [<ffffffff815b601c>] __do_sys_ioctl fs/ioctl.c:874 [inline]
>     [<ffffffff815b601c>] __se_sys_ioctl fs/ioctl.c:860 [inline]
>     [<ffffffff815b601c>] __x64_sys_ioctl+0xfc/0x140 fs/ioctl.c:860
>     [<ffffffff84493a05>] do_syscall_x64 arch/x86/entry/common.c:50 [inline]
>     [<ffffffff84493a05>] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
>     [<ffffffff84600068>] entry_SYSCALL_64_after_hwframe+0x44/0xae
>
> Reported-by: syzbot <syzkaller@...glegroups.com>
> Fixes: c73be61cede5 ("pipe: Add general notification queue support")
> Signed-off-by: Eric Dumazet <edumazet@...gle.com>
> Cc: David Howells <dhowells@...hat.com>
> Cc: Jann Horn <jannh@...gle.com>
> ---
>  kernel/watch_queue.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/kernel/watch_queue.c b/kernel/watch_queue.c
> index 00703444a21948deaa8b7ac8b57b73528badff0d..58fe68664eb1b0001cb00c8d046e108462df4836 100644
> --- a/kernel/watch_queue.c
> +++ b/kernel/watch_queue.c
> @@ -370,6 +370,7 @@ static void __put_watch_queue(struct kref *kref)
>
>         for (i = 0; i < wqueue->nr_pages; i++)
>                 __free_page(wqueue->notes[i]);
> +       kfree(wqueue->notes);
>         bitmap_free(wqueue->notes_bitmap);
>
>         wfilter = rcu_access_pointer(wqueue->filter);
> --
> 2.35.1.894.gb6a874cedc-goog
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ