qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] libvhost-user: Fix the VHOST_USER_PROTOCOL_F_SLAVE_SEND


From: Dr. David Alan Gilbert
Subject: Re: [Qemu-devel] libvhost-user: Fix the VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD check
Date: Wed, 7 Aug 2019 17:09:17 +0100
User-agent: Mutt/1.12.1 (2019-06-15)

* Boeuf, Sebastien (address@hidden) wrote:
> From 0a53a81db6dd069f9b7bcdcd386845bceb3a2ac6 Mon Sep 17 00:00:00 2001
> From: Sebastien Boeuf <address@hidden>
> Date: Wed, 7 Aug 2019 07:15:32 -0700
> Subject: [PATCH] libvhost-user: Fix the
> VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD
>  check
> 
> Vhost user protocol features are set as a bitmask. And the following
> constant VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD value is 10 because the
> bit
> 10 indicates if the features is set or not.
> 
> The proper way to check for the presence or absence of this feature is
> to shift 1 by the value of this constant and then mask it with the
> actual bitmask representing the supported protocol features.
> 
> This patch aims to fix the current code as it was not doing the
> shifting, but instead it was masking directly with the value of the
> constant itself.
> 
> Signed-off-by: Sebastien Boeuf <address@hidden>

Nicely spotted.

Two things;
  a) I think your mail client has wrapped the lines at some point.
  b) I think this is why the has_feature() functione exists, so does
     that become

      if (!has_feature(dev->protocol_features, 
VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD))

Dave

> ---
>  contrib/libvhost-user/libvhost-user.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-
> user/libvhost-user.c
> index fb61142bcc..11909fb7c1 100644
> --- a/contrib/libvhost-user/libvhost-user.c
> +++ b/contrib/libvhost-user/libvhost-user.c
> @@ -1112,7 +1112,7 @@ bool vu_set_queue_host_notifier(VuDev *dev,
> VuVirtq *vq, int fd,
>  
>      vmsg.fd_num = fd_num;
>  
> -    if ((dev->protocol_features & VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD)
> == 0) {
> +    if ((dev->protocol_features & (1ULL <<
> VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD)) == 0) {
>          return false;
>      }
>  
> @@ -2537,7 +2537,7 @@ int64_t vu_fs_cache_request(VuDev *dev,
> VhostUserSlaveRequest req, int fd,
>  
>      vmsg.fd_num = fd_num;
>  
> -    if ((dev->protocol_features & VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD)
> == 0) {
> +    if ((dev->protocol_features & (1ULL <<
> VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD)) == 0) {
>          return -EINVAL;
>      }
>  
> -- 
> 2.17.1
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK



reply via email to

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