* [PATCH v2] net: arcnet: com20020-pci: fix support for 2.5Mbit cards
@ 2026-02-10 2:00 Ethan Nelson-Moore
2026-02-13 2:45 ` Jakub Kicinski
0 siblings, 1 reply; 2+ messages in thread
From: Ethan Nelson-Moore @ 2026-02-10 2:00 UTC (permalink / raw)
To: netdev
Cc: Ethan Nelson-Moore, stable, Simon Horman, Michael Grzeschik,
Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Zheyu Ma
Commit 8c14f9c70327 ("ARCNET: add com20020 PCI IDs with metadata")
converted the com20020-pci driver to use a card info structure instead
of a single flag mask in driver_data. However, it failed to take into
account that in the original code, driver_data of 0 indicates a card
with no special flags, not a card that should not have any card info
structure. This introduced a null pointer dereference when cards with
no flags were probed.
Commit bd6f1fd5d33d ("net: arcnet: com20020: Fix null-ptr-deref in
com20020pci_probe()") then papered over this issue by rejecting cards
with no driver_data instead of resolving the problem at its source.
Revert the incorrect fix and fix the original issue by introducing a
new card info structure for 2.5Mbit cards that does not set any flags.
Fixes: 8c14f9c70327 ("ARCNET: add com20020 PCI IDs with metadata")
Fixes: bd6f1fd5d33d ("net: arcnet: com20020: Fix null-ptr-deref in com20020pci_probe()")
Cc: stable@vger.kernel.org
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Ethan Nelson-Moore <enelsonmoore@gmail.com>
---
Changes from v1:
Rebase on latest mainline instead of net-next
Add received tag
drivers/net/arcnet/com20020-pci.c | 31 ++++++++++++++++++++-----------
1 file changed, 20 insertions(+), 11 deletions(-)
diff --git a/drivers/net/arcnet/com20020-pci.c b/drivers/net/arcnet/com20020-pci.c
index 0472bcdff130..4847f40a2095 100644
--- a/drivers/net/arcnet/com20020-pci.c
+++ b/drivers/net/arcnet/com20020-pci.c
@@ -139,9 +139,6 @@ static int com20020pci_probe(struct pci_dev *pdev,
return -ENOMEM;
ci = (struct com20020_pci_card_info *)id->driver_data;
- if (!ci)
- return -EINVAL;
-
priv->ci = ci;
mm = &ci->misc_map;
@@ -347,6 +344,18 @@ static struct com20020_pci_card_info card_info_5mbit = {
.flags = ARC_IS_5MBIT,
};
+static struct com20020_pci_card_info card_info_2p5mbit = {
+ .name = "ARC-PCI",
+ .devcount = 1,
+ .chan_map_tbl = {
+ {
+ .bar = 2,
+ .offset = 0x00,
+ .size = 0x08,
+ },
+ },
+};
+
static struct com20020_pci_card_info card_info_sohard = {
.name = "SOHARD SH ARC-PCI",
.devcount = 1,
@@ -448,49 +457,49 @@ static const struct pci_device_id com20020pci_id_table[] = {
0x1571, 0xa001,
PCI_ANY_ID, PCI_ANY_ID,
0, 0,
- 0,
+ (kernel_ulong_t)&card_info_2p5mbit
},
{
0x1571, 0xa002,
PCI_ANY_ID, PCI_ANY_ID,
0, 0,
- 0,
+ (kernel_ulong_t)&card_info_2p5mbit
},
{
0x1571, 0xa003,
PCI_ANY_ID, PCI_ANY_ID,
0, 0,
- 0
+ (kernel_ulong_t)&card_info_2p5mbit
},
{
0x1571, 0xa004,
PCI_ANY_ID, PCI_ANY_ID,
0, 0,
- 0,
+ (kernel_ulong_t)&card_info_2p5mbit
},
{
0x1571, 0xa005,
PCI_ANY_ID, PCI_ANY_ID,
0, 0,
- 0
+ (kernel_ulong_t)&card_info_2p5mbit
},
{
0x1571, 0xa006,
PCI_ANY_ID, PCI_ANY_ID,
0, 0,
- 0
+ (kernel_ulong_t)&card_info_2p5mbit
},
{
0x1571, 0xa007,
PCI_ANY_ID, PCI_ANY_ID,
0, 0,
- 0
+ (kernel_ulong_t)&card_info_2p5mbit
},
{
0x1571, 0xa008,
PCI_ANY_ID, PCI_ANY_ID,
0, 0,
- 0
+ (kernel_ulong_t)&card_info_2p5mbit
},
{
0x1571, 0xa009,
--
2.43.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v2] net: arcnet: com20020-pci: fix support for 2.5Mbit cards
2026-02-10 2:00 [PATCH v2] net: arcnet: com20020-pci: fix support for 2.5Mbit cards Ethan Nelson-Moore
@ 2026-02-13 2:45 ` Jakub Kicinski
0 siblings, 0 replies; 2+ messages in thread
From: Jakub Kicinski @ 2026-02-13 2:45 UTC (permalink / raw)
To: Ethan Nelson-Moore
Cc: netdev, stable, Simon Horman, Michael Grzeschik, Andrew Lunn,
David S. Miller, Eric Dumazet, Paolo Abeni, Zheyu Ma
On Mon, 9 Feb 2026 18:00:12 -0800 Ethan Nelson-Moore wrote:
> Commit 8c14f9c70327 ("ARCNET: add com20020 PCI IDs with metadata")
> converted the com20020-pci driver to use a card info structure instead
> of a single flag mask in driver_data. However, it failed to take into
> account that in the original code, driver_data of 0 indicates a card
> with no special flags, not a card that should not have any card info
> structure. This introduced a null pointer dereference when cards with
> no flags were probed.
>
> Commit bd6f1fd5d33d ("net: arcnet: com20020: Fix null-ptr-deref in
> com20020pci_probe()") then papered over this issue by rejecting cards
> with no driver_data instead of resolving the problem at its source.
>
> Revert the incorrect fix and fix the original issue by introducing a
> new card info structure for 2.5Mbit cards that does not set any flags.
Not sure this is enough, especially that you remove the null check.
IIUC user may add an ID via sysfs and that one will not have a driver
data. Why not catch the 0 driver data and assign card_info_2p5mbit as
a default?
--
pw-bot: cr
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-02-13 2:45 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-10 2:00 [PATCH v2] net: arcnet: com20020-pci: fix support for 2.5Mbit cards Ethan Nelson-Moore
2026-02-13 2:45 ` Jakub Kicinski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox