]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
watch_queue: Fix to release page in ->release()
authorDavid Howells <dhowells@redhat.com>
Fri, 11 Mar 2022 13:23:46 +0000 (13:23 +0000)
committerPaolo Pisati <paolo.pisati@canonical.com>
Wed, 23 Mar 2022 10:49:05 +0000 (11:49 +0100)
BugLink: https://bugs.launchpad.net/bugs/1966056
commit c1853fbadcba1497f4907971e7107888e0714c81 upstream.

When a pipe ring descriptor points to a notification message, the
refcount on the backing page is incremented by the generic get function,
but the release function, which marks the bitmap, doesn't drop the page
ref.

Fix this by calling generic_pipe_buf_release() at the end of
watch_queue_pipe_buf_release().

Fixes: c73be61cede5 ("pipe: Add general notification queue support")
Reported-by: Jann Horn <jannh@google.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
kernel/watch_queue.c

index 427b0318e303c56e9a556ca5ccde8314901cd0cf..dfb3a7e28280469416826a264414960cd10648f7 100644 (file)
@@ -54,6 +54,7 @@ static void watch_queue_pipe_buf_release(struct pipe_inode_info *pipe,
        bit += page->index;
 
        set_bit(bit, wqueue->notes_bitmap);
+       generic_pipe_buf_release(pipe, buf);
 }
 
 // No try_steal function => no stealing