From: Tzung-Bi Shih <tzungbi@kernel.org>
To: "Gustavo A. R. Silva" <gustavoars@kernel.org>
Cc: Benson Leung <bleung@chromium.org>,
Guenter Roeck <groeck@chromium.org>,
chrome-platform@lists.linux.dev, linux-kernel@vger.kernel.org,
linux-hardening@vger.kernel.org
Subject: Re: [PATCH][next] platform/chrome: Fix -Warray-bounds warnings
Date: Thu, 30 Mar 2023 15:01:23 +0800 [thread overview]
Message-ID: <ZCUzw9epJig2rTIY@google.com> (raw)
In-Reply-To: <ZCTrutoN+9TiJM8u@work>
On Wed, Mar 29, 2023 at 07:54:02PM -0600, Gustavo A. R. Silva wrote:
> In this case, as only enough space for the op field is allocated,
> we can use an object of type uint32_t instead of a whole
> struct ec_params_vbnvcontext (for which not enough memory is
> allocated).
It doesn't make sense to me. See comments below.
> Fix the following warning seen under GCC 13:
> drivers/platform/chrome/cros_ec_vbc.c: In function ‘vboot_context_read’:
> drivers/platform/chrome/cros_ec_vbc.c:36:15: warning: array subscript ‘struct ec_params_vbnvcontext[1]’ is partly outside array bounds of ‘unsigned char[36]’ [-Warray-bounds=]
> 36 | params->op = EC_VBNV_CONTEXT_OP_READ;
> | ^~
> In file included from drivers/platform/chrome/cros_ec_vbc.c:12:
> In function ‘kmalloc’,
> inlined from ‘vboot_context_read’ at drivers/platform/chrome/cros_ec_vbc.c:30:8:
> ./include/linux/slab.h:580:24: note: at offset 20 into object of size 36 allocated by ‘kmalloc_trace’
> 580 | return kmalloc_trace(
> | ^~~~~~~~~~~~~~
> 581 | kmalloc_caches[kmalloc_type(flags)][index],
> | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 582 | flags, size);
> | ~~~~~~~~~~~~
Please trim the commit message a bit and try to wrap at 75 columns as
[1] suggested.
[1]: https://www.kernel.org/doc/html/latest/process/submitting-patches.html#the-canonical-patch-format
> @@ -20,10 +20,14 @@ static ssize_t vboot_context_read(struct file *filp, struct kobject *kobj,
> struct device *dev = kobj_to_dev(kobj);
> struct cros_ec_dev *ec = to_cros_ec_dev(dev);
> struct cros_ec_device *ecdev = ec->ec_dev;
> - struct ec_params_vbnvcontext *params;
> struct cros_ec_command *msg;
> + /*
> + * This should be a pointer to the same type as op field in
> + * struct ec_params_vbnvcontext.
> + */
> + uint32_t *params_op;
> int err;
> - const size_t para_sz = sizeof(params->op);
> + const size_t para_sz = sizeof(*params_op);
> const size_t resp_sz = sizeof(struct ec_response_vbnvcontext);
> const size_t payload = max(para_sz, resp_sz);
>
> @@ -32,8 +36,8 @@ static ssize_t vboot_context_read(struct file *filp, struct kobject *kobj,
> return -ENOMEM;
>
> /* NB: we only kmalloc()ated enough space for the op field */
> - params = (struct ec_params_vbnvcontext *)msg->data;
> - params->op = EC_VBNV_CONTEXT_OP_READ;
> + params_op = (uint32_t *)msg->data;
> + *params_op = EC_VBNV_CONTEXT_OP_READ;
I don't see a good reason to partially allocate memory here. Perhaps, just
let `para_sz = sizeof(struct ec_params_vbnvcontext)`? If it also makes
sense to you, please remove the comment "NB: we only..." as well.
next prev parent reply other threads:[~2023-03-30 7:01 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-30 1:54 [PATCH][next] platform/chrome: Fix -Warray-bounds warnings Gustavo A. R. Silva
2023-03-30 7:01 ` Tzung-Bi Shih [this message]
2023-03-30 7:11 ` Greg KH
2023-03-30 20:44 ` Gustavo A. R. Silva
2023-12-14 16:35 ` Kees Cook
2023-12-14 16:37 ` Kees Cook
2023-12-15 8:17 ` Tzung-Bi Shih
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZCUzw9epJig2rTIY@google.com \
--to=tzungbi@kernel.org \
--cc=bleung@chromium.org \
--cc=chrome-platform@lists.linux.dev \
--cc=groeck@chromium.org \
--cc=gustavoars@kernel.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.