Messages in this thread | | | From | Guenter Roeck <> | Date | Wed, 8 Jun 2022 09:30:19 -0700 | Subject | Re: [PATCH v3 23/23] platform/chrome: cros_ec_proto: handle empty payload in getting wake mask |
| |
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 >
| |