diff mbox series

[net,v2] mod_devicetable: fix PHY module format

Message ID E1ii59z-0003Na-Rb@rmk-PC.armlinux.org.uk
State Accepted
Delegated to: David Miller
Headers show
Series [net,v2] mod_devicetable: fix PHY module format | expand

Commit Message

Russell King (Oracle) Dec. 19, 2019, 11:24 p.m. UTC
When a PHY is probed, if the top bit is set, we end up requesting a
module with the string "mdio:-10101110000000100101000101010001" -
the top bit is printed to a signed -1 value. This leads to the module
not being loaded.

Fix the module format string and the macro generating the values for
it to ensure that we only print unsigned types and the top bit is
always 0/1. We correctly end up with
"mdio:10101110000000100101000101010001".

Fixes: 8626d3b43280 ("phylib: Support phy module autoloading")
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
---
 include/linux/mod_devicetable.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Florian Fainelli Dec. 20, 2019, 3:57 a.m. UTC | #1
On 12/19/2019 3:24 PM, Russell King wrote:
> When a PHY is probed, if the top bit is set, we end up requesting a
> module with the string "mdio:-10101110000000100101000101010001" -
> the top bit is printed to a signed -1 value. This leads to the module
> not being loaded.
> 
> Fix the module format string and the macro generating the values for
> it to ensure that we only print unsigned types and the top bit is
> always 0/1. We correctly end up with
> "mdio:10101110000000100101000101010001".
> 
> Fixes: 8626d3b43280 ("phylib: Support phy module autoloading")
> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
David Miller Dec. 21, 2019, 5:47 a.m. UTC | #2
From: Russell King <rmk+kernel@armlinux.org.uk>
Date: Thu, 19 Dec 2019 23:24:47 +0000

> When a PHY is probed, if the top bit is set, we end up requesting a
> module with the string "mdio:-10101110000000100101000101010001" -
> the top bit is printed to a signed -1 value. This leads to the module
> not being loaded.
> 
> Fix the module format string and the macro generating the values for
> it to ensure that we only print unsigned types and the top bit is
> always 0/1. We correctly end up with
> "mdio:10101110000000100101000101010001".
> 
> Fixes: 8626d3b43280 ("phylib: Support phy module autoloading")
> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>

Applied and queued up for -stable.
diff mbox series

Patch

diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
index 5714fd35a83c..e3596db077dc 100644
--- a/include/linux/mod_devicetable.h
+++ b/include/linux/mod_devicetable.h
@@ -587,9 +587,9 @@  struct platform_device_id {
 #define MDIO_NAME_SIZE		32
 #define MDIO_MODULE_PREFIX	"mdio:"
 
-#define MDIO_ID_FMT "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d"
+#define MDIO_ID_FMT "%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u"
 #define MDIO_ID_ARGS(_id) \
-	(_id)>>31, ((_id)>>30) & 1, ((_id)>>29) & 1, ((_id)>>28) & 1,	\
+	((_id)>>31) & 1, ((_id)>>30) & 1, ((_id)>>29) & 1, ((_id)>>28) & 1, \
 	((_id)>>27) & 1, ((_id)>>26) & 1, ((_id)>>25) & 1, ((_id)>>24) & 1, \
 	((_id)>>23) & 1, ((_id)>>22) & 1, ((_id)>>21) & 1, ((_id)>>20) & 1, \
 	((_id)>>19) & 1, ((_id)>>18) & 1, ((_id)>>17) & 1, ((_id)>>16) & 1, \