From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752507AbbDAXlL (ORCPT ); Wed, 1 Apr 2015 19:41:11 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:45809 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751576AbbDAXlH (ORCPT ); Wed, 1 Apr 2015 19:41:07 -0400 X-AuditID: cbfee690-f79ab6d0000046f7-cc-551c8210d16e Message-id: <551C8210.3040406@samsung.com> Date: Thu, 02 Apr 2015 08:41:04 +0900 From: Chanwoo Choi User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130106 Thunderbird/17.0.2 MIME-version: 1.0 To: Roger Quadros Cc: Robert Baldyga , myungjoo.ham@samsung.com, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, m.szyprowski@samsung.com Subject: Re: [PATCH v2 1/4] extcon: usb-gpio: register extcon device before IRQ registration References: <1427873005-24024-1-git-send-email-r.baldyga@samsung.com> <1427873005-24024-2-git-send-email-r.baldyga@samsung.com> <551BDD60.1010603@ti.com> In-reply-to: <551BDD60.1010603@ti.com> Content-type: text/plain; charset=windows-1252 Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprOIsWRmVeSWpSXmKPExsWyRsSkUFegSSbU4Osaa4v5R86xWlzeNYfN YtGyVmaLtUfuslvcblzBZvHg8E52i55HWg7sHn1bVjF6HL+xncnj8ya5AOYoLpuU1JzMstQi fbsErozZG1YzFcwQrNi8YQV7A+Nz3i5GTg4JAROJraebWSBsMYkL99azgdhCAksZJX6cjoSp aVg9g6mLkQsovohRouvrWVYI5wGjxMwZq4C6OTh4BbQkth7gA2lgEVCVODHnGNggNqDw/hc3 wGxRgTCJldOvgC3jFRCU+DH5HpgtIqAocW8lyGIuDmaB7YwSncuvs4IkhAXiJK4v/cYCsWwu o8Tc/9/ZQRKcAmoSi/7dZgJZzCygJ3H/ohZImFlAXmLzmrfMIPUSAsfYJTadOMcOcZGAxLfJ h8AOlRCQldh0gBniM0mJgytusExgFJuF5KZZCFNnIZm6gJF5FaNoakFyQXFSepGJXnFibnFp Xrpecn7uJkZgfJ3+92zCDsZ7B6wPMQpwMCrx8GpGSIcKsSaWFVfmHmI0BTpiIrOUaHI+MIrz SuINjc2MLExNTI2NzC3NlMR5X0v9DBYSSE8sSc1OTS1ILYovKs1JLT7EyMTBKdXA2PyBZ2sP xyS3YNu5nZfPXjmz96vCpnXfHSVm/6+X5lj9T4s/3yT5Zmd09c2qxYtMv3wSu/uq1W2XkqqW Qk1akTvnelP5VwtFV25aOL92y6+rrjPvKVeLd390npbPkBZ2IUjw69PM+YedLvfV6or7/j1k k1ioJ3U6taIoUU6J6V2x8NLHlyW3KrEUZyQaajEXFScCABn/FL2qAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrEIsWRmVeSWpSXmKPExsVy+t9jAV2BJplQgw3fDS3mHznHanF51xw2 i0XLWpkt1h65y25xu3EFm8WDwzvZLXoeaTmwe/RtWcXocfzGdiaPz5vkApijGhhtMlITU1KL FFLzkvNTMvPSbZW8g+Od403NDAx1DS0tzJUU8hJzU22VXHwCdN0yc4CWKymUJeaUAoUCEouL lfTtME0IDXHTtYBpjND1DQmC6zEyQAMJaxgzZm9YzVQwQ7Bi84YV7A2Mz3m7GDk5JARMJBpW z2CCsMUkLtxbz9bFyMUhJLCIUaLr61lWCOcBo8TMGatYuhg5OHgFtCS2HuADaWARUJU4MecY G4jNBhTe/+IGmC0qECaxcvoVFhCbV0BQ4sfke2C2iICixL2VEAuYBbYzSnQuv84KkhAWiJO4 vvQbC8SyuYwSc/9/ZwdJcAqoSSz6d5sJZDGzgJ7E/YtaIGFmAXmJzWveMk9gFJiFZMcshKpZ SKoWMDKvYhRNLUguKE5KzzXSK07MLS7NS9dLzs/dxAiO32fSOxhXNVgcYhTgYFTi4dWMkA4V Yk0sK67MPcQowcGsJMI7pVomVIg3JbGyKrUoP76oNCe1+BCjKTAEJjJLiSbnA1NLXkm8obGJ mZGlkbmhhZGxuZI4r5J9W4iQQHpiSWp2ampBahFMHxMHp1QDo/C9NONzO6ac7ss+PIHnYMur zZNU3A5MLMgrOTbxVF33jLDFzw2aJ7p0NXjffjnjqv3TQ393ersv9knw5juswfpm69LZMQ8E b/VqcN11vHDmp8snmwXWpTkqx86uX3xJT32N7jtFPd7tgaxibB37G+J3RQSt7Ik4vPv0ke3d KncUdC1Njs4Vm6bEUpyRaKjFXFScCAAsCfeI9QIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Roger, On 04/01/2015 08:58 PM, Roger Quadros wrote: > Hi Chanwoo, > > On 01/04/15 10:23, Robert Baldyga wrote: >> 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 >> Acked-by: Roger Quadros > > Can you please pick this patch for 4.1 (or 4.1-rc) as it fixes a bug. Thanks. I already sent pull request for v4.1 and merged it. I'll send this patch for 4.1-rc. Thanks, Chanwoo Choi > > cheers, > -roger > >> --- >> drivers/extcon/extcon-usb-gpio.c | 24 ++++++++++++------------ >> 1 file changed, 12 insertions(+), 12 deletions(-) >> >> diff --git a/drivers/extcon/extcon-usb-gpio.c b/drivers/extcon/extcon-usb-gpio.c >> index 3f0bad3..f6aa99d 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) >> 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, >> USB_GPIO_DEBOUNCE_MS * 1000); >> if (ret < 0) >> @@ -142,18 +154,6 @@ static int usb_extcon_probe(struct platform_device *pdev) >> 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); >> device_init_wakeup(dev, 1); >> >> > >