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: [v2,5/8] usb: typec: fusb302: Fix fusb302_handle_togdone_src Ra handling From: Hans de Goede Message-Id: Date: Fri, 8 Mar 2019 12:10:11 +0100 To: Guenter Roeck Cc: Greg Kroah-Hartman , Heikki Krogerus , linux-usb@vger.kernel.org List-ID: SGksCgpPbiAwNy0wMy0xOSAxOToxOSwgR3VlbnRlciBSb2VjayB3cm90ZToKPiBPbiBUaHUsIE1h ciAwNywgMjAxOSBhdCAwNTozNjowNFBNICswMTAwLCBIYW5zIGRlIEdvZWRlIHdyb3RlOgo+PiBU aGUgRlVTQjMwMiB3aWxsIHN0b3AgdG9nZ2xpbmcgd2l0aCBhIEZVU0JfUkVHX1NUQVRVUzFBX1RP R1NTX1NSQz8gc3RhdHVzLAo+PiBhcyBzb29uIGFzIGl0IHNlZXMgZWl0aGVyIFJhIG9yIFJkIG9u IGEgQ0MgcGluLgo+Pgo+PiBCZWZvcmUgdGhpcyBjb21taXQgZnVzYjMwMl9oYW5kbGVfdG9nZG9u ZV9zcmMgd291bGQgYXNzdW1lIHRoYXQgdGhlIHRvZ2dsZS0KPj4gZW5naW5lIGFsd2F5cyBzdG9w cGVkIGF0IHRoZSBDQyBwaW4gaW5kaWNhdGluZyB0aGUgcG9sYXJpdHksIElPVyBpdCBhc3N1bWVk Cj4+IHRoYXQgaXQgc3RvcHBlZCBhdCB0aGUgcGluIGNvbm5lY3RlZCB0byBSZC4gSXQgZGlkIGNo ZWNrIHRoZSBDQy1zdGF0dXMgb2YKPj4gdGhhdCBwaW4sIGJ1dCBpdCBkaWQgbm90IGV4cGVjdCB0 byBnZXQgYSBDQy1zdGF0dXMgb2YgUmEgYW5kIHRoZXJlZm9yZQo+PiB0cmVhdGVkIHRoaXMgYXMg Q0Mtb3Blbi4gVGhpcyBsZWFkIHRvIHRoZSBmb2xsb3dpbmcgMiBwcm9ibGVtczoKPj4KPj4gMSkg SWYgYSBwb3dlcmVkIGNhYmxlL2FkYXB0ZXIgZ2V0cyBwbHVnZ2VkIGluIHdpdGggUmEgb24gQ0Mx IGFuZCBSZCBvbiBDQzIKPj4gdGhlbiA0IG9mIDUgdGltZXMgd2hlbiBwbHVnZ2VkIGluIHRvZ2ds aW5nIHdpbGwgc3RvcCB3aXRoIGEgdG9nZG9uZV9yZXN1bHQKPj4gb2YgRlVTQl9SRUdfU1RBVFVT MUFfVE9HU1NfU1JDMS4gIDMvNXRoIG9mIHRoZSB0aW1lIHRoZSB0b2dnbGUtZW5naW5lIGlzCj4+ IHRlc3RpbmcgZm9yIGJlaW5nIGNvbm5lY3RlZCBhcyBhIHNpbmsgYW5kIGFmdGVyIHRoYXQgaXQg dGVzdHMgMS81dGggb2YgdGhlCj4+IHRpbWUgZm9yIGNvbm5lY3RlZCBhcyBhIHNyYyB0aHJvdWdo IENDMSBiZWZvcmUgZmluYWxseSB0ZXN0aW5nIHRoZSBsYXN0Cj4+IDEvNXRoIG9mIHRoZSB0aW1l IGZvciBiZWluZyBhIHNyYyBjb25uZWN0ZWQgdGhyb3VnaCBDQzIuCj4+Cj4+IFRoaXMgd2FzIGEg cHJvYmxlbSBiZWNhdXNlIHdlIHdvdWxkIG9ubHkgY2hlY2sgdGhlIENDIHBpbiBzdGF0dXMgZm9y IHRoZQo+PiBwaW4gb24gd2hpY2ggdGhlIHRvZ2dsaW5nIHN0b3BwZWQgd2hpY2ggaW4gdGhpcyBw b2xhcml0eSA0IG91dCBvZiA1Cj4+IHRpbWVzIHdvdWxkIGJlIHRoZSBSYSBwaW4uIFRoZSBjb2Rl IGJlZm9yZSB0aGlzIGNvbW1pdCB3b3VsZCB0cmVhdCBSYSBhcwo+PiBDQy1vcGVuIGFuZCB0aGVu IHJlc3RhcnQgdG9nZ2xpbmcuIE9uY2UgdG9nZ2xpbmcgaXMgcmVzdGFydGVkIHdlIGFyZQo+PiBn dWFyYW50ZWVkIHRvIGVuZCB3aXRoIEZVU0JfUkVHX1NUQVRVUzFBX1RPR1NTX1NSQzEgYXMgQ0Mx IGlzIHRlc3RlZCBmaXJzdCwKPj4gbGVhZGluZyB0byBhIENDLXN0YXR1cyBvZiBSYSBhZ2FpbiBh bmQgYW4gaW5maW5pdGUgcmVzdGFydCB0b2dnbGluZyBsb29wLgo+PiBTbyA0IG91dCBvZiA1IHRp bWVzIHdoZW4gcGx1Z2dlZCBpbiBpbiB0aGlzIHBvbGFyaXR5IGEgcG93ZXJlZCBhZGFwdGVyCj4+ IHdpbGwgbm90IHdvcmsuCj4+Cj4+IDIpIEV2ZW4gaWYgd2UgaGFwcGVuIHRvIGhhdmUgdGhlIHJp Z2h0IHBvbGFyaXR5IG9yIDEvNXRoIG9mIHRoZSB0aW1lIGluCj4+IHRoZSBwb2xhcml0eSB3aXRo IHByb2JsZW0gMSksIHdlIHdvdWxkIHJlcG9ydCB0aGUgbm9uIFJkIHBpbiBhcyBDQy1vcGVuCj4+ IHJhdGhlciB0aGVuIGFzIFJhLCByZXN1bHRpbmcgaW4gdGhlIHRjcG0uYyBjb2RlIG5vdCBlbmFi bGluZyBWY29ubiB3aGljaAo+PiBpcyBhIHByb2JsZW0gZm9yIHNvbWUgYWRhcHRlcnMuCj4+Cj4+ IFRoaXMgY29tbWl0IGZpeGVzIHRoaXMgYnkgZ2V0dGluZyB0aGUgQ0Mtc3RhdHVzIG9mICpib3Ro KiBwaW5zIGFuZCB0aGVuCj4+IGRldGVybWluaW5nIHRoZSBwb2xhcml0eSBiYXNlZCBvbiB0aGF0 LCByYXRoZXIgdGhlbiBvbiB3aGVyZSB0aGUgdG9nZ2xpbmcKPj4gc3RvcHBlZC4KPj4KPj4gU2ln bmVkLW9mZi1ieTogSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KPj4gLS0tCj4+ ICAgZHJpdmVycy91c2IvdHlwZWMvdGNwbS9mdXNiMzAyLmMgfCAxNDkgKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLQo+PiAgIDEgZmlsZSBjaGFuZ2VkLCA5NyBpbnNlcnRpb25zKCspLCA1 MiBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0v ZnVzYjMwMi5jIGIvZHJpdmVycy91c2IvdHlwZWMvdGNwbS9mdXNiMzAyLmMKPj4gaW5kZXggZjQz ZmUzNGI3YTczLi5iNzRjNmZmNjdhYWUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvdXNiL3R5cGVj L3RjcG0vZnVzYjMwMi5jCj4+ICsrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0vZnVzYjMwMi5j Cj4+IEBAIC0xMjQ5LDYgKzEyNDksNjIgQEAgc3RhdGljIGludCBmdXNiMzAyX2hhbmRsZV90b2dk b25lX3NuayhzdHJ1Y3QgZnVzYjMwMl9jaGlwICpjaGlwLAo+PiAgIAlyZXR1cm4gcmV0Owo+PiAg IH0KPj4gICAKPj4gKy8qIE9uIGVycm9yIHJldHVybnMgPCAwLCBvdGhlcndpc2UgYSB0eXBlY19j Y19zdGF0dXMgdmFsdWUgKi8KPj4gK3N0YXRpYyBpbnQgZnVzYjMwMl9nZXRfc3JjX2NjX3N0YXR1 cyhzdHJ1Y3QgZnVzYjMwMl9jaGlwICpjaGlwLAo+PiArCQkJCSAgICAgZW51bSB0eXBlY19jY19w b2xhcml0eSBjY19wb2xhcml0eSwKPj4gKwkJCQkgICAgIGVudW0gdHlwZWNfY2Nfc3RhdHVzICpj YykKPj4gK3sKPj4gKwl1OCByYV9tZGEgPSByYV9tZGFfdmFsdWVbY2hpcC0+c3JjX2N1cnJlbnRf c3RhdHVzXTsKPj4gKwl1OCByZF9tZGEgPSByZF9tZGFfdmFsdWVbY2hpcC0+c3JjX2N1cnJlbnRf c3RhdHVzXTsKPj4gKwl1OCBzd2l0Y2hlczBfZGF0YSwgc3RhdHVzMDsKPj4gKwlpbnQgcmV0Owo+ PiArCj4+ICsJLyogU3RlcCAxOiBTZXQgc3dpdGNoZXMgc28gdGhhdCB3ZSBtZWFzdXJlIHRoZSBy aWdodCBDQyBwaW4gKi8KPj4gKwlzd2l0Y2hlczBfZGF0YSA9IChjY19wb2xhcml0eSA9PSBUWVBF Q19QT0xBUklUWV9DQzEpID8KPj4gKwkJRlVTQl9SRUdfU1dJVENIRVMwX0NDMV9QVV9FTiB8IEZV U0JfUkVHX1NXSVRDSEVTMF9NRUFTX0NDMSA6Cj4+ICsJCUZVU0JfUkVHX1NXSVRDSEVTMF9DQzJf UFVfRU4gfCBGVVNCX1JFR19TV0lUQ0hFUzBfTUVBU19DQzI7Cj4+ICsJcmV0ID0gZnVzYjMwMl9p MmNfd3JpdGUoY2hpcCwgRlVTQl9SRUdfU1dJVENIRVMwLCBzd2l0Y2hlczBfZGF0YSk7Cj4+ICsJ aWYgKHJldCA8IDApCj4+ICsJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwlmdXNiMzAyX2kyY19yZWFk KGNoaXAsIEZVU0JfUkVHX1NXSVRDSEVTMCwgJnN0YXR1czApOwo+PiArCWZ1c2IzMDJfbG9nKGNo aXAsICJnZXRfc3JjX2NjX3N0YXR1cyBzd2l0Y2hlczogMHglMHgiLCBzdGF0dXMwKTsKPj4gKwo+ PiArCS8qIFN0ZXAgMjogU2V0IGNvbXBhcmFyYXRvciB2b2x0IHRvIGRpZmZlcmVudGlhdGUgYmV0 d2VlbiBPcGVuIGFuZCBSZCAqLwo+PiArCXJldCA9IGZ1c2IzMDJfaTJjX3dyaXRlKGNoaXAsIEZV U0JfUkVHX01FQVNVUkUsIHJkX21kYSk7Cj4+ICsJaWYgKHJldCA8IDApCj4+ICsJCXJldHVybiBy ZXQ7Cj4+ICsKPj4gKwl1c2xlZXBfcmFuZ2UoNTAwMCwgMTAwMDApOwo+IAo+IFRoaXMgYW5kIHRo ZSBzZWNvbmQgc2xlZXAgYmVsb3cgcmVzdWx0cyBpbiBzaWduaWZpY2FudCBkZWxheXMgb2YgdXAg dG8KPiAyMCBtcy4gVGhpcyBpcyBzaWduaWZpY2FudGx5IG1vcmUgdGhhbiBiZWZvcmUuIEFyZSB5 b3Ugc3VyZSB0aGlzIGRvZXNuJ3QKPiByZXN1bHQgaW4gc29tZSB0aW1pbmcgdmlvbGF0aW9ucyA/ CgpVZ2gsIHRoYXQgbGluZSBzaG91bGQgYmU6CgoJdXNsZWVwX3JhbmdlKDUwLCAxMDApOwoKKGFu ZCBhZ2FpbiBiZWxvdykuCgpJIGFkZGVkIHRoZSAyIGV4dHJhIHplcm9lcyB3aGlsZSBkZWJ1Z2dp bmcgdGhpcyBjb2RlLCBidXQgdGhlIGFjdHVhbCBidWcKSSBoYWQgdGhlbiBpbiB0aGUgY29kZSB3 YXMgZGlmZmVyZW50LiBJIGFjdHVhbGx5IHJlbWVtYmVyIHJlbW92aW5nIHRoZSB6ZXJvZXMKYWdh aW4sIGJ1dCBjbGVhcmx5IHRoZXkgc29tZWhvdyBnb3QgYmFjazsgb3IgSSByZW1lbWJlciB3cm9u Z2x5LgoKQW55d2F5cyBJIHdpbGwgZG8gYSB2MyB3aXRoIHRoaXMgZml4ZWQsIGhvcGVmdWxseSBs YXRlciB0b2RheSwgYnV0IEkKbmVlZCB0byByZS1ydW4gYWxsIG15IHRlc3RzLCBzbyB0aGlzIG1h eSB0YWtlIGEgd2hpbGUuCgogPiBBbmQgaXMgdGhhdCByZWFsbHkgdGhlIG9ubHkgcG9zc2libGUK ID4gc29sdXRpb24gdG8gYWRkcmVzcyB0aGUgcHJvYmxlbSB5b3Ugb2JzZXJ2ZWQgPwoKSSBoYXZl IGJlZW4gdW5hYmxlIHRvIGNvbWUgdXAgd2l0aCBhbm90aGVyIHdheSB0byBkZWFsIHdpdGggdGhl IHRvZ2dsZQplbmdpbmUgc3RvcHBpbmcgb24gdGhlIGZpcnN0IENjIHBpbiB3aXRoIGEgcHVsbC1k b3duIGF0dGFjaGVkLCBiZSBpdCB0aGUKUmQgb3IgUmEgb25lLgoKQnV0IEkgc2hvdWxkIGJlIGFi bGUgdG8gZ2V0IHRoZSBkZWxheSBkb3duIHRvIHR3aWNlIHRoZSBvbGQgZGVsYXksCmluc3RlYWQg b2YgdGhlIHVwIHRvIDIwIG1zLgoKUmVnYXJkcywKCkhhbnMKCnAucy4KClRoYW5rIHlvdSBmb3Ig dGhlIHJldmlldyEKCj4+ICsJcmV0ID0gZnVzYjMwMl9pMmNfcmVhZChjaGlwLCBGVVNCX1JFR19T VEFUVVMwLCAmc3RhdHVzMCk7Cj4+ICsJaWYgKHJldCA8IDApCj4+ICsJCXJldHVybiByZXQ7Cj4+ ICsKPj4gKwlmdXNiMzAyX2xvZyhjaGlwLCAiZ2V0X3NyY19jY19zdGF0dXMgcmRfbWRhIHN0YXR1 czA6IDB4JTB4Iiwgc3RhdHVzMCk7Cj4+ICsJaWYgKHN0YXR1czAgJiBGVVNCX1JFR19TVEFUVVMw X0NPTVApIHsKPj4gKwkJKmNjID0gVFlQRUNfQ0NfT1BFTjsKPj4gKwkJcmV0dXJuIDA7Cj4+ICsJ fQo+PiArCj4+ICsJLyogU3RlcCAzOiBTZXQgY29tcGFyYXJhdG9yIGlucHV0IHRvIGRpZmZlcmVu dGlhdGUgYmV0d2VlbiBSZCBhbmQgUmEuICovCj4+ICsJcmV0ID0gZnVzYjMwMl9pMmNfd3JpdGUo Y2hpcCwgRlVTQl9SRUdfTUVBU1VSRSwgcmFfbWRhKTsKPj4gKwlpZiAocmV0IDwgMCkKPj4gKwkJ cmV0dXJuIHJldDsKPj4gKwo+PiArCXVzbGVlcF9yYW5nZSg1MDAwLCAxMDAwMCk7Cj4+ICsJcmV0 ID0gZnVzYjMwMl9pMmNfcmVhZChjaGlwLCBGVVNCX1JFR19TVEFUVVMwLCAmc3RhdHVzMCk7Cj4+ ICsJaWYgKHJldCA8IDApCj4+ICsJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwlmdXNiMzAyX2xvZyhj aGlwLCAiZ2V0X3NyY19jY19zdGF0dXMgcmFfbWRhIHN0YXR1czA6IDB4JTB4Iiwgc3RhdHVzMCk7 Cj4+ICsJaWYgKHN0YXR1czAgJiBGVVNCX1JFR19TVEFUVVMwX0NPTVApCj4+ICsJCSpjYyA9IFRZ UEVDX0NDX1JEOwo+PiArCWVsc2UKPj4gKwkJKmNjID0gVFlQRUNfQ0NfUkE7Cj4+ICsKPj4gKwly ZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAgIHN0YXRpYyBpbnQgZnVzYjMwMl9oYW5kbGVfdG9nZG9u ZV9zcmMoc3RydWN0IGZ1c2IzMDJfY2hpcCAqY2hpcCwKPj4gICAJCQkJICAgICAgdTggdG9nZG9u ZV9yZXN1bHQpCj4+ICAgewo+PiBAQCAtMTI1OSw3MSArMTMxNSw2MiBAQCBzdGF0aWMgaW50IGZ1 c2IzMDJfaGFuZGxlX3RvZ2RvbmVfc3JjKHN0cnVjdCBmdXNiMzAyX2NoaXAgKmNoaXAsCj4+ICAg CSAqIC0gc2V0IElfQ09NUCBpbnRlcnJ1cHQgb24KPj4gICAJICovCj4+ICAgCWludCByZXQgPSAw Owo+PiAtCXU4IHN0YXR1czA7Cj4+IC0JdTggcmFfbWRhID0gcmFfbWRhX3ZhbHVlW2NoaXAtPnNy Y19jdXJyZW50X3N0YXR1c107Cj4+ICAgCXU4IHJkX21kYSA9IHJkX21kYV92YWx1ZVtjaGlwLT5z cmNfY3VycmVudF9zdGF0dXNdOwo+PiAtCWJvb2wgcmFfY29tcCwgcmRfY29tcDsKPj4gKwllbnVt IHRvZ2dsaW5nX21vZGUgdG9nZ2xpbmdfbW9kZSA9IGNoaXAtPnRvZ2dsaW5nX21vZGU7Cj4+ICAg CWVudW0gdHlwZWNfY2NfcG9sYXJpdHkgY2NfcG9sYXJpdHk7Cj4+IC0JZW51bSB0eXBlY19jY19z dGF0dXMgY2Nfc3RhdHVzX2FjdGl2ZSwgY2MxLCBjYzI7Cj4+ICsJZW51bSB0eXBlY19jY19zdGF0 dXMgY2MxLCBjYzI7Cj4+ICAgCj4+IC0JLyogc2V0IHBvbGFyaXR5IGFuZCBwdWxsX3VwLCBwdWxs X2Rvd24gKi8KPj4gLQljY19wb2xhcml0eSA9ICh0b2dkb25lX3Jlc3VsdCA9PSBGVVNCX1JFR19T VEFUVVMxQV9UT0dTU19TUkMxKSA/Cj4+IC0JCSAgICAgIFRZUEVDX1BPTEFSSVRZX0NDMSA6IFRZ UEVDX1BPTEFSSVRZX0NDMjsKPj4gLQlyZXQgPSBmdXNiMzAyX3NldF9jY19wb2xhcml0eV9hbmRf cHVsbChjaGlwLCBjY19wb2xhcml0eSwgdHJ1ZSwgZmFsc2UpOwo+PiArCS8qCj4+ICsJICogVGhl IHRvZ2dsZS1lbmdpbmUgd2lsbCBzdG9wIGluIGEgc3JjIHN0YXRlIGlmIGl0IHNlZXMgZWl0aGVy IFJhIG9yCj4+ICsJICogUmQuIERldGVybWluZSB0aGUgc3RhdHVzIGZvciBib3RoIENDIHBpbnMs IHN0YXJ0aW5nIHdpdGggdGhlIG9uZQo+PiArCSAqIHdoZXJlIHRvZ2dsaW5nIHN0b3BwZWQsIGFz IHRoYXQgaXMgd2hlcmUgdGhlIHN3aXRjaGVzIHBvaW50IG5vdy4KPj4gKwkgKi8KPj4gKwlpZiAo dG9nZG9uZV9yZXN1bHQgPT0gRlVTQl9SRUdfU1RBVFVTMUFfVE9HU1NfU1JDMSkKPj4gKwkJcmV0 ID0gZnVzYjMwMl9nZXRfc3JjX2NjX3N0YXR1cyhjaGlwLCBUWVBFQ19QT0xBUklUWV9DQzEsICZj YzEpOwo+PiArCWVsc2UKPj4gKwkJcmV0ID0gZnVzYjMwMl9nZXRfc3JjX2NjX3N0YXR1cyhjaGlw LCBUWVBFQ19QT0xBUklUWV9DQzIsICZjYzIpOwo+PiArCWlmIChyZXQgPCAwKQo+PiArCQlyZXR1 cm4gcmV0Owo+PiArCS8qIHdlIG11c3QgdHVybiBvZmYgdG9nZ2xpbmcgYmVmb3JlIHdlIGNhbiBt ZWFzdXJlIHRoZSBvdGhlciBwaW4gKi8KPj4gKwlyZXQgPSBmdXNiMzAyX3NldF90b2dnbGluZyhj aGlwLCBUT0dHTElOR19NT0RFX09GRik7Cj4+ICAgCWlmIChyZXQgPCAwKSB7Cj4+IC0JCWZ1c2Iz MDJfbG9nKGNoaXAsICJjYW5ub3Qgc2V0IGNjIHBvbGFyaXR5ICVzLCByZXQ9JWQiLAo+PiAtCQkJ ICAgIGNjX3BvbGFyaXR5X25hbWVbY2NfcG9sYXJpdHldLCByZXQpOwo+PiArCQlmdXNiMzAyX2xv ZyhjaGlwLCAiY2Fubm90IHNldCB0b2dnbGluZyBtb2RlIG9mZiwgcmV0PSVkIiwgcmV0KTsKPj4g ICAJCXJldHVybiByZXQ7Cj4+ICAgCX0KPj4gLQkvKiBmdXNiMzAyX3NldF9jY19wb2xhcml0eSgp IGhhcyBzZXQgdGhlIGNvcnJlY3QgbWVhc3VyZSBibG9jayAqLwo+PiAtCXJldCA9IGZ1c2IzMDJf aTJjX3dyaXRlKGNoaXAsIEZVU0JfUkVHX01FQVNVUkUsIHJkX21kYSk7Cj4+IC0JaWYgKHJldCA8 IDApCj4+IC0JCXJldHVybiByZXQ7Cj4+IC0JdXNsZWVwX3JhbmdlKDUwLCAxMDApOwo+PiAtCXJl dCA9IGZ1c2IzMDJfaTJjX3JlYWQoY2hpcCwgRlVTQl9SRUdfU1RBVFVTMCwgJnN0YXR1czApOwo+ PiArCS8qIGdldCB0aGUgc3RhdHVzIG9mIHRoZSBvdGhlciBwaW4gKi8KPj4gKwlpZiAodG9nZG9u ZV9yZXN1bHQgPT0gRlVTQl9SRUdfU1RBVFVTMUFfVE9HU1NfU1JDMSkKPj4gKwkJcmV0ID0gZnVz YjMwMl9nZXRfc3JjX2NjX3N0YXR1cyhjaGlwLCBUWVBFQ19QT0xBUklUWV9DQzIsICZjYzIpOwo+ PiArCWVsc2UKPj4gKwkJcmV0ID0gZnVzYjMwMl9nZXRfc3JjX2NjX3N0YXR1cyhjaGlwLCBUWVBF Q19QT0xBUklUWV9DQzEsICZjYzEpOwo+PiAgIAlpZiAocmV0IDwgMCkKPj4gICAJCXJldHVybiBy ZXQ7Cj4+IC0JcmRfY29tcCA9ICEhKHN0YXR1czAgJiBGVVNCX1JFR19TVEFUVVMwX0NPTVApOwo+ PiAtCWlmICghcmRfY29tcCkgewo+PiAtCQlyZXQgPSBmdXNiMzAyX2kyY193cml0ZShjaGlwLCBG VVNCX1JFR19NRUFTVVJFLCByYV9tZGEpOwo+PiAtCQlpZiAocmV0IDwgMCkKPj4gLQkJCXJldHVy biByZXQ7Cj4+IC0JCXVzbGVlcF9yYW5nZSg1MCwgMTAwKTsKPj4gLQkJcmV0ID0gZnVzYjMwMl9p MmNfcmVhZChjaGlwLCBGVVNCX1JFR19TVEFUVVMwLCAmc3RhdHVzMCk7Cj4+IC0JCWlmIChyZXQg PCAwKQo+PiAtCQkJcmV0dXJuIHJldDsKPj4gLQkJcmFfY29tcCA9ICEhKHN0YXR1czAgJiBGVVNC X1JFR19TVEFUVVMwX0NPTVApOwo+PiArCj4+ICsJLyogZGV0ZXJtaW5lIHBvbGFyaXR5IGJhc2Vk IG9uIHRoZSBzdGF0dXMgb2YgYm90aCBwaW5zICovCj4+ICsJaWYgKGNjMSA9PSBUWVBFQ19DQ19S RCAmJgo+PiArCQkJKGNjMiA9PSBUWVBFQ19DQ19PUEVOIHx8IGNjMiA9PSBUWVBFQ19DQ19SQSkp IHsKPj4gKwkJY2NfcG9sYXJpdHkgPSBUWVBFQ19QT0xBUklUWV9DQzE7Cj4+ICsJfSBlbHNlIGlm IChjYzIgPT0gVFlQRUNfQ0NfUkQgJiYKPj4gKwkJICAgIChjYzEgPT0gVFlQRUNfQ0NfT1BFTiB8 fCBjYzEgPT0gVFlQRUNfQ0NfUkEpKSB7Cj4+ICsJCWNjX3BvbGFyaXR5ID0gVFlQRUNfUE9MQVJJ VFlfQ0MyOwo+PiArCX0gZWxzZSB7Cj4+ICsJCWZ1c2IzMDJfbG9nKGNoaXAsICJ1bmV4cGVjdGVk IENDIHN0YXR1cyBjYzE9JXMsIGNjMj0lcywgcmVzdGFydGluZyB0b2dnbGluZyIsCj4+ICsJCQkg ICAgdHlwZWNfY2Nfc3RhdHVzX25hbWVbY2MxXSwKPj4gKwkJCSAgICB0eXBlY19jY19zdGF0dXNf bmFtZVtjYzJdKTsKPj4gKwkJcmV0dXJuIGZ1c2IzMDJfc2V0X3RvZ2dsaW5nKGNoaXAsIHRvZ2ds aW5nX21vZGUpOwo+PiAgIAl9Cj4+IC0JaWYgKHJkX2NvbXApCj4+IC0JCWNjX3N0YXR1c19hY3Rp dmUgPSBUWVBFQ19DQ19PUEVOOwo+PiAtCWVsc2UgaWYgKHJhX2NvbXApCj4+IC0JCWNjX3N0YXR1 c19hY3RpdmUgPSBUWVBFQ19DQ19SRDsKPj4gLQllbHNlCj4+IC0JCS8qIFJhIGlzIG5vdCBzdXBw b3J0ZWQsIHJlcG9ydCBhcyBPcGVuICovCj4+IC0JCWNjX3N0YXR1c19hY3RpdmUgPSBUWVBFQ19D Q19PUEVOOwo+PiAtCS8qIHJlc3RhcnQgdG9nZ2xpbmcgaWYgdGhlIGNjIHN0YXR1cyBvbiB0aGUg YWN0aXZlIGxpbmUgaXMgT1BFTiAqLwo+PiAtCWlmIChjY19zdGF0dXNfYWN0aXZlID09IFRZUEVD X0NDX09QRU4pIHsKPj4gLQkJZnVzYjMwMl9sb2coY2hpcCwgInJlc3RhcnQgdG9nZ2xpbmcgYXMg Q0NfT1BFTiBkZXRlY3RlZCIpOwo+PiAtCQlyZXQgPSBmdXNiMzAyX3NldF90b2dnbGluZyhjaGlw LCBjaGlwLT50b2dnbGluZ19tb2RlKTsKPj4gKwkvKiBzZXQgcG9sYXJpdHkgYW5kIHB1bGxfdXAs IHB1bGxfZG93biAqLwo+PiArCXJldCA9IGZ1c2IzMDJfc2V0X2NjX3BvbGFyaXR5X2FuZF9wdWxs KGNoaXAsIGNjX3BvbGFyaXR5LCB0cnVlLCBmYWxzZSk7Cj4+ICsJaWYgKHJldCA8IDApIHsKPj4g KwkJZnVzYjMwMl9sb2coY2hpcCwgImNhbm5vdCBzZXQgY2MgcG9sYXJpdHkgJXMsIHJldD0lZCIs Cj4+ICsJCQkgICAgY2NfcG9sYXJpdHlfbmFtZVtjY19wb2xhcml0eV0sIHJldCk7Cj4+ICAgCQly ZXR1cm4gcmV0Owo+PiAgIAl9Cj4+ICAgCS8qIHVwZGF0ZSB0Y3BtIHdpdGggdGhlIG5ldyBjYyB2 YWx1ZSAqLwo+PiAtCWNjMSA9IChjY19wb2xhcml0eSA9PSBUWVBFQ19QT0xBUklUWV9DQzEpID8K Pj4gLQkgICAgICBjY19zdGF0dXNfYWN0aXZlIDogVFlQRUNfQ0NfT1BFTjsKPj4gLQljYzIgPSAo Y2NfcG9sYXJpdHkgPT0gVFlQRUNfUE9MQVJJVFlfQ0MyKSA/Cj4+IC0JICAgICAgY2Nfc3RhdHVz X2FjdGl2ZSA6IFRZUEVDX0NDX09QRU47Cj4+ICAgCWlmICgoY2hpcC0+Y2MxICE9IGNjMSkgfHwg KGNoaXAtPmNjMiAhPSBjYzIpKSB7Cj4+ICAgCQljaGlwLT5jYzEgPSBjYzE7Cj4+ICAgCQljaGlw LT5jYzIgPSBjYzI7Cj4+ICAgCQl0Y3BtX2NjX2NoYW5nZShjaGlwLT50Y3BtX3BvcnQpOwo+PiAg IAl9Cj4+IC0JLyogdHVybiBvZmYgdG9nZ2xpbmcgKi8KPj4gLQlyZXQgPSBmdXNiMzAyX3NldF90 b2dnbGluZyhjaGlwLCBUT0dHTElOR19NT0RFX09GRik7Cj4+IC0JaWYgKHJldCA8IDApIHsKPj4g LQkJZnVzYjMwMl9sb2coY2hpcCwKPj4gLQkJCSAgICAiY2Fubm90IHNldCB0b2dnbGluZyBtb2Rl IG9mZiwgcmV0PSVkIiwgcmV0KTsKPj4gLQkJcmV0dXJuIHJldDsKPj4gLQl9Cj4+ICAgCS8qIHNl dCBNREFDIHRvIFJkIHRocmVzaG9sZCwgYW5kIHVubWFzayBJX0NPTVAgZm9yIHVucGx1ZyBkZXRl Y3Rpb24gKi8KPj4gICAJcmV0ID0gZnVzYjMwMl9pMmNfd3JpdGUoY2hpcCwgRlVTQl9SRUdfTUVB U1VSRSwgcmRfbWRhKTsKPj4gICAJaWYgKHJldCA8IDApCj4+IEBAIC0xNTA5LDEwICsxNTU2LDgg QEAgc3RhdGljIGlycXJldHVybl90IGZ1c2IzMDJfaXJxX2ludG4oaW50IGlycSwgdm9pZCAqZGV2 X2lkKQo+PiAgIAkJCSAgICBjb21wX3Jlc3VsdCA/ICJ0cnVlIiA6ICJmYWxzZSIpOwo+PiAgIAkJ aWYgKGNvbXBfcmVzdWx0KSB7Cj4+ICAgCQkJLyogY2MgbGV2ZWwgPiBSZF90aHJlYXNob2xkLCBk ZXRhY2ggKi8KPj4gLQkJCWlmIChjaGlwLT5jY19wb2xhcml0eSA9PSBUWVBFQ19QT0xBUklUWV9D QzEpCj4+IC0JCQkJY2hpcC0+Y2MxID0gVFlQRUNfQ0NfT1BFTjsKPj4gLQkJCWVsc2UKPj4gLQkJ CQljaGlwLT5jYzIgPSBUWVBFQ19DQ19PUEVOOwo+PiArCQkJY2hpcC0+Y2MxID0gVFlQRUNfQ0Nf T1BFTjsKPj4gKwkJCWNoaXAtPmNjMiA9IFRZUEVDX0NDX09QRU47Cj4+ICAgCQkJdGNwbV9jY19j aGFuZ2UoY2hpcC0+dGNwbV9wb3J0KTsKPj4gICAJCX0KPj4gICAJfQo+PiAtLSAKPj4gMi4yMC4x Cj4+Cg==