[libvirt] [PATCH] Fix iohelper usage with streams opened for read

Osier Yang jyang at redhat.com
Fri May 10 14:07:17 UTC 2013


On 10/05/13 21:51, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <berrange at redhat.com>
>
> In b2878ed860ceceec3cd6481424fed0b543b687cd we added the O_NOCTTY
> flag when opening files in the stream code. Unfortunately a later
> piece of code was comparing the flags == O_RDONLY, without masking
> out the non-access mode flags. This broke the iohelper when used
> with streams for read, since it caused us to attach the stream
> output pipe to the stream input FD instead of output FD :-(
>
> Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
> ---
>   src/fdstream.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/fdstream.c b/src/fdstream.c
> index 6f8ce53..a9a4851 100644
> --- a/src/fdstream.c
> +++ b/src/fdstream.c
> @@ -641,7 +641,7 @@ virFDStreamOpenFileInternal(virStreamPtr st,
>           virCommandTransferFD(cmd, fd);
>           virCommandAddArgFormat(cmd, "%d", fd);
>   
> -        if (oflags == O_RDONLY) {
> +        if ((oflags & O_ACCMODE) == O_RDONLY) {
>               childfd = fds[1];
>               fd = fds[0];
>               virCommandSetOutputFD(cmd, &childfd);

ACK. I went a bit far away to find the cause.. :-(




More information about the libvir-list mailing list