Setting opmode to invalid values would lead to a paging fault failure when there is an access to the power_operation_mode.
Prevent this by checking the validity of the value that the opmode is being set.
Cc: stable@vger.kernel.org Fixes: fab9288428ec ("usb: USB Type-C connector class") Signed-off-by: Sriharsha Allenki sallenki@codeaurora.org --- drivers/usb/typec/class.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c index 35eec70..63efe16 100644 --- a/drivers/usb/typec/class.c +++ b/drivers/usb/typec/class.c @@ -1427,7 +1427,8 @@ void typec_set_pwr_opmode(struct typec_port *port, { struct device *partner_dev;
- if (port->pwr_opmode == opmode) + if ((port->pwr_opmode == opmode) || (opmode < TYPEC_PWR_MODE_USB) || + (opmode > TYPEC_PWR_MODE_PD)) return;
port->pwr_opmode = opmode;