diff options
author | Simon Glass <sjg@chromium.org> | 2021-05-13 19:39:26 -0600 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2021-07-15 18:42:05 -0400 |
commit | 15dd815c75d8d88816231e5e52b03835210cc93e (patch) | |
tree | 96fd4cd5cffaa7320573842ea4711a6347166907 | |
parent | 9dec2c1f03922977725d14ebc89fdc05b1f32511 (diff) | |
download | u-boot-15dd815c75d8d88816231e5e52b03835210cc93e.zip u-boot-15dd815c75d8d88816231e5e52b03835210cc93e.tar.gz u-boot-15dd815c75d8d88816231e5e52b03835210cc93e.tar.bz2 |
sandbox: cros_ec: Update error handling when reading matrix
At present the return value of ofnode_get_property() is not checked, which
causes a coverity warning. While we are here, use logging for the errors.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reported-by: Coverity (CID: 331157)
-rw-r--r-- | drivers/misc/cros_ec_sandbox.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/misc/cros_ec_sandbox.c b/drivers/misc/cros_ec_sandbox.c index db5e3b0..beea47c 100644 --- a/drivers/misc/cros_ec_sandbox.c +++ b/drivers/misc/cros_ec_sandbox.c @@ -5,6 +5,8 @@ * Copyright (c) 2013 The Chromium OS Authors. */ +#define LOG_CATEGORY UCLASS_CROS_EC + #include <common.h> #include <cros_ec.h> #include <dm.h> @@ -221,11 +223,12 @@ static int keyscan_read_fdt_matrix(struct ec_state *ec, ofnode node) int len; cell = ofnode_get_property(node, "linux,keymap", &len); + if (!cell) + return log_msg_ret("prop", -EINVAL); ec->matrix_count = len / 4; ec->matrix = calloc(ec->matrix_count, sizeof(*ec->matrix)); if (!ec->matrix) { - debug("%s: Out of memory for key matrix\n", __func__); - return -1; + return log_msg_ret("mem", -ENOMEM); } /* Now read the data */ @@ -243,13 +246,12 @@ static int keyscan_read_fdt_matrix(struct ec_state *ec, ofnode node) matrix->col >= KEYBOARD_COLS) { debug("%s: Matrix pos out of range (%d,%d)\n", __func__, matrix->row, matrix->col); - return -1; + return log_msg_ret("matrix", -ERANGE); } } if (upto != ec->matrix_count) { - debug("%s: Read mismatch from key matrix\n", __func__); - return -1; + return log_msg_ret("matrix", -E2BIG); } return 0; |