Commit 6fd28941 authored by Naman Jain's avatar Naman Jain Committed by Greg Kroah-Hartman

Drivers: hv: vmbus: Fix rescind handling in uio_hv_generic

Rescind offer handling relies on rescind callbacks for some of the
resources cleanup, if they are registered. It does not unregister
vmbus device for the primary channel closure, when callback is
registered. Without it, next onoffer does not come, rescind flag
remains set and device goes to unusable state.

Add logic to unregister vmbus for the primary channel in rescind callback
to ensure channel removal and relid release, and to ensure that next
onoffer can be received and handled properly.

Cc: stable@vger.kernel.org
Fixes: ca3cda6f ("uio_hv_generic: add rescind support")
Signed-off-by: default avatarNaman Jain <namjain@linux.microsoft.com>
Reviewed-by: default avatarSaurabh Sengar <ssengar@linux.microsoft.com>
Link: https://lore.kernel.org/r/20240829071312.1595-3-namjain@linux.microsoft.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent fb1adbd7
...@@ -1952,6 +1952,7 @@ void vmbus_device_unregister(struct hv_device *device_obj) ...@@ -1952,6 +1952,7 @@ void vmbus_device_unregister(struct hv_device *device_obj)
*/ */
device_unregister(&device_obj->device); device_unregister(&device_obj->device);
} }
EXPORT_SYMBOL_GPL(vmbus_device_unregister);
#ifdef CONFIG_ACPI #ifdef CONFIG_ACPI
/* /*
......
...@@ -121,6 +121,14 @@ static void hv_uio_rescind(struct vmbus_channel *channel) ...@@ -121,6 +121,14 @@ static void hv_uio_rescind(struct vmbus_channel *channel)
/* Wake up reader */ /* Wake up reader */
uio_event_notify(&pdata->info); uio_event_notify(&pdata->info);
/*
* With rescind callback registered, rescind path will not unregister the device
* from vmbus when the primary channel is rescinded.
* Without it, rescind handling is incomplete and next onoffer msg does not come.
* Unregister the device from vmbus here.
*/
vmbus_device_unregister(channel->device_obj);
} }
/* Sysfs API to allow mmap of the ring buffers /* Sysfs API to allow mmap of the ring buffers
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment