From: Vipul Ashri Date: Fri, 18 Sep 2020 09:55:04 +0000 (+0530) Subject: net/virtio: fix variable assignment in helper macro X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=a1412e05caa2678757156d4de2755ab5140ecc24;p=dpdk.git net/virtio: fix variable assignment in helper macro Inside Macro ASSIGN_UNLESS_EQUAL(var, val), assignment to var is always failing as assignment done using var_ having local scope only. This leads to TX packets not going out and found broken due to cleanup malfunctioning. This patch fixes the wrong variable assignment. Fixes: 57f90f894588 ("net/virtio: reuse packed ring functions") Cc: stable@dpdk.org Signed-off-by: Vipul Ashri Acked-by: Andrew Rybchenko Reviewed-by: Maxime Coquelin --- diff --git a/drivers/net/virtio/virtqueue.h b/drivers/net/virtio/virtqueue.h index 105a9c00c5..6ed50648c4 100644 --- a/drivers/net/virtio/virtqueue.h +++ b/drivers/net/virtio/virtqueue.h @@ -607,10 +607,10 @@ virtqueue_notify(struct virtqueue *vq) /* avoid write operation when necessary, to lessen cache issues */ #define ASSIGN_UNLESS_EQUAL(var, val) do { \ - typeof(var) var_ = (var); \ - typeof(val) val_ = (val); \ - if ((var_) != (val_)) \ - (var_) = (val_); \ + typeof(var) *const var_ = &(var); \ + typeof(val) const val_ = (val); \ + if (*var_ != val_) \ + *var_ = val_; \ } while (0) #define virtqueue_clear_net_hdr(hdr) do { \