From: Rotariu Marian-Cristian Date: Mon, 19 May 2014 07:59:52 +0000 (+0300) Subject: net/fm: call fm_port_to_index() with proper checks X-Git-Tag: v2014.10-rc1~7^2~27 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=1155d8d853ff8639062651a903ae3062f483dc70;p=oweals%2Fu-boot.git 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 Reviewed-by: York Sun --- diff --git a/drivers/net/fm/fm.h b/drivers/net/fm/fm.h index 43de114b52..316e06e17e 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 cd787f4eed..ff04695c32 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); }