summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2018-01-19 13:33:21 -0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2018-03-12 19:57:53 +0000
commit846588c7a028ca4741af9607f94e7132e6f6387f (patch)
treeb3a8620bb168ee3b49850b96e16991f61ed68733
parentde18dc5ab697e391a5318ec1620dadf3d56a7440 (diff)
downloadchrome-ec-846588c7a028ca4741af9607f94e7132e6f6387f.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> Reviewed-on: https://chromium-review.googlesource.com/929401
-rw-r--r--common/cbi.c7
-rw-r--r--util/ectool.c5
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 97cfaa8262..a706ec12e8 100644
--- a/util/ectool.c
+++ b/util/ectool.c
@@ -6319,7 +6319,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;