summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRotariu Marian-Cristian <marian.rotariu@freescale.com>2014-05-19 10:59:52 +0300
committerYork Sun <yorksun@freescale.com>2014-07-22 16:25:53 -0700
commit1155d8d853ff8639062651a903ae3062f483dc70 (patch)
tree29f1b9110dba51eabef1d960e7c8378b1670a66f
parent605714f66998e02cbe3666139a48d83e85fcdc0f (diff)
downloadu-boot-imx-1155d8d853ff8639062651a903ae3062f483dc70.zip
u-boot-imx-1155d8d853ff8639062651a903ae3062f483dc70.tar.gz
u-boot-imx-1155d8d853ff8639062651a903ae3062f483dc70.tar.bz2
net/fm: call fm_port_to_index() with proper checks
Some of the fm_port_to_index() callers did not check for -1 return value and used -1 as an array index. Signed-off-by: Marian Rotariu <marian.rotariu@freescale.com> Reviewed-by: York Sun <yorksun@freescale.com>
-rw-r--r--drivers/net/fm/fm.h3
-rw-r--r--drivers/net/fm/init.c6
2 files changed, 8 insertions, 1 deletions
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);
}