From: Florian Fainelli <f.fainelli@gmail.com>
To: Dan Carpenter <dan.carpenter@oracle.com>, Yu Zhe <yuzhe@nfschina.com>
Cc: rafal@milecki.pl, bcm-kernel-feedback-list@broadcom.com,
davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
pabeni@redhat.com, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org,
liqiong@nfschina.com
Subject: Re: [PATCH] net: broadcom: bcm4908enet: add platform_get_irq_byname error checking
Date: Mon, 12 Sep 2022 11:14:42 -0700 [thread overview]
Message-ID: <2380c655-a6ba-7cdb-06d1-9c7856ff6cce@gmail.com> (raw)
In-Reply-To: <Yx8YDUaxXBEFYyON@kadam>
On 9/12/22 04:29, Dan Carpenter wrote:
> On Fri, Sep 09, 2022 at 02:25:45PM +0800, Yu Zhe wrote:
>> The platform_get_irq_byname() function returns negative error codes on error,
>> check it.
>>
>> Signed-off-by: Yu Zhe <yuzhe@nfschina.com>
>> ---
>> drivers/net/ethernet/broadcom/bcm4908_enet.c | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/drivers/net/ethernet/broadcom/bcm4908_enet.c b/drivers/net/ethernet/broadcom/bcm4908_enet.c
>> index c131d8118489..d985056db6c2 100644
>> --- a/drivers/net/ethernet/broadcom/bcm4908_enet.c
>> +++ b/drivers/net/ethernet/broadcom/bcm4908_enet.c
>> @@ -705,6 +705,8 @@ static int bcm4908_enet_probe(struct platform_device *pdev)
>> return netdev->irq;
>>
>> enet->irq_tx = platform_get_irq_byname(pdev, "tx");
>> + if (enet->irq_tx < 0)
>> + return enet->irq_tx;
>>
>
> If you read the driver, then you will see that this is deliberate.
> Search for irq_tx and read the comments. I'm not a subsystem expert so
> I don't know if this an ideal way to write the code, but it's done
> deliberately so please don't change it unless you can test it.
Yup, the transmit interrupt is deemed optional, or at least was up to
some point during the driver development. There is however a worthy bug
you could fix:
static int bcm4908_enet_stop(struct net_device *netdev)
{
struct bcm4908_enet *enet = netdev_priv(netdev);
struct bcm4908_enet_dma_ring *tx_ring = &enet->tx_ring;
struct bcm4908_enet_dma_ring *rx_ring = &enet->rx_ring;
netif_stop_queue(netdev);
netif_carrier_off(netdev);
napi_disable(&rx_ring->napi);
napi_disable(&tx_ring->napi);
bcm4908_enet_dma_rx_ring_disable(enet, &enet->rx_ring);
bcm4908_enet_dma_tx_ring_disable(enet, &enet->tx_ring);
bcm4908_enet_dma_uninit(enet);
free_irq(enet->irq_tx, enet);
We might attempt to free an invalid interrupt here ^^
free_irq(enet->netdev->irq, enet);
return 0;
--
Florian
next prev parent reply other threads:[~2022-09-12 18:14 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-09 6:25 [PATCH] net: broadcom: bcm4908enet: add platform_get_irq_byname error checking Yu Zhe
2022-09-12 11:29 ` Dan Carpenter
2022-09-12 18:14 ` Florian Fainelli [this message]
2022-09-13 10:51 ` Dan Carpenter
2022-09-15 9:49 ` Dan Carpenter
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=2380c655-a6ba-7cdb-06d1-9c7856ff6cce@gmail.com \
--to=f.fainelli@gmail.com \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=dan.carpenter@oracle.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=kernel-janitors@vger.kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=liqiong@nfschina.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=rafal@milecki.pl \
--cc=yuzhe@nfschina.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox