All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Naman Jain <namjain@linux.microsoft.com>
Cc: "K . Y . Srinivasan" <kys@microsoft.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>,
	Stephen Hemminger <stephen@networkplumber.org>,
	linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org,
	stable@kernel.org, Saurabh Sengar <ssengar@linux.microsoft.com>,
	Michael Kelley <mhklinux@outlook.com>
Subject: Re: [PATCH v2] uio_hv_generic: Fix sysfs creation path for ring buffer
Date: Tue, 18 Mar 2025 14:28:48 +0100	[thread overview]
Message-ID: <2025031859-overwrite-tidy-f8ef@gregkh> (raw)
In-Reply-To: <20250318061558.3294-1-namjain@linux.microsoft.com>

On Tue, Mar 18, 2025 at 11:45:58AM +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 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. While at it, configure
> size of ring sysfs based on ring buffer's actual size and not 2MB default.

When you say stuff like "while at it..." that's a huge hint that the
patch should be broken up into smaller pieces and made a patch series.

> Problem path:
> vmbus_device_register
>     device_register
>         uio_hv_generic probe
>                     sysfs_create_bin_file (fails here)

Why does it fail?

>         kset_create_and_add (dependency)
>         vmbus_add_channel_kobj (dependency)

I don't understand this "graph", sorry.

> +/*
> + * hv_create_ring_sysfs - create ring sysfs entry corresponding to ring buffers for a channel
> + */

Kerneldoc?

> +int hv_create_ring_sysfs(struct vmbus_channel *channel,
> +			 int (*hv_mmap_ring_buffer)(struct vmbus_channel *channel,
> +						    struct vm_area_struct *vma))
> +{
> +	struct kobject *kobj = &channel->kobj;
> +
> +	channel->mmap_ring_buffer = hv_mmap_ring_buffer;
> +	channel->ring_sysfs_visible = true;
> +	return sysfs_update_group(kobj, &vmbus_chan_group);
> +}
> +EXPORT_SYMBOL_GPL(hv_create_ring_sysfs);

You just raced userspace and created a file without telling it that it
showed up, right?  Something still feels really wrong here.

greg k-h

  reply	other threads:[~2025-03-18 13:30 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-18  6:15 [PATCH v2] uio_hv_generic: Fix sysfs creation path for ring buffer Naman Jain
2025-03-18 13:28 ` Greg Kroah-Hartman [this message]
2025-03-19 13:35   ` Naman Jain
2025-03-19 14:24     ` Greg Kroah-Hartman
2025-03-20  8:17       ` Naman Jain

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2025031859-overwrite-tidy-f8ef@gregkh \
    --to=gregkh@linuxfoundation.org \
    --cc=decui@microsoft.com \
    --cc=haiyangz@microsoft.com \
    --cc=kys@microsoft.com \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhklinux@outlook.com \
    --cc=namjain@linux.microsoft.com \
    --cc=ssengar@linux.microsoft.com \
    --cc=stable@kernel.org \
    --cc=stephen@networkplumber.org \
    --cc=wei.liu@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.