
Some of the fm_port_to_index() callers did not check for -1 return value and used -1 as an array index.
Change-Id: Ibdee52d6abc9019cade1a01dca911da89bcc760b Signed-off-by: Marian Rotariu marian.rotariu@freescale.com Reviewed-on: http://git.am.freescale.net:8181/11711 Tested-by: Review Code-CDREVIEW CDREVIEW@freescale.com Reviewed-by: Madalin-Cristian Bucur madalin.bucur@freescale.com Reviewed-by: Shengzhou Liu Shengzhou.Liu@freescale.com Reviewed-by: Prabhakar Kushwaha prabhakar@freescale.com --- drivers/net/fm/fm.h | 3 ++- drivers/net/fm/init.c | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/net/fm/fm.h b/drivers/net/fm/fm.h index 43de114..316e06e 100644 --- a/drivers/net/fm/fm.h +++ b/drivers/net/fm/fm.h @@ -143,6 +143,7 @@ struct fm_eth { #define MAX_RXBUF_LOG2 11 #define MAX_RXBUF_LEN (1 << MAX_RXBUF_LOG2)
-#define PORT_IS_ENABLED(port) fm_info[fm_port_to_index(port)].enabled +#define PORT_IS_ENABLED(port) (fm_port_to_index(port) == -1 ? \ + 0 : fm_info[fm_port_to_index(port)].enabled)
#endif /* __FM_H__ */ diff --git a/drivers/net/fm/init.c b/drivers/net/fm/init.c index cd787f4..ff04695 100644 --- a/drivers/net/fm/init.c +++ b/drivers/net/fm/init.c @@ -147,6 +147,9 @@ void fm_disable_port(enum fm_port port) { int i = fm_port_to_index(port);
+ if (i == -1) + return; + fm_info[i].enabled = 0; fman_disable_port(port); } @@ -155,6 +158,9 @@ void fm_enable_port(enum fm_port port) { int i = fm_port_to_index(port);
+ if (i == -1) + return; + fm_info[i].enabled = 1; fman_enable_port(port); }