| From 9deb48b53e7f4056c2eaa2dc2ee3338df619e4f6 Mon Sep 17 00:00:00 2001 |
| From: Sergey Shtylyov <s.shtylyov@omp.ru> |
| Date: Thu, 13 Jan 2022 22:46:07 +0300 |
| Subject: bcmgenet: add WOL IRQ check |
| |
| From: Sergey Shtylyov <s.shtylyov@omp.ru> |
| |
| commit 9deb48b53e7f4056c2eaa2dc2ee3338df619e4f6 upstream. |
| |
| The driver neglects to check the result of platform_get_irq_optional()'s |
| call and blithely passes the negative error codes to devm_request_irq() |
| (which takes *unsigned* IRQ #), causing it to fail with -EINVAL. |
| Stop calling devm_request_irq() with the invalid IRQ #s. |
| |
| Fixes: 8562056f267d ("net: bcmgenet: request Wake-on-LAN interrupt") |
| Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru> |
| Acked-by: Florian Fainelli <f.fainelli@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/broadcom/genet/bcmgenet.c | 10 ++++++---- |
| 1 file changed, 6 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c |
| +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c |
| @@ -3962,10 +3962,12 @@ static int bcmgenet_probe(struct platfor |
| |
| /* Request the WOL interrupt and advertise suspend if available */ |
| priv->wol_irq_disabled = true; |
| - err = devm_request_irq(&pdev->dev, priv->wol_irq, bcmgenet_wol_isr, 0, |
| - dev->name, priv); |
| - if (!err) |
| - device_set_wakeup_capable(&pdev->dev, 1); |
| + if (priv->wol_irq > 0) { |
| + err = devm_request_irq(&pdev->dev, priv->wol_irq, |
| + bcmgenet_wol_isr, 0, dev->name, priv); |
| + if (!err) |
| + device_set_wakeup_capable(&pdev->dev, 1); |
| + } |
| |
| /* Set the needed headroom to account for any possible |
| * features enabling/disabling at runtime |