Submitter | Stephen Hemminger |
---|---|
Date | Dec. 5, 2018, 10:11 p.m. |
Message ID | <20181205221159.6336-1-stephen@networkplumber.org> |
Download | mbox | patch |
Permalink | /patch/673531/ |
State | New |
Headers | show |
Comments
05/12/2018 23:11, Stephen Hemminger: > When using multiple queues, there was a race with the kernel > in setting up the second channel. This regression is due to a kernel change > which does not allow accessing sysfs files for Hyper-V channels that are not opened. > > The fix is simple, just move the logic to detect not ready > sub channels earlier in the existing loop. > > Fixes: 831dba47bd36 ("bus/vmbus: add Hyper-V virtual bus support") > Reported-by:Mohammed Gamal <mgamal@redhat.com> > Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com> +Cc stable@dpdk.org Series applied, thanks
Patch
diff --git a/drivers/bus/vmbus/linux/vmbus_uio.c b/drivers/bus/vmbus/linux/vmbus_uio.c index 12e97e3a420a..38df4d724ed5 100644 --- a/drivers/bus/vmbus/linux/vmbus_uio.c +++ b/drivers/bus/vmbus/linux/vmbus_uio.c @@ -357,6 +357,12 @@ int vmbus_uio_get_subchan(struct vmbus_channel *primary, continue; } + if (!vmbus_isnew_subchannel(primary, relid)) + continue; /* Already know about you */ + + if (!vmbus_uio_ring_present(dev, relid)) + continue; /* Ring may not be ready yet */ + snprintf(subchan_path, sizeof(subchan_path), "%s/%lu", chan_path, relid); err = vmbus_uio_sysfs_read(subchan_path, "subchannel_id", @@ -370,12 +376,6 @@ int vmbus_uio_get_subchan(struct vmbus_channel *primary, if (subid == 0) continue; /* skip primary channel */ - if (!vmbus_isnew_subchannel(primary, relid)) - continue; - - if (!vmbus_uio_ring_present(dev, relid)) - continue; /* Ring may not be ready yet */ - err = vmbus_uio_sysfs_read(subchan_path, "monitor_id", &monid, UINT8_MAX); if (err) {
When using multiple queues, there was a race with the kernel in setting up the second channel. This regression is due to a kernel change which does not allow accessing sysfs files for Hyper-V channels that are not opened. The fix is simple, just move the logic to detect not ready sub channels earlier in the existing loop. Fixes: 831dba47bd36 ("bus/vmbus: add Hyper-V virtual bus support") Reported-by:Mohammed Gamal <mgamal@redhat.com> Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com> --- drivers/bus/vmbus/linux/vmbus_uio.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)