[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 2/7] vhost-user: Fix double-close on slave_read() error pa
From: |
Stefan Hajnoczi |
Subject: |
Re: [PATCH v2 2/7] vhost-user: Fix double-close on slave_read() error path |
Date: |
Mon, 15 Mar 2021 10:36:10 +0000 |
On Fri, Mar 12, 2021 at 10:22:07AM +0100, Greg Kurz wrote:
> Some message types, e.g. VHOST_USER_SLAVE_VRING_HOST_NOTIFIER_MSG,
> can convey file descriptors. These must be closed before returning
> from slave_read() to avoid being leaked. This can currently be done
> in two different places:
>
> [1] just after the request has been processed
>
> [2] on the error path, under the goto label err:
>
> These path are supposed to be mutually exclusive but they are not
> actually. If the VHOST_USER_NEED_REPLY_MASK flag was passed and the
> sending of the reply fails, both [1] and [2] are performed with the
> same descriptor values. This can potentially cause subtle bugs if one
> of the descriptor was recycled by some other thread in the meantime.
>
> This code duplication complicates rollback for no real good benefit.
> Do the closing in a unique place, under a new fdcleanup: goto label
> at the end of the function.
>
> Signed-off-by: Greg Kurz <groug@kaod.org>
> ---
> hw/virtio/vhost-user.c | 11 +++--------
> 1 file changed, 3 insertions(+), 8 deletions(-)
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
signature.asc
Description: PGP signature
- [PATCH v2 0/7] virtiofsd: Avoid potential deadlocks, Greg Kurz, 2021/03/12
- [PATCH v2 1/7] vhost-user: Drop misleading EAGAIN checks in slave_read(), Greg Kurz, 2021/03/12
- [PATCH v2 2/7] vhost-user: Fix double-close on slave_read() error path, Greg Kurz, 2021/03/12
- Re: [PATCH v2 2/7] vhost-user: Fix double-close on slave_read() error path,
Stefan Hajnoczi <=
- [PATCH v2 4/7] vhost-user: Convert slave channel to QIOChannelSocket, Greg Kurz, 2021/03/12
- [PATCH v2 3/7] vhost-user: Factor out duplicated slave_fd teardown code, Greg Kurz, 2021/03/12
- [PATCH v2 6/7] vhost-user: Monitor slave channel in vhost_user_read(), Greg Kurz, 2021/03/12
- [PATCH v2 5/7] vhost-user: Introduce nested event loop in vhost_user_read(), Greg Kurz, 2021/03/12
- [PATCH v2 7/7] virtiofsd: Release vu_dispatch_lock when stopping queue, Greg Kurz, 2021/03/12