net: stmmac: dwmac-visconti: No change to ETHER_CLOCK_SEL for unexpected speed request.
Variable clk_sel_val is not initialized in the default case of the first switch statement.
In that case, the function should return immediately without any changes to the hardware.
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Fixes: b38dd98ff8
("net: stmmac: Add Toshiba Visconti SoCs glue driver")
Signed-off-by: Yuji Ishikawa <yuji2.ishikawa@toshiba.co.jp>
Reviewed-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7674b7b559
commit
928d6fe996
drivers/net/ethernet/stmicro/stmmac
|
@ -49,13 +49,15 @@ struct visconti_eth {
|
||||||
void __iomem *reg;
|
void __iomem *reg;
|
||||||
u32 phy_intf_sel;
|
u32 phy_intf_sel;
|
||||||
struct clk *phy_ref_clk;
|
struct clk *phy_ref_clk;
|
||||||
|
struct device *dev;
|
||||||
spinlock_t lock; /* lock to protect register update */
|
spinlock_t lock; /* lock to protect register update */
|
||||||
};
|
};
|
||||||
|
|
||||||
static void visconti_eth_fix_mac_speed(void *priv, unsigned int speed)
|
static void visconti_eth_fix_mac_speed(void *priv, unsigned int speed)
|
||||||
{
|
{
|
||||||
struct visconti_eth *dwmac = priv;
|
struct visconti_eth *dwmac = priv;
|
||||||
unsigned int val, clk_sel_val;
|
struct net_device *netdev = dev_get_drvdata(dwmac->dev);
|
||||||
|
unsigned int val, clk_sel_val = 0;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
spin_lock_irqsave(&dwmac->lock, flags);
|
spin_lock_irqsave(&dwmac->lock, flags);
|
||||||
|
@ -85,7 +87,9 @@ static void visconti_eth_fix_mac_speed(void *priv, unsigned int speed)
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
/* No bit control */
|
/* No bit control */
|
||||||
break;
|
netdev_err(netdev, "Unsupported speed request (%d)", speed);
|
||||||
|
spin_unlock_irqrestore(&dwmac->lock, flags);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
writel(val, dwmac->reg + MAC_CTRL_REG);
|
writel(val, dwmac->reg + MAC_CTRL_REG);
|
||||||
|
@ -229,6 +233,7 @@ static int visconti_eth_dwmac_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
spin_lock_init(&dwmac->lock);
|
spin_lock_init(&dwmac->lock);
|
||||||
dwmac->reg = stmmac_res.addr;
|
dwmac->reg = stmmac_res.addr;
|
||||||
|
dwmac->dev = &pdev->dev;
|
||||||
plat_dat->bsp_priv = dwmac;
|
plat_dat->bsp_priv = dwmac;
|
||||||
plat_dat->fix_mac_speed = visconti_eth_fix_mac_speed;
|
plat_dat->fix_mac_speed = visconti_eth_fix_mac_speed;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue