diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-05-08 10:46:16 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-05-08 10:46:16 -0400 |
| commit | 0f5b6ec67404246f3e08435aa37df3c8e9354101 (patch) | |
| tree | 59d374004805dac98a8e2bd6643328c3eb8335fb | |
| parent | 5ebe6afaf0057ac3eaeb98defd5456894b446d22 (diff) | |
| parent | bc1aabad39f42fa293f2a944fd9327bba27b59cd (diff) | |
Merge tag 'extcon-fixes-for-4.1-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/extcon into char-misc-linus
Chanwoo writes:
Update extcon for v4.1-rc2
This patchset fixes the NULL pointer deference issue of extcon-usb-gpio.c
to prevent the interrupt occur before device initialization.
| -rw-r--r-- | drivers/extcon/extcon-usb-gpio.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/extcon/extcon-usb-gpio.c b/drivers/extcon/extcon-usb-gpio.c index de67fce18984..e45d1f13f445 100644 --- a/drivers/extcon/extcon-usb-gpio.c +++ b/drivers/extcon/extcon-usb-gpio.c | |||
| @@ -119,6 +119,18 @@ static int usb_extcon_probe(struct platform_device *pdev) | |||
| 119 | return PTR_ERR(info->id_gpiod); | 119 | return PTR_ERR(info->id_gpiod); |
| 120 | } | 120 | } |
| 121 | 121 | ||
| 122 | info->edev = devm_extcon_dev_allocate(dev, usb_extcon_cable); | ||
| 123 | if (IS_ERR(info->edev)) { | ||
| 124 | dev_err(dev, "failed to allocate extcon device\n"); | ||
| 125 | return -ENOMEM; | ||
| 126 | } | ||
| 127 | |||
| 128 | ret = devm_extcon_dev_register(dev, info->edev); | ||
| 129 | if (ret < 0) { | ||
| 130 | dev_err(dev, "failed to register extcon device\n"); | ||
| 131 | return ret; | ||
| 132 | } | ||
| 133 | |||
| 122 | ret = gpiod_set_debounce(info->id_gpiod, | 134 | ret = gpiod_set_debounce(info->id_gpiod, |
| 123 | USB_GPIO_DEBOUNCE_MS * 1000); | 135 | USB_GPIO_DEBOUNCE_MS * 1000); |
| 124 | if (ret < 0) | 136 | if (ret < 0) |
| @@ -142,18 +154,6 @@ static int usb_extcon_probe(struct platform_device *pdev) | |||
| 142 | return ret; | 154 | return ret; |
| 143 | } | 155 | } |
| 144 | 156 | ||
| 145 | info->edev = devm_extcon_dev_allocate(dev, usb_extcon_cable); | ||
| 146 | if (IS_ERR(info->edev)) { | ||
| 147 | dev_err(dev, "failed to allocate extcon device\n"); | ||
| 148 | return -ENOMEM; | ||
| 149 | } | ||
| 150 | |||
| 151 | ret = devm_extcon_dev_register(dev, info->edev); | ||
| 152 | if (ret < 0) { | ||
| 153 | dev_err(dev, "failed to register extcon device\n"); | ||
| 154 | return ret; | ||
| 155 | } | ||
| 156 | |||
| 157 | platform_set_drvdata(pdev, info); | 157 | platform_set_drvdata(pdev, info); |
| 158 | device_init_wakeup(dev, 1); | 158 | device_init_wakeup(dev, 1); |
| 159 | 159 | ||
