Thread (9 messages) flat view 9 messages, 3 authors, 2021-05-21

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

From: Juergen Gross <jgross@suse.com>
Date: 2021-05-17 14:28:58
Also in: lkml, xen-devel

On 17.05.21 16:20, Jan Beulich wrote:
On 13.05.2021 12:02, Juergen Gross wrote:
quoted
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@suse.com>
Reviewed-by: Jan Beulich <redacted>
with one remark:
quoted
@@ -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?
Yes, good idea.


Juergen

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help