All of lore.kernel.org
 help / color / mirror / Atom feed
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
To: "Ulf Hansson" <ulf.hansson@linaro.org>,
	"Marcel Holtmann" <marcel@holtmann.org>,
	"Luiz Augusto von Dentz" <luiz.dentz@gmail.com>,
	"Matthias Brugger" <matthias.bgg@gmail.com>,
	"AngeloGioacchino Del Regno"
	<angelogioacchino.delregno@collabora.com>,
	"Kalle Valo" <kvalo@kernel.org>,
	"Jeff Johnson" <jjohnson@kernel.org>,
	"Arend van Spriel" <arend.vanspriel@broadcom.com>,
	"Brian Norris" <briannorris@chromium.org>,
	"Jérôme Pouiller" <jerome.pouiller@silabs.com>
Cc: linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org,
	 linux-bluetooth@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	 linux-mediatek@lists.infradead.org,
	linux-wireless@vger.kernel.org,  ath10k@lists.infradead.org,
	brcm80211@lists.linux.dev,  brcm80211-dev-list.pdl@broadcom.com,
	 Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Subject: [PATCH 1/7] mmc: sdio: store owner from modules with sdio_register_driver()
Date: Fri, 29 Mar 2024 18:24:31 +0100	[thread overview]
Message-ID: <20240329-module-owner-sdio-v1-1-e4010b11ccaa@linaro.org> (raw)
In-Reply-To: <20240329-module-owner-sdio-v1-0-e4010b11ccaa@linaro.org>

Modules registering driver with sdio_register_driver() might
forget to set .owner field.  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
code, just like we did for platform_driver in
commit 9447057eaff8 ("platform_device: use a macro instead of
platform_driver_register").

Since many drivers forget to set the .owner, this effectively will fix
them.  Examples of fixed drivers are: ath6kl, b43, btsdio.c, ks7010,
libertas, MediaTek WiFi drivers, Realtek WiFi drivers, rsi, siano,
wilc1000, wl1251 and more.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
 drivers/mmc/core/sdio_bus.c   | 9 ++++++---
 include/linux/mmc/sdio_func.h | 5 ++++-
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/mmc/core/sdio_bus.c b/drivers/mmc/core/sdio_bus.c
index 71d885fbc228..c5fdfe2325f8 100644
--- a/drivers/mmc/core/sdio_bus.c
+++ b/drivers/mmc/core/sdio_bus.c
@@ -265,16 +265,19 @@ void sdio_unregister_bus(void)
 }
 
 /**
- *	sdio_register_driver - register a function driver
+ *	__sdio_register_driver - register a function driver
  *	@drv: SDIO function driver
+ *	@owner: owning module/driver
  */
-int sdio_register_driver(struct sdio_driver *drv)
+int __sdio_register_driver(struct sdio_driver *drv, struct module *owner)
 {
 	drv->drv.name = drv->name;
 	drv->drv.bus = &sdio_bus_type;
+	drv->drv.owner = owner;
+
 	return driver_register(&drv->drv);
 }
-EXPORT_SYMBOL_GPL(sdio_register_driver);
+EXPORT_SYMBOL_GPL(__sdio_register_driver);
 
 /**
  *	sdio_unregister_driver - unregister a function driver
diff --git a/include/linux/mmc/sdio_func.h b/include/linux/mmc/sdio_func.h
index 478855b8e406..fed1f5f4a8d3 100644
--- a/include/linux/mmc/sdio_func.h
+++ b/include/linux/mmc/sdio_func.h
@@ -106,7 +106,10 @@ struct sdio_driver {
 	.class = (dev_class), \
 	.vendor = SDIO_ANY_ID, .device = SDIO_ANY_ID
 
-extern int sdio_register_driver(struct sdio_driver *);
+/* use a macro to avoid include chaining to get THIS_MODULE */
+#define sdio_register_driver(drv) \
+	__sdio_register_driver(drv, THIS_MODULE)
+extern int __sdio_register_driver(struct sdio_driver *, struct module *);
 extern void sdio_unregister_driver(struct sdio_driver *);
 
 /**

-- 
2.34.1


WARNING: multiple messages have this Message-ID (diff)
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
To: "Ulf Hansson" <ulf.hansson@linaro.org>,
	"Marcel Holtmann" <marcel@holtmann.org>,
	"Luiz Augusto von Dentz" <luiz.dentz@gmail.com>,
	"Matthias Brugger" <matthias.bgg@gmail.com>,
	"AngeloGioacchino Del Regno"
	<angelogioacchino.delregno@collabora.com>,
	"Kalle Valo" <kvalo@kernel.org>,
	"Jeff Johnson" <jjohnson@kernel.org>,
	"Arend van Spriel" <arend.vanspriel@broadcom.com>,
	"Brian Norris" <briannorris@chromium.org>,
	"Jérôme Pouiller" <jerome.pouiller@silabs.com>
Cc: linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org,
	 linux-bluetooth@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	 linux-mediatek@lists.infradead.org,
	linux-wireless@vger.kernel.org,  ath10k@lists.infradead.org,
	brcm80211@lists.linux.dev,  brcm80211-dev-list.pdl@broadcom.com,
	 Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Subject: [PATCH 1/7] mmc: sdio: store owner from modules with sdio_register_driver()
Date: Fri, 29 Mar 2024 18:24:31 +0100	[thread overview]
Message-ID: <20240329-module-owner-sdio-v1-1-e4010b11ccaa@linaro.org> (raw)
In-Reply-To: <20240329-module-owner-sdio-v1-0-e4010b11ccaa@linaro.org>

Modules registering driver with sdio_register_driver() might
forget to set .owner field.  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
code, just like we did for platform_driver in
commit 9447057eaff8 ("platform_device: use a macro instead of
platform_driver_register").

Since many drivers forget to set the .owner, this effectively will fix
them.  Examples of fixed drivers are: ath6kl, b43, btsdio.c, ks7010,
libertas, MediaTek WiFi drivers, Realtek WiFi drivers, rsi, siano,
wilc1000, wl1251 and more.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
 drivers/mmc/core/sdio_bus.c   | 9 ++++++---
 include/linux/mmc/sdio_func.h | 5 ++++-
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/mmc/core/sdio_bus.c b/drivers/mmc/core/sdio_bus.c
index 71d885fbc228..c5fdfe2325f8 100644
--- a/drivers/mmc/core/sdio_bus.c
+++ b/drivers/mmc/core/sdio_bus.c
@@ -265,16 +265,19 @@ void sdio_unregister_bus(void)
 }
 
 /**
- *	sdio_register_driver - register a function driver
+ *	__sdio_register_driver - register a function driver
  *	@drv: SDIO function driver
+ *	@owner: owning module/driver
  */
-int sdio_register_driver(struct sdio_driver *drv)
+int __sdio_register_driver(struct sdio_driver *drv, struct module *owner)
 {
 	drv->drv.name = drv->name;
 	drv->drv.bus = &sdio_bus_type;
+	drv->drv.owner = owner;
+
 	return driver_register(&drv->drv);
 }
-EXPORT_SYMBOL_GPL(sdio_register_driver);
+EXPORT_SYMBOL_GPL(__sdio_register_driver);
 
 /**
  *	sdio_unregister_driver - unregister a function driver
diff --git a/include/linux/mmc/sdio_func.h b/include/linux/mmc/sdio_func.h
index 478855b8e406..fed1f5f4a8d3 100644
--- a/include/linux/mmc/sdio_func.h
+++ b/include/linux/mmc/sdio_func.h
@@ -106,7 +106,10 @@ struct sdio_driver {
 	.class = (dev_class), \
 	.vendor = SDIO_ANY_ID, .device = SDIO_ANY_ID
 
-extern int sdio_register_driver(struct sdio_driver *);
+/* use a macro to avoid include chaining to get THIS_MODULE */
+#define sdio_register_driver(drv) \
+	__sdio_register_driver(drv, THIS_MODULE)
+extern int __sdio_register_driver(struct sdio_driver *, struct module *);
 extern void sdio_unregister_driver(struct sdio_driver *);
 
 /**

-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2024-03-29 17:24 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-29 17:24 [PATCH 0/7] mmc/wifi/bluetooth: store owner from modules with sdio_register_driver() Krzysztof Kozlowski
2024-03-29 17:24 ` Krzysztof Kozlowski
2024-03-29 17:24 ` Krzysztof Kozlowski [this message]
2024-03-29 17:24   ` [PATCH 1/7] mmc: sdio: " Krzysztof Kozlowski
2024-03-29 17:57   ` mmc/wifi/bluetooth: " bluez.test.bot
2024-03-31 20:37   ` [PATCH 1/7] mmc: sdio: " Francesco Dolcini
2024-03-31 20:37     ` Francesco Dolcini
2024-04-01  9:44     ` Krzysztof Kozlowski
2024-04-01  9:44       ` Krzysztof Kozlowski
2024-03-29 17:24 ` [PATCH 2/7] bluetooth: btmrvl_sdio: drop driver owner initialization Krzysztof Kozlowski
2024-03-29 17:24   ` Krzysztof Kozlowski
2024-03-29 17:24 ` [PATCH 3/7] bluetooth: btmtksdio: " Krzysztof Kozlowski
2024-03-29 17:24   ` Krzysztof Kozlowski
2024-03-29 17:24 ` [PATCH 4/7] wifi: ath10k: sdio: " Krzysztof Kozlowski
2024-03-29 17:24   ` Krzysztof Kozlowski
2024-03-29 23:22   ` Jeff Johnson
2024-03-29 23:22     ` Jeff Johnson
2024-03-29 17:24 ` [PATCH 5/7] wifi: brcm80211: " Krzysztof Kozlowski
2024-03-29 17:24   ` Krzysztof Kozlowski
2024-03-29 23:52   ` Arend Van Spriel
2024-03-29 23:52     ` Arend Van Spriel
2024-03-29 17:24 ` [PATCH 6/7] wifi: marvell: mwifiex: " Krzysztof Kozlowski
2024-03-29 17:24   ` Krzysztof Kozlowski
2024-03-31 20:28   ` Francesco Dolcini
2024-03-31 20:28     ` Francesco Dolcini
2024-04-03 13:53   ` Kalle Valo
2024-04-03 13:53     ` Kalle Valo
2024-03-29 17:24 ` [PATCH 7/7] wifi: silabs: wfx: " Krzysztof Kozlowski
2024-03-29 17:24   ` Krzysztof Kozlowski
2024-04-03 13:54   ` Kalle Valo
2024-04-03 13:54     ` Kalle Valo
2024-04-02 10:57 ` [PATCH 0/7] mmc/wifi/bluetooth: store owner from modules with sdio_register_driver() Ulf Hansson
2024-04-02 10:57   ` Ulf Hansson

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=20240329-module-owner-sdio-v1-1-e4010b11ccaa@linaro.org \
    --to=krzysztof.kozlowski@linaro.org \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=arend.vanspriel@broadcom.com \
    --cc=ath10k@lists.infradead.org \
    --cc=brcm80211-dev-list.pdl@broadcom.com \
    --cc=brcm80211@lists.linux.dev \
    --cc=briannorris@chromium.org \
    --cc=jerome.pouiller@silabs.com \
    --cc=jjohnson@kernel.org \
    --cc=kvalo@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=luiz.dentz@gmail.com \
    --cc=marcel@holtmann.org \
    --cc=matthias.bgg@gmail.com \
    --cc=ulf.hansson@linaro.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.