mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 19:43:40 +02:00
net: arcnet: com20020-pci: fix support for 2.5Mbit cards
Commit8c14f9c703("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. Commitbd6f1fd5d3("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. Fix the original issue by introducing a new card info structure for 2.5Mbit cards that does not set any flags and using it if no driver_data is present. Fixes:8c14f9c703("ARCNET: add com20020 PCI IDs with metadata") Fixes:bd6f1fd5d3("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> Link: https://patch.msgid.link/20260213045510.32368-1-enelsonmoore@gmail.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
da29e453dc
commit
c7d9be66b7
|
|
@ -115,6 +115,8 @@ static const struct attribute_group com20020_state_group = {
|
|||
.attrs = com20020_state_attrs,
|
||||
};
|
||||
|
||||
static struct com20020_pci_card_info card_info_2p5mbit;
|
||||
|
||||
static void com20020pci_remove(struct pci_dev *pdev);
|
||||
|
||||
static int com20020pci_probe(struct pci_dev *pdev,
|
||||
|
|
@ -140,7 +142,7 @@ static int com20020pci_probe(struct pci_dev *pdev,
|
|||
|
||||
ci = (struct com20020_pci_card_info *)id->driver_data;
|
||||
if (!ci)
|
||||
return -EINVAL;
|
||||
ci = &card_info_2p5mbit;
|
||||
|
||||
priv->ci = ci;
|
||||
mm = &ci->misc_map;
|
||||
|
|
@ -347,6 +349,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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user