diff options
author | Shawn Nematbakhsh <shawnn@chromium.org> | 2017-11-07 07:06:58 -0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2017-11-23 02:57:44 +0000 |
commit | 78edffd806cf20602f70cbe0e0d3a8c3663d1539 (patch) | |
tree | 32f33829ab5dadbfb2dd06115d2e03726d17aa11 | |
parent | aa586960f1a4db780b8eb151384385b6698d397a (diff) | |
download | chrome-ec-78edffd806cf20602f70cbe0e0d3a8c3663d1539.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>
(cherry picked from commit e4deceba8d6a8afff50ca2223be59b755ee3eca2)
Reviewed-on: https://chromium-review.googlesource.com/786790
Reviewed-by: Philip Chen <philipchen@chromium.org>
Tested-by: Jongpil Jung <jongpil19.jung@samsung.corp-partner.google.com>
Commit-Queue: Jongpil Jung <jongpil19.jung@samsung.corp-partner.google.com>
-rw-r--r-- | common/charge_state_v2.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c index a4066dee4f..e9de5d6884 100644 --- a/common/charge_state_v2.c +++ b/common/charge_state_v2.c @@ -1109,9 +1109,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; @@ -1225,6 +1222,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 */ |