diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2018-01-19 13:33:21 -0800 |
---|---|---|
committer | Daisuke Nojiri <dnojiri@chromium.org> | 2018-02-02 15:37:25 -0800 |
commit | dd15282e1b11b393d1d07034d5715ea48f9a831d (patch) | |
tree | 39aae0dc8d075ed8681307277b9e43833dd908ff | |
parent | 76e4005587369a21b480879d53f5aa9252c30e3f (diff) | |
download | chrome-ec-dd15282e1b11b393d1d07034d5715ea48f9a831d.tar.gz |
CBI: Return ACCESS_DENIED on write failure due to WP
This patch makes EC_CMD_SET_CROS_BOARD_INFO return
EC_RES_ACCESS_DENIED if the command fails due to write-protect
switch.
BUG=b:70294260
BRANCH=none
TEST=Verify 'ectool cbi set 2 4' prints 'WP enabled?' when WP
is enabled.
Change-Id: I7c27ee748caf32e57f22ab79edcbff96e42c44ad
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/897683
Reviewed-by: Furquan Shaikh <furquan@chromium.org>
-rw-r--r-- | common/cbi.c | 7 | ||||
-rw-r--r-- | util/ectool.c | 5 |
2 files changed, 9 insertions, 3 deletions
diff --git a/common/cbi.c b/common/cbi.c index c0cba85e4a..7d7594df98 100644 --- a/common/cbi.c +++ b/common/cbi.c @@ -202,6 +202,7 @@ DECLARE_HOST_COMMAND(EC_CMD_GET_CROS_BOARD_INFO, static int hc_cbi_set(struct host_cmd_handler_args *args) { const struct __ec_align4 ec_params_set_cbi *p = args->params; + int rv; if (p->flag & CBI_SET_INIT) { memset(&bi, 0, sizeof(bi)); @@ -243,8 +244,10 @@ static int hc_cbi_set(struct host_cmd_handler_args *args) if (p->flag & CBI_SET_NO_SYNC) return EC_RES_SUCCESS; - if (write_board_info()) - return EC_RES_ERROR; + rv = write_board_info(); + if (rv) + return (rv == EC_ERROR_ACCESS_DENIED) ? + EC_RES_ACCESS_DENIED : EC_RES_ERROR; return EC_RES_SUCCESS; } diff --git a/util/ectool.c b/util/ectool.c index 18234c2e53..71fb90428f 100644 --- a/util/ectool.c +++ b/util/ectool.c @@ -6457,7 +6457,10 @@ static int cmd_cbi(int argc, char *argv[]) rv = ec_command(EC_CMD_SET_CROS_BOARD_INFO, 0, &p, sizeof(p), NULL, 0); if (rv < 0) { - fprintf(stderr, "Error code: %d\n", rv); + if (rv == -EC_RES_ACCESS_DENIED - EECRESULT) + fprintf(stderr, "Write failed. WP enabled?\n"); + else + fprintf(stderr, "Error code: %d\n", rv); return rv; } return 0; |