summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatryk Duda <pdk@semihalf.com>2020-06-17 16:37:00 +0200
committerCommit Bot <commit-bot@chromium.org>2020-06-23 01:02:46 +0000
commit3947de4fb5e19da5c2ac816ac2f4916e928a6bd3 (patch)
tree6f91ec39e5cf9df16cd19b9f3fd067bfb23e17fb
parentade31e314efb2a18d44f502a4e3400c1ecbeb05e (diff)
downloadchrome-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.c20
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);