summaryrefslogtreecommitdiff
path: root/common/charge_state_v2.c
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2017-11-07 07:06:58 -0800
committerchrome-bot <chrome-bot@chromium.org>2017-11-09 16:43:54 -0800
commite4deceba8d6a8afff50ca2223be59b755ee3eca2 (patch)
tree39a4ff499fcdf0349ebddae7869283bbbddd5493 /common/charge_state_v2.c
parentad3696b1ca12997f5c0ade53635b6a018ea7bc9a (diff)
downloadchrome-ec-e4deceba8d6a8afff50ca2223be59b755ee3eca2.tar.gz
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>
Diffstat (limited to 'common/charge_state_v2.c')
-rw-r--r--common/charge_state_v2.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c
index 7a926cfb54..4de4faf51a 100644
--- a/common/charge_state_v2.c
+++ b/common/charge_state_v2.c
@@ -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 */