All of lore.kernel.org
 help / color / mirror / Atom feed
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
To: "Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	 Xuan Zhuo <xuanzhuo@linux.alibaba.com>,
	Jonathan Corbet <corbet@lwn.net>,
	 David Hildenbrand <david@redhat.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	 Richard Weinberger <richard@nod.at>,
	 Anton Ivanov <anton.ivanov@cambridgegreys.com>,
	 Johannes Berg <johannes@sipsolutions.net>,
	 Paolo Bonzini <pbonzini@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	 Jens Axboe <axboe@kernel.dk>,
	Marcel Holtmann <marcel@holtmann.org>,
	 Luiz Augusto von Dentz <luiz.dentz@gmail.com>,
	 Olivia Mackall <olivia@selenic.com>,
	 Herbert Xu <herbert@gondor.apana.org.au>,
	Amit Shah <amit@kernel.org>,  Arnd Bergmann <arnd@arndb.de>,
	 Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	 Gonglei <arei.gonglei@huawei.com>,
	"David S. Miller" <davem@davemloft.net>,
	 Sudeep Holla <sudeep.holla@arm.com>,
	 Cristian Marussi <cristian.marussi@arm.com>,
	 Viresh Kumar <vireshk@kernel.org>,
	Linus Walleij <linus.walleij@linaro.org>,
	 Bartosz Golaszewski <brgl@bgdev.pl>,
	David Airlie <airlied@redhat.com>,
	 Gurchetan Singh <gurchetansingh@chromium.org>,
	 Chia-I Wu <olvaffe@gmail.com>,
	 Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	 Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	 Daniel Vetter <daniel@ffwll.ch>,
	 Jean-Philippe Brucker <jean-philippe@linaro.org>,
	 Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
	 Robin Murphy <robin.murphy@arm.com>,
	Alexander Graf <graf@amazon.com>,
	 Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	 Paolo Abeni <pabeni@redhat.com>,
	Eric Van Hensbergen <ericvh@kernel.org>,
	 Latchesar Ionkov <lucho@ionkov.net>,
	 Dominique Martinet <asmadeus@codewreck.org>,
	 Christian Schoenebeck <linux_oss@crudebyte.com>,
	 Stefano Garzarella <sgarzare@redhat.com>,
	Kalle Valo <kvalo@kernel.org>,
	 Dan Williams <dan.j.williams@intel.com>,
	 Vishal Verma <vishal.l.verma@intel.com>,
	Dave Jiang <dave.jiang@intel.com>,
	 Ira Weiny <ira.weiny@intel.com>,
	 Pankaj Gupta <pankaj.gupta.linux@gmail.com>,
	 Bjorn Andersson <andersson@kernel.org>,
	 Mathieu Poirier <mathieu.poirier@linaro.org>,
	 "James E.J. Bottomley" <jejb@linux.ibm.com>,
	 "Martin K. Petersen" <martin.petersen@oracle.com>,
	 Vivek Goyal <vgoyal@redhat.com>,
	Miklos Szeredi <miklos@szeredi.hu>,
	 Anton Yakovlev <anton.yakovlev@opensynergy.com>,
	 Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>
Cc: virtualization@lists.linux.dev, linux-doc@vger.kernel.org,
	 linux-kernel@vger.kernel.org, linux-um@lists.infradead.org,
	 linux-block@vger.kernel.org, linux-bluetooth@vger.kernel.org,
	 linux-crypto@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	 linux-gpio@vger.kernel.org, dri-devel@lists.freedesktop.org,
	 iommu@lists.linux.dev, netdev@vger.kernel.org,
	v9fs@lists.linux.dev,  kvm@vger.kernel.org,
	linux-wireless@vger.kernel.org, nvdimm@lists.linux.dev,
	 linux-remoteproc@vger.kernel.org, linux-scsi@vger.kernel.org,
	 linux-fsdevel@vger.kernel.org, alsa-devel@alsa-project.org,
	 linux-sound@vger.kernel.org,
	 Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Subject: [PATCH v2 01/25] virtio: store owner from modules with register_virtio_driver()
Date: Sun, 31 Mar 2024 10:43:48 +0200	[thread overview]
Message-ID: <20240331-module-owner-virtio-v2-1-98f04bfaf46a@linaro.org> (raw)
In-Reply-To: <20240331-module-owner-virtio-v2-0-98f04bfaf46a@linaro.org>

Modules registering driver with register_virtio_driver() might forget to
set .owner field.  i2c-virtio.c for example has it missing.  The field
is used by some of other kernel parts for reference counting
(try_module_get()), so it is expected that drivers will set it.

Solve the problem by moving this task away from the drivers to the core
virtio code, just like we did for platform_driver in
commit 9447057eaff8 ("platform_device: use a macro instead of
platform_driver_register").

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
 Documentation/driver-api/virtio/writing_virtio_drivers.rst | 1 -
 drivers/virtio/virtio.c                                    | 6 ++++--
 include/linux/virtio.h                                     | 7 +++++--
 3 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/Documentation/driver-api/virtio/writing_virtio_drivers.rst b/Documentation/driver-api/virtio/writing_virtio_drivers.rst
index e14c58796d25..e5de6f5d061a 100644
--- a/Documentation/driver-api/virtio/writing_virtio_drivers.rst
+++ b/Documentation/driver-api/virtio/writing_virtio_drivers.rst
@@ -97,7 +97,6 @@ like this::
 
 	static struct virtio_driver virtio_dummy_driver = {
 		.driver.name =  KBUILD_MODNAME,
-		.driver.owner = THIS_MODULE,
 		.id_table =     id_table,
 		.probe =        virtio_dummy_probe,
 		.remove =       virtio_dummy_remove,
diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c
index f173587893cb..9510c551dce8 100644
--- a/drivers/virtio/virtio.c
+++ b/drivers/virtio/virtio.c
@@ -362,14 +362,16 @@ static const struct bus_type virtio_bus = {
 	.remove = virtio_dev_remove,
 };
 
-int register_virtio_driver(struct virtio_driver *driver)
+int __register_virtio_driver(struct virtio_driver *driver, struct module *owner)
 {
 	/* Catch this early. */
 	BUG_ON(driver->feature_table_size && !driver->feature_table);
 	driver->driver.bus = &virtio_bus;
+	driver->driver.owner = owner;
+
 	return driver_register(&driver->driver);
 }
-EXPORT_SYMBOL_GPL(register_virtio_driver);
+EXPORT_SYMBOL_GPL(__register_virtio_driver);
 
 void unregister_virtio_driver(struct virtio_driver *driver)
 {
diff --git a/include/linux/virtio.h b/include/linux/virtio.h
index b0201747a263..26c4325aa373 100644
--- a/include/linux/virtio.h
+++ b/include/linux/virtio.h
@@ -170,7 +170,7 @@ size_t virtio_max_dma_size(const struct virtio_device *vdev);
 
 /**
  * struct virtio_driver - operations for a virtio I/O driver
- * @driver: underlying device driver (populate name and owner).
+ * @driver: underlying device driver (populate name).
  * @id_table: the ids serviced by this driver.
  * @feature_table: an array of feature numbers supported by this driver.
  * @feature_table_size: number of entries in the feature table array.
@@ -208,7 +208,10 @@ static inline struct virtio_driver *drv_to_virtio(struct device_driver *drv)
 	return container_of(drv, struct virtio_driver, driver);
 }
 
-int register_virtio_driver(struct virtio_driver *drv);
+/* use a macro to avoid include chaining to get THIS_MODULE */
+#define register_virtio_driver(drv) \
+	__register_virtio_driver(drv, THIS_MODULE)
+int __register_virtio_driver(struct virtio_driver *drv, struct module *owner);
 void unregister_virtio_driver(struct virtio_driver *drv);
 
 /* module_virtio_driver() - Helper macro for drivers that don't do

-- 
2.34.1


  reply	other threads:[~2024-03-31  8:44 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-31  8:43 [PATCH v2 00/25] virtio: store owner from modules with register_virtio_driver() Krzysztof Kozlowski
2024-03-31  8:43 ` Krzysztof Kozlowski [this message]
2024-03-31  9:34   ` bluez.test.bot
2024-03-31  8:43 ` [PATCH v2 02/25] virtio: balloon: drop owner assignment Krzysztof Kozlowski
2024-03-31  8:43 ` [PATCH v2 03/25] virtio: input: " Krzysztof Kozlowski
2024-03-31  8:43 ` [PATCH v2 04/25] virtio: mem: " Krzysztof Kozlowski
2024-03-31  8:43 ` [PATCH v2 05/25] um: virt-pci: " Krzysztof Kozlowski
2024-03-31  8:43 ` [PATCH v2 06/25] virtio_blk: " Krzysztof Kozlowski
2024-04-02 20:33   ` Stefan Hajnoczi
2024-03-31  8:43 ` [PATCH v2 07/25] bluetooth: virtio: " Krzysztof Kozlowski
2024-03-31  8:43 ` [PATCH v2 08/25] hwrng: " Krzysztof Kozlowski
2024-03-31  8:43 ` [PATCH v2 09/25] virtio_console: " Krzysztof Kozlowski
2024-03-31  8:43 ` [PATCH v2 10/25] crypto: virtio - " Krzysztof Kozlowski
2024-03-31  8:43 ` [PATCH v2 11/25] firmware: arm_scmi: virtio: " Krzysztof Kozlowski
2024-03-31 19:14   ` Sudeep Holla
2024-03-31  8:43 ` [PATCH v2 12/25] gpio: " Krzysztof Kozlowski
2024-04-04 11:41   ` Linus Walleij
2024-03-31  8:44 ` [PATCH v2 13/25] drm/virtio: " Krzysztof Kozlowski
2024-03-31  8:44 ` [PATCH v2 14/25] iommu: virtio: " Krzysztof Kozlowski
2024-03-31  8:44 ` [PATCH v2 15/25] misc: nsm: " Krzysztof Kozlowski
2024-04-09 11:45   ` Alexander Graf
2024-03-31  8:44 ` [PATCH v2 16/25] net: caif: virtio: " Krzysztof Kozlowski
2024-03-31  8:44 ` [PATCH v2 17/25] net: " Krzysztof Kozlowski
2024-03-31  8:44 ` [PATCH v2 18/25] net: 9p: " Krzysztof Kozlowski
2024-03-31  8:44 ` [PATCH v2 19/25] vsock/virtio: " Krzysztof Kozlowski
2024-04-02 20:33   ` Stefan Hajnoczi
2024-03-31  8:44 ` [PATCH v2 20/25] wifi: mac80211_hwsim: " Krzysztof Kozlowski
2024-03-31  8:44 ` [PATCH v2 21/25] nvdimm: virtio_pmem: " Krzysztof Kozlowski
2024-03-31 14:48   ` Pankaj Gupta
2024-03-31 14:48     ` Pankaj Gupta
2024-04-04  6:17   ` Gupta, Pankaj
2024-04-25 20:59   ` Ira Weiny
2024-03-31  8:44 ` [PATCH v2 22/25] rpmsg: virtio: " Krzysztof Kozlowski
2024-03-31  8:44 ` [PATCH v2 23/25] scsi: " Krzysztof Kozlowski
2024-04-02 20:34   ` Stefan Hajnoczi
2024-04-06  1:15   ` Martin K. Petersen
2024-03-31  8:44 ` [PATCH v2 24/25] fuse: " Krzysztof Kozlowski
2024-04-02 20:34   ` Stefan Hajnoczi
2024-03-31  8:44 ` [PATCH v2 25/25] sound: " Krzysztof Kozlowski
2024-04-02  6:30   ` Anton Yakovlev
2024-04-10  7:41 ` [PATCH v2 00/25] virtio: store owner from modules with register_virtio_driver() Krzysztof Kozlowski
2024-04-10  8:02   ` Michael S. Tsirkin

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=20240331-module-owner-virtio-v2-1-98f04bfaf46a@linaro.org \
    --to=krzysztof.kozlowski@linaro.org \
    --cc=airlied@redhat.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=amit@kernel.org \
    --cc=andersson@kernel.org \
    --cc=anton.ivanov@cambridgegreys.com \
    --cc=anton.yakovlev@opensynergy.com \
    --cc=arei.gonglei@huawei.com \
    --cc=arnd@arndb.de \
    --cc=asmadeus@codewreck.org \
    --cc=axboe@kernel.dk \
    --cc=brgl@bgdev.pl \
    --cc=corbet@lwn.net \
    --cc=cristian.marussi@arm.com \
    --cc=dan.j.williams@intel.com \
    --cc=daniel@ffwll.ch \
    --cc=dave.jiang@intel.com \
    --cc=davem@davemloft.net \
    --cc=david@redhat.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=edumazet@google.com \
    --cc=ericvh@kernel.org \
    --cc=graf@amazon.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=gurchetansingh@chromium.org \
    --cc=herbert@gondor.apana.org.au \
    --cc=iommu@lists.linux.dev \
    --cc=ira.weiny@intel.com \
    --cc=jasowang@redhat.com \
    --cc=jean-philippe@linaro.org \
    --cc=jejb@linux.ibm.com \
    --cc=johannes@sipsolutions.net \
    --cc=joro@8bytes.org \
    --cc=kraxel@redhat.com \
    --cc=kuba@kernel.org \
    --cc=kvalo@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-remoteproc@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=linux-um@lists.infradead.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linux_oss@crudebyte.com \
    --cc=lucho@ionkov.net \
    --cc=luiz.dentz@gmail.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=marcel@holtmann.org \
    --cc=martin.petersen@oracle.com \
    --cc=mathieu.poirier@linaro.org \
    --cc=miklos@szeredi.hu \
    --cc=mripard@kernel.org \
    --cc=mst@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=nvdimm@lists.linux.dev \
    --cc=olivia@selenic.com \
    --cc=olvaffe@gmail.com \
    --cc=pabeni@redhat.com \
    --cc=pankaj.gupta.linux@gmail.com \
    --cc=pbonzini@redhat.com \
    --cc=perex@perex.cz \
    --cc=richard@nod.at \
    --cc=robin.murphy@arm.com \
    --cc=sgarzare@redhat.com \
    --cc=stefanha@redhat.com \
    --cc=sudeep.holla@arm.com \
    --cc=tiwai@suse.com \
    --cc=tzimmermann@suse.de \
    --cc=v9fs@lists.linux.dev \
    --cc=vgoyal@redhat.com \
    --cc=vireshk@kernel.org \
    --cc=virtualization@lists.linux.dev \
    --cc=vishal.l.verma@intel.com \
    --cc=will@kernel.org \
    --cc=xuanzhuo@linux.alibaba.com \
    /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.