xen/xenbus: Count pending messages for each watch

commit 3dc86ca6b4c8cfcba9da7996189d1b5a358a94fc upstream.

This commit adds a counter of pending messages for each watch in the
struct.  It is used to skip unnecessary pending messages lookup in
'unregister_xenbus_watch()'.  It could also be used in 'will_handle'
callback.

This is part of XSA-349

Cc: stable@vger.kernel.org
Signed-off-by: SeongJae Park <sjpark@amazon.de>
Reported-by: Michael Kurth <mku@amazon.de>
Reported-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
Reviewed-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
SeongJae Park
2020-12-14 10:07:13 +01:00
committed by Greg Kroah-Hartman
parent 6835334e15
commit 1a72241aab
2 changed files with 20 additions and 11 deletions

View File

@@ -61,6 +61,8 @@ struct xenbus_watch
/* Path being watched. */
const char *node;
unsigned int nr_pending;
/*
* Called just before enqueing new event while a spinlock is held.
* The event will be discarded if this callback returns false.