[PATCH] net: cirrus: use u8 for addr to calm down sparse

Nikita Shubin posted 1 patch 2 months, 1 week ago
drivers/net/ethernet/cirrus/ep93xx_eth.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
[PATCH] net: cirrus: use u8 for addr to calm down sparse
Posted by Nikita Shubin 2 months, 1 week ago
ep93xx_eth.c:805:40: sparse: sparse: incorrect type in argument 2
				     (different address spaces)
ep93xx_eth.c:805:40: sparse: expected unsigned char const [usertype] *addr
ep93xx_eth.c:805:40: sparse: got void [noderef] __iomem *

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202409212354.9CiUem7B-lkp@intel.com/
Fixes: 858555bb5598 ("net: cirrus: add DT support for Cirrus EP93xx")
Signed-off-by: Nikita Shubin <nikita.shubin@maquefel.me>
---
 drivers/net/ethernet/cirrus/ep93xx_eth.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/cirrus/ep93xx_eth.c b/drivers/net/ethernet/cirrus/ep93xx_eth.c
index 2523d9c9d1b8..c2007cd86416 100644
--- a/drivers/net/ethernet/cirrus/ep93xx_eth.c
+++ b/drivers/net/ethernet/cirrus/ep93xx_eth.c
@@ -771,6 +771,7 @@ static int ep93xx_eth_probe(struct platform_device *pdev)
 	struct resource *mem;
 	void __iomem *base_addr;
 	struct device_node *np;
+	u8 addr[ETH_ALEN];
 	u32 phy_id;
 	int irq;
 	int err;
@@ -802,7 +803,8 @@ static int ep93xx_eth_probe(struct platform_device *pdev)
 		goto err_out;
 	}
 
-	eth_hw_addr_set(dev, base_addr + 0x50);
+	memcpy_fromio(addr, base_addr + 0x50, ETH_ALEN);
+	eth_hw_addr_set(dev, addr);
 	dev->ethtool_ops = &ep93xx_ethtool_ops;
 	dev->netdev_ops = &ep93xx_netdev_ops;
 	dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM;
-- 
2.43.2
Re: [PATCH] net: cirrus: use u8 for addr to calm down sparse
Posted by Alexander Sverdlin 2 months, 1 week ago
Hi Nikita!

On Sun, 2024-09-22 at 09:52 +0300, Nikita Shubin wrote:
> ep93xx_eth.c:805:40: sparse: sparse: incorrect type in argument 2
> 				     (different address spaces)
> ep93xx_eth.c:805:40: sparse: expected unsigned char const [usertype] *addr
> ep93xx_eth.c:805:40: sparse: got void [noderef] __iomem *
> 
> Reported-by: kernel test robot <lkp@intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202409212354.9CiUem7B-lkp@intel.com/
> Fixes: 858555bb5598 ("net: cirrus: add DT support for Cirrus EP93xx")
> Signed-off-by: Nikita Shubin <nikita.shubin@maquefel.me>

Acked-by: Alexander Sverdlin <alexander.sverdlin@gmail.com>

> ---
>  drivers/net/ethernet/cirrus/ep93xx_eth.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/cirrus/ep93xx_eth.c b/drivers/net/ethernet/cirrus/ep93xx_eth.c
> index 2523d9c9d1b8..c2007cd86416 100644
> --- a/drivers/net/ethernet/cirrus/ep93xx_eth.c
> +++ b/drivers/net/ethernet/cirrus/ep93xx_eth.c
> @@ -771,6 +771,7 @@ static int ep93xx_eth_probe(struct platform_device *pdev)
>  	struct resource *mem;
>  	void __iomem *base_addr;
>  	struct device_node *np;
> +	u8 addr[ETH_ALEN];
>  	u32 phy_id;
>  	int irq;
>  	int err;
> @@ -802,7 +803,8 @@ static int ep93xx_eth_probe(struct platform_device *pdev)
>  		goto err_out;
>  	}
>  
> -	eth_hw_addr_set(dev, base_addr + 0x50);
> +	memcpy_fromio(addr, base_addr + 0x50, ETH_ALEN);
> +	eth_hw_addr_set(dev, addr);
>  	dev->ethtool_ops = &ep93xx_ethtool_ops;
>  	dev->netdev_ops = &ep93xx_netdev_ops;
>  	dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM;

-- 
Alexander Sverdlin.