summaryrefslogtreecommitdiff
path: root/net/kcm
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2023-01-14 08:46:14 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-01-18 11:58:33 +0100
commitc06015ebc4367be38904b88582e13cc079672075 (patch)
tree81678c2888e693e23ce14d84e064421eb616edda /net/kcm
parent7fc3990dad04a677606337ebc61964094d6cb41b (diff)
io_uring/poll: attempt request issue after racy poll wakeup
commit 6e5aedb9324aab1c14a23fae3d8eeb64a679c20e upstream. If we have multiple requests waiting on the same target poll waitqueue, then it's quite possible to get a request triggered and get disappointed in not being able to make any progress with it. If we race in doing so, we'll potentially leave the poll request on the internal tables, but removed from the waitqueue. That means that any subsequent trigger of the poll waitqueue will not kick that request into action, causing an application to potentially wait for completion of a request that will never happen. Fix this by adding a new poll return state, IOU_POLL_REISSUE. Rather than have complicated logic for how to re-arm a given type of request, just punt it for a reissue. While in there, move the 'ret' variable to the only section where it gets used. This avoids confusion the scope of it. Cc: stable@vger.kernel.org Fixes: eb0089d629ba ("io_uring: single shot poll removal optimisation") Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'net/kcm')
0 files changed, 0 insertions, 0 deletions