From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
To: "Rafael J. Wysocki" <rafael@kernel.org>,
"Len Brown" <lenb@kernel.org>,
"Robert Moore" <robert.moore@intel.com>,
"Dmitry Torokhov" <dmitry.torokhov@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
"Jakub Kicinski" <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Benson Leung" <bleung@chromium.org>,
"Tzung-Bi Shih" <tzungbi@kernel.org>,
"Corentin Chary" <corentin.chary@gmail.com>,
"Luke D. Jones" <luke@ljones.dev>,
"Hans de Goede" <hdegoede@redhat.com>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Thadeu Lima de Souza Cascardo" <cascardo@holoscopio.com>,
"Daniel Oliveira Nascimento" <don@syst.com.br>,
"Pali Rohár" <pali@kernel.org>,
"Matan Ziv-Av" <matan@svgalib.org>,
"Mattia Dongili" <malattia@linux.it>,
"Azael Avalos" <coproscefalo@gmail.com>,
"Richard Cochran" <richardcochran@gmail.com>,
"Jeff Sipek" <jsipek@vmware.com>,
"Ajay Kaher" <akaher@vmware.com>,
"Alexey Makhalov" <amakhalov@vmware.com>,
"VMware PV-Drivers Reviewers" <pv-drivers@vmware.com>,
"Theodore Ts'o" <tytso@mit.edu>,
"Jason A. Donenfeld" <Jason@zx2c4.com>,
"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
Cc: linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
acpica-devel@lists.linux.dev, linux-input@vger.kernel.org,
netdev@vger.kernel.org, chrome-platform@lists.linux.dev,
platform-driver-x86@vger.kernel.org,
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Subject: [PATCH 01/19] ACPI: store owner from modules with acpi_bus_register_driver()
Date: Wed, 27 Mar 2024 08:43:48 +0100 [thread overview]
Message-ID: <20240327-b4-module-owner-acpi-v1-1-725241a2d224@linaro.org> (raw)
In-Reply-To: <20240327-b4-module-owner-acpi-v1-0-725241a2d224@linaro.org>
Modules registering driver with acpi_bus_register_driver() often 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
ACPI bus 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>
---
drivers/acpi/bus.c | 9 +++++----
include/acpi/acpi_bus.h | 7 ++++++-
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index d9fa730416f1..eda951032f3c 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -990,25 +990,26 @@ EXPORT_SYMBOL_GPL(acpi_driver_match_device);
-------------------------------------------------------------------------- */
/**
- * acpi_bus_register_driver - register a driver with the ACPI bus
+ * __acpi_bus_register_driver - register a driver with the ACPI bus
* @driver: driver being registered
+ * @owner: owning module/driver
*
* Registers a driver with the ACPI bus. Searches the namespace for all
* devices that match the driver's criteria and binds. Returns zero for
* success or a negative error status for failure.
*/
-int acpi_bus_register_driver(struct acpi_driver *driver)
+int __acpi_bus_register_driver(struct acpi_driver *driver, struct module *owner)
{
if (acpi_disabled)
return -ENODEV;
driver->drv.name = driver->name;
driver->drv.bus = &acpi_bus_type;
- driver->drv.owner = driver->owner;
+ driver->drv.owner = owner;
return driver_register(&driver->drv);
}
-EXPORT_SYMBOL(acpi_bus_register_driver);
+EXPORT_SYMBOL(__acpi_bus_register_driver);
/**
* acpi_bus_unregister_driver - unregisters a driver with the ACPI bus
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index 5de954e2b18a..7453be56f855 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -656,7 +656,12 @@ void acpi_scan_lock_release(void);
void acpi_lock_hp_context(void);
void acpi_unlock_hp_context(void);
int acpi_scan_add_handler(struct acpi_scan_handler *handler);
-int acpi_bus_register_driver(struct acpi_driver *driver);
+/*
+ * use a macro to avoid include chaining to get THIS_MODULE
+ */
+#define acpi_bus_register_driver(drv) \
+ __acpi_bus_register_driver(drv, THIS_MODULE)
+int __acpi_bus_register_driver(struct acpi_driver *driver, struct module *owner);
void acpi_bus_unregister_driver(struct acpi_driver *driver);
int acpi_bus_scan(acpi_handle handle);
void acpi_bus_trim(struct acpi_device *start);
--
2.34.1
next prev parent reply other threads:[~2024-03-27 7:44 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-27 7:43 [PATCH 00/19] ACPI: store owner from modules with acpi_bus_register_driver() Krzysztof Kozlowski
2024-03-27 7:43 ` Krzysztof Kozlowski [this message]
2024-03-27 7:43 ` [PATCH 02/19] Input: atlas: - drop owner assignment Krzysztof Kozlowski
2024-03-28 17:55 ` Dmitry Torokhov
2024-03-28 18:18 ` Krzysztof Kozlowski
2024-03-27 7:43 ` [PATCH 03/19] net: fjes: " Krzysztof Kozlowski
2024-03-27 7:43 ` [PATCH 04/19] platform: chrome: " Krzysztof Kozlowski
2024-03-28 10:20 ` Tzung-Bi Shih
2024-03-27 7:43 ` [PATCH 05/19] platform: asus-laptop: " Krzysztof Kozlowski
2024-03-27 7:43 ` [PATCH 06/19] platform: classmate-laptop: " Krzysztof Kozlowski
2024-03-28 10:24 ` Thadeu Lima de Souza Cascardo
2024-03-27 7:43 ` [PATCH 07/19] platform/x86/dell: " Krzysztof Kozlowski
2024-03-27 7:43 ` [PATCH 08/19] platform/x86/eeepc: " Krzysztof Kozlowski
2024-03-27 7:43 ` [PATCH 09/19] platform/x86/intel/rst: " Krzysztof Kozlowski
2024-03-27 7:43 ` [PATCH 10/19] platform/x86/intel/smartconnect: " Krzysztof Kozlowski
2024-03-27 7:43 ` [PATCH 11/19] platform/x86/lg-laptop: " Krzysztof Kozlowski
2024-03-27 7:43 ` [PATCH 12/19] platform/x86/sony-laptop: " Krzysztof Kozlowski
2024-03-27 7:44 ` [PATCH 13/19] platform/x86/toshiba_acpi: " Krzysztof Kozlowski
2024-03-27 7:44 ` [PATCH 14/19] platform/x86/toshiba_bluetooth: " Krzysztof Kozlowski
2024-03-27 7:44 ` [PATCH 15/19] platform/x86/toshiba_haps: " Krzysztof Kozlowski
2024-03-27 7:44 ` [PATCH 16/19] platform/x86/wireless-hotkey: " Krzysztof Kozlowski
2024-03-27 7:44 ` [PATCH 17/19] ptp: vmw: " Krzysztof Kozlowski
2024-03-27 7:44 ` [PATCH 18/19] virt: vmgenid: " Krzysztof Kozlowski
2024-03-27 7:44 ` [PATCH 19/19] ACPI: drop redundant owner from acpi_driver Krzysztof Kozlowski
2024-03-27 13:16 ` [PATCH 00/19] ACPI: store owner from modules with acpi_bus_register_driver() Rafael J. Wysocki
2024-03-27 13:30 ` Hans de Goede
2024-03-27 13:32 ` Hans de Goede
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=20240327-b4-module-owner-acpi-v1-1-725241a2d224@linaro.org \
--to=krzysztof.kozlowski@linaro.org \
--cc=Jason@zx2c4.com \
--cc=acpica-devel@lists.linux.dev \
--cc=akaher@vmware.com \
--cc=amakhalov@vmware.com \
--cc=bleung@chromium.org \
--cc=cascardo@holoscopio.com \
--cc=chrome-platform@lists.linux.dev \
--cc=coproscefalo@gmail.com \
--cc=corentin.chary@gmail.com \
--cc=davem@davemloft.net \
--cc=dmitry.torokhov@gmail.com \
--cc=don@syst.com.br \
--cc=edumazet@google.com \
--cc=hdegoede@redhat.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=jsipek@vmware.com \
--cc=kuba@kernel.org \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luke@ljones.dev \
--cc=malattia@linux.it \
--cc=matan@svgalib.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=pali@kernel.org \
--cc=platform-driver-x86@vger.kernel.org \
--cc=pv-drivers@vmware.com \
--cc=rafael.j.wysocki@intel.com \
--cc=rafael@kernel.org \
--cc=richardcochran@gmail.com \
--cc=robert.moore@intel.com \
--cc=tytso@mit.edu \
--cc=tzungbi@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).