All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alex Elder <elder@ieee.org>
To: Jakub Kicinski <kuba@kernel.org>, davem@davemloft.net
Cc: netdev@vger.kernel.org, edumazet@google.com, pabeni@redhat.com,
	elder@kernel.org
Subject: Re: [PATCH net-next] net: ipa: don't proceed to out-of-bound write
Date: Wed, 18 May 2022 20:22:46 -0500	[thread overview]
Message-ID: <c7ad27bf-1bd7-86d5-8f22-c0cbc38ebda1@ieee.org> (raw)
In-Reply-To: <20220519004417.2109886-1-kuba@kernel.org>

On 5/18/22 7:44 PM, Jakub Kicinski wrote:
> GCC 12 seems upset that we check ipa_irq against array bound
> but then proceed, anyway:
> 
> drivers/net/ipa/ipa_interrupt.c: In function ‘ipa_interrupt_add’:
> drivers/net/ipa/ipa_interrupt.c:196:27: warning: array subscript 30 is above array bounds of ‘void (*[30])(struct ipa *, enum ipa_irq_id)’ [-Warray-bounds]
>    196 |         interrupt->handler[ipa_irq] = handler;
>        |         ~~~~~~~~~~~~~~~~~~^~~~~~~~~
> drivers/net/ipa/ipa_interrupt.c:42:27: note: while referencing ‘handler’
>     42 |         ipa_irq_handler_t handler[IPA_IRQ_COUNT];
>        |                           ^~~~~~~
> 
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>

Well, that's a reasonable thing to complain about.  I think when
I switched to using these WARN*() calls Leon said testing the
return value was unusual in the networking code.

In any case, this is a good fix.  The problem won't happen
anyway, so silencing the error this way is just fine.

Reviewed-by: Alex Elder <elder@linaro.org>

> ---
> CC: elder@kernel.org
> ---
>   drivers/net/ipa/ipa_interrupt.c | 6 ++++--
>   1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/ipa/ipa_interrupt.c b/drivers/net/ipa/ipa_interrupt.c
> index b35170a93b0f..307bed2ee707 100644
> --- a/drivers/net/ipa/ipa_interrupt.c
> +++ b/drivers/net/ipa/ipa_interrupt.c
> @@ -191,7 +191,8 @@ void ipa_interrupt_add(struct ipa_interrupt *interrupt,
>   	struct ipa *ipa = interrupt->ipa;
>   	u32 offset;
>   
> -	WARN_ON(ipa_irq >= IPA_IRQ_COUNT);
> +	if (WARN_ON(ipa_irq >= IPA_IRQ_COUNT))
> +		return;
>   
>   	interrupt->handler[ipa_irq] = handler;
>   
> @@ -208,7 +209,8 @@ ipa_interrupt_remove(struct ipa_interrupt *interrupt, enum ipa_irq_id ipa_irq)
>   	struct ipa *ipa = interrupt->ipa;
>   	u32 offset;
>   
> -	WARN_ON(ipa_irq >= IPA_IRQ_COUNT);
> +	if (WARN_ON(ipa_irq >= IPA_IRQ_COUNT))
> +		return;
>   
>   	/* Update the IPA interrupt mask to disable it */
>   	interrupt->enabled &= ~BIT(ipa_irq);


  reply	other threads:[~2022-05-19  1:22 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-19  0:44 [PATCH net-next] net: ipa: don't proceed to out-of-bound write Jakub Kicinski
2022-05-19  1:22 ` Alex Elder [this message]
2022-05-20  1:50 ` patchwork-bot+netdevbpf

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=c7ad27bf-1bd7-86d5-8f22-c0cbc38ebda1@ieee.org \
    --to=elder@ieee.org \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=elder@kernel.org \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    /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.