Skip to contentSkip to conversation

PCI: rcar: fix error handling of irq_of_parse_and_map

PATCH In review Dmitry Torokhov 3 participants 3 messages Nov 14, 2014 – Dec 9, 2014

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 PCI: rcar: fix error handling of irq_of_parse_and_map

Return value of irq_of_parse_and_map() is unsigned int, with 0 indicating failure, so testing for negative result never works.

---

Not tested, found by casual code inspection.

 drivers/pci/host/pcie-rcar.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/pci/host/pcie-rcar.c +2 -2
index 9b356c3..6ca976f 100644
@@ -764,7 +764,7 @@ static int rcar_pcie_get_resources(struct platform_device *pdev,
 		goto err_map_reg;
 
 	i = irq_of_parse_and_map(pdev->dev.of_node, 0);
-	if (i < 0) {
+	if (!i) {
 		dev_err(pcie->dev, "cannot get platform resources for msi interrupt\n");
 		err = -ENOENT;
 		goto err_map_reg;
@@ -772,7 +772,7 @@ static int rcar_pcie_get_resources(struct platform_device *pdev,
 	pcie->msi.irq1 = i;
 
 	i = irq_of_parse_and_map(pdev->dev.of_node, 1);
-	if (i < 0) {
+	if (!i) {
 		dev_err(pcie->dev, "cannot get platform resources for msi interrupt\n");
 		err = -ENOENT;
 		goto err_map_reg;
Signature · 5 lines
2.1.0.rc2.206.gedb03e5


-- 
Dmitry
Acked-by on v1 1/1
#1 lore raw

Hi Dmitry,

Quoted 5 lines · Dmitry

Return value of irq_of_parse_and_map() is unsigned int, with 0 indicating failure, so testing for negative result never works.

Thanks
Phil

Quoted 39 lines

---

Not tested, found by casual code inspection.

 drivers/pci/host/pcie-rcar.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/pci/host/pcie-rcar.c +1 -1
index 9b356c3..6ca976f 100644
@@ -764,7 +764,7 @@ static int rcar_pcie_get_resources(struct platform_device
 *pdev,
 		goto err_map_reg;
 
 	i = irq_of_parse_and_map(pdev->dev.of_node, 0);
-	if (i < 0) {
+	if (!i) {
 		dev_err(pcie->dev, "cannot get platform resources for msi
 interrupt\n");
drivers/pci/host/pcie-rcar.c +1 -1
 		err = -ENOENT;
 		goto err_map_reg;
@@ -772,7 +772,7 @@ static int rcar_pcie_get_resources(struct platform_device
 *pdev,
 	pcie->msi.irq1 = i;
 
 	i = irq_of_parse_and_map(pdev->dev.of_node, 1);
-	if (i < 0) {
+	if (!i) {
 		dev_err(pcie->dev, "cannot get platform resources for msi
 interrupt\n");
drivers/pci/host/pcie-rcar.c +0 -1
 		err = -ENOENT;
 		goto err_map_reg;
--

2.1.0.rc2.206.gedb03e5

--
Dmitry

maintainer
#2 lore raw
In reply to Dmitry Torokhov
Quoted 4 lines · Dmitry Torokhov

Return value of irq_of_parse_and_map() is unsigned int, with 0 indicating failure, so testing for negative result never works.

Applied with Phil's ack to next-pci/host-rcar for v3.19. This branch will be rebased to v3.19-rc1.

Quoted 35 lines

---

Not tested, found by casual code inspection.

 drivers/pci/host/pcie-rcar.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/pci/host/pcie-rcar.c +2 -2
index 9b356c3..6ca976f 100644
@@ -764,7 +764,7 @@ static int rcar_pcie_get_resources(struct platform_device *pdev,
 		goto err_map_reg;
 
 	i = irq_of_parse_and_map(pdev->dev.of_node, 0);
-	if (i < 0) {
+	if (!i) {
 		dev_err(pcie->dev, "cannot get platform resources for msi interrupt\n");
 		err = -ENOENT;
 		goto err_map_reg;
@@ -772,7 +772,7 @@ static int rcar_pcie_get_resources(struct platform_device *pdev,
 	pcie->msi.irq1 = i;
 
 	i = irq_of_parse_and_map(pdev->dev.of_node, 1);
-	if (i < 0) {
+	if (!i) {
 		dev_err(pcie->dev, "cannot get platform resources for msi interrupt\n");
 		err = -ENOENT;
 		goto err_map_reg;
Signature · 5 lines
2.1.0.rc2.206.gedb03e5


-- 
Dmitry