diff options
author | Jens Axboe <axboe@kernel.dk> | 2023-07-11 18:35:30 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2023-07-27 09:44:01 +0300 |
commit | 810e401b34c4c4c244d8b93b9947ea5b3d4d49f8 (patch) | |
tree | c544c6322b0fe501917db247e9b39c14761a7ad1 /drivers/usb/dwc3 | |
parent | cd5837564ff59b34fefe1d07af3442089bcfeb23 (diff) | |
download | linux-810e401b34c4c4c244d8b93b9947ea5b3d4d49f8.tar.xz |
io_uring: ensure IOPOLL locks around deferred work
No direct upstream commit exists for this issue. It was fixed in
5.18 as part of a larger rework of the completion side.
io_commit_cqring() writes the CQ ring tail to make it visible, but it
also kicks off any deferred work we have. A ring setup with IOPOLL
does not need any locking around the CQ ring updates, as we're always
under the ctx uring_lock. But if we have deferred work that needs
processing, then io_queue_deferred() assumes that the completion_lock
is held, as it is for !IOPOLL.
Add a lockdep assertion to check and document this fact, and have
io_iopoll_complete() check if we have deferred work and run that
separately with the appropriate lock grabbed.
Cc: stable@vger.kernel.org # 5.10, 5.15
Reported-by: dghost david <daviduniverse18@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/dwc3')
0 files changed, 0 insertions, 0 deletions