[U-Boot] [PATCH] net/fm: call fm_port_to_index() with proper checks

Marian Rotariu marian.rotariu at freescale.com
Sat May 10 12:13:41 CEST 2014


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 at freescale.com>
Reviewed-on: http://git.am.freescale.net:8181/11711
Tested-by: Review Code-CDREVIEW <CDREVIEW at freescale.com>
Reviewed-by: Madalin-Cristian Bucur <madalin.bucur at freescale.com>
Reviewed-by: Shengzhou Liu <Shengzhou.Liu at freescale.com>
Reviewed-by: Prabhakar Kushwaha <prabhakar at 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);
 }
-- 
1.7.10.4




More information about the U-Boot mailing list