diff options
author | Rotariu Marian-Cristian <marian.rotariu@freescale.com> | 2014-05-19 10:59:52 +0300 |
---|---|---|
committer | York Sun <yorksun@freescale.com> | 2014-07-22 16:25:53 -0700 |
commit | 1155d8d853ff8639062651a903ae3062f483dc70 (patch) | |
tree | 29f1b9110dba51eabef1d960e7c8378b1670a66f | |
parent | 605714f66998e02cbe3666139a48d83e85fcdc0f (diff) | |
download | u-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.h | 3 | ||||
-rw-r--r-- | drivers/net/fm/init.c | 6 |
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); } |