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: usb: dwc3: of-simple: fix use-after-free on remove From: Felipe Balbi Message-Id: <877emvxk8u.fsf@linux.intel.com> Date: Tue, 19 Jun 2018 11:18:09 +0300 To: Roger Quadros , Johan Hovold , Tero Kristo Cc: Greg Kroah-Hartman , Alan Stern , linux-usb@vger.kernel.org, "Nori, Sekhar" , Grygorii Strashko , Tony Lindgren , Nishanth Menon List-ID: SGksCgpSb2dlciBRdWFkcm9zIDxyb2dlcnFAdGkuY29tPiB3cml0ZXM6Cj4+Pj4+Pj4gSSBzdWdn ZXN0IG1lcmdpbmcgdGhpcyBmaXggZm9yIDQuMTgtcmMsIGFuZCB0aGVuIFJvZ2VyIGNhbiByZXdv cmsgdGhlCj4+Pj4+Pj4gZHJpdmVyIHNvIHRoYXQgaXQgd29ya3MgYWxzbyBvbiBPTUFQLgo+Pj4+ Pj4KPj4+Pj4+IG9tYXAgaGFzIGl0cyBvd24gZ2x1ZSBsYXllciBmb3Igc2V2ZXJhbCByZWFzb25z LiBJZiB5b3UncmUgdGFsa2luZyBhYm91dAo+Pj4+Pj4gS2V5c3RvbmUgZGV2aWNlcywgdGhlbiBv a2F5LCBJIHVuZGVyc3RhbmQuIEJ1dCBpbiB0aGF0IGNhc2UsIHRoaXMgd291bGQKPj4+Pj4+IG1l YW4gS2V5c3RvbmUgaXMgY29weWluZyB0aGUgc2FtZSBhcmd1YWJseSBicm9rZW4gUE0gZG9tYWlu IGRlc2lnbiBmcm9tCj4+Pj4+PiBPTUFQIGFuZCBpdCB3b3VsZCBiZSBiZXN0IG5vdCB0byBwcm9w YWdhdGUgdGhhdCBpZGVhLgo+Pj4+Pgo+Pj4+PiBNYXliZSBzby4gSSdtIG5vdCBzdXJlIHdoYXQg Um9nZXIncyB1c2UgY2FzZSBpcywgYnV0IHBlcmhhcHMgdGhlIG9tYXAKPj4+Pj4gZ2x1ZSBkcml2 ZXIgY291bGQgYmUgdXNlZCBpbnN0ZWFkLgo+Pj4+Cj4+Pj4gdW5saWtlbHkuIEtleXN0b25lIGRl dmljZXMgYXJlIHZlcnkgZGlmZmVyZW50IGZyb20gT01BUCBmYW1pbHkuIEJ1dAo+Pj4+IHdlJ2xs IHNlZSB3aGF0IFJvZ2VyIHNheXMuCj4+Pj4KPj4+Cj4+PiBXZWxsLCBJIHdhcyBjb25zaWRlcmlu ZyB0byB1c2Ugb2Ytc2ltcGxlIGZvciB0aGUgQU02NTQgU29DIFsxXSBidXQgbm93Cj4+PiBJJ20g b2YgdGhlIG9waW5pb24gdGhhdCBpdCBtaWdodCBiZSBiZXR0ZXIgdG8gYWRkIGEgbmV3IGdsdWUg bGF5ZXIgZHJpdmVyCj4+IAo+PiB3aHkgaXNuJ3QgZHdjMy1rZXlzdG9uZS5jIGVub3VnaD8KPgo+ IEl0IGlzIGRvaW5nIHRvbyBtYW55IHRoaW5ncyB0aGFuIHdlIHJlYWxseSBuZWVkIHRvIGZvciBB TTY1NC4KCkknbSBhc3N1bWluZyB5b3UgbWVhbnQgeW91IHJlYWxseSBkb24ndCBuZWVkIGZvciBB TTY1NC4gVGhhdCBjYW4gYmUgbWFkZQpvcHRpb25hbCB3aXRoIHRoZSB1c2Ugb2YgYSBkaWZmZXJl bnQgY29tcGF0aWJsZSwgcmlnaHQ/Cgo+Pj4gZm9yIHRoYXQgYmVjYXVzZQo+Pj4gLSBpdCBuZWVk cyB0byBwb2tlIGEgZmV3IHJlZ2lzdGVycyBpbiB0aGUgd3JhcHBlciByZWdpb24KPj4gCj4+IGR3 YzMta2V5c3RvbmUuYyBkb2VzIHRoYXQgYWxyZWFkeQo+PiAKPj4+IC0gaXQgZG9lc24ndCByZWFs bHkgbmVlZCB0aGUgZHJpdmVyIHRvIGVuYWJsZSBhbnkgY2xvY2sKPj4gCj4+IFNlZW1zIHRvIG1l IHlvdSdyZSB0cnlpbmcgdG8gcG9ydCBvbWFwX2RldmljZSB0byBhcm02NC4uLgo+Cj4gSXQgaXNu J3QgYW4gb21hcF9kZXZpY2UgYnV0IGlzIHZlcnkgc2ltaWxhciB0byBob3cgaXQgaXMgZG9uZSBv bgo+IGtleXN0b25lLgoKRmFpciBlbm91Z2gKCj4+PiAtIGl0IG5lZWRzIGEgcG1fcnVudGltZV9n ZXRfc3luYygpIHRvIGJlIGRvbmUgaW4gcHJvYmUKPj4gCj4+IHRoaXMgcmVhbGx5IHNob3VsZG4n dCBiZSBuZWNlc3NhcnkuIEtleXN0b25lIGRvZXNuJ3QgcmVseSBvbiBhbGwgdGhlCj4+IG9tYXBf ZGV2aWNlIGxlZ2FjeS4gQXQgbGVhc3QgaXQgZGlkbid0IHVzZSB0by4gQ291bGQgaXQgYmUgdGhh dCB5b3UncmUKPj4ganVzdCBtaXNzaW5nIGEgc3RydWN0IGRldl9wbV9kb21haW4gZGVmaW5pdGlv biBmb3IgYXJtNjQ/Cj4KPiBJIGRvbid0IHRoaW5rIHNvLiBJZiBJIGhhZCBtaXNzZWQgaXQgaXQg d291bGRuJ3QgZW5hYmxlIGF0IGFsbC4KCmFybTY0IGRvZXNuJ3QgZGVmaW5lIG93biBwbV9kb21h aW4uCgo+PiBJIGhhdmVuJ3Qgc2VlbiBob3cgeW91IGd1eXMgaW1wbGVtZW50ZWQgeW91ciBQTSBm b3IgYXJtNjQgKGlzIHRoZXJlIGEKPj4gcHVibGljYWxseSBhY2Nlc3NpYmxlIHZlcnNpb24gc29t ZXdoZXJlPyksIGJ1dCBJJ2Qgc2F5IHlvdSBzaG91bGQgdGFrZQo+PiB0aGUgb3Bwb3J0dW5pdHkg dG8gcmVtb3ZlIHRoaXMgcmVseWluZyBvbiBwbV9ydW50aW1lX2dldF9zeW5jKCkgY2FsbHMKPj4g ZnJvbSBwcm9iZSBhbmQganVzdCBkbyB3aGF0IGV2ZXJ5Ym9keSBlbHNlIGRvZXM7IG5hbWVseTog ZW5hYmxlIGNsb2Nrcwo+PiBvbiBwcm9iZSwgcG1fcnVudGltZV9zZXRfYWN0aXZlLCBldGMuCj4K PiBUaGlzIGlzIHNvbWV0aGluZyBUZXJvIGNhbiBjb21tZW50IG9uLgo+Cj4+IAo+PiBUaGlzIGhl bHBzIGRyaXZlcnMgYmVpbmcgYWJsZSB0byBtYWtlIGFzc3VtcHRpb25zIGFib3V0IGRldmljZXMg YmVpbmcKPj4gZW5hYmxlZCBkdXJpbmcgcHJvYmUuIHBtX3J1bnRpbWUgYmVjb21lcyBlYXNpZXIg dG8gaW1wbGVtZW50IGdlbmVyaWNhbGx5Cj4+IHRvby4KPj4gCj4KPiBZb3Uga2VlcCBtZW50aW9u aW5nIHRoYXQgUE0gZG9tYWluIGRlc2lnbiBpcyBicm9rZW4gb24gT01BUC4gIENvdWxkCj4geW91 IHBsZWFzZSBjbGFyaWZ5IHdoYXQgaXMgYnJva2VuPyBJcyBpdCB0aGUgZmFjdCB0aGF0IHRoZSBi dXMgY29kZQo+IGRvZXNuJ3QgZW5hYmxlIHRoZSBkZXZpY2UgYmVmb3JlIHByb2JlIGFuZCB0aGF0 IHdlIGhhdmUgdG8gZG8gYQo+IHBtX3J1bnRpbWVfc3luYygpIGluIHByb2JlPwoKaXQncyB0aGUg ZmFjdCB0aGF0IHdlIG5lZWQgdG8gcmVseSBvbiBwbV9ydW50aW1lX2dldCgpIHRvIGVuYWJsZSB0 aGUKZGV2aWNlIGZyb20gcHJvYmUuIEp1c3QgY29uc2lkZXIgZm9yIGEgc2Vjb25kIHRoZSBzaXR1 YXRpb24gdGhpcwpjcmVhdGVzOgoKcHJvYmUoKSBjYWxscyBwbV9ydW50aW1lX2VuYWJsZSgpIGFu ZCBwbV9ydW50aW1lX2dldCooKS4gVGhhdCB3aWxsCmV2ZW50dWFsbHkgZ28gYmFjayBhbmQgY2Fs bCBvdXIgb3duIC0+cnVudGltZV9yZXN1bWUoKSBjYWxsYmFjay4gVGhpcwptZWFucyB0aGF0IGRy aXZlciBtdXN0IG1ha2Ugc3VyZSB0aGF0ICpzZXRfZHJ2ZGF0YSgpIGlzIGRvbmUgYmVmb3JlCnBt X3J1bnRpbWVfZ2V0KCkgYW5kIGRyaXZlciBtdXN0IG1ha2Ugc3VyZSB0aGF0IHJ1bm5pbmcKLT5y dW50aW1lX3Jlc3VtZSgpIGZyb20gcHJvYmUoKSBpcyBva2F5IGluIGV2ZXJ5IGNhc2UuIFdoYXQg ZHJpdmVycyBlbmQKdXAgZG9pbmcsIGlzIG5vbnNlbnNlIGxpa2UgYmVsb3c6CgpzdGF0aWMgaW50 IG11c2JfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQp7CglzdHJ1Y3QgbXVzYiAq bXVzYiA9IGRldl90b19tdXNiKGRldik7Cgl1bnNpZ25lZCBsb25nIGZsYWdzOwoJaW50IGVycm9y OwoKCS8qCgkgKiBXaGVuIHBtX3J1bnRpbWVfZ2V0X3N5bmMgY2FsbGVkIGZvciB0aGUgZmlyc3Qg dGltZSBpbiBkcml2ZXIKCSAqIGluaXQsICBzb21lIG9mIHRoZSBzdHJ1Y3R1cmUgaXMgc3RpbGwg bm90IGluaXRpYWxpemVkIHdoaWNoIGlzCgkgKiB1c2VkIGluIHJlc3RvcmUgZnVuY3Rpb24uIEJ1 dCBjbG9jayBuZWVkcyB0byBiZQoJICogZW5hYmxlZCBiZWZvcmUgYW55IHJlZ2lzdGVyIGFjY2Vz cywgc28KCSAqIHBtX3J1bnRpbWVfZ2V0X3N5bmMgaGFzIHRvIGJlIGNhbGxlZC4KCSAqIEFsc28g Y29udGV4dCByZXN0b3JlIHdpdGhvdXQgc2F2ZSBkb2VzIG5vdCBtYWtlCgkgKiBhbnkgc2Vuc2UK CSAqLwoJaWYgKCFtdXNiLT5pc19pbml0aWFsaXplZCkKCQlyZXR1cm4gMDsKCglbLi4uXQp9CgpU aGlzIGlzIGEgZGlyZWN0IGNvbnNlcXVlbmNlIG9mIG5vdCBwYXlpbmcgYXR0ZW50aW9uIHRvIHRo ZSBvcmRlciBvZgp0aGluZ3MuIElmIGRyaXZlciB3ZXJlIHRvIGFzc3VtZSB0aGF0IHBtX2RvbWFp bi0+YWN0aXZhdGUoKSB3b3VsZCBkbyB0aGUKcmlnaHQgdGhpbmcgZm9yIHRoZSBkZXZpY2UgLS0g bWVhbmluZyB0aGF0IHByb2JlIHdvdWxkIHJ1biB3aXRoIGFuCmFjdGl2ZSBkZXZpY2UgLS0sIHRo ZW4gd2Ugd291bGRuJ3QgbmVlZCB0aGF0IHBtX3J1bnRpbWVfZ2V0KCkgY2FsbCBvbgpwcm9iZSBh dCBhbGwuIFJhdGhlciB3ZSB3b3VsZCBmb2xsb3cgdGhlIHNlcXVlbmNlOgoKCXBtX3J1bnRpbWVf Zm9yYmlkKCkKCXBtX3J1bnRpbWVfc2V0X2FjdGl2ZSgpCglwbV9ydW50aW1lX2VuYWJsZSgpCgoJ LyogZG8geW91ciBwcm9iZSByb3V0aW5lICovCgoJcG1fcnVudGltZV9wdXRfbm9pZGxlKCkKClRo ZW4geW91IHJlbW92ZSB5b3Ugd291bGQgbmVlZCB0byBjYWxsIHBtX3J1bnRpbWVfZ2V0X25vcmVz dW1lKCkgdG8KYmFsYW5jZSBvdXQgdGhlIHBtX3J1bnRpbWVfcHV0X25vaWRsZSgpIHRoZXJlLgoK QW55d2F5LCB3aXRoIGFuIGFzc3VtcHRpb24gbGlrZSB0aGlzLCBhZnRlciBhbGwgcGxhdGZvcm1f ZGV2aWNlcyBhcmUKY29udmVydGVkIG92ZXIsIHRoZSBhc3N1bXB0aW9uIGNhbiBiZSBtb3ZlZCBp bnRvIHRoZSBidXMgY29kZSBhbmQsIGxvdwphbmQgYmVob2xkLCB0byBlbmFibGUgcnVudGltZSBw bSBmb3IgeW91ciBkcml2ZXIsIGFsbCB5b3UgaGF2ZSB0byBpcwppbXBsZW1lbnQgeW91ciBjYWxs YmFja3MgYW5kIGFkZCBwbV9ydW50aW1lX3B1dF9ub2lkbGUoKSB0byBwcm9iZSBhbmQKcG1fcnVu dGltZV9nZXRfbm9yZXN1bWUoKSB0byByZW1vdmUgKGFwYXJ0IGZyb20sIG9mIGNvdXJzZSwgbWFr aW5nIHN1cmUKdGhlIGRldmljZSBpc24ndCBhbGxvd2VkIHRvIHJ1bnRpbWVfc3VzcGVuZCB3aGVu IGl0J3MgYWN0dWFsbHkgYnVzeSkuCgpEbyB5b3Ugc2VlIHRoZSBlbmQgZ29hbD8KCk5vdywgd2hh dCBvbWFwX2RldmljZSBkaWQsIGV2ZW4gaWYgYWNjaWRlbnRhbGx5LCB3YXMgY3JlYXRlIHRoZXNl CmRpZmZlcmVudCBhcHByb2FjaCB3aGljaCBtYWtlcyBpdCBtb3JlIGRpZmZpY3VsdCB0byB3cml0 ZSBhIGdlbmVyaWMKZHJpdmVyIHRoYXQgd29ya3MgZm9yIE9NQVBzIGFzIHdlbGwgYXMgRXh5bm9z LCBQQ0ksIFNuYXBkcmFnb24sCkFsbHdpbm5lciwgTWVkaWF0ZWssIGV0Yy4KCgooSWYgeW91IG5l ZWQgdG8ga25vdyB3aHkgdGhlIHBtX3J1bnRpbWVfcHV0X25vaWRsZSgpLCByZW1lbWJlciB0aGF0 CnBtX3J1bnRpbWVfc2V0X2FjdGl2ZSgpIGluY3JlbWVudHMgdGhlIHVzYWdlIGNvdW50ZXIsIHNv CnBtX3J1bnRpbWVfcHV0X25vaWRsZSBpcyBiYXNpY2FsbHkgYWxsb3dpbmcgcG1fcnVudGltZSB0 byBoYXBwZW4gYXMgc29vbgphcyB1c2Vyc3BhY2Ugd3JpdGVzICJhdXRvIiB0byAvc3lzLy4uLi4v cG93ZXIvY29udHJvbCkKCj4gSSB0cmllZCB0byBkaXNjdXNzIHRoaXMgaGVyZSBbMV0gYnV0IGxv b2tzIGxpa2UgeW91IG1pc3NlZCBpdC4KPgo+IFJlLWl0ZXJhdGluZyBoZXJlLgo+Cj4gUGxhdGZv cm0gYnVzIGRvZXNuJ3Qgc2VlbSB0byBlbmFibGUgdGhlIGRldmljZSBhcyBwYXJ0IG9mCj4gb2Zf cGxhdGZvcm1fcG9wdWxhdGUoKS4KCk5vLCBpdCBkb2Vzbid0LiBJdCBoYXMgbmV2ZXIgYmVlbiBk b25lOyBidXQgaG93IGNvdWxkIGl0IGJlPwpwbGF0Zm9ybV9idXMgdXNlcnMgYXJlbid0IGV2ZW4g cmVhZHkgdG8gZGlzY3VzcyBtZXRob2RzIHRvIG1ha2Ugc3VyZQpkcml2ZXJzIGNhbiBtYWtlIGFz c3VtcHRpb25zIGFib3V0IGhvdyBQTSBzaG91bGQgYmUgaW1wbGVtZW50ZWQuCgo+IHNlZSBfX2Rl dmljZV9hdHRhY2goKSBhbmQgZHJpdmVyX3Byb2JlX2RldmljZSgpIGluIGRyaXZlcnMvYmFzZS9k ZC5jCj4KPiBJdCBkb2VzIGEgcG1fcnVudGltZV9nZXRfc3luYygpIG9uIGRldi0+cGFyZW50IGJ1 dCBub3Qgb24gZGV2Lgo+Cj4gQWxzbywgZnJvbSBzZWN0aW9uIDUgb2YgRG9jdW1lbnRhdGlvbi9w b3dlci9ydW50aW1lX3BtLnR4dAo+Cj4gIkluIGFkZGl0aW9uIHRvIHRoYXQsIHRoZSBpbml0aWFs IHJ1bnRpbWUgUE0gc3RhdHVzIG9mIGFsbCBkZXZpY2VzIGlzCj4gJ3N1c3BlbmRlZCcsIGJ1dCBp dCBuZWVkIG5vdCByZWZsZWN0IHRoZSBhY3R1YWwgcGh5c2ljYWwgc3RhdGUgb2YgdGhlIGRldmlj ZS4KPiBUaHVzLCBpZiB0aGUgZGV2aWNlIGlzIGluaXRpYWxseSBhY3RpdmUgKGkuZS4gaXQgaXMg YWJsZSB0byBwcm9jZXNzIEkvTyksIGl0cwo+IHJ1bnRpbWUgUE0gc3RhdHVzIG11c3QgYmUgY2hh bmdlZCB0byAnYWN0aXZlJywgd2l0aCB0aGUgaGVscCBvZgo+IHBtX3J1bnRpbWVfc2V0X2FjdGl2 ZSgpLCBiZWZvcmUgcG1fcnVudGltZV9lbmFibGUoKSBpcyBjYWxsZWQgZm9yIHRoZSBkZXZpY2Uu Igo+Cj4gIk5vdGUsIGlmIHRoZSBkZXZpY2UgbWF5IGV4ZWN1dGUgcG1fcnVudGltZSBjYWxscyBk dXJpbmcgdGhlIHByb2JlIChzdWNoIGFzCj4gaWYgaXQgaXMgcmVnaXN0ZXJzIHdpdGggYSBzdWJz eXN0ZW0gdGhhdCBtYXkgY2FsbCBiYWNrIGluKSB0aGVuIHRoZQo+IHBtX3J1bnRpbWVfZ2V0X3N5 bmMoKSBjYWxsIHBhaXJlZCB3aXRoIGEgcG1fcnVudGltZV9wdXQoKSBjYWxsIHdpbGwgYmUKPiBh cHByb3ByaWF0ZSB0byBlbnN1cmUgdGhhdCB0aGUgZGV2aWNlIGlzIG5vdCBwdXQgYmFjayB0byBz bGVlcCBkdXJpbmcgdGhlCj4gcHJvYmUuIFRoaXMgY2FuIGhhcHBlbiB3aXRoIHN5c3RlbXMgc3Vj aCBhcyB0aGUgbmV0d29yayBkZXZpY2UgbGF5ZXIuIgpJIGRvbid0IHRoaW5rIHRoYXQncyBzYXlp bmcgd2hhdCB5b3UgdGhpbmsgaXQncyBzYXlpbmcuIFRoYXQgcGFyYWdyYXBoCmlzIGp1c3QgdGVs bGluZyB5b3UgdGhhdCBwbV9ydW50aW1lIGRvZXNuJ3Qga25vdyB0aGUgc3RhdGUgb2YgdGhlIGRl dmljZQp3aGVuIHByb2JlIGlzIGNhbGxlZCwgc28gaXQgKmFsd2F5cyogZGVmYXVsdHMgdG8gc3Vz cGVuZGVkLiBJZiB0aGF0J3MKbm90IHRydWUsIHRoZW4geW91IGNhbGwgcG1fcnVudGltZV9zZXRf YWN0aXZlKCkuCgpNb3Jlb3Zlciwgbm90aWNlIHRoZSBsaXR0bGUgZGV0YWlsIGhlcmU6CgoidG8g ZW5zdXJlIHRoYXQgdGhlIGRldmljZSBpcyBub3QgcHV0IEJBQ0sgdG8gc2xlZXAgZHVyaW5nIHRo ZSBwcm9iZSIKCkl0IGNhbiBvbmx5IGJlIHB1dCBiYWNrIHRvIHNsZWVwIGlmIGl0IHdhcyB0YWtl biBvdXQgb2Ygc2xlZXAgYmVmb3JlCmhhbmQuIFRoaXMgaXMgdGhlIHNhbWUgYXMgY2FsbGluZyBw bV9ydW50aW1lX2ZvcmJpZCgpIGZvbGxvd2VkIGJ5CnBtX3J1bnRpbWVfc2V0X2FjdGl2ZSgpIGZv bGxvd2VkIGJ5IHBtX3J1bnRpbWVfZW5hYmxlKCksIGhlcmUncwpwbV9ydW50aW1lX2ZvcmJpZCgp J3MgaW1wbGVtZW50YXRpb246Cgp2b2lkIHBtX3J1bnRpbWVfZm9yYmlkKHN0cnVjdCBkZXZpY2Ug KmRldikKewoJc3Bpbl9sb2NrX2lycSgmZGV2LT5wb3dlci5sb2NrKTsKCWlmICghZGV2LT5wb3dl ci5ydW50aW1lX2F1dG8pCgkJZ290byBvdXQ7CgoJZGV2LT5wb3dlci5ydW50aW1lX2F1dG8gPSBm YWxzZTsKCWF0b21pY19pbmMoJmRldi0+cG93ZXIudXNhZ2VfY291bnQpOwoJcnBtX3Jlc3VtZShk ZXYsIDApOwoKIG91dDoKCXNwaW5fdW5sb2NrX2lycSgmZGV2LT5wb3dlci5sb2NrKTsKfQoKPiBT byBsb29rcyBsaWtlIHdlIGNhbid0IGFzc3VtZSB0aGF0IHRoZSBkZXZpY2UgaXMgImFjdGl2ZSIg d2hlbiBwcm9iZSgpCj4gaXMgY2FsbGVkLgoKTm8sIGl0J3Mgbm90IGEgc2FmZSBhc3N1bXB0aW9u IGZvciBvbWFwX2RldmljZSBhdCBsZWFzdC4gSSdtIGFyZ3VpbmcKdGhhdCBpdCBzaG91bGQgYmUu IFRoZXJlJ3Mgbm8gcmVhc29uIGZvciB5b3UgdG8gbm90IG1vdmUKb21hcF9kZXZpY2VfZW5hYmxl KCkgZnJvbSBfb2RfcnVudGltZV9yZXN1bWUoKSB0byB5b3VyIHBtX2RvbWFpbidzCi0+YWN0aXZh dGUoKSBjYWxsYmFjay4gTWF5YmUgbm90IG1vdmUsIGJ1dCBjb3B5IGl0LiBOb3cgeW91IG1heSBu ZWVkIHRvCmRvIHNvbWV0aGluZyBsaWtlIGJlbG93IHRvIG1ha2UgaXQgd29yayAoY2xlYXJseSB1 bnRlc3RlZDoKCjEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMo LSkKYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2RldmljZS5jIHwgNTggKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgptb2RpZmllZCAgIGFyY2gvYXJtL21hY2gtb21hcDIv b21hcF9kZXZpY2UuYwpAQCAtNTk0LDQ2ICs1OTQsMjIgQEAgc3RhdGljIGludCBfb2RfZmFpbF9y dW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAKICNlbmRpZgogCi0jaWZkZWYgQ09O RklHX1NVU1BFTkQKLXN0YXRpYyBpbnQgX29kX3N1c3BlbmRfbm9pcnEoc3RydWN0IGRldmljZSAq ZGV2KQorc3RhdGljIHZvaWQgb21hcF9kZXZpY2VfYWN0aXZhdGUoc3RydWN0IGRldmljZSAqZGV2 KQogewogCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2Uo ZGV2KTsKIAlzdHJ1Y3Qgb21hcF9kZXZpY2UgKm9kID0gdG9fb21hcF9kZXZpY2UocGRldik7Ci0J aW50IHJldDsKLQotCS8qIERvbid0IGF0dGVtcHQgbGF0ZSBzdXNwZW5kIG9uIGEgZHJpdmVyIHRo YXQgaXMgbm90IGJvdW5kICovCi0JaWYgKG9kLT5fZHJpdmVyX3N0YXR1cyAhPSBCVVNfTk9USUZZ X0JPVU5EX0RSSVZFUikKLQkJcmV0dXJuIDA7Ci0KLQlyZXQgPSBwbV9nZW5lcmljX3N1c3BlbmRf bm9pcnEoZGV2KTsKLQotCWlmICghcmV0ICYmICFwbV9ydW50aW1lX3N0YXR1c19zdXNwZW5kZWQo ZGV2KSkgewotCQlpZiAocG1fZ2VuZXJpY19ydW50aW1lX3N1c3BlbmQoZGV2KSA9PSAwKSB7Ci0J CQlvbWFwX2RldmljZV9pZGxlKHBkZXYpOwotCQkJb2QtPmZsYWdzIHw9IE9NQVBfREVWSUNFX1NV U1BFTkRFRDsKLQkJfQotCX0KIAotCXJldHVybiByZXQ7CisJb2QtPmZsYWdzICY9IH5PTUFQX0RF VklDRV9TVVNQRU5ERUQ7CisJb21hcF9kZXZpY2VfZW5hYmxlKHBkZXYpOwogfQogCi1zdGF0aWMg aW50IF9vZF9yZXN1bWVfbm9pcnEoc3RydWN0IGRldmljZSAqZGV2KQorc3RhdGljIHZvaWQgb21h cF9kZXZpY2VfYWN0aXZhdGUoc3RydWN0IGRldmljZSAqZGV2KQogewogCXN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2UoZGV2KTsKLQlzdHJ1Y3Qgb21hcF9k ZXZpY2UgKm9kID0gdG9fb21hcF9kZXZpY2UocGRldik7CiAKLQlpZiAob2QtPmZsYWdzICYgT01B UF9ERVZJQ0VfU1VTUEVOREVEKSB7Ci0JCW9kLT5mbGFncyAmPSB+T01BUF9ERVZJQ0VfU1VTUEVO REVEOwotCQlvbWFwX2RldmljZV9lbmFibGUocGRldik7Ci0JCXBtX2dlbmVyaWNfcnVudGltZV9y ZXN1bWUoZGV2KTsKLQl9Ci0KLQlyZXR1cm4gcG1fZ2VuZXJpY19yZXN1bWVfbm9pcnEoZGV2KTsK KwlvbWFwX2RldmljZV9pZGxlKHBkZXYpOworCW9kLT5mbGFncyB8PSBPTUFQX0RFVklDRV9TVVNQ RU5ERUQ7CiB9Ci0jZWxzZQotI2RlZmluZSBfb2Rfc3VzcGVuZF9ub2lycSBOVUxMCi0jZGVmaW5l IF9vZF9yZXN1bWVfbm9pcnEgTlVMTAotI2VuZGlmCiAKIHN0cnVjdCBkZXZfcG1fZG9tYWluIG9t YXBfZGV2aWNlX2ZhaWxfcG1fZG9tYWluID0gewogCS5vcHMgPSB7CkBAIC02NDcsOSArNjIzLDkg QEAgc3RydWN0IGRldl9wbV9kb21haW4gb21hcF9kZXZpY2VfcG1fZG9tYWluID0gewogCQlTRVRf UlVOVElNRV9QTV9PUFMoX29kX3J1bnRpbWVfc3VzcGVuZCwgX29kX3J1bnRpbWVfcmVzdW1lLAog CQkJCSAgIE5VTEwpCiAJCVVTRV9QTEFURk9STV9QTV9TTEVFUF9PUFMKLQkJU0VUX05PSVJRX1NZ U1RFTV9TTEVFUF9QTV9PUFMoX29kX3N1c3BlbmRfbm9pcnEsCi0JCQkJCSAgICAgIF9vZF9yZXN1 bWVfbm9pcnEpCiAJfQorCS5hY3RpdmF0ZSA9IG9tYXBfZGV2aWNlX2FjdGl2YXRlLAorCS5kaXNt aXNzID0gb21hcF9kZXZpY2VfZGlzbWlzcywKIH07CiAKIC8qKgpAQCAtNjkwLDEyICs2NjYsOSBA QCBpbnQgb21hcF9kZXZpY2VfZW5hYmxlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAK IAlvZCA9IHRvX29tYXBfZGV2aWNlKHBkZXYpOwogCi0JaWYgKG9kLT5fc3RhdGUgPT0gT01BUF9E RVZJQ0VfU1RBVEVfRU5BQkxFRCkgewotCQlkZXZfd2FybigmcGRldi0+ZGV2LAotCQkJICJvbWFw X2RldmljZTogJXMoKSBjYWxsZWQgZnJvbSBpbnZhbGlkIHN0YXRlICVkXG4iLAotCQkJIF9fZnVu Y19fLCBvZC0+X3N0YXRlKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQorCS8qIGFscmVhZHkgZW5h YmxlZCwganVzdCBiYWlsIG91dCAqLworCWlmIChvZC0+X3N0YXRlID09IE9NQVBfREVWSUNFX1NU QVRFX0VOQUJMRUQpCisJCXJldHVybiAwOwogCiAJcmV0ID0gX29tYXBfZGV2aWNlX2VuYWJsZV9o d21vZHMob2QpOwogCkBAIC03MjEsMTIgKzY5NCw5IEBAIGludCBvbWFwX2RldmljZV9pZGxlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAKIAlvZCA9IHRvX29tYXBfZGV2aWNlKHBkZXYp OwogCi0JaWYgKG9kLT5fc3RhdGUgIT0gT01BUF9ERVZJQ0VfU1RBVEVfRU5BQkxFRCkgewotCQlk ZXZfd2FybigmcGRldi0+ZGV2LAotCQkJICJvbWFwX2RldmljZTogJXMoKSBjYWxsZWQgZnJvbSBp bnZhbGlkIHN0YXRlICVkXG4iLAotCQkJIF9fZnVuY19fLCBvZC0+X3N0YXRlKTsKLQkJcmV0dXJu IC1FSU5WQUw7Ci0JfQorCS8qIGlmIG5vdCBlbmFibGVkLCBiYWlsIG91dCAqLworCWlmIChvZC0+ X3N0YXRlICE9IE9NQVBfREVWSUNFX1NUQVRFX0VOQUJMRUQpCisJCXJldHVybiAwOwogCiAJcmV0 ID0gX29tYXBfZGV2aWNlX2lkbGVfaHdtb2RzKG9kKTsKIAo+IFdoaWNoIG1lYW5zLCB3ZSBuZWVk IHRvIGRvCj4KPiBwbV9ydW50aW1lX2dldF9zeW5jKCk7Cj4gZW5hYmxlIG9wdGlvbmFsIGNsb2Nr czsKCnNob3VsZG4ndCBiZSBuZWNlc3Nhcnkgd2l0aCBjaGFuZ2VzIGFib3ZlLgo=