The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH net] net: rnpgbe: Pass an expression directly in rnpgbe_rm_adapter()
@ 2026-07-12 18:35 Markus Elfring
  2026-07-12 22:19 ` Vadim Fedorenko
  2026-07-13  8:04 ` [PATCH net] " Dan Carpenter
  0 siblings, 2 replies; 5+ messages in thread
From: Markus Elfring @ 2026-07-12 18:35 UTC (permalink / raw)
  To: netdev, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, MD Danish Anwar, Michael Grzeschik, Paolo Abeni,
	Uwe Kleine-König, Vadim Fedorenko, Yibo Dong
  Cc: LKML, kernel-janitors

From: Markus Elfring <elfring@users.sourceforge.net>
Date: Sun, 12 Jul 2026 20:25:10 +0200

The address of a data structure member was determined before
a corresponding null pointer check in the implementation of
the function “rnpgbe_rm_adapter”.

Thus avoid the risk for undefined behaviour by omitting the variable “hw”.
Pass the required address directly to a function call.

This issue was detected by using the Coccinelle software.

Fixes: 2ee95ec17e97c58b65e978a08b75fa8cb6424e4e ("net: rnpgbe: Add register_netdev")
Cc: stable@vger.kernel.org
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
---
 drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c
index 70a2b0082ba8..93cf757c951c 100644
--- a/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c
+++ b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c
@@ -245,7 +245,6 @@ static int rnpgbe_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 static void rnpgbe_rm_adapter(struct pci_dev *pdev)
 {
 	struct mucse *mucse = pci_get_drvdata(pdev);
-	struct mucse_hw *hw = &mucse->hw;
 	struct net_device *netdev;
 	int err;
 
@@ -253,7 +252,7 @@ static void rnpgbe_rm_adapter(struct pci_dev *pdev)
 		return;
 	netdev = mucse->netdev;
 	unregister_netdev(netdev);
-	err = rnpgbe_send_notify(hw, false, mucse_fw_powerup);
+	err = rnpgbe_send_notify(&mucse->hw, false, mucse_fw_powerup);
 	if (err)
 		dev_warn(&pdev->dev, "Send powerdown to hw failed %d\n", err);
 	free_netdev(netdev);
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH net] net: rnpgbe: Pass an expression directly in rnpgbe_rm_adapter()
  2026-07-12 18:35 [PATCH net] net: rnpgbe: Pass an expression directly in rnpgbe_rm_adapter() Markus Elfring
@ 2026-07-12 22:19 ` Vadim Fedorenko
  2026-07-13  6:00   ` Markus Elfring
  2026-07-13  8:04 ` [PATCH net] " Dan Carpenter
  1 sibling, 1 reply; 5+ messages in thread
From: Vadim Fedorenko @ 2026-07-12 22:19 UTC (permalink / raw)
  To: Markus Elfring, netdev, Andrew Lunn, David S. Miller,
	Eric Dumazet, Jakub Kicinski, MD Danish Anwar, Michael Grzeschik,
	Paolo Abeni, Uwe Kleine-König, Yibo Dong
  Cc: LKML, kernel-janitors

On 12/07/2026 19:35, Markus Elfring wrote:
> From: Markus Elfring <elfring@users.sourceforge.net>
> Date: Sun, 12 Jul 2026 20:25:10 +0200
> 
> The address of a data structure member was determined before
> a corresponding null pointer check in the implementation of
> the function “rnpgbe_rm_adapter”.

The null check in rnpgbe_rm_adapter() looks more like defensive
programming, which got into the code unnoticed. pdev will not exist if
netdev is not allocated, where mucse is netdev private data.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: net: rnpgbe: Pass an expression directly in rnpgbe_rm_adapter()
  2026-07-12 22:19 ` Vadim Fedorenko
@ 2026-07-13  6:00   ` Markus Elfring
  0 siblings, 0 replies; 5+ messages in thread
From: Markus Elfring @ 2026-07-13  6:00 UTC (permalink / raw)
  To: Vadim Fedorenko, netdev, Andrew Lunn, David S. Miller,
	Eric Dumazet, Jakub Kicinski, MD Danish Anwar, Michael Grzeschik,
	Paolo Abeni, Uwe Kleine-König, Yibo Dong
  Cc: LKML, kernel-janitors

>> The address of a data structure member was determined before
>> a corresponding null pointer check in the implementation of
>> the function “rnpgbe_rm_adapter”.
> 
> The null check in rnpgbe_rm_adapter() looks more like defensive
> programming,

This can be fine, can't it?


>              which got into the code unnoticed.

Some patch reviews happened accordingly.


>                                                 pdev will not exist if
> netdev is not allocated, where mucse is netdev private data.

Would you like to reconsider the relevance of another null pointer check?

Regards,
Markus


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net] net: rnpgbe: Pass an expression directly in rnpgbe_rm_adapter()
  2026-07-12 18:35 [PATCH net] net: rnpgbe: Pass an expression directly in rnpgbe_rm_adapter() Markus Elfring
  2026-07-12 22:19 ` Vadim Fedorenko
@ 2026-07-13  8:04 ` Dan Carpenter
  2026-07-13  8:22   ` Markus Elfring
  1 sibling, 1 reply; 5+ messages in thread
From: Dan Carpenter @ 2026-07-13  8:04 UTC (permalink / raw)
  To: Markus Elfring
  Cc: netdev, Andrew Lunn, David S. Miller, Eric Dumazet,
	Jakub Kicinski, MD Danish Anwar, Michael Grzeschik, Paolo Abeni,
	Uwe Kleine-König, Vadim Fedorenko, Yibo Dong, LKML,
	kernel-janitors

On Sun, Jul 12, 2026 at 08:35:21PM +0200, Markus Elfring wrote:
> From: Markus Elfring <elfring@users.sourceforge.net>
> Date: Sun, 12 Jul 2026 20:25:10 +0200
> 
> The address of a data structure member was determined before
> a corresponding null pointer check in the implementation of
> the function “rnpgbe_rm_adapter”.
> 
> Thus avoid the risk for undefined behaviour by omitting the variable “hw”.
> Pass the required address directly to a function call.
> 
> This issue was detected by using the Coccinelle software.
> 
> Fixes: 2ee95ec17e97c58b65e978a08b75fa8cb6424e4e ("net: rnpgbe: Add register_netdev")

There is no NULL dereference here.  It's just pointer math.
No need for a Fixes tag.

regards,
dan carpenter


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net] net: rnpgbe: Pass an expression directly in rnpgbe_rm_adapter()
  2026-07-13  8:04 ` [PATCH net] " Dan Carpenter
@ 2026-07-13  8:22   ` Markus Elfring
  0 siblings, 0 replies; 5+ messages in thread
From: Markus Elfring @ 2026-07-13  8:22 UTC (permalink / raw)
  To: Dan Carpenter, netdev
  Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
	MD Danish Anwar, Michael Grzeschik, Paolo Abeni,
	Uwe Kleine-König, Vadim Fedorenko, Yibo Dong, LKML,
	kernel-janitors

>> The address of a data structure member was determined before
>> a corresponding null pointer check in the implementation of
>> the function “rnpgbe_rm_adapter”.
>>
>> Thus avoid the risk for undefined behaviour by omitting the variable “hw”.
>> Pass the required address directly to a function call.
>>
>> This issue was detected by using the Coccinelle software.
>>
>> Fixes: 2ee95ec17e97c58b65e978a08b75fa8cb6424e4e ("net: rnpgbe: Add register_netdev")
> 
> There is no NULL dereference here.  It's just pointer math.
> No need for a Fixes tag.

How does your view fit to information in an article like “Fun with NULL pointers, part 1”(by Jonathan Corbet from 2009-07-20)?
https://lwn.net/Articles/342330/

Regards,
Markus

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-07-13  8:22 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-12 18:35 [PATCH net] net: rnpgbe: Pass an expression directly in rnpgbe_rm_adapter() Markus Elfring
2026-07-12 22:19 ` Vadim Fedorenko
2026-07-13  6:00   ` Markus Elfring
2026-07-13  8:04 ` [PATCH net] " Dan Carpenter
2026-07-13  8:22   ` Markus Elfring

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox