Thread (6 messages) 6 messages, 2 authors, 2021-09-12

Re: io-uring: KASAN failure, presumably

From: Jens Axboe <axboe@kernel.dk>
Date: 2021-09-12 18:24:37
Also in: lkml

On 9/12/21 12:21 PM, Nadav Amit wrote:
quoted
On Sep 12, 2021, at 11:15 AM, Jens Axboe [off-list ref] wrote:

On 9/11/21 8:34 PM, Nadav Amit wrote:
quoted
Hello Jens (& Pavel),

I hope you are having a nice weekend. I ran into a KASAN failure in io-uring
which I think is not "my fault".

The failure does not happen very infrequently, so my analysis is based on
reading the code. IIUC the failure, then I do not understand the code well
enough, as to say I do not understand how it was supposed to work. I would
appreciate your feedback.

The failure happens on my own custom kernel (do not try to correlate the line
numbers). The gist of the splat is:
I think this is specific to your use case, but I also think that we
should narrow the scope for this type of REQ_F_REISSUE trigger. It
really should only happen on bdev backed regular files, where we cannot
easily pass back congestion. For that case, the completion for this is
called while we're in ->write_iter() for example, and hence there is no
race here.

I'll ponder this a bit…
I see what you are saying. The assumption is that write_iter() is setting
REQ_F_REISSUE, which is not the case in my use-case. 
Yes exactly, and hence why I think we need to tighten this check to only
be for bdev backed files.
Perhaps EAGAIN is
anyhow not the right return value (in my case). I am not sure any other
“invalid" use-case exists, but some documentation/assertion(?) can help.

I changed the return error-codes and check that the issue is not
triggered again.

Thanks, as usual, for the quick response.
OK good, thanks for confirming!

-- 
Jens Axboe
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help