From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v4] usb: dwc2: dwc2_vbus_supply_init: fix error check From: Heiko Stuebner Message-Id: <41174786.HiOuqceMIB@diego> Date: Tue, 10 Apr 2018 17:37:46 +0200 To: Minas Harutyunyan Cc: Tomeu Vizoso , "linux-kernel@vger.kernel.org" , Felipe Balbi , Amelie Delaunay , Greg Kroah-Hartman , "linux-usb@vger.kernel.org" List-ID: QW0gRGllbnN0YWcsIDEwLiBBcHJpbCAyMDE4LCAxNTo1MjoyNSBDRVNUIHNjaHJpZWIgTWluYXMg SGFydXR5dW55YW46Cj4gSGkgSGVpa28sCj4gCj4gT24gNC8xMC8yMDE4IDQ6MjggUE0sIEhlaWtv IFN0dWVibmVyIHdyb3RlOgo+ID4gQW0gTW9udGFnLCAyNi4gTcOkcnogMjAxOCwgMTE6MDA6MDEg Q0VTVCBzY2hyaWViIFRvbWV1IFZpem9zbzoKPiA+PiBkZXZtX3JlZ3VsYXRvcl9nZXRfb3B0aW9u YWwgcmV0dXJucyAtRU5PREVWIGlmIHRoZSByZWd1bGF0b3IgaXNuJ3QKPiA+PiB0aGVyZSwgc28g aWYgdGhhdCdzIHRoZSBjYXNlIHdlIGhhdmUgdG8gbWFrZSBzdXJlIG5vdCB0byBsZWF2ZSAtRU5P REVWCj4gPj4gaW4gdGhlIHJlZ3VsYXRvciBwb2ludGVyLgo+ID4+IAo+ID4+IEFsc28sIG1ha2Ug c3VyZSB3ZSByZXR1cm4gMCBpbiB0aGF0IGNhc2UsIGJ1dCBjb3JyZWN0bHkgcHJvcGFnYXRlIGFu eQo+ID4+IG90aGVyIGVycm9ycy4gQWxzbyBwcm9wYWdhdGUgdGhlIGVycm9yIGZyb20gX2R3YzJf aGNkX3N0YXJ0Lgo+ID4+IAo+ID4+IEZpeGVzOiA1MzFlZjVlYmVhOTYgKCJ1c2I6IGR3YzI6IGFk ZCBzdXBwb3J0IGZvciBob3N0IG1vZGUgZXh0ZXJuYWwgdmJ1cwo+ID4+IHN1cHBseSIpIENjOiBB bWVsaWUgRGVsYXVuYXkgPGFtZWxpZS5kZWxhdW5heUBzdC5jb20+Cj4gPj4gU2lnbmVkLW9mZi1i eTogVG9tZXUgVml6b3NvIDx0b21ldS52aXpvc29AY29sbGFib3JhLmNvbT4KPiA+IAo+ID4gVGhl IHBhdGNoIHRoYXQgZ2V0cyBmaXhlZCBoZXJlIGFsc28gYnJlYWtzIGRpc3BsYXktb3V0cHV0IG9u IGR3YzItYmFzZWQKPiA+IFJvY2tjaGlwIGRldmljZXMgKGxpa2VseSBldmVuIG1vcmUpLCBwcm9i YWJseSBkdWUgdG8gbWFraW5nIHRoZSByZWd1bGF0b3IKPiA+IGZyYW1ld29yayBoaWNrdXAuCj4g Cj4gQ291bGQgeW91IHBsZWFzZSBlbGFib3JhdGUgd2hhdCBtZWFuICJicmVha3MgZGlzcGxheS1v dXRwdXQiLgo+IE9uIHdoaWNoIEtlcm5lbCB2ZXJzaW9uIHlvdSBhcHBseSB0aGlzIHBhdGNoPwoK SSB0aGluayBJIG1heSBoYXZlIHdyaXR0ZW4gdGhhdCBwb29ybHkuIF9XaXRob3V0XyB0aGlzIHBh dGNoIEkgZ2V0CmRpc3BsYXkgYnJlYWthZ2Ugb24gdGhlIG1vc3QgcmVjZW50IHRvcnZhbGRzL21h c3RlciAobWVyZ2Utd2luZG93KQp3aGVyZSAidXNiOiBkd2MyOiBhZGQgc3VwcG9ydCBmb3IgaG9z dCBtb2RlIGV4dGVybmFsIHZidXMgc3VwcGx5IiBpcwphcHBsaWVkIGFuZCB0aGlzIHBhdGNoIGZp eGVzIHRoZSBpc3N1ZS4KCiJicmVha3MgZGlzcGxheSBvdXRwdXQiIG1lYW5zIGJvdGggaGRtaSAr IGVkcCBvdXRwdXQgYXJlIG1pc3NpbmcKYWxzbyBpbmNsdWRpbmcgdGhlIGJhY2tsaWdodCBzdGF5 aW5nIG9mZi4KClRoZSBwYXRjaCB3ZSdyZSBmaXhpbmcgaGVyZSwgY2F1c2VzIGEgbnVsbC1wb2lu dGVyIGRlcmVmZXJlbmNlIGluIHRoZQpyZWd1bGF0b3IgZnJhbWV3b3JrLCB3aGljaCBzZWVtcyB0 byBhbHNvIGNhdXNlIGlzc3VlcyB3aGVuIG90aGVyCnJlZ3VsYXRvcnMgYXJlIGVuYWJsZWQsIHdo aWNoIEkgdGhpbmsgaXMgd2hhdCBJJ20gc2VlaW5nIGhlcmUuCgoKSGVpa28KCj4gCj4gVGhhbmtz LAo+IE1pbmFzCj4gCj4gPiBXaXRoIHRoaXMgcGF0Y2ggYXBwbGllZCwgYXBhcnQgZnJvbSBub3Qg c2VlaW5nIHRoZSBOVUxMLXB0ciwgSSBhbHNvIGdldAo+ID4gZGlzcGxheSBvdXRwdXQgb24gbXkg cmszMjg4LXZleWNyb24gQ2hyb21lYm9vayBhZ2Fpbiwgc28KPiA+IAo+ID4gVGVzdGVkLWJ5OiBI ZWlrbyBTdHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPgo+ID4gCj4gPj4gdjI6IE9ubHkgb3Zlcndy aXRlIHRoZSBlcnJvciBpbiB0aGUgcG9pbnRlciBhZnRlciBjaGVja2luZyBpdCAoSGVpa28KPiA+ PiAKPiA+PiAgICAgIFN0w7xibmVyIDxoZWlrb0BzbnRlY2guZGU+KQo+ID4+IAo+ID4+IHYzOiBS ZW1vdmUgaHVua3MgdGhhdCBzaG91bGRuJ3QgYmUgaW4gdGhpcyBwYXRjaAo+ID4+IHY0OiBEb24n dCBvdmVyd3JpdGUgdGhlIGVycm9yIGNvZGUgYmVmb3JlIHJldHVybmluZyBpdCAoa2J1aWxkIHRl c3QKPiA+PiAKPiA+PiAgICAgIHJvYm90IDxsa3BAaW50ZWwuY29tPikKPiA+PiAKPiA+PiAtLS0K PiA+PiAKPiA+PiAgIGRyaXZlcnMvdXNiL2R3YzIvaGNkLmMgfCAxMyArKysrKysrKy0tLS0tCj4g Pj4gICAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+ID4+ IAo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MyL2hjZC5jIGIvZHJpdmVycy91c2Iv ZHdjMi9oY2QuYwo+ID4+IGluZGV4IDE5MGY5NTk2NDAwMC4uYzUxYjczYjNlMDQ4IDEwMDY0NAo+ ID4+IC0tLSBhL2RyaXZlcnMvdXNiL2R3YzIvaGNkLmMKPiA+PiArKysgYi9kcml2ZXJzL3VzYi9k d2MyL2hjZC5jCj4gPj4gQEAgLTM1OCw5ICszNTgsMTQgQEAgc3RhdGljIHZvaWQgZHdjMl9ndXNi Y2ZnX2luaXQoc3RydWN0IGR3YzJfaHNvdGcKPiA+PiAqaHNvdGcpPj4gCj4gPj4gICBzdGF0aWMg aW50IGR3YzJfdmJ1c19zdXBwbHlfaW5pdChzdHJ1Y3QgZHdjMl9oc290ZyAqaHNvdGcpCj4gPj4g ICB7Cj4gPj4gCj4gPj4gKwlpbnQgcmV0Owo+ID4+ICsKPiA+PiAKPiA+PiAgIAloc290Zy0+dmJ1 c19zdXBwbHkgPSBkZXZtX3JlZ3VsYXRvcl9nZXRfb3B0aW9uYWwoaHNvdGctPmRldiwgInZidXMi KTsKPiA+PiAKPiA+PiAtCWlmIChJU19FUlIoaHNvdGctPnZidXNfc3VwcGx5KSkKPiA+PiAtCQly ZXR1cm4gMDsKPiA+PiArCWlmIChJU19FUlIoaHNvdGctPnZidXNfc3VwcGx5KSkgewo+ID4+ICsJ CXJldCA9IFBUUl9FUlIoaHNvdGctPnZidXNfc3VwcGx5KTsKPiA+PiArCQloc290Zy0+dmJ1c19z dXBwbHkgPSBOVUxMOwo+ID4+ICsJCXJldHVybiByZXQgPT0gLUVOT0RFViA/IDAgOiByZXQ7Cj4g Pj4gKwl9Cj4gPj4gCj4gPj4gICAJcmV0dXJuIHJlZ3VsYXRvcl9lbmFibGUoaHNvdGctPnZidXNf c3VwcGx5KTsKPiA+PiAgIAo+ID4+ICAgfQo+ID4+IAo+ID4+IEBAIC00MzQyLDkgKzQzNDcsNyBA QCBzdGF0aWMgaW50IF9kd2MyX2hjZF9zdGFydChzdHJ1Y3QgdXNiX2hjZCAqaGNkKQo+ID4+IAo+ ID4+ICAgCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhzb3RnLT5sb2NrLCBmbGFncyk7Cj4gPj4g Cj4gPj4gLQlkd2MyX3ZidXNfc3VwcGx5X2luaXQoaHNvdGcpOwo+ID4+IC0KPiA+PiAtCXJldHVy biAwOwo+ID4+ICsJcmV0dXJuIGR3YzJfdmJ1c19zdXBwbHlfaW5pdChoc290Zyk7Cj4gPj4gCj4g Pj4gICB9Cj4gPj4gICAKPiA+PiAgIC8qCi0tLQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlz dDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtdXNiIiBpbgp0aGUgYm9keSBvZiBh IG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBpbmZv IGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-4122452-1523374693-2-7799493485194577125 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.25, MAILING_LIST_MULTI -1, ME_NOAUTH 0.01, RCVD_IN_DNSWL_HI -5, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='US', FromHeader='de', MailFrom='org' X-Spam-charsets: from='ISO-8859-1', plain='iso-8859-1' X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: linux-usb-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=fm2; t= 1523374692; b=R32IU64UuQTfLcd8tCzf3p3X67LRWT0Re5FdAnAWjGa7dWpe6S XoprHAEJN19xLKcy6zD5xEwidx8pCnB+XeokSUoF6mKXFCS364d0H7e7dJqShpUG MYpsUL8kXhTYpdlmKhiB3gKHXhfnOVfqddupnLH6klItxUGwyJQ7HDJ4eE6QdYhc 1UdPb2s+0QE+VOG3XwMUthAJdKJly8FwGtn7kSi9L3r+nLHXQbtVlJaUHtqSc7bG 1a8iB506cemnobiE3gxdeAajjcEStQxWD5u3AtAISoEgojh5Wm6JGUPFxKjfhhfD tLxKRJwFkqMK42lmunWyLTDnqCPCWd/SzeeA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding :content-type:sender:list-id; s=fm2; t=1523374692; bh=RjZ933d5IO 1pgmiKbF8XtbudDM8cGIqAAtV64NmnXrs=; b=JQGRdrNdYRoQoOJY9iMG+uHV2C 9nDtY9IJdX9UlCrqfzOvnEtwXNswytXlxMwhMBV7azgGIBcL+1gU2Dry5P2m4GMo XVgkfGfAQsPnrHFtQYidWB8ZxnknFOFSHqMLwV1PzJzUzMMhGsrNi9fcJJjL45vO C40QiYpp2rpBpA9iQ7NwvLJTvsiC5xQyWUuA+ZcxL36XS2s0tn/1d8jRkkvvnstg q1unDQfNHyAFaRRTJ+7Mtluq3nU0nTPRJdwetiDnM9CfIufO+03zUy2OACibJ1cR 3o9BRTM83lYctYE0GmM4A6K7gawo/2hxI+F2bT3TvphDMH2LeNSbbDIe0hmg== ARC-Authentication-Results: i=1; mx3.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=sntech.de; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-usb-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-cm=none score=0; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=sntech.de header.result=pass header_is_org_domain=yes; x-vs=clean score=-100 state=0 Authentication-Results: mx3.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=sntech.de; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-usb-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-cm=none score=0; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=sntech.de header.result=pass header_is_org_domain=yes; x-vs=clean score=-100 state=0 X-ME-VSCategory: clean X-CM-Envelope: MS4wfCh82uh3lxJgIjrySSxGaiaQ5Ofz3yOzCkW+3n2PSZW5WbwREpkrsDSaBt6GLtUYflzUtPgXOXqGMHqzvhas2yoQKiVwlwcbLfCp9taG09M5B4ZYBuMU dZfpag6HR8DFjtTiSldQYH9QiakPwJo29UW1mhiz/WUyNAgVdx0CPQdS1VegexZpOw/9HBrUtJdVpKfojY922DvryMPP+g5a8gWzsFJUjrfOeYpBr5LUCd6a X-CM-Analysis: v=2.3 cv=Tq3Iegfh c=1 sm=1 tr=0 a=UK1r566ZdBxH71SXbqIOeA==:117 a=UK1r566ZdBxH71SXbqIOeA==:17 a=8nJEP1OIZ-IA:10 a=Kd1tUaAdevIA:10 a=8b9GpE9nAAAA:8 a=QX4gbG5DAAAA:8 a=QyXUC8HyAAAA:8 a=VwQbUJbxAAAA:8 a=B3c0t5ESQBNyyYTmWlsA:9 a=wPNLvfGTeEIA:10 a=x8gzFH9gYPwA:10 a=T3LWEMljR5ZiDmsYVIUa:22 a=AbAUZ8qAyYyZVLSsDulk:22 a=AjGcO6oz07-iQ99wixmX:22 X-ME-CMScore: 0 X-ME-CMCategory: none Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751767AbeDJPh5 convert rfc822-to-8bit (ORCPT ); Tue, 10 Apr 2018 11:37:57 -0400 Received: from gloria.sntech.de ([95.129.55.99]:57150 "EHLO gloria.sntech.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751504AbeDJPh5 (ORCPT ); Tue, 10 Apr 2018 11:37:57 -0400 From: Heiko =?ISO-8859-1?Q?St=FCbner?= To: Minas Harutyunyan Cc: Tomeu Vizoso , "linux-kernel@vger.kernel.org" , Felipe Balbi , Amelie Delaunay , Greg Kroah-Hartman , "linux-usb@vger.kernel.org" Subject: Re: [PATCH v4] usb: dwc2: dwc2_vbus_supply_init: fix error check Date: Tue, 10 Apr 2018 17:37:46 +0200 Message-ID: <41174786.HiOuqceMIB@diego> In-Reply-To: <410670D7E743164D87FA6160E7907A560113AE7E5C@am04wembxb.internal.synopsys.com> References: <20180322093943.49717-1-tomeu.vizoso@collabora.com> <4613360.AXT7q7Ng0i@phil> <410670D7E743164D87FA6160E7907A560113AE7E5C@am04wembxb.internal.synopsys.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8BIT Content-Type: text/plain; charset="iso-8859-1" Sender: linux-usb-owner@vger.kernel.org X-Mailing-List: linux-usb@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: Am Dienstag, 10. April 2018, 15:52:25 CEST schrieb Minas Harutyunyan: > Hi Heiko, > > On 4/10/2018 4:28 PM, Heiko Stuebner wrote: > > Am Montag, 26. März 2018, 11:00:01 CEST schrieb Tomeu Vizoso: > >> devm_regulator_get_optional returns -ENODEV if the regulator isn't > >> there, so if that's the case we have to make sure not to leave -ENODEV > >> in the regulator pointer. > >> > >> Also, make sure we return 0 in that case, but correctly propagate any > >> other errors. Also propagate the error from _dwc2_hcd_start. > >> > >> Fixes: 531ef5ebea96 ("usb: dwc2: add support for host mode external vbus > >> supply") Cc: Amelie Delaunay > >> Signed-off-by: Tomeu Vizoso > > > > The patch that gets fixed here also breaks display-output on dwc2-based > > Rockchip devices (likely even more), probably due to making the regulator > > framework hickup. > > Could you please elaborate what mean "breaks display-output". > On which Kernel version you apply this patch? I think I may have written that poorly. _Without_ this patch I get display breakage on the most recent torvalds/master (merge-window) where "usb: dwc2: add support for host mode external vbus supply" is applied and this patch fixes the issue. "breaks display output" means both hdmi + edp output are missing also including the backlight staying off. The patch we're fixing here, causes a null-pointer dereference in the regulator framework, which seems to also cause issues when other regulators are enabled, which I think is what I'm seeing here. Heiko > > Thanks, > Minas > > > With this patch applied, apart from not seeing the NULL-ptr, I also get > > display output on my rk3288-veycron Chromebook again, so > > > > Tested-by: Heiko Stuebner > > > >> v2: Only overwrite the error in the pointer after checking it (Heiko > >> > >> Stübner ) > >> > >> v3: Remove hunks that shouldn't be in this patch > >> v4: Don't overwrite the error code before returning it (kbuild test > >> > >> robot ) > >> > >> --- > >> > >> drivers/usb/dwc2/hcd.c | 13 ++++++++----- > >> 1 file changed, 8 insertions(+), 5 deletions(-) > >> > >> diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c > >> index 190f95964000..c51b73b3e048 100644 > >> --- a/drivers/usb/dwc2/hcd.c > >> +++ b/drivers/usb/dwc2/hcd.c > >> @@ -358,9 +358,14 @@ static void dwc2_gusbcfg_init(struct dwc2_hsotg > >> *hsotg)>> > >> static int dwc2_vbus_supply_init(struct dwc2_hsotg *hsotg) > >> { > >> > >> + int ret; > >> + > >> > >> hsotg->vbus_supply = devm_regulator_get_optional(hsotg->dev, "vbus"); > >> > >> - if (IS_ERR(hsotg->vbus_supply)) > >> - return 0; > >> + if (IS_ERR(hsotg->vbus_supply)) { > >> + ret = PTR_ERR(hsotg->vbus_supply); > >> + hsotg->vbus_supply = NULL; > >> + return ret == -ENODEV ? 0 : ret; > >> + } > >> > >> return regulator_enable(hsotg->vbus_supply); > >> > >> } > >> > >> @@ -4342,9 +4347,7 @@ static int _dwc2_hcd_start(struct usb_hcd *hcd) > >> > >> spin_unlock_irqrestore(&hsotg->lock, flags); > >> > >> - dwc2_vbus_supply_init(hsotg); > >> - > >> - return 0; > >> + return dwc2_vbus_supply_init(hsotg); > >> > >> } > >> > >> /*