stmmac: dwmac-sti: fix st,tx-retime-src check
In case of the st,tx-retime-src is missing from device-tree (it's an optional field) the driver will invoke the strcasecmp to check which clock has been selected and this is a bug; the else condition is needed. In the dwmac_setup, the "rs" variable, passed to the strcasecmp, was not initialized and the compiler, depending on the options adopted, could take it in some different part of the stack generating the hang in such configuration. Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
61adcc03bd
commit
22407e1317
|
@ -299,16 +299,17 @@ static int sti_dwmac_parse_data(struct sti_dwmac *dwmac,
|
|||
if (IS_PHY_IF_MODE_GBIT(dwmac->interface)) {
|
||||
const char *rs;
|
||||
|
||||
dwmac->tx_retime_src = TX_RETIME_SRC_CLKGEN;
|
||||
|
||||
err = of_property_read_string(np, "st,tx-retime-src", &rs);
|
||||
if (err < 0) {
|
||||
dev_warn(dev, "Use internal clock source\n");
|
||||
dwmac->tx_retime_src = TX_RETIME_SRC_CLKGEN;
|
||||
} else if (!strcasecmp(rs, "clk_125")) {
|
||||
dwmac->tx_retime_src = TX_RETIME_SRC_CLK_125;
|
||||
} else if (!strcasecmp(rs, "txclk")) {
|
||||
dwmac->tx_retime_src = TX_RETIME_SRC_TXCLK;
|
||||
} else {
|
||||
if (!strcasecmp(rs, "clk_125"))
|
||||
dwmac->tx_retime_src = TX_RETIME_SRC_CLK_125;
|
||||
else if (!strcasecmp(rs, "txclk"))
|
||||
dwmac->tx_retime_src = TX_RETIME_SRC_TXCLK;
|
||||
}
|
||||
|
||||
dwmac->speed = SPEED_1000;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue