qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] linux-user: implement pipe2 syscall


From: Jamie Lokier
Subject: Re: [Qemu-devel] [PATCH] linux-user: implement pipe2 syscall
Date: Tue, 5 May 2009 23:58:09 +0100
User-agent: Mutt/1.5.13 (2006-08-11)

Riku Voipio wrote:
> implement pipe2 syscall. instead of calling pipe2 directly
> (which was introduced in 2.6.27), emulate the flag functionality
> with fcntl.

This is wrong with multiple threads if the flag contains FD_CLOEXEC.
If that situation is possible, please don't do this.

The point of pipe2() with FD_CLOEXEC is to be atomic: make sure
another thread can never see the file descriptor with FD_CLOEXEC not set.

If you can't guarantee that, it's better to return ENOSYS as every
application using pipe2() like this has a fallback to use pipe() and
FD_CLOEXEC itself, and probably has application logic to protect
against the race condition.

If there's only one thread, or if you can arrange to block any
concurrent clone/fork/execve calls in other threads (in QEMU) during
the race window, then it's fine to emulate it with fcntl.

-- Jamie




reply via email to

[Prev in Thread] Current Thread [Next in Thread]