Re: [PATCH v7] wifi: ath11k: fix resource leak on error in ext IRQ setup
赵金明 <[email protected]> Tue, 28 Jul 2026 14:10:47 +0800
| Newsgroups | org.infradead.lists.ath11k,org.kernel.vger.linux-kernel,org.kernel.vger.linux-wireless |
|---|---|
| Message-ID | <[email protected]> |
VGhhbmtzIGZvciB5b3VyIHJldmlldy4gCkRvIHlvdSBtZWFuIHRoZSBMaW5rIHRhZyBzaG91bGQg YmUgcGxhY2VkIGluIHRoZSBjaGFuZ2Vsb2cgc2VjdGlvbiAoYmVsb3cgLS0tKSByYXRoZXIgdGhh biBpbiB0aGUgY29tbWl0IG1lc3NhZ2UgYm9keT8gCklmIHNvLCBJJ2xsIG1vdmUgaXQgdGhlcmUu IE9yIGlmIGI0IGhhbmRsZXMgdGhlIHRyYWNraW5nIGF1dG9tYXRpY2FsbHksIEkgY2FuIHNpbXBs eSBkcm9wIHRoZSBMaW5rIHRhZy4KClJlZ2FyZHOjrApaaGFvIEppbm1pbmcKCj4KCgoKPgoKCgo+ T24gNy8yOC8yMDI2IDExOjEzIEFNLCBaaGFvSmlubWluZyB3cm90ZToKCgoKPj4gSW4gYXRoMTFr X2FoYl9jb25maWdfaXJxKCksIHdoZW4gYSBDRSByZXF1ZXN0X2lycSgpIGZhaWxzLCB0aGUgZnVu Y3Rpb24KCgoKPj4gcmV0dXJucyB0aGUgZXJyb3IgaW1tZWRpYXRlbHkgd2l0aG91dCBmcmVlaW5n IHRoZSBDRSBJUlFzIHRoYXQgd2VyZQoKCgo+PiBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCBpbiBw cmV2aW91cyBsb29wIGl0ZXJhdGlvbnMuIFRoZSBwcm9iZSBlcnJvcgoKCgo+PiBwYXRoIGRvZXMg bm90IGNhbGwgYXRoMTFrX2FoYl9mcmVlX2lycSgpIGVpdGhlciwgc28gdGhlIHByZXZpb3VzbHkK CgoKPj4gcmVnaXN0ZXJlZCBDRSBJUlEgaGFuZGxlcnMgcmVtYWluIGF0dGFjaGVkIHRvIHRoZSBp bnRlcnJ1cHQgbGluZXMgYW5kCgoKCj4+IGFyZSBuZXZlciByZWxlYXNlZC4KCgoKPj4gCgoKCj4+ IEluIGF0aDExa19haGJfY29uZmlnX2V4dF9pcnEoKSwgd2hlbiBhbiBleHRlcm5hbCByZXF1ZXN0 X2lycSgpIGZhaWxzLAoKCgo+PiB0aGUgZXJyb3IgaXMgb25seSBsb2dnZWQgYW5kIHRoZSBsb29w IGNvbnRpbnVlcy4gVGhlIGZ1bmN0aW9uIHRoZW4KCgoKPj4gcmV0dXJucyAwIGluZGljYXRpbmcg c3VjY2VzcywgbGVhdmluZyB0aGUgZGV2aWNlIGluIGEgcGFydGlhbGx5CgoKCj4+IGNvbmZpZ3Vy ZWQgc3RhdGUgd2hlcmUgc29tZSBleHRlcm5hbCBJUlFzIGFyZSBub3QgcmVnaXN0ZXJlZC4gVGhp cwoKCgo+PiBjYXVzZXMgZW5hYmxlX2lycSgpL2Rpc2FibGVfaXJxKCkvZnJlZV9pcnEoKSB0byBi ZSBjYWxsZWQgb24KCgoKPj4gdW5yZWdpc3RlcmVkIElSUXMgZHVyaW5nIHJ1bnRpbWUgYW5kIHJl bW92ZS9zaHV0ZG93biwgdHJpZ2dlcmluZwoKCgo+PiBXQVJOX09OKCFkZXNjLT5hY3Rpb24pLCBh bmQgbWlzc2luZyBpbnRlcnJ1cHQgaGFuZGxlcnMgbGVhZCB0byBkYXRhCgoKCj4+IGxvc3MuCgoK Cj4+IAoKCgo+PiBBZGRpdGlvbmFsbHksIGlmIGFsbG9jX25ldGRldl9kdW1teSgpIGZhaWxzIGZv ciBhIGxhdGVyIElSUSBncm91cCwgdGhlCgoKCj4+IGZ1bmN0aW9uIHJldHVybnMgLUVOT01FTSB3 aXRob3V0IGZyZWVpbmcgdGhlIGV4dCBJUlFzIGFuZCBuYXBpX25kZXYKCgoKPj4gdGhhdCB3ZXJl IHN1Y2Nlc3NmdWxseSBzZXQgdXAgZm9yIGVhcmxpZXIgZ3JvdXBzLgoKCgo+PiAKCgoKPj4gRml4 IGFsbCB0aHJlZSBpc3N1ZXM6IHByb3BhZ2F0ZSB0aGUgZXJyb3IgdXAgdG8gdGhlIGNhbGxlciBh bmQgdW53aW5kCgoKCj4+IGFsbCBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCBJUlFzIGFuZCBhbGxv Y2F0ZWQgcmVzb3VyY2VzIG9uIGZhaWx1cmUuCgoKCj4+IEFsc28gbW92ZSBhYi0+aXJxX251bVtp cnFfaWR4XSBhc3NpZ25tZW50IGFmdGVyIHJlcXVlc3RfaXJxKCkgc3VjY2VlZHMKCgoKPj4gaW4g dGhlIGV4dCBJUlEgcGF0aCB0byBtYXRjaCB0aGUgQ0UgSVJRIHBhdGggYW5kIGF2b2lkIHN0b3Jp bmcgYSBzdGFsZQoKCgo+PiBJUlEgbnVtYmVyIG9uIGZhaWx1cmUuCgoKCj4+IAoKCgo+PiBMaW5r OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvYjY5MDM1NzItNTJjYy00YzQxLWI5Y2YtNTg0 NWUzODdjMTc2QG9zcy5xdWFsY29tbS5jb20vCgoKCj4KCgoKPnRoaXMgaXMgbm90IHRoZSByaWdo dCB3YXkgdG8gdHJhY2sgb2xkIHZlcnNpb25zLiBJZiB3YW50IHRvIGRvIHRoYXQgdGhlIHJpZ2h0 IHBsYWNlIGlzIGluCgoKCj50aGUgY2hhbmdlbG9nLgoKCgo+CgoKCj5Ob3RlIGlmIHlvdSB1c2Ug YjQgdG9vbCB0aGlzIHRyYWNraW5nIGJ1cmRlbiBjYW4gYmUgZG9uZSBhdXRvbWF0aWNhbGx5LgoK Cgo+CgoKCj4+IFNpZ25lZC1vZmYtYnk6IFpoYW9KaW5taW5nIDx6aGFvamlubWluZ0B1bmlvbnRl Y2guY29tPgoKCgo+PiAtLS0KCgoKPj4gCgoKCj4+IENoYW5nZXMgaW4gdjc6CgoKCj4+IC0gUmVz ZW5kIGluIGEgbmV3IHRocmVhZC4gTm8gY29udGVudCBjaGFuZ2VzIGZyb20gdjYuCgoKCj4KCgoK PkkgbWVhbiBoZXJlLgoKCgo+CgoKCj4+IAoKCgo+PiBDaGFuZ2VzIGluIHY2OgoKCgo+PiAtIE1v dmUgYWItPmlycV9udW1baXJxX2lkeF0gPSBpcnEgYWZ0ZXIgcmVxdWVzdF9pcnEoKSBzdWNjZWVk cyBpbiB0aGUKCgoKPj4/PyBleHQgSVJRIHBhdGggdG8gbWF0Y2ggdGhlIENFIElSUSBsb2dpYyBh bmQgYXZvaWQgc3RvcmluZyBhIHN0YWxlIElSUQoKCgo+Pj8/IG51bWJlciBvbiBmYWlsdXJlLgoK Cgo+PiAKCgoKPj4gQ2hhbmdlcyBpbiB2NToKCgoKPj4gLSBSZXNlbmQgYXMgYSBmcmVzaCB0aHJl YWQuIE5vIGNvbnRlbnQgY2hhbmdlcyBmcm9tIHY0LgoKCgo+PiAKCgoKPj4gQ2hhbmdlcyBpbiB2 NDoKCgoKPj4gLSBEcm9wIHRoZSBuYXBpX25kZXYgTlVMTCBndWFyZCBpbiBhdGgxMWtfYWhiX2Zy ZWVfZXh0X2lycV9ncnAoKSBhcyBpdAoKCgo+Pj8/IGlzIHVucmVhY2hhYmxlIGluIGFsbCBleGlz dGluZyBjYWxsIHBhdGhzLiBBIHNpbGVudCBndWFyZCBhZ2FpbnN0IGFuCgoKCj4+Pz8gaW1wb3Nz aWJsZSBjb25kaXRpb24gaGlkZXMgYnVncyBpbnN0ZWFkIG9mIGV4cG9zaW5nIHRoZW0uCgoKCj4+ IAoKCgo+PiBDaGFuZ2VzIGluIHYzOgoKCgo+PiAtIEV4dHJhY3QgYXRoMTFrX2FoYl9mcmVlX2V4 dF9pcnFfZ3JwKCkgdG8gaGFuZGxlIHBlci1ncm91cCBleHQgSVJRCgoKCj4+Pz8gY2xlYW51cCBh bmQgcmVmYWN0b3IgYXRoMTFrX2FoYl9mcmVlX2V4dF9pcnEoKSB0byB1c2UgaXQuCgoKCj4+IC0g T24gcmVxdWVzdF9pcnEoKSBmYWlsdXJlIGluIGF0aDExa19haGJfY29uZmlnX2V4dF9pcnEoKSwg aW1tZWRpYXRlbHkKCgoKPj4/PyBjbGVhbiB1cCB0aGUgY3VycmVudCBncm91cCB2aWEgYXRoMTFr X2FoYl9mcmVlX2V4dF9pcnFfZ3JwKCkgYmVmb3JlCgoKCj4+Pz8ganVtcGluZyB0byB0aGUgZXJy b3IgbGFiZWwgdG8gdW53aW5kIGVhcmxpZXIgZ3JvdXBzLgoKCgo+PiAtIE1vdmUgdTMyIG51bV9p cnEgZGVjbGFyYXRpb24gYmVmb3JlIHRoZSBpcnFfZ3JwIGFzc2lnbm1lbnQgdG8gZm9sbG93CgoK Cj4+Pz8gZGVjbGFyYXRpb24tYmVmb3JlLXN0YXRlbWVudCBvcmRlcmluZy4KCgoKPj4gLSBFeHRy YWN0IGF0aDExa19haGJfZnJlZV9jZV9pcnFzKCkgdG8gaGFuZGxlIHBhcnRpYWwvZnVsbCBDRSBJ UlEgY2xlYW51cAoKCgo+Pj8/IGFuZCByZWZhY3RvciBhdGgxMWtfYWhiX2ZyZWVfaXJxKCkgdG8g dXNlIGl0LCByZXBsYWNpbmcgdGhlIGR1cGxpY2F0ZWQKCgoKPj4/PyBlcnJfY2VfaXJxIGNsZWFu dXAgbG9vcCBpbiBhdGgxMWtfYWhiX2NvbmZpZ19pcnEoKS4KCgoKPj4gCgoKCj4+IENoYW5nZXMg aW4gdjI6CgoKCj4+IC0gTW92ZSBgaXJxX2dycGAgZGVjbGFyYXRpb24gZnJvbSBmb3ItbG9vcCBi b2R5IHRvIGZ1bmN0aW9uIHNjb3BlIHRvIGZpeAoKCgo+Pj8/IGNvbXBpbGUgZXJyb3IgaW4gZXJy X3JlcXVlc3RfaXJxIGVycm9yIHBhdGguCgoKCj4+IC0gU2V0IHJldCA9IC1FTk9NRU0gYmVmb3Jl IGdvdG8gZXJyX3JlcXVlc3RfaXJxIG9uIGFsbG9jX25ldGRldl9kdW1teSgpCgoKCj4+Pz8gZmFp bHVyZSB0byBhdm9pZCByZXR1cm5pbmcgdW5pbml0aWFsaXplZCB2YWx1ZS4KCgoKPj4gLSBXaGVu IGF0aDExa19haGJfY29uZmlnX2V4dF9pcnEoKSBmYWlscywgdW53aW5kIHRoZSBhbHJlYWR5LXJl Z2lzdGVyZWQKCgoKPj4/PyBDRSBJUlFzIHZpYSBhIHNoYXJlZCBlcnJfY2VfaXJxIGNsZWFudXAg cGF0aCB0byBhdm9pZCBsZWFraW5nIHRoZW0uCgoKCj4+IAoKCgo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNz L2F0aC9hdGgxMWsvYWhiLmMKCgoKPj4gaW5kZXggMWUxZGVhNDg1NzYwLi5lYzViZjVjOWZkNzkg MTAwNjQ0CgoKCj4+IC0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMK CgoKPj4gKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYwoKCgo+PiBA QCAtNDMxLDM2ICs0MzEsNDQgQEAgc3RhdGljIHZvaWQgYXRoMTFrX2FoYl9pbml0X3FtaV9jZV9j b25maWcoc3RydWN0IGF0aDExa19iYXNlICphYikKCgoKPj4/IAlhYi0+cW1pLnNlcnZpY2VfaW5z X2lkID0gYWItPmh3X3BhcmFtcy5xbWlfc2VydmljZV9pbnNfaWQ7CgoKCj4+PyB9CgoKCj4+PyAK CgoKPj4gLXN0YXRpYyB2b2lkIGF0aDExa19haGJfZnJlZV9leHRfaXJxKHN0cnVjdCBhdGgxMWtf YmFzZSAqYWIpCgoKCj4+ICtzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2ZyZWVfZXh0X2lycV9ncnAo c3RydWN0IGF0aDExa19iYXNlICphYiwKCgoKPj4gKwkJCQkJc3RydWN0IGF0aDExa19leHRfaXJx X2dycCAqaXJxX2dycCkKCgoKPj4/IHsKCgoKPj4gLQlpbnQgaSwgajsKCgoKPj4gLQoKCgo+PiAt CWZvciAoaSA9IDA7IGkgPCBBVEgxMUtfRVhUX0lSUV9HUlBfTlVNX01BWDsgaSsrKSB7CgoKCj4+ IC0JCXN0cnVjdCBhdGgxMWtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSAmYWItPmV4dF9pcnFfZ3Jw W2ldOwoKCgo+PiArCWludCBqOwoKCgo+Pj8gCgoKCj4+IC0JCWZvciAoaiA9IDA7IGogPCBpcnFf Z3JwLT5udW1faXJxOyBqKyspCgoKCj4+IC0JCQlmcmVlX2lycShhYi0+aXJxX251bVtpcnFfZ3Jw LT5pcnFzW2pdXSwgaXJxX2dycCk7CgoKCj4+ICsJZm9yIChqID0gMDsgaiA8IGlycV9ncnAtPm51 bV9pcnE7IGorKykKCgoKPj4gKwkJZnJlZV9pcnEoYWItPmlycV9udW1baXJxX2dycC0+aXJxc1tq XV0sIGlycV9ncnApOwoKCgo+Pj8gCgoKCj4+IC0JCW5ldGlmX25hcGlfZGVsKCZpcnFfZ3JwLT5u YXBpKTsKCgoKPj4gLQkJZnJlZV9uZXRkZXYoaXJxX2dycC0+bmFwaV9uZGV2KTsKCgoKPj4gLQl9 CgoKCj4+ICsJbmV0aWZfbmFwaV9kZWwoJmlycV9ncnAtPm5hcGkpOwoKCgo+PiArCWZyZWVfbmV0 ZGV2KGlycV9ncnAtPm5hcGlfbmRldik7CgoKCj4+PyB9CgoKCj4+PyAKCgoKPj4gLXN0YXRpYyB2 b2lkIGF0aDExa19haGJfZnJlZV9pcnEoc3RydWN0IGF0aDExa19iYXNlICphYikKCgoKPj4gK3N0 YXRpYyB2b2lkIGF0aDExa19haGJfZnJlZV9leHRfaXJxKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIp CgoKCj4+PyB7CgoKCj4+IC0JaW50IGlycV9pZHg7CgoKCj4+PyAJaW50IGk7CgoKCj4+PyAKCgoK Pj4gLQlpZiAoYWItPmh3X3BhcmFtcy5oeWJyaWRfYnVzX3R5cGUpCgoKCj4+IC0JCXJldHVybiBh dGgxMWtfcGNpY19mcmVlX2lycShhYik7CgoKCj4+ICsJZm9yIChpID0gMDsgaSA8IEFUSDExS19F WFRfSVJRX0dSUF9OVU1fTUFYOyBpKyspCgoKCj4+ICsJCWF0aDExa19haGJfZnJlZV9leHRfaXJx X2dycChhYiwgJmFiLT5leHRfaXJxX2dycFtpXSk7CgoKCj4+ICt9CgoKCj4+PyAKCgoKPj4gLQlm b3IgKGkgPSAwOyBpIDwgYWItPmh3X3BhcmFtcy5jZV9jb3VudDsgaSsrKSB7CgoKCj4+ICtzdGF0 aWMgdm9pZCBhdGgxMWtfYWhiX2ZyZWVfY2VfaXJxcyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBp bnQgbWF4X2lkeCkKCgoKPj4gK3sKCgoKPj4gKwlpbnQgaXJxX2lkeCwgaTsKCgoKPj4gKwoKCgo+ PiArCWZvciAoaSA9IDA7IGkgPCBtYXhfaWR4OyBpKyspIHsKCgoKPj4/IAkJaWYgKGF0aDExa19j ZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgJiBDRV9BVFRSX0RJU19JTlRSKQoKCgo+Pj8gCQkJY29u dGludWU7CgoKCj4+PyAJCWlycV9pZHggPSBBVEgxMUtfSVJRX0NFMF9PRkZTRVQgKyBpOwoKCgo+ Pj8gCQlmcmVlX2lycShhYi0+aXJxX251bVtpcnFfaWR4XSwgJmFiLT5jZS5jZV9waXBlW2ldKTsK CgoKPj4/IAl9CgoKCj4+ICt9CgoKCj4+ICsKCgoKPj4gK3N0YXRpYyB2b2lkIGF0aDExa19haGJf ZnJlZV9pcnEoc3RydWN0IGF0aDExa19iYXNlICphYikKCgoKPj4gK3sKCgoKPj4gKwlpZiAoYWIt Pmh3X3BhcmFtcy5oeWJyaWRfYnVzX3R5cGUpCgoKCj4+ICsJCXJldHVybiBhdGgxMWtfcGNpY19m cmVlX2lycShhYik7CgoKCj4+PyAKCgoKPj4gKwlhdGgxMWtfYWhiX2ZyZWVfY2VfaXJxcyhhYiwg YWItPmh3X3BhcmFtcy5jZV9jb3VudCk7CgoKCj4+PyAJYXRoMTFrX2FoYl9mcmVlX2V4dF9pcnEo YWIpOwoKCgo+Pj8gfQoKCgo+Pj8gCgoKCj4+IEBAIC01MjQsMjAgKzUzMiwyNSBAQCBzdGF0aWMg aXJxcmV0dXJuX3QgYXRoMTFrX2FoYl9leHRfaW50ZXJydXB0X2hhbmRsZXIoaW50IGlycSwgdm9p ZCAqYXJnKQoKCgo+Pj8gc3RhdGljIGludCBhdGgxMWtfYWhiX2NvbmZpZ19leHRfaXJxKHN0cnVj dCBhdGgxMWtfYmFzZSAqYWIpCgoKCj4+PyB7CgoKCj4+PyAJc3RydWN0IGF0aDExa19od19wYXJh bXMgKmh3ID0gJmFiLT5od19wYXJhbXM7CgoKCj4+ICsJc3RydWN0IGF0aDExa19leHRfaXJxX2dy cCAqaXJxX2dycDsKCgoKPj4/IAlpbnQgaSwgajsKCgoKPj4/IAlpbnQgaXJxOwoKCgo+Pj8gCWlu dCByZXQ7CgoKCj4+PyAKCgoKPj4/IAlmb3IgKGkgPSAwOyBpIDwgQVRIMTFLX0VYVF9JUlFfR1JQ X05VTV9NQVg7IGkrKykgewoKCgo+PiAtCQlzdHJ1Y3QgYXRoMTFrX2V4dF9pcnFfZ3JwICppcnFf Z3JwID0gJmFiLT5leHRfaXJxX2dycFtpXTsKCgoKPj4/IAkJdTMyIG51bV9pcnEgPSAwOwoKCgo+ Pj8gCgoKCj4+ICsJCWlycV9ncnAgPSAmYWItPmV4dF9pcnFfZ3JwW2ldOwoKCgo+PiArCgoKCj4+ PyAJCWlycV9ncnAtPmFiID0gYWI7CgoKCj4+PyAJCWlycV9ncnAtPmdycF9pZCA9IGk7CgoKCj4+ PyAKCgoKPj4/IAkJaXJxX2dycC0+bmFwaV9uZGV2ID0gYWxsb2NfbmV0ZGV2X2R1bW15KDApOwoK Cgo+PiAtCQlpZiAoIWlycV9ncnAtPm5hcGlfbmRldikKCgoKPj4gLQkJCXJldHVybiAtRU5PTUVN OwoKCgo+PiArCQlpZiAoIWlycV9ncnAtPm5hcGlfbmRldikgewoKCgo+PiArCQkJcmV0ID0gLUVO T01FTTsKCgoKPj4gKwkJCWlycV9ncnAtPm51bV9pcnEgPSAwOwoKCgo+PiArCQkJZ290byBlcnJf cmVxdWVzdF9pcnE7CgoKCj4+ICsJCX0KCgoKPj4/IAoKCgo+Pj8gCQluZXRpZl9uYXBpX2FkZChp cnFfZ3JwLT5uYXBpX25kZXYsICZpcnFfZ3JwLT5uYXBpLAoKCgo+Pj8gCQkJPz8/Pz8/IGF0aDEx a19haGJfZXh0X2dycF9uYXBpX3BvbGwpOwoKCgo+PiBAQCAtNTg1LDE0ICs1OTgsMTEgQEAgc3Rh dGljIGludCBhdGgxMWtfYWhiX2NvbmZpZ19leHRfaXJxKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIp CgoKCj4+PyAJCQkJfQoKCgo+Pj8gCQkJfQoKCgo+Pj8gCQl9CgoKCj4+IC0JCWlycV9ncnAtPm51 bV9pcnEgPSBudW1faXJxOwoKCgo+PiAtCgoKCj4+IC0JCWZvciAoaiA9IDA7IGogPCBpcnFfZ3Jw LT5udW1faXJxOyBqKyspIHsKCgoKPj4gKwkJZm9yIChqID0gMDsgaiA8IG51bV9pcnE7IGorKykg ewoKCgo+Pj8gCQkJaW50IGlycV9pZHggPSBpcnFfZ3JwLT5pcnFzW2pdOwoKCgo+Pj8gCgoKCj4+ PyAJCQlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZShhYi0+cGRldiwKCgoKPj4/IAkJCQkJ CT8/Pz8/IGlycV9uYW1lW2lycV9pZHhdKTsKCgoKPj4gLQkJCWFiLT5pcnFfbnVtW2lycV9pZHhd ID0gaXJxOwoKCgo+Pj8gCQkJaXJxX3NldF9zdGF0dXNfZmxhZ3MoaXJxLCBJUlFfTk9BVVRPRU4g fCBJUlFfRElTQUJMRV9VTkxBWlkpOwoKCgo+Pj8gCQkJcmV0ID0gcmVxdWVzdF9pcnEoaXJxLCBh dGgxMWtfYWhiX2V4dF9pbnRlcnJ1cHRfaGFuZGxlciwKCgoKPj4/IAkJCQkJPyBJUlFGX1RSSUdH RVJfUklTSU5HLAoKCgo+PiBAQCAtNjAwLDExICs2MTAsMjQgQEAgc3RhdGljIGludCBhdGgxMWtf YWhiX2NvbmZpZ19leHRfaXJxKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpCgoKCj4+PyAJCQlpZiAo cmV0KSB7CgoKCj4+PyAJCQkJYXRoMTFrX2VycihhYiwgImZhaWxlZCByZXF1ZXN0X2lycSBmb3Ig JWRcbiIsCgoKCj4+PyAJCQkJCT8/IGlycSk7CgoKCj4+ICsJCQkJaXJxX2dycC0+bnVtX2lycSA9 IGo7CgoKCj4+ICsJCQkJYXRoMTFrX2FoYl9mcmVlX2V4dF9pcnFfZ3JwKGFiLCBpcnFfZ3JwKTsK CgoKPj4gKwkJCQlnb3RvIGVycl9yZXF1ZXN0X2lycTsKCgoKPj4/IAkJCX0KCgoKPj4gKwkJCWFi LT5pcnFfbnVtW2lycV9pZHhdID0gaXJxOwoKCgo+Pj8gCQl9CgoKCj4+ICsKCgoKPj4gKwkJaXJx X2dycC0+bnVtX2lycSA9IG51bV9pcnE7CgoKCj4+PyAJfQoKCgo+Pj8gCgoKCj4+PyAJcmV0dXJu IDA7CgoKCj4+ICsKCgoKPj4gK2Vycl9yZXF1ZXN0X2lycToKCgoKPj4gKwlmb3IgKGktLTsgaSA+ PSAwOyBpLS0pIHsKCgoKPj4gKwkJaXJxX2dycCA9ICZhYi0+ZXh0X2lycV9ncnBbaV07CgoKCj4+ ICsJCWF0aDExa19haGJfZnJlZV9leHRfaXJxX2dycChhYiwgaXJxX2dycCk7CgoKCj4+ICsJfQoK Cgo+PiArCXJldHVybiByZXQ7CgoKCj4+PyB9CgoKCj4+PyAKCgoKPj4/IHN0YXRpYyBpbnQgYXRo MTFrX2FoYl9jb25maWdfaXJxKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpCgoKCj4+IEBAIC02Mjks MTYgKzY1MiwyNCBAQCBzdGF0aWMgaW50IGF0aDExa19haGJfY29uZmlnX2lycShzdHJ1Y3QgYXRo MTFrX2Jhc2UgKmFiKQoKCgo+Pj8gCQlyZXQgPSByZXF1ZXN0X2lycShpcnEsIGF0aDExa19haGJf Y2VfaW50ZXJydXB0X2hhbmRsZXIsCgoKCj4+PyAJCQkJPyBJUlFGX1RSSUdHRVJfUklTSU5HLCBp cnFfbmFtZVtpcnFfaWR4XSwKCgoKPj4/IAkJCQk/IGNlX3BpcGUpOwoKCgo+PiAtCQlpZiAocmV0 KQoKCgo+PiArCQlpZiAocmV0KSB7CgoKCj4+ICsJCQlhdGgxMWtfZXJyKGFiLCAiZmFpbGVkIHJl cXVlc3RfaXJxIGZvciAlZFxuIiwgaXJxKTsKCgoKPj4gKwkJCWF0aDExa19haGJfZnJlZV9jZV9p cnFzKGFiLCBpKTsKCgoKPj4/IAkJCXJldHVybiByZXQ7CgoKCj4+ICsJCX0KCgoKPj4/IAoKCgo+ Pj8gCQlhYi0+aXJxX251bVtpcnFfaWR4XSA9IGlycTsKCgoKPj4/IAl9CgoKCj4+PyAKCgoKPj4/ IAkvKiBDb25maWd1cmUgZXh0ZXJuYWwgaW50ZXJydXB0cyAqLwoKCgo+Pj8gCXJldCA9IGF0aDEx a19haGJfY29uZmlnX2V4dF9pcnEoYWIpOwoKCgo+PiArCWlmIChyZXQpIHsKCgoKPj4gKwkJYXRo MTFrX2VycihhYiwgImZhaWxlZCB0byBjb25maWd1cmUgZXh0IGlycTogJWRcbiIsIHJldCk7CgoK Cj4+ICsJCWF0aDExa19haGJfZnJlZV9jZV9pcnFzKGFiLCBhYi0+aHdfcGFyYW1zLmNlX2NvdW50 KTsKCgoKPj4gKwkJcmV0dXJuIHJldDsKCgoKPj4gKwl9CgoKCj4+PyAKCgoKPj4gLQlyZXR1cm4g cmV0OwoKCgo+PiArCXJldHVybiAwOwoKCgo+Pj8gfQoKCgo+Pj8gCgoKCj4+PyBzdGF0aWMgaW50 IGF0aDExa19haGJfbWFwX3NlcnZpY2VfdG9fcGlwZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1 MTYgc2VydmljZV9pZCwKCgoKPgoKCgo+CgoK