charger: Prevent SET access to EC_CMD_CHARGE_STATE on locked systems

The SET sub-command of EC_CMD_CHARGE_STATE sets charger current /
voltage parameters to arbitrary values and should be locked down.
EC_CMD_CHARGE_CONTROL, on the other hand, switches between several safe
operation modes, and should be allowed.

BUG=None
TEST=On kevin, set force_locked, plug zinger, and verify:
ectool chargestate param 4 3 <-- ACCESS_DENIED
ectool chargestate show <-- prints params
ectool chargecontrol idle <-- stops charging battery
ectool chargecontrol normal <-- battery charges again
BRANCH=None

Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Change-Id: I5503f07bb196d023a9bcd2e33f2e247f061f05e5
Reviewed-on: https://chromium-review.googlesource.com/757237
Commit-Ready: Shawn N <shawnn@chromium.org>
Tested-by: Shawn N <shawnn@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
This commit is contained in:
Shawn Nematbakhsh
2017-11-07 07:06:58 -08:00
committed by chrome-bot
parent ad3696b1ca
commit e4deceba8d

View File

@@ -1193,9 +1193,6 @@ static int charge_command_charge_control(struct host_cmd_handler_args *args)
const struct ec_params_charge_control *p = args->params;
int rv;
if (system_is_locked())
return EC_RES_ACCESS_DENIED;
rv = set_chg_ctrl_mode(p->mode);
if (rv != EC_SUCCESS)
return EC_RES_ERROR;
@@ -1313,6 +1310,9 @@ static int charge_command_charge_state(struct host_cmd_handler_args *args)
break;
case CHARGE_STATE_CMD_SET_PARAM:
if (system_is_locked())
return EC_RES_ACCESS_DENIED;
val = in->set_param.value;
#ifdef CONFIG_CHARGER_PROFILE_OVERRIDE
/* custom profile params */