There is a dangling reference to pipe in a watch_queue after clearing it.
Thus, NULL that pointer while clearing.
This change renders wqueue->defunct superfluous, as the latter is only used
to check if watch_queue is cleared. With this change, the pipe is NULLed
while clearing, so we can just check if the pipe is NULL.
Extending comment for watch_queue->pipe in the definition of watch_queue
made the comment conventionally too long (it was already past 80 chars),
so I have changed the struct annotations to be kerneldoc-styled, so that
I can extend the comment mentioning that the pipe is NULL when watch_queue
is cleared. In the process, I have also hopefully improved documentation
by documenting things which weren't documented before.
Changes in v2:
- Merged the NULLing and removing defunct patches.
- Removed READ_ONCE barrier in lock_wqueue().
- Improved and fixed errors in struct docs.
- Better commit messages.
Siddh Raman Pant (2):
include/linux/watch_queue: Improve documentation
kernel/watch_queue: NULL the dangling *pipe, and use it for clear
include/linux/watch_queue.h | 100 ++++++++++++++++++++++++++----------
kernel/watch_queue.c | 12 ++---
2 files changed, 79 insertions(+), 33 deletions(-)