Message ID | 1402347812-8059-1-git-send-email-andreas.noever@gmail.com |
---|---|
State | Accepted |
Headers | show |
Hello Bjorn, I think this patch needs to be applied to all -stable branches (all the way back to 3.2). I encounter this same issue on my platform that is running 3.14.y. Thanks, Rajat > -----Original Message----- > From: linux-pci-owner@vger.kernel.org [mailto:linux-pci- > owner@vger.kernel.org] On Behalf Of Andreas Noever > Sent: Monday, June 09, 2014 2:04 PM > To: linux-kernel@vger.kernel.org; Bjorn Helgaas; linux-pci@vger.kernel.org > Cc: Andreas Noever > Subject: [PATCH] PCI: Prevent NULL dereference during pciehp probe > > pciehp assumes that dev->subordinate exists. But we do not assign a bus if > we run out of bus numbers during enumeration. This leads to a NULL > dereference in init_slot (and other places). > > Change pciehp_probe to return -ENODEV when no subordinate bus is > present. > > Signed-off-by: Andreas Noever <andreas.noever@gmail.com> > --- > drivers/pci/hotplug/pciehp_core.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/pci/hotplug/pciehp_core.c > b/drivers/pci/hotplug/pciehp_core.c > index 0e0a2ff..e5abcaf 100644 > --- a/drivers/pci/hotplug/pciehp_core.c > +++ b/drivers/pci/hotplug/pciehp_core.c > @@ -255,6 +255,13 @@ static int pciehp_probe(struct pcie_device *dev) > else if (pciehp_acpi_slot_detection_check(dev->port)) > goto err_out_none; > > + if (!dev->port->subordinate) { > + /* Can happen if we run out of bus numbers during probe */ > + dev_err(&dev->device, > + "Hotplug bridge without secondary bus, ignoring\n"); > + goto err_out_none; > + } > + > ctrl = pcie_init(dev); > if (!ctrl) { > dev_err(&dev->device, "Controller initialization failed\n"); > -- > 2.0.0 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-pci" in the > body of a message to majordomo@vger.kernel.org More majordomo info at > http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Jun 09, 2014 at 11:03:32PM +0200, Andreas Noever wrote: > pciehp assumes that dev->subordinate exists. But we do not assign a bus > if we run out of bus numbers during enumeration. This leads to a NULL > dereference in init_slot (and other places). > > Change pciehp_probe to return -ENODEV when no subordinate bus is > present. > > Signed-off-by: Andreas Noever <andreas.noever@gmail.com> Applied to pci/hotplug for v3.18, thanks! > --- > drivers/pci/hotplug/pciehp_core.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c > index 0e0a2ff..e5abcaf 100644 > --- a/drivers/pci/hotplug/pciehp_core.c > +++ b/drivers/pci/hotplug/pciehp_core.c > @@ -255,6 +255,13 @@ static int pciehp_probe(struct pcie_device *dev) > else if (pciehp_acpi_slot_detection_check(dev->port)) > goto err_out_none; > > + if (!dev->port->subordinate) { > + /* Can happen if we run out of bus numbers during probe */ > + dev_err(&dev->device, > + "Hotplug bridge without secondary bus, ignoring\n"); > + goto err_out_none; > + } > + > ctrl = pcie_init(dev); > if (!ctrl) { > dev_err(&dev->device, "Controller initialization failed\n"); > -- > 2.0.0 > -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Sep 15, 2014 at 10:20:41PM +0000, Rajat Jain wrote: > Hello Bjorn, > > I think this patch needs to be applied to all -stable branches (all the way back to 3.2). > > I encounter this same issue on my platform that is running 3.14.y. > Bjorn, can you send this to -stable, or is it ok if I do it ? Thanks, Guenter > Thanks, > > Rajat > > > -----Original Message----- > > From: linux-pci-owner@vger.kernel.org [mailto:linux-pci- > > owner@vger.kernel.org] On Behalf Of Andreas Noever > > Sent: Monday, June 09, 2014 2:04 PM > > To: linux-kernel@vger.kernel.org; Bjorn Helgaas; linux-pci@vger.kernel.org > > Cc: Andreas Noever > > Subject: [PATCH] PCI: Prevent NULL dereference during pciehp probe > > > > pciehp assumes that dev->subordinate exists. But we do not assign a bus if > > we run out of bus numbers during enumeration. This leads to a NULL > > dereference in init_slot (and other places). > > > > Change pciehp_probe to return -ENODEV when no subordinate bus is > > present. > > > > Signed-off-by: Andreas Noever <andreas.noever@gmail.com> > > --- > > drivers/pci/hotplug/pciehp_core.c | 7 +++++++ > > 1 file changed, 7 insertions(+) > > > > diff --git a/drivers/pci/hotplug/pciehp_core.c > > b/drivers/pci/hotplug/pciehp_core.c > > index 0e0a2ff..e5abcaf 100644 > > --- a/drivers/pci/hotplug/pciehp_core.c > > +++ b/drivers/pci/hotplug/pciehp_core.c > > @@ -255,6 +255,13 @@ static int pciehp_probe(struct pcie_device *dev) > > else if (pciehp_acpi_slot_detection_check(dev->port)) > > goto err_out_none; > > > > + if (!dev->port->subordinate) { > > + /* Can happen if we run out of bus numbers during probe */ > > + dev_err(&dev->device, > > + "Hotplug bridge without secondary bus, ignoring\n"); > > + goto err_out_none; > > + } > > + > > ctrl = pcie_init(dev); > > if (!ctrl) { > > dev_err(&dev->device, "Controller initialization failed\n"); > > -- > > 2.0.0 > > > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-pci" in the > > body of a message to majordomo@vger.kernel.org More majordomo info at > > http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Sep 23, 2014 at 3:55 PM, Guenter Roeck <linux@roeck-us.net> wrote: > On Mon, Sep 15, 2014 at 10:20:41PM +0000, Rajat Jain wrote: >> Hello Bjorn, >> >> I think this patch needs to be applied to all -stable branches (all the way back to 3.2). >> >> I encounter this same issue on my platform that is running 3.14.y. >> > Bjorn, > > can you send this to -stable, or is it ok if I do it ? I forgot to mention it, but I did mark it for stable, so it should happen automatically: https://git.kernel.org/cgit/linux/kernel/git/helgaas/pci.git/commit/?h=pci/hotplug&id=bceee4a97eb58bd0e80e39eff11b506ddd9e7ad3 >> > -----Original Message----- >> > From: linux-pci-owner@vger.kernel.org [mailto:linux-pci- >> > owner@vger.kernel.org] On Behalf Of Andreas Noever >> > Sent: Monday, June 09, 2014 2:04 PM >> > To: linux-kernel@vger.kernel.org; Bjorn Helgaas; linux-pci@vger.kernel.org >> > Cc: Andreas Noever >> > Subject: [PATCH] PCI: Prevent NULL dereference during pciehp probe >> > >> > pciehp assumes that dev->subordinate exists. But we do not assign a bus if >> > we run out of bus numbers during enumeration. This leads to a NULL >> > dereference in init_slot (and other places). >> > >> > Change pciehp_probe to return -ENODEV when no subordinate bus is >> > present. >> > >> > Signed-off-by: Andreas Noever <andreas.noever@gmail.com> >> > --- >> > drivers/pci/hotplug/pciehp_core.c | 7 +++++++ >> > 1 file changed, 7 insertions(+) >> > >> > diff --git a/drivers/pci/hotplug/pciehp_core.c >> > b/drivers/pci/hotplug/pciehp_core.c >> > index 0e0a2ff..e5abcaf 100644 >> > --- a/drivers/pci/hotplug/pciehp_core.c >> > +++ b/drivers/pci/hotplug/pciehp_core.c >> > @@ -255,6 +255,13 @@ static int pciehp_probe(struct pcie_device *dev) >> > else if (pciehp_acpi_slot_detection_check(dev->port)) >> > goto err_out_none; >> > >> > + if (!dev->port->subordinate) { >> > + /* Can happen if we run out of bus numbers during probe */ >> > + dev_err(&dev->device, >> > + "Hotplug bridge without secondary bus, ignoring\n"); >> > + goto err_out_none; >> > + } >> > + >> > ctrl = pcie_init(dev); >> > if (!ctrl) { >> > dev_err(&dev->device, "Controller initialization failed\n"); >> > -- >> > 2.0.0 >> > >> > -- >> > To unsubscribe from this list: send the line "unsubscribe linux-pci" in the >> > body of a message to majordomo@vger.kernel.org More majordomo info at >> > http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Sep 23, 2014 at 04:04:42PM -0600, Bjorn Helgaas wrote: > On Tue, Sep 23, 2014 at 3:55 PM, Guenter Roeck <linux@roeck-us.net> wrote: > > On Mon, Sep 15, 2014 at 10:20:41PM +0000, Rajat Jain wrote: > >> Hello Bjorn, > >> > >> I think this patch needs to be applied to all -stable branches (all the way back to 3.2). > >> > >> I encounter this same issue on my platform that is running 3.14.y. > >> > > Bjorn, > > > > can you send this to -stable, or is it ok if I do it ? > > I forgot to mention it, but I did mark it for stable, so it should > happen automatically: > > https://git.kernel.org/cgit/linux/kernel/git/helgaas/pci.git/commit/?h=pci/hotplug&id=bceee4a97eb58bd0e80e39eff11b506ddd9e7ad3 Ah, sorry, I didn't realize that. Thanks, Guenter -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c index 0e0a2ff..e5abcaf 100644 --- a/drivers/pci/hotplug/pciehp_core.c +++ b/drivers/pci/hotplug/pciehp_core.c @@ -255,6 +255,13 @@ static int pciehp_probe(struct pcie_device *dev) else if (pciehp_acpi_slot_detection_check(dev->port)) goto err_out_none; + if (!dev->port->subordinate) { + /* Can happen if we run out of bus numbers during probe */ + dev_err(&dev->device, + "Hotplug bridge without secondary bus, ignoring\n"); + goto err_out_none; + } + ctrl = pcie_init(dev); if (!ctrl) { dev_err(&dev->device, "Controller initialization failed\n");
pciehp assumes that dev->subordinate exists. But we do not assign a bus if we run out of bus numbers during enumeration. This leads to a NULL dereference in init_slot (and other places). Change pciehp_probe to return -ENODEV when no subordinate bus is present. Signed-off-by: Andreas Noever <andreas.noever@gmail.com> --- drivers/pci/hotplug/pciehp_core.c | 7 +++++++ 1 file changed, 7 insertions(+)