diff options
author | Patryk Duda <pdk@semihalf.com> | 2020-06-17 16:37:00 +0200 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-06-23 01:02:46 +0000 |
commit | 3947de4fb5e19da5c2ac816ac2f4916e928a6bd3 (patch) | |
tree | 6f91ec39e5cf9df16cd19b9f3fd067bfb23e17fb | |
parent | ade31e314efb2a18d44f502a4e3400c1ecbeb05e (diff) | |
download | chrome-ec-3947de4fb5e19da5c2ac816ac2f4916e928a6bd3.tar.gz |
usb_mux: Add check if port is available in every exposed function
BUG=b:154602760
BRANCH=none
TEST=make buildall -j
Signed-off-by: Patryk Duda <pdk@semihalf.com>
Change-Id: I9a5097ed6746c917cb88a8e6bf5e98fa01267808
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2250681
Reviewed-by: Diana Z <dzigterman@chromium.org>
Commit-Queue: Jett Rink <jettrink@chromium.org>
-rw-r--r-- | driver/usb_mux/usb_mux.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/driver/usb_mux/usb_mux.c b/driver/usb_mux/usb_mux.c index ec12df82f1..911558905d 100644 --- a/driver/usb_mux/usb_mux.c +++ b/driver/usb_mux/usb_mux.c @@ -151,6 +151,10 @@ void usb_mux_init(int port) { ASSERT(port >= 0 && port < CONFIG_USB_PD_PORT_MAX_COUNT); + if (port >= board_get_usb_pd_port_count()) { + return; + } + configure_mux(port, USB_MUX_INIT, NULL); /* Device is always out of LPM after initialization. */ @@ -169,6 +173,10 @@ void usb_mux_set(int port, mux_state_t mux_mode, (mux_mode == USB_PD_MUX_NONE && usb_mode == USB_SWITCH_DISCONNECT); + if (port >= board_get_usb_pd_port_count()) { + return; + } + /* Configure USB2.0 */ if (IS_ENABLED(CONFIG_USB_CHARGER)) usb_charger_set_switches(port, usb_mode); @@ -208,6 +216,10 @@ mux_state_t usb_mux_get(int port) { mux_state_t mux_state; + if (port >= board_get_usb_pd_port_count()) { + return USB_PD_MUX_NONE; + } + exit_low_power_mode(port); if (configure_mux(port, USB_MUX_GET_MODE, &mux_state)) @@ -220,6 +232,10 @@ void usb_mux_flip(int port) { mux_state_t mux_state; + if (port >= board_get_usb_pd_port_count()) { + return; + } + exit_low_power_mode(port); if (configure_mux(port, USB_MUX_GET_MODE, &mux_state)) @@ -238,6 +254,10 @@ void usb_mux_hpd_update(int port, int hpd_lvl, int hpd_irq) mux_state_t mux_state; const struct usb_mux *mux_ptr = &usb_muxes[port]; + if (port >= board_get_usb_pd_port_count()) { + return; + } + for (; mux_ptr; mux_ptr = mux_ptr->next_mux) if (mux_ptr->hpd_update) mux_ptr->hpd_update(mux_ptr, hpd_lvl, hpd_irq); |