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

Re: [PATCH 5/8] xen/netfront: read response from backend only once



On 13.05.2021 12:02, Juergen Gross wrote:
> In order to avoid problems in case the backend is modifying a response
> on the ring page while the frontend has already seen it, just read the
> response into a local buffer in one go and then operate on that buffer
> only.
> 
> Signed-off-by: Juergen Gross <jgross@xxxxxxxx>

Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
with one remark:

> @@ -830,24 +830,22 @@ static int xennet_get_extras(struct netfront_queue 
> *queue,
>                       break;
>               }
>  
> -             extra = (struct xen_netif_extra_info *)
> -                     RING_GET_RESPONSE(&queue->rx, ++cons);
> +             RING_COPY_RESPONSE(&queue->rx, ++cons, &extra);
>  
> -             if (unlikely(!extra->type ||
> -                          extra->type >= XEN_NETIF_EXTRA_TYPE_MAX)) {
> +             if (unlikely(!extra.type ||
> +                          extra.type >= XEN_NETIF_EXTRA_TYPE_MAX)) {
>                       if (net_ratelimit())
>                               dev_warn(dev, "Invalid extra type: %d\n",
> -                                     extra->type);
> +                                     extra.type);
>                       err = -EINVAL;
>               } else {
> -                     memcpy(&extras[extra->type - 1], extra,
> -                            sizeof(*extra));
> +                     memcpy(&extras[extra.type - 1], &extra, sizeof(extra));

Maybe take the opportunity and switch to (type safe) structure
assignment?

Jan



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.