Re: [RESEND] [PATCH] VFS: make file->f_pos access atomic on 32bit arch

Nick Piggin
2008-10-08T05:10:48Z

On Wednesday 08 October 2008 15:48, Hisashi Hifumi wrote:
> At 11:35 08/10/08, Nick Piggin wrote:
> >On Wednesday 08 October 2008 05:59, Peter Zijlstra wrote:
> >> The whole point is that such usage is outside the specification and thus
> >> we don't strictly need to fix this.
> >>
> >> So the question Nick is asking is, do we want to slow down the kernel
> >> for a few broken user-space applications. Esp. since the race doesn't
> >> affect anybody else except the broken users of the file descriptor.
> >
> >Right you are. That's the fundamental question. The actual details of
> >the fix and how likely the race is don't really matter until we
> >answer the first question (except to say that the "fix" is never going
> >to be free).
>
> Simultaneous access by two or more writer can corrupt file content,
> so this case needs some locks(flock or fcntl) to preserve synchronization
> of file content. This is responsibility of user-space application.

Right.

> But file->f_pos race issue can occur even if multiple threads just read
> simultaneously. I think this is not responsibility of user-space
> application. To avoid this currently, an application needs some locks to
> protect file offset even if it just read a file. So I think f_pos race
> should be fixed.

What would they possibly hope to be reading, though? IOW. a read(2) still
*writes* to the fpos which userspace is very much aware of, and in exactly
the same way as write(2), so userspace should require the same obligations
to protect it in both cases I think. If you say they must protect file
content for writes, then it is valid to say that they must protect fd data
as well (ie. file offset).