diff mbox

[v1] of/pci : fix of_pci_dma_configure parent ptr NULL

Message ID 1426092003-16925-1-git-send-email-m-karicheri2@ti.com (mailing list archive)
State New, archived
Delegated to: Bjorn Helgaas
Headers show

Commit Message

Murali Karicheri March 11, 2015, 4:40 p.m. UTC
On some platforms such as that based on x86, ia64 etc, root bus is
created with parent node passed in as NULL to pci_create_root_bus().
On these platforms, the patch series "PCI: get DMA configuration from
parent device" when applied causes kernel crash. So add a check for this
in of_pci_dma_configure()

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
Acked-by: Rob Herring<robh@kernel.org>
---
 drivers/of/of_pci.c |    4 ++++
 1 file changed, 4 insertions(+)

Comments

Murali Karicheri March 12, 2015, 3:03 p.m. UTC | #1
On 03/11/2015 12:40 PM, Murali Karicheri wrote:
> On some platforms such as that based on x86, ia64 etc, root bus is
> created with parent node passed in as NULL to pci_create_root_bus().
> On these platforms, the patch series "PCI: get DMA configuration from
> parent device" when applied causes kernel crash. So add a check for this
> in of_pci_dma_configure()
>
> Signed-off-by: Murali Karicheri<m-karicheri2@ti.com>
> Acked-by: Rob Herring<robh@kernel.org>
> ---
>   drivers/of/of_pci.c |    4 ++++
>   1 file changed, 4 insertions(+)
>
> diff --git a/drivers/of/of_pci.c b/drivers/of/of_pci.c
> index 86d3c38..a8e485c 100644
> --- a/drivers/of/of_pci.c
> +++ b/drivers/of/of_pci.c
> @@ -129,6 +129,10 @@ void of_pci_dma_configure(struct pci_dev *pci_dev)
>   	struct device *dev =&pci_dev->dev;
>   	struct device *bridge = pci_get_host_bridge_device(pci_dev);
>
> +	/* Some platforms can have bridge->parent set to NULL */
> +	if (!bridge->parent)
> +		return;
> +
>   	of_dma_configure(dev, bridge->parent->of_node);
>   	pci_put_host_bridge_device(bridge);
>   }

BJorn,

Just wondering if you can apply this to pci/iommu to help provide enough 
baking time for this series to make into next kernel merge window.

As always, thanks for all your help.

Regards,
Bjorn Helgaas March 19, 2015, 3:01 p.m. UTC | #2
On Wed, Mar 11, 2015 at 12:40:03PM -0400, Murali Karicheri wrote:
> On some platforms such as that based on x86, ia64 etc, root bus is
> created with parent node passed in as NULL to pci_create_root_bus().
> On these platforms, the patch series "PCI: get DMA configuration from
> parent device" when applied causes kernel crash. So add a check for this
> in of_pci_dma_configure()
> 
> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
> Acked-by: Rob Herring<robh@kernel.org>

Since I hadn't merged the original patch yet, I just folded this fix into
it.  The series is on pci/iommu, and I merged it for "next".  Thanks for
your patience. 

Bjorn

> ---
>  drivers/of/of_pci.c |    4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/of/of_pci.c b/drivers/of/of_pci.c
> index 86d3c38..a8e485c 100644
> --- a/drivers/of/of_pci.c
> +++ b/drivers/of/of_pci.c
> @@ -129,6 +129,10 @@ void of_pci_dma_configure(struct pci_dev *pci_dev)
>  	struct device *dev = &pci_dev->dev;
>  	struct device *bridge = pci_get_host_bridge_device(pci_dev);
>  
> +	/* Some platforms can have bridge->parent set to NULL */
> +	if (!bridge->parent)
> +		return;
> +
>  	of_dma_configure(dev, bridge->parent->of_node);
>  	pci_put_host_bridge_device(bridge);
>  }
> -- 
> 1.7.9.5
> 
--
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
Murali Karicheri March 20, 2015, 8:16 p.m. UTC | #3
On 03/19/2015 11:01 AM, Bjorn Helgaas wrote:
> On Wed, Mar 11, 2015 at 12:40:03PM -0400, Murali Karicheri wrote:
>> On some platforms such as that based on x86, ia64 etc, root bus is
>> created with parent node passed in as NULL to pci_create_root_bus().
>> On these platforms, the patch series "PCI: get DMA configuration from
>> parent device" when applied causes kernel crash. So add a check for this
>> in of_pci_dma_configure()
>>
>> Signed-off-by: Murali Karicheri<m-karicheri2@ti.com>
>> Acked-by: Rob Herring<robh@kernel.org>
>
> Since I hadn't merged the original patch yet, I just folded this fix into
> it.  The series is on pci/iommu, and I merged it for "next".  Thanks for
> your patience.
>
> Bjorn

Thanks!

Murali
>
>> ---
>>   drivers/of/of_pci.c |    4 ++++
>>   1 file changed, 4 insertions(+)
>>
>> diff --git a/drivers/of/of_pci.c b/drivers/of/of_pci.c
>> index 86d3c38..a8e485c 100644
>> --- a/drivers/of/of_pci.c
>> +++ b/drivers/of/of_pci.c
>> @@ -129,6 +129,10 @@ void of_pci_dma_configure(struct pci_dev *pci_dev)
>>   	struct device *dev =&pci_dev->dev;
>>   	struct device *bridge = pci_get_host_bridge_device(pci_dev);
>>
>> +	/* Some platforms can have bridge->parent set to NULL */
>> +	if (!bridge->parent)
>> +		return;
>> +
>>   	of_dma_configure(dev, bridge->parent->of_node);
>>   	pci_put_host_bridge_device(bridge);
>>   }
>> --
>> 1.7.9.5
>>
diff mbox

Patch

diff --git a/drivers/of/of_pci.c b/drivers/of/of_pci.c
index 86d3c38..a8e485c 100644
--- a/drivers/of/of_pci.c
+++ b/drivers/of/of_pci.c
@@ -129,6 +129,10 @@  void of_pci_dma_configure(struct pci_dev *pci_dev)
 	struct device *dev = &pci_dev->dev;
 	struct device *bridge = pci_get_host_bridge_device(pci_dev);
 
+	/* Some platforms can have bridge->parent set to NULL */
+	if (!bridge->parent)
+		return;
+
 	of_dma_configure(dev, bridge->parent->of_node);
 	pci_put_host_bridge_device(bridge);
 }