Message ID | 20220608110734.2928245-24-tzungbi@kernel.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | platform/chrome: Kunit tests and refactor for cros_ec_query_all() | expand |
On Wed, Jun 8, 2022 at 4:08 AM Tzung-Bi Shih <tzungbi@kernel.org> wrote: > > cros_ec_get_host_event_wake_mask() expects to receive > sizeof(struct ec_response_host_event_mask) 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_host_event_wake_mask(). > > Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org> Reviewed-by: Guenter Roeck <groeck@chromium.org> > --- > No v2. New and separated from the original series. > > drivers/platform/chrome/cros_ec_proto.c | 24 ++++++++++++++---------- > 1 file changed, 14 insertions(+), 10 deletions(-) > > diff --git a/drivers/platform/chrome/cros_ec_proto.c b/drivers/platform/chrome/cros_ec_proto.c > index 68a411e84744..5cbaaba26ff7 100644 > --- a/drivers/platform/chrome/cros_ec_proto.c > +++ b/drivers/platform/chrome/cros_ec_proto.c > @@ -256,19 +256,23 @@ static int cros_ec_get_host_event_wake_mask(struct cros_ec_device *ec_dev, uint3 > msg->insize = sizeof(*r); > > ret = send_command(ec_dev, msg); > - if (ret >= 0) { > - mapped = cros_ec_map_error(msg->result); > - if (mapped) { > - ret = mapped; > - goto exit; > - } > + if (ret < 0) > + goto exit; > + > + mapped = cros_ec_map_error(msg->result); > + if (mapped) { > + ret = mapped; > + goto exit; > } > - if (ret > 0) { > - r = (struct ec_response_host_event_mask *)msg->data; > - *mask = r->mask; > - ret = 0; > + > + if (ret == 0) { > + ret = -EPROTO; > + goto exit; > } > > + r = (struct ec_response_host_event_mask *)msg->data; > + *mask = r->mask; > + ret = 0; > exit: > kfree(msg); > return ret; > -- > 2.36.1.255.ge46751e96f-goog >
diff --git a/drivers/platform/chrome/cros_ec_proto.c b/drivers/platform/chrome/cros_ec_proto.c index 68a411e84744..5cbaaba26ff7 100644 --- a/drivers/platform/chrome/cros_ec_proto.c +++ b/drivers/platform/chrome/cros_ec_proto.c @@ -256,19 +256,23 @@ static int cros_ec_get_host_event_wake_mask(struct cros_ec_device *ec_dev, uint3 msg->insize = sizeof(*r); ret = send_command(ec_dev, msg); - if (ret >= 0) { - mapped = cros_ec_map_error(msg->result); - if (mapped) { - ret = mapped; - goto exit; - } + if (ret < 0) + goto exit; + + mapped = cros_ec_map_error(msg->result); + if (mapped) { + ret = mapped; + goto exit; } - if (ret > 0) { - r = (struct ec_response_host_event_mask *)msg->data; - *mask = r->mask; - ret = 0; + + if (ret == 0) { + ret = -EPROTO; + goto exit; } + r = (struct ec_response_host_event_mask *)msg->data; + *mask = r->mask; + ret = 0; exit: kfree(msg); return ret;
cros_ec_get_host_event_wake_mask() expects to receive sizeof(struct ec_response_host_event_mask) 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_host_event_wake_mask(). Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org> --- No v2. New and separated from the original series. drivers/platform/chrome/cros_ec_proto.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-)