lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 8 Jun 2022 09:30:19 -0700 From: Guenter Roeck <groeck@...gle.com> To: Tzung-Bi Shih <tzungbi@...nel.org> Cc: Benson Leung <bleung@...omium.org>, Guenter Roeck <groeck@...omium.org>, "open list:CHROME HARDWARE PLATFORM SUPPORT" <chrome-platform@...ts.linux.dev>, linux-kernel <linux-kernel@...r.kernel.org> 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@...nel.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@...nel.org> Reviewed-by: Guenter Roeck <groeck@...omium.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 >
Powered by blists - more mailing lists