aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/stmicro
diff options
context:
space:
mode:
authorGeert Uytterhoeven <geert@linux-m68k.org>2014-12-15 06:25:51 -0500
committerDavid S. Miller <davem@davemloft.net>2014-12-15 11:48:02 -0500
commit50262c8533a31edc9512c36fbd1ac224ddfee242 (patch)
treedd85f8e867c66d720a9e2172878b0a550e3b34ea /drivers/net/ethernet/stmicro
parent372a07302f2450d04e0b53058eb01a7e85025ec3 (diff)
net: stmmac: sti: Fix uninitialized pointer dereference if !OF
If CONFIG_OF is not set: drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c: In function ‘sti_dwmac_parse_data’: drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c:318: warning: ‘rs’ is used uninitialized in this function of_property_read_string() will return -ENOSYS in this case, and rs will be an uninitialized pointer. While the fallback clock selection is already selected correctly in this case, the string comparisons should be skipped too, else the system will crash while dereferencing the uninitialized pointer. Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/stmicro')
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c
index 0e137751e76e..056b358b4a72 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c
@@ -309,16 +309,16 @@ static int sti_dwmac_parse_data(struct sti_dwmac *dwmac,
309 309
310 if (IS_PHY_IF_MODE_GBIT(dwmac->interface)) { 310 if (IS_PHY_IF_MODE_GBIT(dwmac->interface)) {
311 const char *rs; 311 const char *rs;
312 dwmac->tx_retime_src = TX_RETIME_SRC_CLKGEN;
313 312
314 err = of_property_read_string(np, "st,tx-retime-src", &rs); 313 err = of_property_read_string(np, "st,tx-retime-src", &rs);
315 if (err < 0) 314 if (err < 0) {
316 dev_warn(dev, "Use internal clock source\n"); 315 dev_warn(dev, "Use internal clock source\n");
317 316 dwmac->tx_retime_src = TX_RETIME_SRC_CLKGEN;
318 if (!strcasecmp(rs, "clk_125")) 317 } else if (!strcasecmp(rs, "clk_125")) {
319 dwmac->tx_retime_src = TX_RETIME_SRC_CLK_125; 318 dwmac->tx_retime_src = TX_RETIME_SRC_CLK_125;
320 else if (!strcasecmp(rs, "txclk")) 319 } else if (!strcasecmp(rs, "txclk")) {
321 dwmac->tx_retime_src = TX_RETIME_SRC_TXCLK; 320 dwmac->tx_retime_src = TX_RETIME_SRC_TXCLK;
321 }
322 322
323 dwmac->speed = SPEED_1000; 323 dwmac->speed = SPEED_1000;
324 } 324 }