Thread (6 messages) 6 messages, 3 authors, 2021-08-10

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

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help