devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] ACPI/DT mdiobus module owner fixes
@ 2023-03-16 23:33 Florian Fainelli
  2023-03-16 23:33 ` [PATCH v2 1/2] net: mdio: fix owner field for mdio buses registered using device-tree Florian Fainelli
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Florian Fainelli @ 2023-03-16 23:33 UTC (permalink / raw)
  To: netdev
  Cc: Florian Fainelli, Andrew Lunn, Heiner Kallweit, Russell King,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Rob Herring, Frank Rowand, Rafael J. Wysocki, Calvin Johnson,
	Grant Likely, Ioana Ciornei, open list,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE, mbizon

This patch series fixes wrong mdiobus module ownership for MDIO buses
registered from DT or ACPI.

Thanks Maxime for providing the first patch and making me see that ACPI
also had the same issue.

Changes in v2:

- fixed missing kdoc in the first patch

Florian Fainelli (1):
  net: mdio: fix owner field for mdio buses registered using ACPI

Maxime Bizon (1):
  net: mdio: fix owner field for mdio buses registered using device-tree

 drivers/net/mdio/acpi_mdio.c  | 10 ++++++----
 drivers/net/mdio/of_mdio.c    | 12 +++++++-----
 drivers/net/phy/mdio_devres.c | 11 ++++++-----
 include/linux/acpi_mdio.h     |  9 ++++++++-
 include/linux/of_mdio.h       | 22 +++++++++++++++++++---
 5 files changed, 46 insertions(+), 18 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/2] net: mdio: fix owner field for mdio buses registered using device-tree
  2023-03-16 23:33 [PATCH v2 0/2] ACPI/DT mdiobus module owner fixes Florian Fainelli
@ 2023-03-16 23:33 ` Florian Fainelli
  2023-03-18 15:19   ` Simon Horman
  2023-03-16 23:33 ` [PATCH v2 2/2] net: mdio: fix owner field for mdio buses registered using ACPI Florian Fainelli
  2023-03-19 10:50 ` [PATCH v2 0/2] ACPI/DT mdiobus module owner fixes patchwork-bot+netdevbpf
  2 siblings, 1 reply; 6+ messages in thread
From: Florian Fainelli @ 2023-03-16 23:33 UTC (permalink / raw)
  To: netdev
  Cc: Maxime Bizon, Florian Fainelli, Andrew Lunn, Heiner Kallweit,
	Russell King, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Rob Herring, Frank Rowand, Rafael J. Wysocki,
	Calvin Johnson, Grant Likely, Ioana Ciornei, open list,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE

From: Maxime Bizon <mbizon@freebox.fr>

Bus ownership is wrong when using of_mdiobus_register() to register an mdio
bus. That function is not inline, so when it calls mdiobus_register() the wrong
THIS_MODULE value is captured.

Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
Fixes: 90eff9096c01 ("net: phy: Allow splitting MDIO bus/device support from PHYs")
[florian: fix kdoc, added Fixes tag]
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/mdio/of_mdio.c    | 12 +++++++-----
 drivers/net/phy/mdio_devres.c | 11 ++++++-----
 include/linux/of_mdio.h       | 22 +++++++++++++++++++---
 3 files changed, 32 insertions(+), 13 deletions(-)

diff --git a/drivers/net/mdio/of_mdio.c b/drivers/net/mdio/of_mdio.c
index 510822d6d0d9..1e46e39f5f46 100644
--- a/drivers/net/mdio/of_mdio.c
+++ b/drivers/net/mdio/of_mdio.c
@@ -139,21 +139,23 @@ bool of_mdiobus_child_is_phy(struct device_node *child)
 EXPORT_SYMBOL(of_mdiobus_child_is_phy);
 
 /**
- * of_mdiobus_register - Register mii_bus and create PHYs from the device tree
+ * __of_mdiobus_register - Register mii_bus and create PHYs from the device tree
  * @mdio: pointer to mii_bus structure
  * @np: pointer to device_node of MDIO bus.
+ * @owner: module owning the @mdio object.
  *
  * This function registers the mii_bus structure and registers a phy_device
  * for each child node of @np.
  */
-int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
+int __of_mdiobus_register(struct mii_bus *mdio, struct device_node *np,
+			  struct module *owner)
 {
 	struct device_node *child;
 	bool scanphys = false;
 	int addr, rc;
 
 	if (!np)
-		return mdiobus_register(mdio);
+		return __mdiobus_register(mdio, owner);
 
 	/* Do not continue if the node is disabled */
 	if (!of_device_is_available(np))
@@ -172,7 +174,7 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
 	of_property_read_u32(np, "reset-post-delay-us", &mdio->reset_post_delay_us);
 
 	/* Register the MDIO bus */
-	rc = mdiobus_register(mdio);
+	rc = __mdiobus_register(mdio, owner);
 	if (rc)
 		return rc;
 
@@ -236,7 +238,7 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
 	mdiobus_unregister(mdio);
 	return rc;
 }
-EXPORT_SYMBOL(of_mdiobus_register);
+EXPORT_SYMBOL(__of_mdiobus_register);
 
 /**
  * of_mdio_find_device - Given a device tree node, find the mdio_device
diff --git a/drivers/net/phy/mdio_devres.c b/drivers/net/phy/mdio_devres.c
index b560e99695df..69b829e6ab35 100644
--- a/drivers/net/phy/mdio_devres.c
+++ b/drivers/net/phy/mdio_devres.c
@@ -98,13 +98,14 @@ EXPORT_SYMBOL(__devm_mdiobus_register);
 
 #if IS_ENABLED(CONFIG_OF_MDIO)
 /**
- * devm_of_mdiobus_register - Resource managed variant of of_mdiobus_register()
+ * __devm_of_mdiobus_register - Resource managed variant of of_mdiobus_register()
  * @dev:	Device to register mii_bus for
  * @mdio:	MII bus structure to register
  * @np:		Device node to parse
+ * @owner:	Owning module
  */
-int devm_of_mdiobus_register(struct device *dev, struct mii_bus *mdio,
-			     struct device_node *np)
+int __devm_of_mdiobus_register(struct device *dev, struct mii_bus *mdio,
+			       struct device_node *np, struct module *owner)
 {
 	struct mdiobus_devres *dr;
 	int ret;
@@ -117,7 +118,7 @@ int devm_of_mdiobus_register(struct device *dev, struct mii_bus *mdio,
 	if (!dr)
 		return -ENOMEM;
 
-	ret = of_mdiobus_register(mdio, np);
+	ret = __of_mdiobus_register(mdio, np, owner);
 	if (ret) {
 		devres_free(dr);
 		return ret;
@@ -127,7 +128,7 @@ int devm_of_mdiobus_register(struct device *dev, struct mii_bus *mdio,
 	devres_add(dev, dr);
 	return 0;
 }
-EXPORT_SYMBOL(devm_of_mdiobus_register);
+EXPORT_SYMBOL(__devm_of_mdiobus_register);
 #endif /* CONFIG_OF_MDIO */
 
 MODULE_LICENSE("GPL");
diff --git a/include/linux/of_mdio.h b/include/linux/of_mdio.h
index da633d34ab86..8a52ef2e6fa6 100644
--- a/include/linux/of_mdio.h
+++ b/include/linux/of_mdio.h
@@ -14,9 +14,25 @@
 
 #if IS_ENABLED(CONFIG_OF_MDIO)
 bool of_mdiobus_child_is_phy(struct device_node *child);
-int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np);
-int devm_of_mdiobus_register(struct device *dev, struct mii_bus *mdio,
-			     struct device_node *np);
+int __of_mdiobus_register(struct mii_bus *mdio, struct device_node *np,
+			  struct module *owner);
+
+static inline int of_mdiobus_register(struct mii_bus *mdio,
+				      struct device_node *np)
+{
+	return __of_mdiobus_register(mdio, np, THIS_MODULE);
+}
+
+int __devm_of_mdiobus_register(struct device *dev, struct mii_bus *mdio,
+			       struct device_node *np, struct module *owner);
+
+static inline int devm_of_mdiobus_register(struct device *dev,
+					   struct mii_bus *mdio,
+					   struct device_node *np)
+{
+	return __devm_of_mdiobus_register(dev, mdio, np, THIS_MODULE);
+}
+
 struct mdio_device *of_mdio_find_device(struct device_node *np);
 struct phy_device *of_phy_find_device(struct device_node *phy_np);
 struct phy_device *
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/2] net: mdio: fix owner field for mdio buses registered using ACPI
  2023-03-16 23:33 [PATCH v2 0/2] ACPI/DT mdiobus module owner fixes Florian Fainelli
  2023-03-16 23:33 ` [PATCH v2 1/2] net: mdio: fix owner field for mdio buses registered using device-tree Florian Fainelli
@ 2023-03-16 23:33 ` Florian Fainelli
  2023-03-18 15:19   ` Simon Horman
  2023-03-19 10:50 ` [PATCH v2 0/2] ACPI/DT mdiobus module owner fixes patchwork-bot+netdevbpf
  2 siblings, 1 reply; 6+ messages in thread
From: Florian Fainelli @ 2023-03-16 23:33 UTC (permalink / raw)
  To: netdev
  Cc: Florian Fainelli, Maxime Bizon, Andrew Lunn, Heiner Kallweit,
	Russell King, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Rob Herring, Frank Rowand, Rafael J. Wysocki,
	Calvin Johnson, Grant Likely, Ioana Ciornei, open list,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE

Bus ownership is wrong when using acpi_mdiobus_register() to register an
mdio bus. That function is not inline, so when it calls
mdiobus_register() the wrong THIS_MODULE value is captured.

CC: Maxime Bizon <mbizon@freebox.fr>
Fixes: 803ca24d2f92 ("net: mdio: Add ACPI support code for mdio")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 drivers/net/mdio/acpi_mdio.c | 10 ++++++----
 include/linux/acpi_mdio.h    |  9 ++++++++-
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/drivers/net/mdio/acpi_mdio.c b/drivers/net/mdio/acpi_mdio.c
index d77c987fda9c..4630dde01974 100644
--- a/drivers/net/mdio/acpi_mdio.c
+++ b/drivers/net/mdio/acpi_mdio.c
@@ -18,16 +18,18 @@ MODULE_AUTHOR("Calvin Johnson <calvin.johnson@oss.nxp.com>");
 MODULE_LICENSE("GPL");
 
 /**
- * acpi_mdiobus_register - Register mii_bus and create PHYs from the ACPI ASL.
+ * __acpi_mdiobus_register - Register mii_bus and create PHYs from the ACPI ASL.
  * @mdio: pointer to mii_bus structure
  * @fwnode: pointer to fwnode of MDIO bus. This fwnode is expected to represent
+ * @owner: module owning this @mdio object.
  * an ACPI device object corresponding to the MDIO bus and its children are
  * expected to correspond to the PHY devices on that bus.
  *
  * This function registers the mii_bus structure and registers a phy_device
  * for each child node of @fwnode.
  */
-int acpi_mdiobus_register(struct mii_bus *mdio, struct fwnode_handle *fwnode)
+int __acpi_mdiobus_register(struct mii_bus *mdio, struct fwnode_handle *fwnode,
+			    struct module *owner)
 {
 	struct fwnode_handle *child;
 	u32 addr;
@@ -35,7 +37,7 @@ int acpi_mdiobus_register(struct mii_bus *mdio, struct fwnode_handle *fwnode)
 
 	/* Mask out all PHYs from auto probing. */
 	mdio->phy_mask = GENMASK(31, 0);
-	ret = mdiobus_register(mdio);
+	ret = __mdiobus_register(mdio, owner);
 	if (ret)
 		return ret;
 
@@ -55,4 +57,4 @@ int acpi_mdiobus_register(struct mii_bus *mdio, struct fwnode_handle *fwnode)
 	}
 	return 0;
 }
-EXPORT_SYMBOL(acpi_mdiobus_register);
+EXPORT_SYMBOL(__acpi_mdiobus_register);
diff --git a/include/linux/acpi_mdio.h b/include/linux/acpi_mdio.h
index 0a24ab7cb66f..8e2eefa9fbc0 100644
--- a/include/linux/acpi_mdio.h
+++ b/include/linux/acpi_mdio.h
@@ -9,7 +9,14 @@
 #include <linux/phy.h>
 
 #if IS_ENABLED(CONFIG_ACPI_MDIO)
-int acpi_mdiobus_register(struct mii_bus *mdio, struct fwnode_handle *fwnode);
+int __acpi_mdiobus_register(struct mii_bus *mdio, struct fwnode_handle *fwnode,
+			    struct module *owner);
+
+static inline int
+acpi_mdiobus_register(struct mii_bus *mdio, struct fwnode_handle *handle)
+{
+	return __acpi_mdiobus_register(mdio, handle, THIS_MODULE);
+}
 #else /* CONFIG_ACPI_MDIO */
 static inline int
 acpi_mdiobus_register(struct mii_bus *mdio, struct fwnode_handle *fwnode)
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 1/2] net: mdio: fix owner field for mdio buses registered using device-tree
  2023-03-16 23:33 ` [PATCH v2 1/2] net: mdio: fix owner field for mdio buses registered using device-tree Florian Fainelli
@ 2023-03-18 15:19   ` Simon Horman
  0 siblings, 0 replies; 6+ messages in thread
From: Simon Horman @ 2023-03-18 15:19 UTC (permalink / raw)
  To: Florian Fainelli
  Cc: netdev, Maxime Bizon, Andrew Lunn, Heiner Kallweit, Russell King,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Rob Herring, Frank Rowand, Rafael J. Wysocki, Calvin Johnson,
	Grant Likely, Ioana Ciornei, open list,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE

On Thu, Mar 16, 2023 at 04:33:16PM -0700, Florian Fainelli wrote:
> From: Maxime Bizon <mbizon@freebox.fr>
> 
> Bus ownership is wrong when using of_mdiobus_register() to register an mdio
> bus. That function is not inline, so when it calls mdiobus_register() the wrong
> THIS_MODULE value is captured.
> 
> Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
> Fixes: 90eff9096c01 ("net: phy: Allow splitting MDIO bus/device support from PHYs")
> [florian: fix kdoc, added Fixes tag]
> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>

Reviewed-by: Simon Horman <simon.horman@corigine.com>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 2/2] net: mdio: fix owner field for mdio buses registered using ACPI
  2023-03-16 23:33 ` [PATCH v2 2/2] net: mdio: fix owner field for mdio buses registered using ACPI Florian Fainelli
@ 2023-03-18 15:19   ` Simon Horman
  0 siblings, 0 replies; 6+ messages in thread
From: Simon Horman @ 2023-03-18 15:19 UTC (permalink / raw)
  To: Florian Fainelli
  Cc: netdev, Maxime Bizon, Andrew Lunn, Heiner Kallweit, Russell King,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Rob Herring, Frank Rowand, Rafael J. Wysocki, Calvin Johnson,
	Grant Likely, Ioana Ciornei, open list,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE

On Thu, Mar 16, 2023 at 04:33:17PM -0700, Florian Fainelli wrote:
> Bus ownership is wrong when using acpi_mdiobus_register() to register an
> mdio bus. That function is not inline, so when it calls
> mdiobus_register() the wrong THIS_MODULE value is captured.
> 
> CC: Maxime Bizon <mbizon@freebox.fr>
> Fixes: 803ca24d2f92 ("net: mdio: Add ACPI support code for mdio")
> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>

Reviewed-by: Simon Horman <simon.horman@corigine.com>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 0/2] ACPI/DT mdiobus module owner fixes
  2023-03-16 23:33 [PATCH v2 0/2] ACPI/DT mdiobus module owner fixes Florian Fainelli
  2023-03-16 23:33 ` [PATCH v2 1/2] net: mdio: fix owner field for mdio buses registered using device-tree Florian Fainelli
  2023-03-16 23:33 ` [PATCH v2 2/2] net: mdio: fix owner field for mdio buses registered using ACPI Florian Fainelli
@ 2023-03-19 10:50 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 6+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-03-19 10:50 UTC (permalink / raw)
  To: Florian Fainelli
  Cc: netdev, andrew, hkallweit1, linux, davem, edumazet, kuba, pabeni,
	robh+dt, frowand.list, rafael, calvin.johnson, grant.likely,
	ioana.ciornei, linux-kernel, devicetree, mbizon

Hello:

This series was applied to netdev/net.git (main)
by David S. Miller <davem@davemloft.net>:

On Thu, 16 Mar 2023 16:33:15 -0700 you wrote:
> This patch series fixes wrong mdiobus module ownership for MDIO buses
> registered from DT or ACPI.
> 
> Thanks Maxime for providing the first patch and making me see that ACPI
> also had the same issue.
> 
> Changes in v2:
> 
> [...]

Here is the summary with links:
  - [v2,1/2] net: mdio: fix owner field for mdio buses registered using device-tree
    https://git.kernel.org/netdev/net/c/99669259f336
  - [v2,2/2] net: mdio: fix owner field for mdio buses registered using ACPI
    https://git.kernel.org/netdev/net/c/30b605b8501e

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-03-19 10:50 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-16 23:33 [PATCH v2 0/2] ACPI/DT mdiobus module owner fixes Florian Fainelli
2023-03-16 23:33 ` [PATCH v2 1/2] net: mdio: fix owner field for mdio buses registered using device-tree Florian Fainelli
2023-03-18 15:19   ` Simon Horman
2023-03-16 23:33 ` [PATCH v2 2/2] net: mdio: fix owner field for mdio buses registered using ACPI Florian Fainelli
2023-03-18 15:19   ` Simon Horman
2023-03-19 10:50 ` [PATCH v2 0/2] ACPI/DT mdiobus module owner fixes patchwork-bot+netdevbpf

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).