mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-05 00:20:32 +00:00
platform/chrome: cros_ec_proto: handle empty payload in getting info legacy
cros_ec_get_proto_info_legacy() expects to receive sizeof(struct ec_response_hello) from send_command(). The payload is valid only if the return value is positive. Return -EPROTO if send_command() returns 0 in cros_ec_get_proto_info_legacy(). Reviewed-by: Guenter Roeck <groeck@chromium.org> Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org> Link: https://lore.kernel.org/r/20220609084957.3684698-13-tzungbi@kernel.org
This commit is contained in:
parent
cce5d55180
commit
d394ab5c06
1 changed files with 9 additions and 3 deletions
|
@ -356,7 +356,7 @@ static int cros_ec_get_proto_info_legacy(struct cros_ec_device *ec_dev)
|
|||
struct cros_ec_command *msg;
|
||||
struct ec_params_hello *params;
|
||||
struct ec_response_hello *response;
|
||||
int ret;
|
||||
int ret, mapped;
|
||||
|
||||
ec_dev->proto_version = 2;
|
||||
|
||||
|
@ -377,12 +377,18 @@ static int cros_ec_get_proto_info_legacy(struct cros_ec_device *ec_dev)
|
|||
goto exit;
|
||||
}
|
||||
|
||||
ret = cros_ec_map_error(msg->result);
|
||||
if (ret) {
|
||||
mapped = cros_ec_map_error(msg->result);
|
||||
if (mapped) {
|
||||
ret = mapped;
|
||||
dev_err(ec_dev->dev, "EC responded to v2 hello with error: %d\n", msg->result);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (ret == 0) {
|
||||
ret = -EPROTO;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
response = (struct ec_response_hello *)msg->data;
|
||||
if (response->out_data != 0xa1b2c3d4) {
|
||||
dev_err(ec_dev->dev,
|
||||
|
|
Loading…
Reference in a new issue