Re: [PATCH 0/2] iter revert problems
From: Pavel Begunkov <asml.silence@gmail.com>
Date: 2021-08-09 18:56:57
Also in:
io-uring, lkml
From: Pavel Begunkov <asml.silence@gmail.com>
Date: 2021-08-09 18:56:57
Also in:
io-uring, lkml
On 8/9/21 4:52 PM, Al Viro wrote:
On Mon, Aug 09, 2021 at 12:52:35PM +0100, Pavel Begunkov wrote:quoted
For the bug description see 2/2. As mentioned there the current problems is because of generic_write_checks(), but there was also a similar case fixed in 5.12, which should have been triggerable by normal write(2)/read(2) and others. It may be better to enforce reexpands as a long term solution, but for now this patchset is quickier and easier to backport.Umm... Won't that screw the cases where we *are* doing proper reexpands? AFAICS, with your patches that flag doesn't go away once it had been set...
In general, the userspace should already expecting and retrying on EAGAIN, and it seems to me, truncates should be rare enough to not care much about performance. However, it'd better to be more careful with nowait attempts. For instance, we can avoid failing reexpanded and reverted iters. if (i->truncated && iov_iter_count(i) != orig_size) // fail; Or even re-import iov+iter, if still in the right context. Al, is that viable to you on the iov side? -- Pavel Begunkov