* [PATCH] [net-next] net: stmmac: fix gcc-10 -Wrestrict warning
@ 2021-04-21 13:47 Arnd Bergmann
2021-04-21 14:38 ` David Laight
2021-04-23 9:42 ` Dan Carpenter
0 siblings, 2 replies; 3+ messages in thread
From: Arnd Bergmann @ 2021-04-21 13:47 UTC (permalink / raw)
To: Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu, David S. Miller,
Jakub Kicinski
Cc: Arnd Bergmann, Maxime Coquelin, Ong Boon Leong, Voon Weifeng,
Joakim Zhang, Fugang Duan, Thierry Reding, Song, Yoong Siang,
netdev, linux-stm32, linux-arm-kernel, linux-kernel
From: Arnd Bergmann <arnd@arndb.de>
gcc-10 and later warn about a theoretical array overrun when
accessing priv->int_name_rx_irq[i] with an out of bounds value
of 'i':
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function 'stmmac_request_irq_multi_msi':
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3528:17: error: 'snprintf' argument 4 may overlap destination object 'dev' [-Werror=restrict]
3528 | snprintf(int_name, int_name_len, "%s:%s-%d", dev->name, "tx", i);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3404:60: note: destination object referenced by 'restrict'-qualified argument 1 was declared here
3404 | static int stmmac_request_irq_multi_msi(struct net_device *dev)
| ~~~~~~~~~~~~~~~~~~~^~~
The warning is a bit strange since it's not actually about the array
bounds but rather about possible string operations with overlapping
arguments, but it's not technically wrong.
Avoid the warning by adding an extra bounds check.
Fixes: 8532f613bc78 ("net: stmmac: introduce MSI Interrupt routines for mac, safety, RX & TX")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index d1ca07c846e6..aadac783687b 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -3498,6 +3498,8 @@ static int stmmac_request_irq_multi_msi(struct net_device *dev)
/* Request Rx MSI irq */
for (i = 0; i < priv->plat->rx_queues_to_use; i++) {
+ if (i > MTL_MAX_RX_QUEUES)
+ break;
if (priv->rx_irq[i] == 0)
continue;
@@ -3521,6 +3523,8 @@ static int stmmac_request_irq_multi_msi(struct net_device *dev)
/* Request Tx MSI irq */
for (i = 0; i < priv->plat->tx_queues_to_use; i++) {
+ if (i > MTL_MAX_TX_QUEUES)
+ break;
if (priv->tx_irq[i] == 0)
continue;
--
2.29.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* RE: [PATCH] [net-next] net: stmmac: fix gcc-10 -Wrestrict warning
2021-04-21 13:47 [PATCH] [net-next] net: stmmac: fix gcc-10 -Wrestrict warning Arnd Bergmann
@ 2021-04-21 14:38 ` David Laight
2021-04-23 9:42 ` Dan Carpenter
1 sibling, 0 replies; 3+ messages in thread
From: David Laight @ 2021-04-21 14:38 UTC (permalink / raw)
To: 'Arnd Bergmann', Giuseppe Cavallaro, Alexandre Torgue,
Jose Abreu, David S. Miller, Jakub Kicinski
Cc: Arnd Bergmann, Maxime Coquelin, Ong Boon Leong, Voon Weifeng,
Joakim Zhang, Fugang Duan, Thierry Reding, Song, Yoong Siang,
netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
From: Arnd Bergmann
> Sent: 21 April 2021 14:47
>
> From: Arnd Bergmann <arnd@arndb.de>
>
> gcc-10 and later warn about a theoretical array overrun when
> accessing priv->int_name_rx_irq[i] with an out of bounds value
> of 'i':
>
> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c: In function 'stmmac_request_irq_multi_msi':
> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3528:17: error: 'snprintf' argument 4 may overlap
> destination object 'dev' [-Werror=restrict]
> 3528 | snprintf(int_name, int_name_len, "%s:%s-%d", dev->name, "tx", i);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3404:60: note: destination object referenced by
> 'restrict'-qualified argument 1 was declared here
> 3404 | static int stmmac_request_irq_multi_msi(struct net_device *dev)
> | ~~~~~~~~~~~~~~~~~~~^~~
>
> The warning is a bit strange since it's not actually about the array
> bounds but rather about possible string operations with overlapping
> arguments, but it's not technically wrong.
>
> Avoid the warning by adding an extra bounds check.
>
> Fixes: 8532f613bc78 ("net: stmmac: introduce MSI Interrupt routines for mac, safety, RX & TX")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index d1ca07c846e6..aadac783687b 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> @@ -3498,6 +3498,8 @@ static int stmmac_request_irq_multi_msi(struct net_device *dev)
>
> /* Request Rx MSI irq */
> for (i = 0; i < priv->plat->rx_queues_to_use; i++) {
> + if (i > MTL_MAX_RX_QUEUES)
> + break;
> if (priv->rx_irq[i] == 0)
> continue;
It might be best to do:
num_queues = min(priv->plat->rx_queues_to_use, MTL_MAX_RX_QUEUES);
if (i = 0; i < num_queues; i++) {
...
Or just give up - if rx_queues_to_use is too big it's all
gone horribly wrong already.
The compile must be smoking weed again.
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] [net-next] net: stmmac: fix gcc-10 -Wrestrict warning
2021-04-21 13:47 [PATCH] [net-next] net: stmmac: fix gcc-10 -Wrestrict warning Arnd Bergmann
2021-04-21 14:38 ` David Laight
@ 2021-04-23 9:42 ` Dan Carpenter
1 sibling, 0 replies; 3+ messages in thread
From: Dan Carpenter @ 2021-04-23 9:42 UTC (permalink / raw)
To: kbuild, Arnd Bergmann, Giuseppe Cavallaro, Alexandre Torgue,
Jose Abreu, David S. Miller, Jakub Kicinski
Cc: lkp, kbuild-all, netdev, Arnd Bergmann, Maxime Coquelin,
Ong Boon Leong, Voon Weifeng
[-- Attachment #1: Type: text/plain, Size: 14065 bytes --]
Hi Arnd,
url: https://github.com/0day-ci/linux/commits/Arnd-Bergmann/net-stmmac-fix-gcc-10-Wrestrict-warning/20210421-215015
base: b74523885a715463203d4ccc3cf8c85952d3701a
config: x86_64-randconfig-m001-20210421 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3503 stmmac_request_irq_multi_msi() error: buffer overflow 'priv->rx_irq' 8 <= 8
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3506 stmmac_request_irq_multi_msi() error: buffer overflow 'priv->int_name_rx_irq' 8 <= 8
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3528 stmmac_request_irq_multi_msi() error: buffer overflow 'priv->tx_irq' 8 <= 8
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3531 stmmac_request_irq_multi_msi() error: buffer overflow 'priv->int_name_tx_irq' 8 <= 8
Old smatch warnings:
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1708 init_dma_rx_desc_rings() warn: always true condition '(queue >= 0) => (0-u32max >= 0)'
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1708 init_dma_rx_desc_rings() warn: always true condition '(queue >= 0) => (0-u32max >= 0)'
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3508 stmmac_request_irq_multi_msi() error: buffer overflow 'priv->rx_irq' 8 <= 8
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3514 stmmac_request_irq_multi_msi() error: buffer overflow 'priv->rx_irq' 8 <= 8
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3521 stmmac_request_irq_multi_msi() error: buffer overflow 'priv->rx_irq' 8 <= 8
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3533 stmmac_request_irq_multi_msi() error: buffer overflow 'priv->tx_irq' 8 <= 8
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3539 stmmac_request_irq_multi_msi() error: buffer overflow 'priv->tx_irq' 8 <= 8
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3546 stmmac_request_irq_multi_msi() error: buffer overflow 'priv->tx_irq' 8 <= 8
vim +3503 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
8532f613bc78b6 Ong Boon Leong 2021-03-26 3404 static int stmmac_request_irq_multi_msi(struct net_device *dev)
8532f613bc78b6 Ong Boon Leong 2021-03-26 3405 {
8532f613bc78b6 Ong Boon Leong 2021-03-26 3406 enum request_irq_err irq_err = REQ_IRQ_ERR_NO;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3407 struct stmmac_priv *priv = netdev_priv(dev);
8deec94c6040bb Ong Boon Leong 2021-04-01 3408 cpumask_t cpu_mask;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3409 int irq_idx = 0;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3410 char *int_name;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3411 int ret;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3412 int i;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3413
8532f613bc78b6 Ong Boon Leong 2021-03-26 3414 /* For common interrupt */
8532f613bc78b6 Ong Boon Leong 2021-03-26 3415 int_name = priv->int_name_mac;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3416 sprintf(int_name, "%s:%s", dev->name, "mac");
8532f613bc78b6 Ong Boon Leong 2021-03-26 3417 ret = request_irq(dev->irq, stmmac_mac_interrupt,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3418 0, int_name, dev);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3419 if (unlikely(ret < 0)) {
8532f613bc78b6 Ong Boon Leong 2021-03-26 3420 netdev_err(priv->dev,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3421 "%s: alloc mac MSI %d (error: %d)\n",
8532f613bc78b6 Ong Boon Leong 2021-03-26 3422 __func__, dev->irq, ret);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3423 irq_err = REQ_IRQ_ERR_MAC;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3424 goto irq_error;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3425 }
8532f613bc78b6 Ong Boon Leong 2021-03-26 3426
8532f613bc78b6 Ong Boon Leong 2021-03-26 3427 /* Request the Wake IRQ in case of another line
8532f613bc78b6 Ong Boon Leong 2021-03-26 3428 * is used for WoL
8532f613bc78b6 Ong Boon Leong 2021-03-26 3429 */
8532f613bc78b6 Ong Boon Leong 2021-03-26 3430 if (priv->wol_irq > 0 && priv->wol_irq != dev->irq) {
8532f613bc78b6 Ong Boon Leong 2021-03-26 3431 int_name = priv->int_name_wol;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3432 sprintf(int_name, "%s:%s", dev->name, "wol");
8532f613bc78b6 Ong Boon Leong 2021-03-26 3433 ret = request_irq(priv->wol_irq,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3434 stmmac_mac_interrupt,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3435 0, int_name, dev);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3436 if (unlikely(ret < 0)) {
8532f613bc78b6 Ong Boon Leong 2021-03-26 3437 netdev_err(priv->dev,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3438 "%s: alloc wol MSI %d (error: %d)\n",
8532f613bc78b6 Ong Boon Leong 2021-03-26 3439 __func__, priv->wol_irq, ret);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3440 irq_err = REQ_IRQ_ERR_WOL;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3441 goto irq_error;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3442 }
8532f613bc78b6 Ong Boon Leong 2021-03-26 3443 }
8532f613bc78b6 Ong Boon Leong 2021-03-26 3444
8532f613bc78b6 Ong Boon Leong 2021-03-26 3445 /* Request the LPI IRQ in case of another line
8532f613bc78b6 Ong Boon Leong 2021-03-26 3446 * is used for LPI
8532f613bc78b6 Ong Boon Leong 2021-03-26 3447 */
8532f613bc78b6 Ong Boon Leong 2021-03-26 3448 if (priv->lpi_irq > 0 && priv->lpi_irq != dev->irq) {
8532f613bc78b6 Ong Boon Leong 2021-03-26 3449 int_name = priv->int_name_lpi;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3450 sprintf(int_name, "%s:%s", dev->name, "lpi");
8532f613bc78b6 Ong Boon Leong 2021-03-26 3451 ret = request_irq(priv->lpi_irq,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3452 stmmac_mac_interrupt,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3453 0, int_name, dev);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3454 if (unlikely(ret < 0)) {
8532f613bc78b6 Ong Boon Leong 2021-03-26 3455 netdev_err(priv->dev,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3456 "%s: alloc lpi MSI %d (error: %d)\n",
8532f613bc78b6 Ong Boon Leong 2021-03-26 3457 __func__, priv->lpi_irq, ret);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3458 irq_err = REQ_IRQ_ERR_LPI;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3459 goto irq_error;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3460 }
8532f613bc78b6 Ong Boon Leong 2021-03-26 3461 }
8532f613bc78b6 Ong Boon Leong 2021-03-26 3462
8532f613bc78b6 Ong Boon Leong 2021-03-26 3463 /* Request the Safety Feature Correctible Error line in
8532f613bc78b6 Ong Boon Leong 2021-03-26 3464 * case of another line is used
8532f613bc78b6 Ong Boon Leong 2021-03-26 3465 */
8532f613bc78b6 Ong Boon Leong 2021-03-26 3466 if (priv->sfty_ce_irq > 0 && priv->sfty_ce_irq != dev->irq) {
8532f613bc78b6 Ong Boon Leong 2021-03-26 3467 int_name = priv->int_name_sfty_ce;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3468 sprintf(int_name, "%s:%s", dev->name, "safety-ce");
8532f613bc78b6 Ong Boon Leong 2021-03-26 3469 ret = request_irq(priv->sfty_ce_irq,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3470 stmmac_safety_interrupt,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3471 0, int_name, dev);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3472 if (unlikely(ret < 0)) {
8532f613bc78b6 Ong Boon Leong 2021-03-26 3473 netdev_err(priv->dev,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3474 "%s: alloc sfty ce MSI %d (error: %d)\n",
8532f613bc78b6 Ong Boon Leong 2021-03-26 3475 __func__, priv->sfty_ce_irq, ret);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3476 irq_err = REQ_IRQ_ERR_SFTY_CE;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3477 goto irq_error;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3478 }
8532f613bc78b6 Ong Boon Leong 2021-03-26 3479 }
8532f613bc78b6 Ong Boon Leong 2021-03-26 3480
8532f613bc78b6 Ong Boon Leong 2021-03-26 3481 /* Request the Safety Feature Uncorrectible Error line in
8532f613bc78b6 Ong Boon Leong 2021-03-26 3482 * case of another line is used
8532f613bc78b6 Ong Boon Leong 2021-03-26 3483 */
8532f613bc78b6 Ong Boon Leong 2021-03-26 3484 if (priv->sfty_ue_irq > 0 && priv->sfty_ue_irq != dev->irq) {
8532f613bc78b6 Ong Boon Leong 2021-03-26 3485 int_name = priv->int_name_sfty_ue;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3486 sprintf(int_name, "%s:%s", dev->name, "safety-ue");
8532f613bc78b6 Ong Boon Leong 2021-03-26 3487 ret = request_irq(priv->sfty_ue_irq,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3488 stmmac_safety_interrupt,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3489 0, int_name, dev);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3490 if (unlikely(ret < 0)) {
8532f613bc78b6 Ong Boon Leong 2021-03-26 3491 netdev_err(priv->dev,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3492 "%s: alloc sfty ue MSI %d (error: %d)\n",
8532f613bc78b6 Ong Boon Leong 2021-03-26 3493 __func__, priv->sfty_ue_irq, ret);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3494 irq_err = REQ_IRQ_ERR_SFTY_UE;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3495 goto irq_error;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3496 }
8532f613bc78b6 Ong Boon Leong 2021-03-26 3497 }
8532f613bc78b6 Ong Boon Leong 2021-03-26 3498
8532f613bc78b6 Ong Boon Leong 2021-03-26 3499 /* Request Rx MSI irq */
8532f613bc78b6 Ong Boon Leong 2021-03-26 3500 for (i = 0; i < priv->plat->rx_queues_to_use; i++) {
e4af3ad54243da Arnd Bergmann 2021-04-21 3501 if (i > MTL_MAX_RX_QUEUES)
^^^^^^^^^^^^^^^^^^^^^
Off by one.
e4af3ad54243da Arnd Bergmann 2021-04-21 3502 break;
8532f613bc78b6 Ong Boon Leong 2021-03-26 @3503 if (priv->rx_irq[i] == 0)
^^^^^^^^^
8532f613bc78b6 Ong Boon Leong 2021-03-26 3504 continue;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3505
8532f613bc78b6 Ong Boon Leong 2021-03-26 @3506 int_name = priv->int_name_rx_irq[i];
^^^^^^^^^^^^^^^^^^^^
8532f613bc78b6 Ong Boon Leong 2021-03-26 3507 sprintf(int_name, "%s:%s-%d", dev->name, "rx", i);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3508 ret = request_irq(priv->rx_irq[i],
8532f613bc78b6 Ong Boon Leong 2021-03-26 3509 stmmac_msi_intr_rx,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3510 0, int_name, &priv->rx_queue[i]);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3511 if (unlikely(ret < 0)) {
8532f613bc78b6 Ong Boon Leong 2021-03-26 3512 netdev_err(priv->dev,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3513 "%s: alloc rx-%d MSI %d (error: %d)\n",
8532f613bc78b6 Ong Boon Leong 2021-03-26 3514 __func__, i, priv->rx_irq[i], ret);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3515 irq_err = REQ_IRQ_ERR_RX;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3516 irq_idx = i;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3517 goto irq_error;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3518 }
8deec94c6040bb Ong Boon Leong 2021-04-01 3519 cpumask_clear(&cpu_mask);
8deec94c6040bb Ong Boon Leong 2021-04-01 3520 cpumask_set_cpu(i % num_online_cpus(), &cpu_mask);
8deec94c6040bb Ong Boon Leong 2021-04-01 3521 irq_set_affinity_hint(priv->rx_irq[i], &cpu_mask);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3522 }
8532f613bc78b6 Ong Boon Leong 2021-03-26 3523
8532f613bc78b6 Ong Boon Leong 2021-03-26 3524 /* Request Tx MSI irq */
8532f613bc78b6 Ong Boon Leong 2021-03-26 3525 for (i = 0; i < priv->plat->tx_queues_to_use; i++) {
e4af3ad54243da Arnd Bergmann 2021-04-21 3526 if (i > MTL_MAX_TX_QUEUES)
^^^^^^^^^^^^^^^^^^^^^
e4af3ad54243da Arnd Bergmann 2021-04-21 3527 break;
8532f613bc78b6 Ong Boon Leong 2021-03-26 @3528 if (priv->tx_irq[i] == 0)
8532f613bc78b6 Ong Boon Leong 2021-03-26 3529 continue;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3530
8532f613bc78b6 Ong Boon Leong 2021-03-26 @3531 int_name = priv->int_name_tx_irq[i];
8532f613bc78b6 Ong Boon Leong 2021-03-26 3532 sprintf(int_name, "%s:%s-%d", dev->name, "tx", i);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3533 ret = request_irq(priv->tx_irq[i],
8532f613bc78b6 Ong Boon Leong 2021-03-26 3534 stmmac_msi_intr_tx,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3535 0, int_name, &priv->tx_queue[i]);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3536 if (unlikely(ret < 0)) {
8532f613bc78b6 Ong Boon Leong 2021-03-26 3537 netdev_err(priv->dev,
8532f613bc78b6 Ong Boon Leong 2021-03-26 3538 "%s: alloc tx-%d MSI %d (error: %d)\n",
8532f613bc78b6 Ong Boon Leong 2021-03-26 3539 __func__, i, priv->tx_irq[i], ret);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3540 irq_err = REQ_IRQ_ERR_TX;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3541 irq_idx = i;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3542 goto irq_error;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3543 }
8deec94c6040bb Ong Boon Leong 2021-04-01 3544 cpumask_clear(&cpu_mask);
8deec94c6040bb Ong Boon Leong 2021-04-01 3545 cpumask_set_cpu(i % num_online_cpus(), &cpu_mask);
8deec94c6040bb Ong Boon Leong 2021-04-01 3546 irq_set_affinity_hint(priv->tx_irq[i], &cpu_mask);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3547 }
8532f613bc78b6 Ong Boon Leong 2021-03-26 3548
8532f613bc78b6 Ong Boon Leong 2021-03-26 3549 return 0;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3550
8532f613bc78b6 Ong Boon Leong 2021-03-26 3551 irq_error:
8532f613bc78b6 Ong Boon Leong 2021-03-26 3552 stmmac_free_irq(dev, irq_err, irq_idx);
8532f613bc78b6 Ong Boon Leong 2021-03-26 3553 return ret;
8532f613bc78b6 Ong Boon Leong 2021-03-26 3554 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 33397 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-04-23 9:47 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-04-21 13:47 [PATCH] [net-next] net: stmmac: fix gcc-10 -Wrestrict warning Arnd Bergmann
2021-04-21 14:38 ` David Laight
2021-04-23 9:42 ` Dan Carpenter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).