Skip to contentSkip to conversation

brcmfmac: clear sdiodev->pdata if irq_of_parse_and_map fails

PATCH In review Henrik Eriksson 1 participant 2 messages May 20, 2015 Networking drivers (wireless)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 brcmfmac: clear sdiodev->pdata if irq_of_parse_and_map fails

Clear the pdata pointer in sdiodev after freeing the memory. In my case not doing so interferes with device initialization as request_irq of sdiodev->pdata->oob_irq_nr fails, but even if not, leaving a wild pointer is incorrect.

---
 drivers/net/wireless/brcm80211/brcmfmac/of.c | 1 +
 1 file changed, 1 insertion(+)
drivers/net/wireless/brcm80211/brcmfmac/of.c +1 -0
index c824570..71ead7b 100644
@@ -43,6 +43,7 @@ void brcmf_of_probe(struct brcmf_sdio_dev *sdiodev)
 	if (!irq) {
 		brcmf_err("interrupt could not be mapped\n");
 		devm_kfree(dev, sdiodev->pdata);
+		sdiodev->pdata = NULL;
 		return;
 	}
 	irqf = irqd_get_trigger_type(irq_get_irq_data(irq));
Signature · 1 line
2.0.4
#1 lore raw

Please ignore this. [PATCH 1/6] brcmfmac: allow device tree node without 'interrupts' property posted earlier today deals with the same thing, in a better way.

Quoted 22 lines · Henrik Eriksson

Clear the pdata pointer in sdiodev after freeing the memory. In my case not doing so interferes with device initialization as request_irq of sdiodev->pdata->oob_irq_nr fails, but even if not, leaving a wild pointer is incorrect.

---
 drivers/net/wireless/brcm80211/brcmfmac/of.c | 1 +
 1 file changed, 1 insertion(+)
drivers/net/wireless/brcm80211/brcmfmac/of.c +1 -0
index c824570..71ead7b 100644
@@ -43,6 +43,7 @@ void brcmf_of_probe(struct brcmf_sdio_dev *sdiodev)
 	if (!irq) {
 		brcmf_err("interrupt could not be mapped\n");
 		devm_kfree(dev, sdiodev->pdata);
+		sdiodev->pdata = NULL;
 		return;
 	}
 	irqf = irqd_get_trigger_type(irq_get_irq_data(irq));
Signature · 1 line
henrik eriksson