summaryrefslogtreecommitdiffstats
path: root/drivers/net/usb
diff options
context:
space:
mode:
authorSimon Horman <horms@kernel.org>2024-10-16 15:31:14 +0100
committerAndrew Lunn <andrew@lunn.ch>2024-10-17 18:09:13 -0500
commit4b726103796a9058ea77fd0905879ecc04951ef1 (patch)
treee6aa7867bdceb1fc00908818175aae2811f66ddb /drivers/net/usb
parentff1d3484d6d29dda92421b9a753e4ca54f91aa8a (diff)
downloadlinux-4b726103796a9058ea77fd0905879ecc04951ef1.tar.gz
linux-4b726103796a9058ea77fd0905879ecc04951ef1.tar.bz2
linux-4b726103796a9058ea77fd0905879ecc04951ef1.zip
net: usb: sr9700: only store little-endian values in __le16 variable
In sr_mdio_read() the local variable res is used to store both little-endian and host byte order values. This prevents Sparse from helping us by flagging when endian miss matches occur - the detection process hinges on the type of variables matching the byte order of values stored in them. Address this by adding a new local variable, word, to store little-endian values; change the type of res to int, and use it to store host-byte order values. Flagged by Sparse as: .../sr9700.c:205:21: warning: incorrect type in assignment (different base types) .../sr9700.c:205:21: expected restricted __le16 [addressable] [usertype] res .../sr9700.c:205:21: got int .../sr9700.c:207:21: warning: incorrect type in assignment (different base types) .../sr9700.c:207:21: expected restricted __le16 [addressable] [usertype] res .../sr9700.c:207:21: got int .../sr9700.c:212:16: warning: incorrect type in return expression (different base types) .../sr9700.c:212:16: expected int .../sr9700.c:212:16: got restricted __le16 [addressable] [usertype] res Compile tested only. No functional change intended. Signed-off-by: Simon Horman <horms@kernel.org> Message-ID: <20241016-blackbird-le16-v1-1-97ba8de6b38f@kernel.org> Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Diffstat (limited to 'drivers/net/usb')
-rw-r--r--drivers/net/usb/sr9700.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/usb/sr9700.c b/drivers/net/usb/sr9700.c
index cb7d2f798fb4..091bc2aca7e8 100644
--- a/drivers/net/usb/sr9700.c
+++ b/drivers/net/usb/sr9700.c
@@ -177,9 +177,9 @@ static int sr9700_get_eeprom(struct net_device *netdev,
static int sr_mdio_read(struct net_device *netdev, int phy_id, int loc)
{
struct usbnet *dev = netdev_priv(netdev);
- __le16 res;
+ int err, res;
+ __le16 word;
int rc = 0;
- int err;
if (phy_id) {
netdev_dbg(netdev, "Only internal phy supported\n");
@@ -197,14 +197,14 @@ static int sr_mdio_read(struct net_device *netdev, int phy_id, int loc)
if (value & NSR_LINKST)
rc = 1;
}
- err = sr_share_read_word(dev, 1, loc, &res);
+ err = sr_share_read_word(dev, 1, loc, &word);
if (err < 0)
return err;
if (rc == 1)
- res = le16_to_cpu(res) | BMSR_LSTATUS;
+ res = le16_to_cpu(word) | BMSR_LSTATUS;
else
- res = le16_to_cpu(res) & ~BMSR_LSTATUS;
+ res = le16_to_cpu(word) & ~BMSR_LSTATUS;
netdev_dbg(netdev, "sr_mdio_read() phy_id=0x%02x, loc=0x%02x, returns=0x%04x\n",
phy_id, loc, res);