From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752838AbbDCAJ4 (ORCPT ); Thu, 2 Apr 2015 20:09:56 -0400 Received: from mailout3.samsung.com ([203.254.224.33]:23944 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751271AbbDCAJx (ORCPT ); Thu, 2 Apr 2015 20:09:53 -0400 X-AuditID: cbfee68f-f791c6d000004834-08-551dda4f14cb Message-id: <551DDA4F.1030705@samsung.com> Date: Fri, 03 Apr 2015 09:09:51 +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: Robert Baldyga Cc: myungjoo.ham@samsung.com, rogerq@ti.com, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, m.szyprowski@samsung.com Subject: Re: [PATCH v3 1/4] extcon: usb-gpio: register extcon device before IRQ registration References: <1427980385-21285-1-git-send-email-r.baldyga@samsung.com> <1427980385-21285-2-git-send-email-r.baldyga@samsung.com> In-reply-to: <1427980385-21285-2-git-send-email-r.baldyga@samsung.com> Content-type: text/plain; charset=ISO-8859-1 Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprBIsWRmVeSWpSXmKPExsWyRsSkUNf/lmyowZEGZYv5R86xWlzeNYfN YtGyVmaLtUfuslvcblzBZvHg8E52i55HWg7sHn1bVjF6HL+xncnj8ya5AOYoLpuU1JzMstQi fbsErozNT8wLvvNVNHesZW1gbOfpYuTkkBAwkTi1cDMrhC0mceHeerYuRi4OIYGljBIX/u5m 7GLkACv6Ol8DIr6IUWLzvGssEM4DIGfWYrBuXgEtiX9npzGC2CwCqhLzu9aBxdmA4vtf3GAD sUUFwiRWTr/CAlEvKPFj8j0wWwSo5s7H+ewgQ5kF5jFKLJ77nh0kISwQJ3H1yyuokxoZJfpO LQWbxCngJrG/ZTeYzSygI7G/dRqULS+xec1bZoh/drFLHHlWAXGRgMS3yYdYIN6Rldh0AKpE UuLgihssExjFZiG5aRaSqbOQTF3AyLyKUTS1ILmgOCm9yFivODG3uDQvXS85P3cTIzDCTv97 1r+D8e4B60OMAhyMSjy8GXtkQoVYE8uKK3MPMZoCXTGRWUo0OR8Yx3kl8YbGZkYWpiamxkbm lmZK4rwLpX4GCwmkJ5akZqemFqQWxReV5qQWH2Jk4uCUamB0WXHuiXfC0wVzJd2/XOAoV7V/ /T5Xhsvp7+3zNatZDcSdWG7aNs0q/vp9okuLJosHx7uIdxOYyi/p3DryJv9qe6+8wCx9k/u/ vG9+DvudWPRHtfjhFNGEmQZ7H27Jq9D42i2it7D+y8HTbYc1NRwMNt5KdrhQ+vTt9oPaSi9i Gj9N25ejE5avxFKckWioxVxUnAgAlABc0KsCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrMIsWRmVeSWpSXmKPExsVy+t9jAV3/W7KhBtu+SFnMP3KO1eLyrjls FouWtTJbrD1yl93iduMKNosHh3eyW/Q80nJg9+jbsorR4/iN7UwenzfJBTBHNTDaZKQmpqQW KaTmJeenZOal2yp5B8c7x5uaGRjqGlpamCsp5CXmptoqufgE6Lpl5gAtV1IoS8wpBQoFJBYX K+nbYZoQGuKmawHTGKHrGxIE12NkgAYS1jBmbH5iXvCdr6K5Yy1rA2M7TxcjB4eEgInE1/ka XYycQKaYxIV769m6GLk4hAQWMUpsnneNBcJ5AOTMWswKUsUroCXx7+w0RhCbRUBVYn7XOrA4 G1B8/4sbbCC2qECYxMrpV1gg6gUlfky+B2aLANXc+TifHWQos8A8RonFc9+zgySEBeIkrn55 BbW6kVGi79RSsEmcAm4S+1t2g9nMAjoS+1unQdnyEpvXvGWewCgwC8mSWUjKZiEpW8DIvIpR NLUguaA4KT3XUK84Mbe4NC9dLzk/dxMjOIKfSe1gXNlgcYhRgINRiYc3Y49MqBBrYllxZe4h RgkOZiUR3hW7ZUOFeFMSK6tSi/Lji0pzUosPMZoCw2Ais5Rocj4wueSVxBsam5gZWRqZG1oY GZsrifMq2beFCAmkJ5akZqemFqQWwfQxcXBKNTDO3mmyUJAj9K7g2df2PbHPkpxsO2UtgxhU /lVxitZLWUYWnf65yWLfgfdCDpwBH609/05lfTw3YfKfCazc7MsruZ7cFP3cO1uV44D8RsN9 U3Z5XZlzLcvqet2qO63N/6+5VJ4/1B9hrmo04cOh1qUM3wU5N1w8FFX87NZae96V+3IN5/y7 ybdViaU4I9FQi7moOBEAY8t7tvYCAAA= 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 Robert, On 04/02/2015 10:13 PM, 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 > --- > 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); > > Applied this patch for v4.1-rc. Thanks, Chanwoo Choi