usb: typec: Fix setting of invalid value of opmode

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.

Change-Id: I9ada1ad4aeeca08d3072a5738f5fa48537a2cecf
Signed-off-by: Sriharsha Allenki <sallenki@codeaurora.org>
This commit is contained in:
Sriharsha Allenki 2020-09-03 15:22:35 +05:30 • committed by Gerrit - the friendly Code Review server
commit 410f0c2b19
2 changed files with 3 additions and 1 deletions

View file

@ -1369,7 +1369,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_MAX))
return;
port->pwr_opmode = opmode;

View file

@ -53,6 +53,7 @@ enum typec_pwr_opmode {
TYPEC_PWR_MODE_1_5A,
TYPEC_PWR_MODE_3_0A,
TYPEC_PWR_MODE_PD,
TYPEC_PWR_MODE_MAX = TYPEC_PWR_MODE_PD,
};
enum typec_accessory {