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