summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPawel Laszczak <pawell@cadence.com>2023-03-08 15:44:27 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-03-30 13:51:36 +0300
commit0bfa44094fa5a4e2c7a2e517c4030adfb56eec79 (patch)
tree5b2e5e900a416bd94bd23d97e01ce530d341e1ab
parente37d2c489d71e94ed4a39529bc9520a7fd983d42 (diff)
downloadlinux-0bfa44094fa5a4e2c7a2e517c4030adfb56eec79.tar.xz
usb: cdns3: Fix issue with using incorrect PCI device function
commit 1272fd652a226ccb34e9f47371b6121948048438 upstream. PCI based platform can have more than two PCI functions. USBSS PCI Glue driver during initialization should consider only DRD/HOST/DEVICE PCI functions and all other should be ignored. This patch adds additional condition which causes that only DRD and HOST/DEVICE function will be accepted. cc: <stable@vger.kernel.org> Fixes: 7733f6c32e36 ("usb: cdns3: Add Cadence USB3 DRD Driver") Signed-off-by: Pawel Laszczak <pawell@cadence.com> Link: https://lore.kernel.org/r/20230308124427.311245-1-pawell@cadence.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/usb/cdns3/cdns3-pci-wrap.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/usb/cdns3/cdns3-pci-wrap.c b/drivers/usb/cdns3/cdns3-pci-wrap.c
index deeea618ba33..1f6320d98a76 100644
--- a/drivers/usb/cdns3/cdns3-pci-wrap.c
+++ b/drivers/usb/cdns3/cdns3-pci-wrap.c
@@ -60,6 +60,11 @@ static struct pci_dev *cdns3_get_second_fun(struct pci_dev *pdev)
return NULL;
}
+ if (func->devfn != PCI_DEV_FN_HOST_DEVICE &&
+ func->devfn != PCI_DEV_FN_OTG) {
+ return NULL;
+ }
+
return func;
}