On Tue, Apr 15, 2025 at 09:24:16PM +0530, Naman Jain wrote:
On 4/15/2025 8:40 PM, Greg Kroah-Hartman wrote:
On Thu, Apr 10, 2025 at 11:38:46AM +0530, Naman Jain wrote:
On regular bootup, devices get registered to VMBus first, so when
uio_hv_generic driver for a particular device type is probed,
the device is already initialized and added, so sysfs creation in
uio_hv_generic probe works fine. However, when device is removed
and brought back, the channel rescinds and device again gets
registered to VMBus. However this time, the uio_hv_generic driver is
already registered to probe for that device and in this case sysfs
creation is tried before the device's kobject gets initialized
completely.
Fix this by moving the core logic of sysfs creation for ring buffer,
from uio_hv_generic to HyperV's VMBus driver, where rest of the sysfs
attributes for the channels are defined. While doing that, make use
of attribute groups and macros, instead of creating sysfs directly,
to ensure better error handling and code flow.
Problem path:
vmbus_process_offer (new offer comes for the VMBus device)
vmbus_add_channel_work
vmbus_device_register
|-> device_register
| |...
| |-> hv_uio_probe
| |...
| |-> sysfs_create_bin_file (leads to a warning as
| primary channel's kobject, which is used to
| create sysfs is not yet initialized)
|-> kset_create_and_add
|-> vmbus_add_channel_kobj (initialization of primary channel's
kobject happens later)
Above code flow is sequential and the warning is always reproducible in
this path.
Fixes: 9ab877a6ccf8 ("uio_hv_generic: make ring buffer attribute for primary channel")
Cc: stable@xxxxxxxxxx
Suggested-by: Saurabh Sengar <ssengar@xxxxxxxxxxxxxxxxxxx>
Suggested-by: Michael Kelley <mhklinux@xxxxxxxxxxx>
Signed-off-by: Naman Jain <namjain@xxxxxxxxxxxxxxxxxxx>
---
drivers/hv/hyperv_vmbus.h | 6 ++
drivers/hv/vmbus_drv.c | 110 ++++++++++++++++++++++++++++++++++-
drivers/uio/uio_hv_generic.c | 39 ++++++-------
include/linux/hyperv.h | 6 ++
4 files changed, 138 insertions(+), 23 deletions(-)
Always run checkpatch on a patch before submitting it for review :(
Hi Greg,
I verified again and I could not see checkpatch warnings with patch 1,2.
There was a warning regarding length of characters for link to previous
versions in the cover letter but I ignored it.
I tried on latest linux-next tip with this series fetched from lore using
b4. I'm sorry, if I am missing something, but can you please try again.
I've pointed out the first thing that I noticed, thanks.