forked from luck/tmp_suning_uos_patched
extcon: usb-gpio: register extcon device before IRQ registration
IRQ handler touches info->edev, so if interrupt occurs before extcon device initialization it can cause NULL pointer dereference. Doing extcon initialization before IRQ handler registration fixes this problem. Signed-off-by: Robert Baldyga <r.baldyga@samsung.com> Acked-by: Roger Quadros <rogerq@ti.com> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
This commit is contained in:
parent
b787f68c36
commit
bc1aabad39
@ -119,6 +119,18 @@ static int usb_extcon_probe(struct platform_device *pdev)
|
|||||||
return PTR_ERR(info->id_gpiod);
|
return PTR_ERR(info->id_gpiod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
info->edev = devm_extcon_dev_allocate(dev, usb_extcon_cable);
|
||||||
|
if (IS_ERR(info->edev)) {
|
||||||
|
dev_err(dev, "failed to allocate extcon device\n");
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = devm_extcon_dev_register(dev, info->edev);
|
||||||
|
if (ret < 0) {
|
||||||
|
dev_err(dev, "failed to register extcon device\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
ret = gpiod_set_debounce(info->id_gpiod,
|
ret = gpiod_set_debounce(info->id_gpiod,
|
||||||
USB_GPIO_DEBOUNCE_MS * 1000);
|
USB_GPIO_DEBOUNCE_MS * 1000);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
@ -142,18 +154,6 @@ static int usb_extcon_probe(struct platform_device *pdev)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
info->edev = devm_extcon_dev_allocate(dev, usb_extcon_cable);
|
|
||||||
if (IS_ERR(info->edev)) {
|
|
||||||
dev_err(dev, "failed to allocate extcon device\n");
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = devm_extcon_dev_register(dev, info->edev);
|
|
||||||
if (ret < 0) {
|
|
||||||
dev_err(dev, "failed to register extcon device\n");
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
platform_set_drvdata(pdev, info);
|
platform_set_drvdata(pdev, info);
|
||||||
device_init_wakeup(dev, 1);
|
device_init_wakeup(dev, 1);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user