Re: Added checks for alloc return value in several place.

Mikhail Karpov <[email protected]> Sat, 25 Jul 2026 12:53:46 +0700
Newsgroups gmane.os.hurd.bugs
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------sZiUZ1CmC3fOTmf8puv1Fmbs
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hello,

I've corrected the parts you pointed out.

On Sat, 25 Jul 2026 02:30:07 Samuel Thibault wrote:
 > I'd rather return errno rather than hardcoding ENOMEM whenever possible,
 > in case malloc may have other issues, better report them precisely.
 >
 > (but take care that an intermediate function call may overwrite errno so
 > in some case you need to save it).

Are there any recommendations for when to return errno instead of ENOMEM? If
the function is static and only checks for an error, then I don't think
there's any point in changing ENOMEM to errno. Am I correct in assuming this
primarily applies to library callbacks? I can also check all other malloc,
calloc, and realloc and return errno there if necessary. I'm not worried 
about
the amount of work involved; I just need to know what exactly I need to 
do. :)

Thanks,

-- 
Mikhail Karpov

--------------sZiUZ1CmC3fOTmf8puv1Fmbs
Content-Type: text/x-patch; charset=UTF-8;
 name="0001-Added-checks-for-alloc-return-value-in-several-place.patch"
Content-Disposition: attachment;
 filename*0="0001-Added-checks-for-alloc-return-value-in-several-place.pa";
 filename*1="tch"
Content-Transfer-Encoding: base64

RnJvbSA1OTczZjY5YWZjYmI0ODE0NmQyOGEyZTdhODAzMzg2NjllMjJhZGZlIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIEthcnBvdiA8a2FycG92Lm1peGFpbDI0
QGdtYWlsLmNvbT4KRGF0ZTogU2F0LCAyNSBKdWwgMjAyNiAxMjowMTo1OCArMDcwMApTdWJq
ZWN0OiBbUEFUQ0hdIEFkZGVkIGNoZWNrcyBmb3IgYWxsb2MgcmV0dXJuIHZhbHVlIGluIHNl
dmVyYWwgcGxhY2UKCi0tLQogZGVmcGFnZXIvYmFja2luZy5jICAgICAgICAgICAgICAgICB8
ICA1ICsrKysKIGRlZnBhZ2VyL2RlZnBhZ2VyLmMgICAgICAgICAgICAgICAgfCAyMyArKysr
KysrKysrKystLS0tCiBldGgtbXVsdGlwbGV4ZXIvbmV0ZnNfaW1wbC5jICAgICAgIHwgIDkg
KysrKysrCiBleHQyZnMvZGlyLmMgICAgICAgICAgICAgICAgICAgICAgIHwgMjcgKysrKysr
KysrKysrKysrKystCiBmYXRmcy9mYXQuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMg
KysKIGZhdGZzL3BhZ2VyLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMyArKwogbGliYnBm
L2JwZl9pbXBsLmMgICAgICAgICAgICAgICAgICB8ICA0ICsrKwogbGliZGlza2ZzL2ZpbGUt
Y2hnLmMgICAgICAgICAgICAgICB8ICA3ICsrKysrCiBsaWJwYWdlci9sb2NrLW9iamVjdC5j
ICAgICAgICAgICAgIHwgIDEgKwogbGlicGFnZXIvb2JqZWN0LWluaXQuYyAgICAgICAgICAg
ICB8ICA3ICsrKysrCiBsaWJwYWdlci9wYWdlci1hdHRyLmMgICAgICAgICAgICAgIHwgIDEg
KwogbGlicHMvcHJvY2xpc3QuYyAgICAgICAgICAgICAgICAgICB8ICA2ICsrKy0KIGxpYnBz
L3Byb2NzdGF0LmMgICAgICAgICAgICAgICAgICAgfCAgNiArKysrCiBsaWJzdG9yZS9yZW1h
cC5jICAgICAgICAgICAgICAgICAgIHwgIDkgKysrKystCiBsd2lwL2x3aXAtdXRpbC5jICAg
ICAgICAgICAgICAgICAgIHwgIDkgKysrKystCiBsd2lwL3BmaW5ldC1vcHMuYyAgICAgICAg
ICAgICAgICAgIHwgIDggKysrKysrCiBsd2lwL3BvcnQvbmV0aWYvaWZjb21tb24uYyAgICAg
ICAgIHwgIDMgKysKIGx3aXAvc29ja2V0LW9wcy5jICAgICAgICAgICAgICAgICAgfCAgMyAr
KwogbWFjaC1kZWZwYWdlci9kZWZhdWx0X3BhZ2VyLmMgICAgICB8IDQ0ICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKwogbmZzL29wcy5jICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICA3ICsrKystCiBuZnNkL2NhY2hlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDYg
KysrKwogbmZzZC9mc3lzLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDE4ICsrKysrKysr
KysrLQogbmZzZC9sb29wLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrCiBuZnNk
L3hkci5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKysKIHBmaW5ldC9nbHVlLWlu
Y2x1ZGUvbGludXgva2VybmVsLmggfCAgMyArKwogcGZpbmV0L3NvY2tldC1vcHMuYyAgICAg
ICAgICAgICAgICB8ICAzICsrCiBwcm9jL21ndC5jICAgICAgICAgICAgICAgICAgICAgICAg
IHwgIDEgKwogcHJvY2ZzL2RpcmNhdC5jICAgICAgICAgICAgICAgICAgICB8IDE1ICsrKysr
KysrKy0KIHN0YXJ0dXAvc3RhcnR1cC5jICAgICAgICAgICAgICAgICAgfCAgOSArKysrKysK
IHRlcm0vbWFpbi5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArKwogdGVybS9tdW5n
ZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyICsrCiB0ZXJtL3VzZXJzLmMgICAgICAg
ICAgICAgICAgICAgICAgIHwgMTIgKysrKysrKysKIHRyYW5zL21hZ2ljLmMgICAgICAgICAg
ICAgICAgICAgICAgfCAgMyArLQogdHJhbnMvbmV3LWZpZm8uYyAgICAgICAgICAgICAgICAg
ICB8ICAxICsKIHRyYW5zL3JlbWFwLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMyArKwog
dXRpbHMvbXNncG9ydC5jICAgICAgICAgICAgICAgICAgICB8IDExICsrKysrKysrCiB1dGls
cy9wcy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKysKIHV0aWxzL3NldHRyYW5z
LmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQogMzggZmlsZXMgY2hhbmdlZCwgMjcwIGlu
c2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RlZnBhZ2VyL2Jh
Y2tpbmcuYyBiL2RlZnBhZ2VyL2JhY2tpbmcuYwppbmRleCA1NmZlNjU1MS4uZDI2MWRjYzkg
MTAwNjQ0Ci0tLSBhL2RlZnBhZ2VyL2JhY2tpbmcuYworKysgYi9kZWZwYWdlci9iYWNraW5n
LmMKQEAgLTUwLDYgKzUwLDkgQEAgaW5pdF9iYWNraW5nIChjaGFyICpuYW1lKQogICAKICAg
Ym1hcF9sZW4gPSBiYWNraW5nX3N0b3JlLT5zaXplIC8gdm1fcGFnZV9zaXplIC8gTkJCWTsK
ICAgYm1hcCA9IG1hbGxvYyAoYm1hcF9sZW4pOworICBpZiAoIWJtYXApCisgICAgcmV0dXJu
IGVycm5vOworCiAgIGZvciAoaSA9IDA7IGkgPCBibWFwX2xlbjsgaSsrKQogICAgIGJtYXBb
aV0gPSAweGZmOwogICBibWFwX3JvdG9yID0gYm1hcDsKQEAgLTYwLDYgKzYzLDggQEAgaW5p
dF9iYWNraW5nIChjaGFyICpuYW1lKQogICAgICBzdXJlIHdlIGRvbid0IHRyb21wIG9uIHRo
ZSBtaXNmZWF0dXJlIGluIExpbnV4IG9mIHVzaW5nIHRoZSBmaXJzdAogICAgICBwYWdlIGZv
ciBwZXJtYW5lbnQgZGF0YS4gKi8KICAgKmJtYXBfcm90b3IgfD0gMTsKKworICByZXR1cm4g
MDsKIH0KIAogaW50CmRpZmYgLS1naXQgYS9kZWZwYWdlci9kZWZwYWdlci5jIGIvZGVmcGFn
ZXIvZGVmcGFnZXIuYwppbmRleCAzYjNjZGExZS4uNDUwOGI3NWYgMTAwNjQ0Ci0tLSBhL2Rl
ZnBhZ2VyL2RlZnBhZ2VyLmMKKysrIGIvZGVmcGFnZXIvZGVmcGFnZXIuYwpAQCAtMzMsNyAr
MzMsNyBAQCBzdHJ1Y3QgdXNlcl9wYWdlcl9pbmZvCiAKIC8qIEV4cGFuZCB0aGUgUC0+bWFw
IGFzIG5lY2Vzc2FyeSB0byBoYW5kbGUgYW4gaW5jb21pbmcgcmVxdWVzdCBvZiB0aGUKICAg
IHBhZ2UgYXQgQUREUi4gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAorc3RhdGljIGlubGluZSBl
cnJvcl90CiBleHBhbmRfbWFwIChzdHJ1Y3QgdXNlcl9wYWdlcl9pbmZvICpwLCB2bV9vZmZz
ZXRfdCBhZGRyKQogewogICAvKiBTZWUgaWYgdGhpcyBpcyBiZXlvbmQgdGhlIGN1cnJlbnQg
ZXh0ZW50ICovCkBAIC00NCwxMSArNDQsMTYgQEAgZXhwYW5kX21hcCAoc3RydWN0IHVzZXJf
cGFnZXJfaW5mbyAqcCwgdm1fb2Zmc2V0X3QgYWRkcikKIAogICAgICAgbmV3c2l6ZSA9IHBh
Z2UgKyB2bV9wYWdlX3NpemU7CiAgICAgICBuZXdtYXAgPSByZWFsbG9jIChwYWdlci0+bWFw
LCBzaXplIC8gdm1fcGFnZV9zaXplICogc2l6ZW9mIChvZmZfdCkpOworICAgICAgaWYgKCFu
ZXdtYXApCisJcmV0dXJuIEVOT01FTTsKIAotICAgICAgbWVtc2V0IChwYWdlci0+bWFwICsg
cGFnZXItPnNpemUgLyB2bV9wYWdlX3NpemUgKiBzaXplb2Yob2ZmX3QpLCAwLCAobmV3c2l6
ZSAtIHBhZ2VyLT5zaXplKSAvIHZtX3BhZ2Vfc2l6ZSAqIHNpemVvZihvZmZfdCkpOworICAg
ICAgbWVtc2V0IChwYWdlci0+bWFwICsgcGFnZXItPnNpemUgLyB2bV9wYWdlX3NpemUgKiBz
aXplb2Yob2ZmX3QpLAorCSAgICAgIDAsIChuZXdzaXplIC0gcGFnZXItPnNpemUpIC8gdm1f
cGFnZV9zaXplICogc2l6ZW9mKG9mZl90KSk7CiAgICAgICBwYWdlci0+c2l6ZSA9IG5ld3Np
emU7CiAgICAgICBwYWdlci0+bWFwID0gbmV3bWFwOwogICAgIH0KKworICByZXR1cm4gMDsK
IH0KIAogZXJyb3JfdApAQCAtNjMsMTAgKzY4LDE2IEBAIHBhZ2VyX3JlYWRfcGFnZSAoc3Ry
dWN0IHVzZXJfcGFnZXJfaW5mbyAqcGFnZXIsCiAgIC8qIFdlIG5ldmVyIHJlcXVlc3Qgd3Jp
dGUgbG9ja3MuICovCiAgICp3cml0ZV9sb2NrID0gMDsKIAotICBleHBhbmRfbWFwIChwYWdl
ciwgcGFnZSk7CisgIGVycm9yX3QgZXJyID0gZXhwYW5kX21hcCAocGFnZXIsIHBhZ2UpOwor
ICBpZiAoZXJyKQorICAgIHJldHVybiBlcnI7CiAKICAgaWYgKCFwYWdlci0+bWFwW3Bmbl0p
Ci0gICAgdm1fYWxsb2NhdGUgKG1hY2hfdGFza19zZWxmICgpLCBidWYsIHZtX3BhZ2Vfc2l6
ZSwgMSk7CisgICAgeworICAgICAgZXJyID0gdm1fYWxsb2NhdGUgKG1hY2hfdGFza19zZWxm
ICgpLCBidWYsIHZtX3BhZ2Vfc2l6ZSwgMSk7CisgICAgICBpZiAoZXJyKQorCXJldHVybiBl
cnI7CisgICAgfQogICBlbHNlCiAgICAgewogICAgICAgc3RvcmVfcmVhZCAoYmFja2luZ19z
dG9yZSwgcGFnZXItPm1hcFtwZm5dLCB2bV9wYWdlX3NpemUsIApAQCAtODksNyArMTAwLDkg
QEAgcGFnZXJfd3JpdGVfcGFnZSAoc3RydWN0IHVzZXJfcGFnZXJfaW5mbyAqcGFnZXIsCiAg
IGludCBwZm4gPSBwYWdlIC8gdm1fcGFnZV9zaXplOwogICBzaXplX3QgbndyaXR0ZW47CiAg
IAotICBleHBhbmRfbWFwIChwYWdlciwgcGFnZSk7CisgIGVycm9yX3QgZXJyID0gZXhwYW5k
X21hcCAocGFnZXIsIHBhZ2UpOworICBpZiAoZXJyKQorICAgIHJldHVybiBlcnI7CiAgIAog
ICBpZiAoIXBhZ2VyLT5tYXBbcGZuXSkKICAgICBwYWdlci0+bWFwW3Bmbl0gPSBhbGxvY2F0
ZV9iYWNraW5nX3BhZ2UgKCk7CmRpZmYgLS1naXQgYS9ldGgtbXVsdGlwbGV4ZXIvbmV0ZnNf
aW1wbC5jIGIvZXRoLW11bHRpcGxleGVyL25ldGZzX2ltcGwuYwppbmRleCA4M2EyMzEzMi4u
OTdlYmViNjkgMTAwNjQ0Ci0tLSBhL2V0aC1tdWx0aXBsZXhlci9uZXRmc19pbXBsLmMKKysr
IGIvZXRoLW11bHRpcGxleGVyL25ldGZzX2ltcGwuYwpAQCAtODYsNiArODYsOSBAQCBsb29r
dXAgKGNvbnN0IGNoYXIgKm5hbWUpCiAgIHN0cnVjdCBsbm9kZSAqbG4gPSAoc3RydWN0IGxu
b2RlICopIGxvb2t1cF9kZXZfYnlfbmFtZSAobmFtZSk7CiAKICAgY2hhciAqY29waWVkX25h
bWUgPSBtYWxsb2MgKHN0cmxlbiAobmFtZSkgKyAxKTsKKyAgaWYgKCFjb3BpZWRfbmFtZSkK
KyAgICByZXR1cm4gTlVMTDsKKwogICBzdHJjcHkgKGNvcGllZF9uYW1lLCBuYW1lKTsKICAg
aWYgKGxuKQogICAgIHsKQEAgLTMwNSw2ICszMDgsMTIgQEAgZXJyb3JfdCBuZXRmc19hdHRl
bXB0X2xvb2t1cCAoc3RydWN0IGlvdXNlciAqdXNlciwgc3RydWN0IG5vZGUgKmRpciwKICAg
ICB9CiAKICAgKm5vZGUgPSBsb29rdXAgKG5hbWUpOworICBpZiAoISpub2RlKQorICAgIHsK
KyAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZGlyLT5sb2NrKTsKKyAgICAgIHJldHVy
biBlcnJubzsKKyAgICB9CisKICAgcHRocmVhZF9tdXRleF9sb2NrICgmKCpub2RlKS0+bG9j
ayk7CiAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZGlyLT5sb2NrKTsKICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9leHQyZnMvZGlyLmMgYi9leHQyZnMvZGlyLmMKaW5kZXggNTVmMjY1
NzkuLjc0YTllYTI5IDEwMDY0NAotLS0gYS9leHQyZnMvZGlyLmMKKysrIGIvZXh0MmZzL2Rp
ci5jCkBAIC00OTMsNiArNDkzLDEyIEBAIGRpcnNjYW5ibG9jayAodm1fYWRkcmVzc190IGJs
b2NrYWRkciwgc3RydWN0IG5vZGUgKmRwLCBpbnQgaWR4LAogCXsKIAkgIGRpc2tmc19ub2Rl
X2Rpc2tub2RlIChkcCktPmRpcmVudHMgPQogCSAgICBtYWxsb2MgKChkcC0+ZG5fc3RhdC5z
dF9zaXplIC8gRElSQkxLU0laKSAqIHNpemVvZiAoaW50KSk7CisJICBpZiAoIWRpc2tmc19u
b2RlX2Rpc2tub2RlIChkcCktPmRpcmVudHMpCisJICAgIHsKKwkgICAgICBleHQyX3dhcm5p
bmcgKCJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBkaXJlbnRzIik7CisJICAgICAg
cmV0dXJuIEVOT0VOVDsKKwkgICAgfQorCiAJICBmb3IgKGkgPSAwOyBpIDwgZHAtPmRuX3N0
YXQuc3Rfc2l6ZS9ESVJCTEtTSVo7IGkrKykKIAkgICAgZGlza2ZzX25vZGVfZGlza25vZGUg
KGRwKS0+ZGlyZW50c1tpXSA9IC0xOwogCX0KQEAgLTY4Nyw5ICs2OTMsMTYgQEAgZGlza2Zz
X2RpcmVudGVyX2hhcmQgKHN0cnVjdCBub2RlICpkcCwgY29uc3QgY2hhciAqbmFtZSwgc3Ry
dWN0IG5vZGUgKm5wLAogCSBhbnl0aGluZyBhdCBhbGwuICovCiAgICAgICBpZiAoZGlza2Zz
X25vZGVfZGlza25vZGUgKGRwKS0+ZGlyZW50cykKIAl7Ci0JICBkaXNrZnNfbm9kZV9kaXNr
bm9kZSAoZHApLT5kaXJlbnRzID0KKwkgIGludCAqbmV3X2RpcmVudHMgPQogCSAgICByZWFs
bG9jIChkaXNrZnNfbm9kZV9kaXNrbm9kZSAoZHApLT5kaXJlbnRzLAogCQkgICAgIChkcC0+
ZG5fc3RhdC5zdF9zaXplIC8gRElSQkxLU0laICogc2l6ZW9mIChpbnQpKSk7CisJICBpZiAo
IW5ld19kaXJlbnRzKQorCSAgICB7CisJICAgICAgZXh0Ml93YXJuaW5nICgiRmFpbGVkIHRv
IHJlYWxsb2NhdGUgbWVtb3J5IGZvciBuZXdfZGlyZW50cyIpOworCSAgICAgIHJldHVybiBF
Tk9FTlQ7CisJICAgIH0KKworCSAgZGlza2ZzX25vZGVfZGlza25vZGUgKGRwKS0+ZGlyZW50
cyA9IG5ld19kaXJlbnRzOwogCSAgZm9yIChpID0gb2xkc2l6ZSAvIERJUkJMS1NJWjsKIAkg
ICAgICAgaSA8IGRwLT5kbl9zdGF0LnN0X3NpemUgLyBESVJCTEtTSVo7CiAJICAgICAgIGkr
KykKQEAgLTcwMSw2ICs3MTQsMTIgQEAgZGlza2ZzX2RpcmVudGVyX2hhcmQgKHN0cnVjdCBu
b2RlICpkcCwgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IG5vZGUgKm5wLAogCXsKIAkgIGRp
c2tmc19ub2RlX2Rpc2tub2RlIChkcCktPmRpcmVudHMgPQogCSAgICBtYWxsb2MgKGRwLT5k
bl9zdGF0LnN0X3NpemUgLyBESVJCTEtTSVogKiBzaXplb2YgKGludCkpOworCSAgaWYgKCFk
aXNrZnNfbm9kZV9kaXNrbm9kZSAoZHApLT5kaXJlbnRzKQorCSAgICB7CisJICAgICAgZXh0
Ml93YXJuaW5nICgiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgZGlyZW50cyIpOwor
CSAgICAgIHJldHVybiBFTk9FTlQ7CisJICAgIH0KKwogCSAgZm9yIChpID0gMDsgaSA8IGRw
LT5kbl9zdGF0LnN0X3NpemUgLyBESVJCTEtTSVo7IGkrKykKIAkgICAgZGlza2ZzX25vZGVf
ZGlza25vZGUgKGRwKS0+ZGlyZW50c1tpXSA9IC0xOwogCSAgZGlza2ZzX25vZGVfZGlza25v
ZGUgKGRwKS0+ZGlyZW50c1tkcy0+aWR4XSA9IDE7CkBAIC05MDcsNiArOTI2LDEyIEBAIGRp
c2tmc19nZXRfZGlyZWN0cyAoc3RydWN0IG5vZGUgKmRwLAogICBpZiAoIWRpc2tmc19ub2Rl
X2Rpc2tub2RlIChkcCktPmRpcmVudHMpCiAgICAgewogICAgICAgZGlza2ZzX25vZGVfZGlz
a25vZGUgKGRwKS0+ZGlyZW50cyA9IG1hbGxvYyAobmJsa3MgKiBzaXplb2YgKGludCkpOwor
ICAgICAgaWYgKCFkaXNrZnNfbm9kZV9kaXNrbm9kZSAoZHApLT5kaXJlbnRzKQorCXsKKwkg
IGV4dDJfd2FybmluZyAoIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGRpcmVudHMi
KTsKKwkgIHJldHVybiBFTk9FTlQ7CisJfQorCiAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmJs
a3M7IGkrKykKIAlkaXNrZnNfbm9kZV9kaXNrbm9kZSAoZHApLT5kaXJlbnRzW2ldID0gLTE7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvZmF0ZnMvZmF0LmMgYi9mYXRmcy9mYXQuYwppbmRleCBl
NzY1Mzc2ZC4uNGFmMzIxYzYgMTAwNjQ0Ci0tLSBhL2ZhdGZzL2ZhdC5jCisrKyBiL2ZhdGZz
L2ZhdC5jCkBAIC03Miw2ICs3Miw5IEBAIGZhdF9yZWFkX3NibG9jayAodm9pZCkKICAgc2l6
ZV90IHJlYWQgPSBzaXplb2Yoc3RydWN0IGJvb3Rfc2VjdG9yKTsKIAogICBzYmxvY2sgPSBt
YWxsb2MgKHJlYWQpOworICBpZiAoIXNibG9jaykKKyAgICBlcnJvciAoMSwgRU5PTUVNLCAi
RmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3Igc3VwZXJibG9jay4iKTsKKwogICBlcnIg
PSBzdG9yZV9yZWFkIChzdG9yZSwgMCwgcmVhZCwgKHZvaWQgKiopICZzYmxvY2ssICZyZWFk
KTsKICAgaWYgKGVycikKICAgICBlcnJvciAoMSwgZXJyLCAiQ291bGQgbm90IHJlYWQgc3Vw
ZXJibG9jayIpOwpkaWZmIC0tZ2l0IGEvZmF0ZnMvcGFnZXIuYyBiL2ZhdGZzL3BhZ2VyLmMK
aW5kZXggZTIzMDJjZWMuLmM1NmY5ZjU2IDEwMDY0NAotLS0gYS9mYXRmcy9wYWdlci5jCisr
KyBiL2ZhdGZzL3BhZ2VyLmMKQEAgLTc3Niw2ICs3NzYsOSBAQCBjcmVhdGVfZmF0X3BhZ2Vy
ICh2b2lkKQogCiAgIC8qIFRoZSBkaXNrIHBhZ2VyLiAgKi8KICAgc3RydWN0IHVzZXJfcGFn
ZXJfaW5mbyAqdXBpID0gbWFsbG9jIChzaXplb2YgKHN0cnVjdCB1c2VyX3BhZ2VyX2luZm8p
KTsKKyAgaWYgKCF1cGkpCisgICAgZXJyb3IgKDIsIEVOT01FTSwgIkZhaWxlZCB0byBhbGxv
Y2F0ZSBtZW1vcnkgZm9yIHVzZXJfcGFnZXJfaW5mby4iKTsKKwogICB1cGktPnR5cGUgPSBG
QVQ7CiAgIGRpc2tfcGFnZXJfYnVja2V0ID0gcG9ydHNfY3JlYXRlX2J1Y2tldCAoKTsKICAg
ZGlza2ZzX3N0YXJ0X2Rpc2tfcGFnZXIgKHVwaSwgZGlza19wYWdlcl9idWNrZXQsIE1BWV9D
QUNIRSwgMCwKZGlmZiAtLWdpdCBhL2xpYmJwZi9icGZfaW1wbC5jIGIvbGliYnBmL2JwZl9p
bXBsLmMKaW5kZXggYzc4MTc2YzIuLjM4ZDcxYWJhIDEwMDY0NAotLS0gYS9saWJicGYvYnBm
X2ltcGwuYworKysgYi9saWJicGYvYnBmX2ltcGwuYwpAQCAtNjEyLDYgKzYxMiw4IEBAIG5l
dF9zZXRfZmlsdGVyKGlmX2ZpbHRlcl9saXN0X3QgKmlmcCwgbWFjaF9wb3J0X3QgcmN2X3Bv
cnQsIGludCBwcmlvcml0eSwKIAkJICogYSBub3JtYWwgcGFja2V0IGZpbHRlciBzdHJ1Y3R1
cmUuCiAJCSAqLwogCQlteV9pbmZwID0gKG5ldF9yY3ZfcG9ydF90KSBjYWxsb2MoMSwgc2l6
ZW9mKHN0cnVjdCBuZXRfcmN2X3BvcnQpKTsKKwkJaWYgKCFteV9pbmZwKQorCQkJcmV0dXJu
IChEX05PX01FTU9SWSk7CiAJCW15X2luZnAtPnJjdl9wb3J0ID0gcmN2X3BvcnQ7CiAJCWlz
X25ld19pbmZwID0gVFJVRTsKIAl9IGVsc2UgewpAQCAtNjIyLDYgKzYyNCw4IEBAIG5ldF9z
ZXRfZmlsdGVyKGlmX2ZpbHRlcl9saXN0X3QgKmlmcCwgbWFjaF9wb3J0X3QgcmN2X3BvcnQs
IGludCBwcmlvcml0eSwKIAkJICovCiAJCW15X2luZnAgPSAwOwogCQloYXNoX2VudHAgPSAo
bmV0X2hhc2hfZW50cnlfdCkgY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgbmV0X2hhc2hfZW50
cnkpKTsKKwkJaWYgKCFoYXNoX2VudHApCisJCQlyZXR1cm4gKERfTk9fTUVNT1JZKTsKIAkJ
aXNfbmV3X2luZnAgPSBGQUxTRTsKIAl9CiAKZGlmZiAtLWdpdCBhL2xpYmRpc2tmcy9maWxl
LWNoZy5jIGIvbGliZGlza2ZzL2ZpbGUtY2hnLmMKaW5kZXggMTgxNzBjMjUuLjQwZDFhNGVk
IDEwMDY0NAotLS0gYS9saWJkaXNrZnMvZmlsZS1jaGcuYworKysgYi9saWJkaXNrZnMvZmls
ZS1jaGcuYwpAQCAtNDMsNyArNDMsMTQgQEAgZGlza2ZzX1NfZmlsZV9ub3RpY2VfY2hhbmdl
cyAoc3RydWN0IHByb3RpZCAqY3JlZCwgbWFjaF9wb3J0X3Qgbm90aWZ5KQogICAgICAgcHRo
cmVhZF9tdXRleF91bmxvY2sgKCZucC0+bG9jayk7CiAgICAgICByZXR1cm4gZXJyOwogICAg
IH0KKwogICByZXEgPSBtYWxsb2MgKHNpemVvZiAoc3RydWN0IG1vZHJlcSkpOworICBpZiAo
IXJlcSkKKyAgICB7CisgICAgICBwdGhyZWFkX211dGV4X3VubG9jayAoJm5wLT5sb2NrKTsK
KyAgICAgIHJldHVybiBFTk9NRU07CisgICAgfQorCiAgIHJlcS0+cG9ydCA9IG5vdGlmeTsK
ICAgcmVxLT5uZXh0ID0gbnAtPmZpbGVtb2RfcmVxczsKICAgbnAtPmZpbGVtb2RfcmVxcyA9
IHJlcTsKZGlmZiAtLWdpdCBhL2xpYnBhZ2VyL2xvY2stb2JqZWN0LmMgYi9saWJwYWdlci9s
b2NrLW9iamVjdC5jCmluZGV4IGQ4YTRjMWY4Li4wMTExNGVlMiAxMDA2NDQKLS0tIGEvbGli
cGFnZXIvbG9jay1vYmplY3QuYworKysgYi9saWJwYWdlci9sb2NrLW9iamVjdC5jCkBAIC01
Miw2ICs1Miw3IEBAIF9wYWdlcl9sb2NrX29iamVjdCAoc3RydWN0IHBhZ2VyICpwLAogICAg
ICAgaWYgKCFscikKIAl7CiAJICBsciA9IG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgbG9ja19y
ZXF1ZXN0KSk7CisJICBhc3NlcnRfYmFja3RyYWNlIChscik7CiAJICBsci0+c3RhcnQgPSBv
ZmZzZXQ7CiAJICBsci0+ZW5kID0gb2Zmc2V0ICsgc2l6ZTsKIAkgIGxyLT5wZW5kaW5nX3dy
aXRlcyA9IDA7CmRpZmYgLS1naXQgYS9saWJwYWdlci9vYmplY3QtaW5pdC5jIGIvbGlicGFn
ZXIvb2JqZWN0LWluaXQuYwppbmRleCA2MTlkMjhmMy4uODdiNTVmNDYgMTAwNjQ0Ci0tLSBh
L2xpYnBhZ2VyL29iamVjdC1pbml0LmMKKysrIGIvbGlicGFnZXIvb2JqZWN0LWluaXQuYwpA
QCAtNDMsNiArNDMsMTMgQEAgX3BhZ2VyX1NfbWVtb3J5X29iamVjdF9pbml0IChzdHJ1Y3Qg
cGFnZXIgKnAsCiAgICAgewogI2lmZGVmIEtFUk5FTF9JTklUX1JBQ0UKICAgICAgIHN0cnVj
dCBwZW5kaW5nX2luaXQgKmkgPSBtYWxsb2MgKHNpemVvZiAoc3RydWN0IHBlbmRpbmdfaW5p
dCkpOworICAgICAgaWYgKCFpKQorCXsKKwkgIHByaW50ZiAoImZhaWxlZCB0byBhbGxvY2F0
ZSBtZW1vcnkgZm9yIHBlbmRpbmdfaW5pdCIpOworCSAgcHRocmVhZF9tdXRleF91bmxvY2sg
KCZwLT5pbnRlcmxvY2spOworCSAgcmV0dXJuIEVOT01FTTsKKwl9CisKICAgICAgIHByaW50
ZiAoInBhZ2VyIG91dC1vZi1zZXF1ZW5jZSBpbml0XG4iKTsKICAgICAgIGktPmNvbnRyb2wg
PSBjb250cm9sOwogICAgICAgaS0+bmFtZSA9IG5hbWU7CmRpZmYgLS1naXQgYS9saWJwYWdl
ci9wYWdlci1hdHRyLmMgYi9saWJwYWdlci9wYWdlci1hdHRyLmMKaW5kZXggNDI4MGUyNmQu
LjY2YzliNjFmIDEwMDY0NAotLS0gYS9saWJwYWdlci9wYWdlci1hdHRyLmMKKysrIGIvbGli
cGFnZXIvcGFnZXItYXR0ci5jCkBAIC02NSw2ICs2NSw3IEBAIHBhZ2VyX2NoYW5nZV9hdHRy
aWJ1dGVzIChzdHJ1Y3QgcGFnZXIgKnAsCiAgICAgICBpZiAoIWFyKQogCXsKIAkgIGFyID0g
bWFsbG9jIChzaXplb2YgKHN0cnVjdCBhdHRyaWJ1dGVfcmVxdWVzdCkpOworCSAgYXNzZXJ0
X2JhY2t0cmFjZSAoYXIpOwogCSAgYXItPm1heV9jYWNoZSA9IG1heV9jYWNoZTsKIAkgIGFy
LT5jb3B5X3N0cmF0ZWd5ID0gY29weV9zdHJhdGVneTsKIAkgIGFyLT5hdHRyc19wZW5kaW5n
ID0gMTsKZGlmZiAtLWdpdCBhL2xpYnBzL3Byb2NsaXN0LmMgYi9saWJwcy9wcm9jbGlzdC5j
CmluZGV4IGUxY2U0YzE2Li5iYmJlMDNhNSAxMDA2NDQKLS0tIGEvbGlicHMvcHJvY2xpc3Qu
YworKysgYi9saWJwcy9wcm9jbGlzdC5jCkBAIC0xMjQsNyArMTI0LDExIEBAIHByb2Nfc3Rh
dF9saXN0X2FkZF9waWRzIChzdHJ1Y3QgcHJvY19zdGF0X2xpc3QgKnBwLAogICAgICAgc3Ry
dWN0IHByb2Nfc3RhdCAqKmVuZCA9IHBwLT5wcm9jX3N0YXRzICsgcHAtPm51bV9wcm9jczsK
IAogICAgICAgaWYgKHByb2Nfc3RhdHMpCi0JKnByb2Nfc3RhdHMgPSBORVdWRUMgKHN0cnVj
dCBwcm9jX3N0YXQgKiwgbnVtX3Byb2NzKTsKKwl7CisJICAqcHJvY19zdGF0cyA9IE5FV1ZF
QyAoc3RydWN0IHByb2Nfc3RhdCAqLCBudW1fcHJvY3MpOworCSAgaWYgKCEqcHJvY19zdGF0
cykKKwkgICAgcmV0dXJuIEVOT01FTTsKKwl9CiAKICAgICAgIGZvciAoaSA9IDA7IGkgPCBu
dW1fcHJvY3M7IGkrKykKIAl7CmRpZmYgLS1naXQgYS9saWJwcy9wcm9jc3RhdC5jIGIvbGli
cHMvcHJvY3N0YXQuYwppbmRleCA0ZGU0MjE2ZC4uYTM0ZGE2MzAgMTAwNjQ0Ci0tLSBhL2xp
YnBzL3Byb2NzdGF0LmMKKysrIGIvbGlicHMvcHJvY3N0YXQuYwpAQCAtMjA0LDYgKzIwNCwx
MiBAQCBtZXJnZV9wcm9jaW5mbyAoc3RydWN0IHByb2Nfc3RhdCAqcHMsIHBzX2ZsYWdzX3Qg
bmVlZCwgcHNfZmxhZ3NfdCBoYXZlKQogCSAgcHMtPnRocmVhZF93YWl0cyA9IG1hbGxvYyAo
V0FJVFNfTUFMTE9DX1NJWkUpOwogCSAgcHMtPnRocmVhZF93YWl0c19sZW4gPSBXQUlUU19N
QUxMT0NfU0laRTsKIAkgIHBzLT50aHJlYWRfd2FpdHNfdm1fYWxsb2NlZCA9IDA7CisJICBp
ZiAoISBwcy0+dGhyZWFkX3dhaXRzKQorCSAgICB7CisJICAgICAgaWYgKCEgKGhhdmUgJiBQ
U1RBVF9QUk9DSU5GTykpCisJCWZyZWUgKG5ld19waSk7CisJICAgICAgcmV0dXJuIEVOT01F
TTsKKwkgICAgfQogCX0KICAgICAgIG5ld193YWl0cyA9IHBzLT50aHJlYWRfd2FpdHM7CiAg
ICAgICBuZXdfd2FpdHNfbGVuID0gcHMtPnRocmVhZF93YWl0c19sZW47CmRpZmYgLS1naXQg
YS9saWJzdG9yZS9yZW1hcC5jIGIvbGlic3RvcmUvcmVtYXAuYwppbmRleCBiYmU3ODUwOS4u
NzkzMzk5MjQgMTAwNjQ0Ci0tLSBhL2xpYnN0b3JlL3JlbWFwLmMKKysrIGIvbGlic3RvcmUv
cmVtYXAuYwpAQCAtMzE3LDcgKzMxNywxNCBAQCBzdG9yZV9yZW1hcF9ydW5zIChjb25zdCBz
dHJ1Y3Qgc3RvcmVfcnVuICpydW5zLCBzaXplX3QgbnVtX3J1bnMsCiAgICAgfQogCiAgIGlm
ICh4cnVuc19hbGxvY2VkID4gKm51bV94cnVucykKLSAgICAqeHJ1bnMgPSByZWFsbG9jICgq
eHJ1bnMsICpudW1feHJ1bnMgKiBzaXplb2YgKHN0cnVjdCBzdG9yZV9ydW4pKTsKKyAgICB7
CisgICAgICB2b2lkICpuZXdfeHJ1bnMgPSByZWFsbG9jICgqeHJ1bnMsICpudW1feHJ1bnMK
KwkJCQkJICAqIHNpemVvZiAoc3RydWN0IHN0b3JlX3J1bikpOworICAgICAgaWYgKCFuZXdf
eHJ1bnMpCisJcmV0dXJuIDA7CisKKyAgICAgIHhydW5zID0gbmV3X3hydW5zOworICAgIH0K
IAogICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2x3aXAvbHdpcC11dGlsLmMgYi9sd2lw
L2x3aXAtdXRpbC5jCmluZGV4IDRhODNiOGYwLi4zMmIzNzk2YiAxMDA2NDQKLS0tIGEvbHdp
cC9sd2lwLXV0aWwuYworKysgYi9sd2lwL2x3aXAtdXRpbC5jCkBAIC0xNTAsNyArMTUwLDEw
IEBAIGluaXRfaWZzICh2b2lkICphcmcpCiAgIGludCBpOwogCiAgIGlmIChuZXRpZl9saXN0
ID09IDApCi0gICAgbmV0aWZfbGlzdCA9IGNhbGxvYyAoMSwgc2l6ZW9mIChzdHJ1Y3QgbmV0
aWYpKTsKKyAgICB7CisgICAgICBuZXRpZl9saXN0ID0gY2FsbG9jICgxLCBzaXplb2YgKHN0
cnVjdCBuZXRpZikpOworICAgICAgYXNzZXJ0X2JhY2t0cmFjZSAobmV0aWZfbGlzdCk7Cisg
ICAgfQogCiAgIGlmIChuZXRpZl9saXN0LT5uZXh0ID09IDApCiAgICAgaW5pdF9sb29wYmFj
ayAoKTsKQEAgLTE4Niw2ICsxODksNyBAQCBpbml0X2lmcyAodm9pZCAqYXJnKQogCWNvbnRp
bnVlOwogCiAgICAgICBuZXRpZiA9IGNhbGxvYyAoMSwgc2l6ZW9mIChzdHJ1Y3QgbmV0aWYp
KTsKKyAgICAgIGFzc2VydF9iYWNrdHJhY2UgKG5ldGlmKTsKIAogICAgICAgY3JlYXRlX25l
dGlmX3N0YXRlIChpbi0+ZGV2X25hbWUsICZpZmMpOwogCkBAIC0zNjYsNiArMzcwLDkgQEAg
Y29uZmlndXJlX2RldmljZSAoc3RydWN0IG5ldGlmICpuZXRpZiwgaXA0X2FkZHJfdCBhZGRy
LCBpcDRfYWRkcl90IG5ldG1hc2ssCiAgICAgewogICAgICAgLyogQ2FsbCB1cGRhdGVfaWYo
KSBpbnNpZGUgdGhlIHRjcGlwX3RocmVhZCAqLwogICAgICAgc3RydWN0IHVwZGF0ZV9pZl9h
cmdzICphcmcgPSBjYWxsb2MgKDEsIHNpemVvZiAoc3RydWN0IHVwZGF0ZV9pZl9hcmdzKSk7
CisgICAgICBpZiAoIWFyZykKKyAgICAgICAgcmV0dXJuIEVOT01FTTsKKwogICAgICAgYXJn
LT5uZXRpZiA9IG5ldGlmOwogICAgICAgYXJnLT5hZGRyID0gYWRkcjsKICAgICAgIGFyZy0+
bmV0bWFzayA9IG5ldG1hc2s7CmRpZmYgLS1naXQgYS9sd2lwL3BmaW5ldC1vcHMuYyBiL2x3
aXAvcGZpbmV0LW9wcy5jCmluZGV4IDA3NTVmY2IzLi5iOWQyZWYyNSAxMDA2NDQKLS0tIGEv
bHdpcC9wZmluZXQtb3BzLmMKKysrIGIvbHdpcC9wZmluZXQtb3BzLmMKQEAgLTEwNiw2ICsx
MDYsOSBAQCBsd2lwX1NfcGZpbmV0X3Npb2NnaWZjb25mIChpb190IHBvcnQsCiAJICB2b2lk
ICpidWYgPSBtbWFwICgwLCBhbW91bnQsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCiAJCQkg
ICAgTUFQX0FOT04sIDAsIDApOwogCSAgaWYgKGJ1ZiA9PSBNQVBfRkFJTEVEKQorCSAgICAv
KiBTaG91bGQgY2hlY2sgd2hldGhlciBlcnJubyBpcyBpbmRlZWQgRU5PTUVNIC0tCisJICAg
ICAgIGJ1dCB0aGlzIGNhbid0IGJlIGRvbmUgaW4gYSBzdHJhaWdodGZvcndhcmQgd2F5LAor
CSAgICAgICBiZWNhdXNlIHRoZSBnbHVlIGhlYWRlcnMgI3VuZGVmIGVycm5vLiAqLwogCSAg
ICByZXR1cm4gRU5PTUVNOwogCiAJICBpZmMuaWZjX2J1ZiA9IGJ1ZjsKQEAgLTIwOSw2ICsy
MTIsOCBAQCBsd2lwX1NfcGZpbmV0X2dldHJvdXRlcyAoaW9fdCBwb3J0LAogICAgICpkZWFs
bG9jX2RhdGEgPSBGQUxTRTsKIAogICBydGFibGUgPSBjYWxsb2MgKE1BWF9ST1VURVMsIHNp
emVvZiAoaWZydHJlcV90KSk7CisgIGlmICghcnRhYmxlKQorICAgIHJldHVybiBFTk9NRU07
CiAKICAgYXZhaWxhYmxlX2NvdW50ID0gZ2V0X3JvdXRlcyAocnRhYmxlKTsKIApAQCAtMjMx
LDYgKzIzNiw5IEBAIGx3aXBfU19wZmluZXRfZ2V0cm91dGVzIChpb190IHBvcnQsCiAKICAg
ICBpZiAoKnJvdXRlcyA9PSBNQVBfRkFJTEVEKQogICAgIHsKKyAgICAgIC8qIFNob3VsZCBj
aGVjayB3aGV0aGVyIGVycm5vIGlzIGluZGVlZCBFTk9NRU0gLS0KKwkgYnV0IHRoaXMgY2Fu
J3QgYmUgZG9uZSBpbiBhIHN0cmFpZ2h0Zm9yd2FyZCB3YXksCisJIGJlY2F1c2UgdGhlIGds
dWUgaGVhZGVycyAjdW5kZWYgZXJybm8uICovCiAgICAgICAqbGVuID0gMDsKICAgICAgIHJl
dHVybiBFTk9NRU07CiAgICAgfQpkaWZmIC0tZ2l0IGEvbHdpcC9wb3J0L25ldGlmL2lmY29t
bW9uLmMgYi9sd2lwL3BvcnQvbmV0aWYvaWZjb21tb24uYwppbmRleCBjYzQyOTBhMC4uYTg2
YzRlZGYgMTAwNjQ0Ci0tLSBhL2x3aXAvcG9ydC9uZXRpZi9pZmNvbW1vbi5jCisrKyBiL2x3
aXAvcG9ydC9uZXRpZi9pZmNvbW1vbi5jCkBAIC0xNTYsNiArMTU2LDkgQEAgaWZfY2hhbmdl
X2ZsYWdzIChzdHJ1Y3QgbmV0aWYgKiBuZXRpZiwgdWludDE2X3QgZmxhZ3MpCiAgICAqLwog
ICBzdHJ1Y3QgaWZfY2hhbmdlX2ZsYWdzX2FyZ3MgKmFyZ3MgPQogICAgIGNhbGxvYyAoMSwg
c2l6ZW9mIChzdHJ1Y3QgaWZfY2hhbmdlX2ZsYWdzX2FyZ3MpKTsKKyAgaWYgKCFhcmdzKQor
ICAgIHJldHVybiBFTk9NRU07CisKICAgYXJncy0+bmV0aWYgPSBuZXRpZjsKICAgYXJncy0+
ZmxhZ3MgPSBmbGFnczsKICAgZXJyID0gdGNwaXBfY2FsbGJhY2tfd2FpdChfaWZfY2hhbmdl
X2ZsYWdzLCBhcmdzKTsKZGlmZiAtLWdpdCBhL2x3aXAvc29ja2V0LW9wcy5jIGIvbHdpcC9z
b2NrZXQtb3BzLmMKaW5kZXggNTVmNWE2MDYuLmI0MjJmMjg5IDEwMDY0NAotLS0gYS9sd2lw
L3NvY2tldC1vcHMuYworKysgYi9sd2lwL3NvY2tldC1vcHMuYwpAQCAtMjkxLDYgKzI5MSw5
IEBAIGx3aXBfU19zb2NrZXRfd2hhdGlzX2FkZHJlc3MgKHN0cnVjdCBzb2NrX2FkZHIgKiBh
ZGRyLAogICAgICAgdm9pZCAqYnVmID0gbW1hcCAoMCwgYWRkci0+YWRkcmVzcy5zYS5zYV9s
ZW4sIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCiAgICAgICAgICAgICAgICAgICAgICAgICBN
QVBfQU5PTiwgMCwgMCk7CiAgICAgICBpZiAoYnVmID09IE1BUF9GQUlMRUQpCisgICAgICAg
IC8qIFNob3VsZCBjaGVjayB3aGV0aGVyIGVycm5vIGlzIGluZGVlZCBFTk9NRU0gLS0KKyAg
ICAgICAgICAgYnV0IHRoaXMgY2FuJ3QgYmUgZG9uZSBpbiBhIHN0cmFpZ2h0Zm9yd2FyZCB3
YXksCisgICAgICAgICAgIGJlY2F1c2UgdGhlIGdsdWUgaGVhZGVycyAjdW5kZWYgZXJybm8u
ICovCiAgICAgICAgIHJldHVybiBFTk9NRU07CiAKICAgICAgICpkYXRhID0gYnVmOwpkaWZm
IC0tZ2l0IGEvbWFjaC1kZWZwYWdlci9kZWZhdWx0X3BhZ2VyLmMgYi9tYWNoLWRlZnBhZ2Vy
L2RlZmF1bHRfcGFnZXIuYwppbmRleCBlNTVmYTY0Mi4uODEzYTBhNTMgMTAwNjQ0Ci0tLSBh
L21hY2gtZGVmcGFnZXIvZGVmYXVsdF9wYWdlci5jCisrKyBiL21hY2gtZGVmcGFnZXIvZGVm
YXVsdF9wYWdlci5jCkBAIC0xODgsMTMgKzE4OCwyMCBAQCBuZXdfcGFydGl0aW9uIChjb25z
dCBjaGFyICpuYW1lLCBzdHJ1Y3QgZmlsZV9kaXJlY3QgKmZkcCwKIAlibXNpemUgPSBob3dt
YW55KHNpemUsIE5CX0JNKSAqIHNpemVvZihibV9lbnRyeV90KTsKIAogCXBhcnQgPSAocGFy
dGl0aW9uX3QpIG1hbGxvYyhzaXplb2Yoc3RydWN0IHBhcnQpKTsKKwlpZiAoIXBhcnQpCisJ
ICBwYW5pYygiKGRlZmF1bHQgcGFnZXIpOiBmYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZv
ciBwYXJ0Iik7CiAJcHRocmVhZF9tdXRleF9pbml0KCZwYXJ0LT5wX2xvY2ssIE5VTEwpOwog
CXBhcnQtPm5hbWUJPSAoY2hhciopIG1hbGxvYyhuICsgMSk7CisJaWYgKCFwYXJ0LT5uYW1l
KQorCSAgcGFuaWMoIihkZWZhdWx0IHBhZ2VyKTogZmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9y
eSBmb3IgcGFydC0+bmFtZSIpOwogCXN0cmNweShwYXJ0LT5uYW1lLCBuYW1lKTsKIAlwYXJ0
LT50b3RhbF9zaXplID0gc2l6ZTsKIAlwYXJ0LT5mcmVlCT0gc2l6ZTsKIAlwYXJ0LT5pZAk9
IGlkOwogCXBhcnQtPmJpdG1hcAk9IChibV9lbnRyeV90ICopbWFsbG9jKGJtc2l6ZSk7CisJ
aWYgKCFwYXJ0LT5iaXRtYXApCisJICBwYW5pYygiKGRlZmF1bHQgcGFnZXIpOiAiCisJICAg
ICAgICAiZmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgcGFydC0+Yml0bWFwIik7CiAJ
cGFydC0+Z29pbmdfYXdheT0gRkFMU0U7CiAJcGFydC0+ZmlsZSA9IGZkcDsKIApAQCAtNjMz
LDYgKzY0MCw4IEBAIGRwX21hcF90IHBhZ2VyX2dldF9kaXJlY3RfbWFwKGRwYWdlcl90CXBh
Z2VyKQogCSAgICB9CiAKIAkgICAgbWFwcHRyID0gKGRwX21hcF90KSBtYWxsb2MoYWxsb2Nf
c2l6ZSk7CisJICAgIGlmICghbWFwcHRyKQorCSAgICAgIHBhbmljKCIoZGVmYXVsdCBwYWdl
cik6IGZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIG1hcHB0ciIpOwogCSAgICBmb3Ig
KGVtYXBwdHIgPSAmbWFwcHRyWyhhbGxvY19zaXplLTEpIC8gc2l6ZW9mKHZtX29mZnNldF90
KV07CiAJCSBlbWFwcHRyID49IG1hcHB0cjsKIAkJIGVtYXBwdHItLSkKQEAgLTY4MywxMCAr
NjkyLDE2IEBAIHBhZ2VyX2FsbG9jKGRwYWdlcl90CXBhZ2VyLAogCWlmIChJTkRJUkVDVF9Q
QUdFTUFQKHNpemUpKSB7CiAJCW1hcHB0ciA9ICh2bV9vZmZzZXRfdCAqKQogCQkJbWFsbG9j
KElORElSRUNUX1BBR0VNQVBfU0laRShzaXplKSk7CisJCWlmICghbWFwcHRyKQorCQkJcGFu
aWMoIihkZWZhdWx0IHBhZ2VyKTogIgorCQkJICAgICAgImZhaWxlZCB0byBhbGxvY2F0ZSBt
ZW1vcnkgZm9yIG1hcHB0ciIpOwogCQlmb3IgKGkgPSBJTkRJUkVDVF9QQUdFTUFQX0VOVFJJ
RVMoc2l6ZSk7IC0taSA+PSAwOykKIAkJCW1hcHB0cltpXSA9IDA7CiAJfSBlbHNlIHsKIAkJ
bWFwcHRyID0gKHZtX29mZnNldF90ICopIG1hbGxvYyhQQUdFTUFQX1NJWkUoc2l6ZSkpOwor
CQlpZiAoIW1hcHB0cikKKwkJCXBhbmljKCIoZGVmYXVsdCBwYWdlcik6ICIKKwkJCSAgICAg
ICJmYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBtYXBwdHIiKTsKIAkJZm9yIChpID0g
MDsgaSA8IHNpemU7IGkrKykKIAkJCW1hcHB0cltpXSA9IE5PX0NIRUNLU1VNOwogCX0KQEAg
LTgyOCw2ICs4NDMsOSBAQCBwYWdlcl9leHRlbmQoZHBhZ2VyX3QJcGFnZXIsCiAJICAgICAq
LwogCSAgICBuZXdfbWFwcHRyID0gKGRwX21hcF90KQogCQkJbWFsbG9jKElORElSRUNUX1BB
R0VNQVBfU0laRShuZXdfc2l6ZSkpOworCSAgICBpZiAoIW5ld19tYXBwdHIpCisJCXBhbmlj
KCIoZGVmYXVsdCBwYWdlcik6ICIKKwkJICAgICAgImZhaWxlZCB0byBhbGxvY2F0ZSBtZW1v
cnkgZm9yIG5ld19tYXBwdHIiKTsKIAkgICAgb2xkX21hcHB0ciA9IHBhZ2VyX2dldF9kaXJl
Y3RfbWFwKHBhZ2VyKTsKIAkgICAgZm9yIChpID0gMDsgaSA8IElORElSRUNUX1BBR0VNQVBf
RU5UUklFUyhvbGRfc2l6ZSk7IGkrKykKIAkJbmV3X21hcHB0cltpXSA9IG9sZF9tYXBwdHJb
aV07CkBAIC04MzksNiArODU3LDkgQEAgcGFnZXJfZXh0ZW5kKGRwYWdlcl90CXBhZ2VyLAog
I2lmZGVmCUNIRUNLU1VNCiAJICAgIG5ld19tYXBwdHIgPSAodm1fb2Zmc2V0X3QgKikKIAkJ
CW1hbGxvYyhJTkRJUkVDVF9QQUdFTUFQX1NJWkUobmV3X3NpemUpKTsKKwkgICAgaWYgKCFu
ZXdfbWFwcHRyKQorCQlwYW5pYygiKGRlZmF1bHQgcGFnZXIpOiAiCisJCSAgICAgICJmYWls
ZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBuZXdfbWFwcHRyIik7CiAJICAgIG9sZF9tYXBw
dHIgPSBwYWdlci0+Y2hlY2tzdW07CiAJICAgIGZvciAoaSA9IDA7IGkgPCBJTkRJUkVDVF9Q
QUdFTUFQX0VOVFJJRVMob2xkX3NpemUpOyBpKyspCiAJCW5ld19tYXBwdHJbaV0gPSBvbGRf
bWFwcHRyW2ldOwpAQCAtODczLDYgKzg5NCw5IEBAIHBhZ2VyX2V4dGVuZChkcGFnZXJfdAlw
YWdlciwKIAkgICAgICogQWxsb2NhdGUgbmV3IHNlY29uZC1sZXZlbCBtYXAgZmlyc3QuCiAJ
ICAgICAqLwogCSAgICBuZXdfbWFwcHRyID0gKGRwX21hcF90KSBtYWxsb2MoUEFHRU1BUF9T
SVpFKFBBR0VNQVBfRU5UUklFUykpOworCSAgICBpZiAoIW5ld19tYXBwdHIpCisJCXBhbmlj
KCIoZGVmYXVsdCBwYWdlcik6ICIKKwkJICAgICAgImZhaWxlZCB0byBhbGxvY2F0ZSBtZW1v
cnkgZm9yIG5ld19tYXBwdHIiKTsKIAkgICAgb2xkX21hcHB0ciA9IHBhZ2VyX2dldF9kaXJl
Y3RfbWFwKHBhZ2VyKTsKIAkgICAgZm9yIChpID0gMDsgaSA8IG9sZF9zaXplOyBpKyspCiAJ
CW5ld19tYXBwdHJbaV0gPSBvbGRfbWFwcHRyW2ldOwpAQCAtODk0LDYgKzkxOCw5IEBAIHBh
Z2VyX2V4dGVuZChkcGFnZXJfdAlwYWdlciwKIAkgICAgICovCiAJICAgIG5ld19tYXBwdHIg
PSAoZHBfbWFwX3QpCiAJCQltYWxsb2MoSU5ESVJFQ1RfUEFHRU1BUF9TSVpFKG5ld19zaXpl
KSk7CisJICAgIGlmICghbmV3X21hcHB0cikKKwkJcGFuaWMoIihkZWZhdWx0IHBhZ2VyKTog
IgorCQkgICAgICAiZmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgbmV3X21hcHB0ciIp
OwogCSAgICBuZXdfbWFwcHRyWzBdLmluZGlyZWN0ID0gb2xkX21hcHB0cjsKIAkgICAgZm9y
IChpID0gMTsgaSA8IElORElSRUNUX1BBR0VNQVBfRU5UUklFUyhuZXdfc2l6ZSk7IGkrKykK
IAkJbmV3X21hcHB0cltpXS5pbmRpcmVjdCA9IDA7CkBAIC05MDQsNiArOTMxLDkgQEAgcGFn
ZXJfZXh0ZW5kKGRwYWdlcl90CXBhZ2VyLAogCSAgICAgKiBBbGxvY2F0ZSBuZXcgc2Vjb25k
LWxldmVsIG1hcCBmaXJzdC4KIAkgICAgICovCiAJICAgIG5ld19tYXBwdHIgPSAodm1fb2Zm
c2V0X3QgKiltYWxsb2MoUEFHRU1BUF9TSVpFKFBBR0VNQVBfRU5UUklFUykpOworCSAgICBp
ZiAoIW5ld19tYXBwdHIpCisJCXBhbmljKCIoZGVmYXVsdCBwYWdlcik6ICIKKwkJICAgICAg
ImZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIG5ld19tYXBwdHIiKTsKIAkgICAgb2xk
X21hcHB0ciA9IHBhZ2VyLT5jaGVja3N1bTsKIAkgICAgZm9yIChpID0gMDsgaSA8IG9sZF9z
aXplOyBpKyspCiAJCW5ld19tYXBwdHJbaV0gPSBvbGRfbWFwcHRyW2ldOwpAQCAtOTE3LDYg
Kzk0Nyw5IEBAIHBhZ2VyX2V4dGVuZChkcGFnZXJfdAlwYWdlciwKIAkgICAgICovCiAJICAg
IG5ld19tYXBwdHIgPSAodm1fb2Zmc2V0X3QgKikKIAkJCW1hbGxvYyhJTkRJUkVDVF9QQUdF
TUFQX1NJWkUobmV3X3NpemUpKTsKKwkgICAgaWYgKCFuZXdfbWFwcHRyKQorCQlwYW5pYygi
KGRlZmF1bHQgcGFnZXIpOiAiCisJCSAgICAgICJmYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5
IGZvciBuZXdfbWFwcHRyIik7CiAJICAgIG5ld19tYXBwdHJbMF0gPSAodm1fb2Zmc2V0X3Qp
IG9sZF9tYXBwdHI7CiAJICAgIGZvciAoaSA9IDE7IGkgPCBJTkRJUkVDVF9QQUdFTUFQX0VO
VFJJRVMobmV3X3NpemUpOyBpKyspCiAJCW5ld19tYXBwdHJbaV0gPSAwOwpAQCAtOTMyLDYg
Kzk2NSw5IEBAIHBhZ2VyX2V4dGVuZChkcGFnZXJfdAlwYWdlciwKIAkgKiBFbmxhcmdpbmcg
YSBkaXJlY3QgYmxvY2suCiAJICovCiAJbmV3X21hcHB0ciA9IChkcF9tYXBfdCkJbWFsbG9j
KFBBR0VNQVBfU0laRShuZXdfc2l6ZSkpOworCWlmICghbmV3X21hcHB0cikKKwkgICAgcGFu
aWMoIihkZWZhdWx0IHBhZ2VyKTogIgorCQkgICJmYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5
IGZvciBuZXdfbWFwcHRyIik7CiAJb2xkX21hcHB0ciA9IHBhZ2VyX2dldF9kaXJlY3RfbWFw
KHBhZ2VyKTsKIAlmb3IgKGkgPSAwOyBpIDwgb2xkX3NpemU7IGkrKykKIAkgICAgbmV3X21h
cHB0cltpXSA9IG9sZF9tYXBwdHJbaV07CkBAIC05NDMsNiArOTc5LDkgQEAgcGFnZXJfZXh0
ZW5kKGRwYWdlcl90CXBhZ2VyLAogI2lmZGVmCUNIRUNLU1VNCiAJbmV3X21hcHB0ciA9ICh2
bV9vZmZzZXRfdCAqKQogCQltYWxsb2MoUEFHRU1BUF9TSVpFKG5ld19zaXplKSk7CisJaWYg
KCFuZXdfbWFwcHRyKQorCSAgICBwYW5pYygiKGRlZmF1bHQgcGFnZXIpOiAiCisJCSAgImZh
aWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIG5ld19tYXBwdHIiKTsKIAlvbGRfbWFwcHRy
ID0gcGFnZXItPmNoZWNrc3VtOwogCWZvciAoaSA9IDA7IGkgPCBvbGRfc2l6ZTsgaSsrKQog
CSAgICBuZXdfbWFwcHRyW2ldID0gb2xkX21hcHB0cltpXTsKQEAgLTEwMjEsNiArMTA2MCw5
IEBAIHBhZ2VyX3RydW5jYXRlKGRwYWdlcl90IHBhZ2VyLCB2bV9zaXplX3QgbmV3X3NpemUp
CS8qIGluIHBhZ2VzICovCiAJewogCSAgY29uc3QgZHBfbWFwX3Qgb2xkX21hcHB0ciA9IHBh
Z2VyLT5tYXA7CiAJICBwYWdlci0+bWFwID0gKGRwX21hcF90KSBtYWxsb2MgKElORElSRUNU
X1BBR0VNQVBfU0laRShuZXdfc2l6ZSkpOworCSAgaWYgKCFwYWdlci0+bWFwKQorCSAgICBw
YW5pYygiKGRlZmF1bHQgcGFnZXIpOiAiCisJCSAgImZhaWxlZCB0byBhbGxvY2F0ZSBtZW1v
cnkgZm9yIHBhZ2VyLT5tYXAiKTsKIAkgIG1lbWNweSAocGFnZXItPm1hcCwgb2xkX21hcHB0
ciwgSU5ESVJFQ1RfUEFHRU1BUF9TSVpFKG5ld19zaXplKSk7CiAJICBmcmVlICgoY2hhciAq
KSBvbGRfbWFwcHRyKTsKIAl9CkBAIC0xMDQyLDYgKzEwODQsOCBAQCBwYWdlcl90cnVuY2F0
ZShkcGFnZXJfdCBwYWdlciwgdm1fc2l6ZV90IG5ld19zaXplKQkvKiBpbiBwYWdlcyAqLwog
ICAgICAgLyogTm93IHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgZGlyZWN0IG1hcCBpdHNlbGYu
ICAqLwogICAgICAgY29uc3QgZHBfbWFwX3Qgb2xkX21hcHB0ciA9IHBhZ2VyLT5tYXA7CiAg
ICAgICBwYWdlci0+bWFwID0gKGRwX21hcF90KSBtYWxsb2MgKFBBR0VNQVBfU0laRSAobmV3
X3NpemUpKTsKKyAgICAgIGlmICghcGFnZXItPm1hcCkKKwlwYW5pYygiKGRlZmF1bHQgcGFn
ZXIpOiBmYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBwYWdlci0+bWFwIik7CiAgICAg
ICBtZW1jcHkgKHBhZ2VyLT5tYXAsIG9sZF9tYXBwdHIsIFBBR0VNQVBfU0laRSAobmV3X3Np
emUpKTsKICAgICAgIGZyZWUgKChjaGFyICopIG9sZF9tYXBwdHIpOwogICAgIH0KZGlmZiAt
LWdpdCBhL25mcy9vcHMuYyBiL25mcy9vcHMuYwppbmRleCBhZmZkZDkzMS4uMWJiZjdlMWQg
MTAwNjQ0Ci0tLSBhL25mcy9vcHMuYworKysgYi9uZnMvb3BzLmMKQEAgLTIwODYsMTAgKzIw
ODYsMTUgQEAgbmV0ZnNfYXR0ZW1wdF9ta3N5bWxpbmsgKHN0cnVjdCBpb3VzZXIgKmNyZWQs
CiAgIGlmIChucC0+bm4tPmR0cmFucyA9PSBOT1RfUE9TU0lCTEUpCiAgICAgcmV0dXJuIEVP
UE5PVFNVUFA7CiAKKyAgY2hhciAqbmFtZSA9IG1hbGxvYyAoc3RybGVuIChhcmcpICsgMSk7
CisgIGlmICghbmFtZSkKKyAgICByZXR1cm4gRU5PTUVNOworCiAgIGlmIChucC0+bm4tPmR0
cmFucyA9PSBTWU1MSU5LKQogICAgIGZyZWUgKG5wLT5ubi0+dHJhbnNhcmcubmFtZSk7CiAK
LSAgbnAtPm5uLT50cmFuc2FyZy5uYW1lID0gbWFsbG9jIChzdHJsZW4gKGFyZykgKyAxKTsK
KyAgbnAtPm5uLT50cmFuc2FyZy5uYW1lID0gbmFtZTsKKwogICBzdHJjcHkgKG5wLT5ubi0+
dHJhbnNhcmcubmFtZSwgYXJnKTsKICAgbnAtPm5uLT5kdHJhbnMgPSBTWU1MSU5LOwogICBu
cC0+bm4tPnN0YXRfdXBkYXRlZCA9IDA7CmRpZmYgLS1naXQgYS9uZnNkL2NhY2hlLmMgYi9u
ZnNkL2NhY2hlLmMKaW5kZXggODY0NzM5YzAuLmYxM2E4Y2E1IDEwMDY0NAotLS0gYS9uZnNk
L2NhY2hlLmMKKysrIGIvbmZzZC9jYWNoZS5jCkBAIC0xMDYsMTAgKzEwNiwxMyBAQCBpZHNw
ZWNfbG9va3VwIChpbnQgbnVpZHMsIGludCBuZ2lkcywgaW50ICp1aWRzLCBpbnQgKmdpZHMp
CiAKICAgYXNzZXJ0X2JhY2t0cmFjZSAoc2l6ZW9mICh1aWRfdCkgPT0gc2l6ZW9mIChpbnQp
KTsKICAgaSA9IG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgaWRzcGVjKSk7CisgIGFzc2VydF9i
YWNrdHJhY2UgKGkpOwogICBpLT5udWlkcyA9IG51aWRzOwogICBpLT5uZ2lkcyA9IG5naWRz
OwogICBpLT51aWRzID0gbWFsbG9jIChudWlkcyAqIHNpemVvZiAodWlkX3QpKTsKICAgaS0+
Z2lkcyA9IG1hbGxvYyAobmdpZHMgKiBzaXplb2YgKGdpZF90KSk7CisgIGFzc2VydF9iYWNr
dHJhY2UgKGktPnVpZHMpOworICBhc3NlcnRfYmFja3RyYWNlIChpLT5naWRzKTsKICAgbWVt
Y3B5IChpLT51aWRzLCB1aWRzLCBudWlkcyAqIHNpemVvZiAodWlkX3QpKTsKICAgbWVtY3B5
IChpLT5naWRzLCBnaWRzLCBuZ2lkcyAqIHNpemVvZiAoZ2lkX3QpKTsKICAgaS0+cmVmZXJl
bmNlcyA9IDE7CkBAIC0zMDQsNiArMzA3LDcgQEAgbG9va3VwX2NhY2hlX2hhbmRsZSAoaW50
ICpwLCBzdHJ1Y3QgY2FjaGVfaGFuZGxlICoqY3AsIHN0cnVjdCBpZHNwZWMgKmkpCiAgICAg
fQogCiAgIGMgPSBtYWxsb2MgKHNpemVvZiAoc3RydWN0IGNhY2hlX2hhbmRsZSkpOworICBh
c3NlcnRfYmFja3RyYWNlIChjKTsKICAgbWVtY3B5IChjLT5oYW5kbGUuYXJyYXksIHAsIE5G
UzJfRkhTSVpFKTsKICAgY3JlZF9yZWYgKGkpOwogICBjLT5pZHMgPSBpOwpAQCAtNDQ4LDYg
KzQ1Miw3IEBAIGNyZWF0ZV9jYWNoZWRfaGFuZGxlIChpbnQgZnMsIHN0cnVjdCBjYWNoZV9o
YW5kbGUgKmNyZWRjLCBmaWxlX3QgdXNlcnBvcnQpCiAKICAgLyogQ3JlYXRlIGl0IGFuZXcu
ICAqLwogICBjID0gbWFsbG9jIChzaXplb2YgKHN0cnVjdCBjYWNoZV9oYW5kbGUpKTsKKyAg
YXNzZXJ0X2JhY2t0cmFjZSAoYyk7CiAgIG1lbWNweSAoYy0+aGFuZGxlLmFycmF5LCBmaGFu
ZGxlLmFycmF5LCBORlMyX0ZIU0laRSk7CiAgIGNyZWRfcmVmIChjcmVkYy0+aWRzKTsKICAg
Yy0+aWRzID0gY3JlZGMtPmlkczsKQEAgLTQ5OCw2ICs1MDMsNyBAQCBjaGVja19jYWNoZWRf
cmVwbGllcyAoaW50IHhpZCwKICAgICAgIH0KIAogICBjciA9IG1hbGxvYyAoc2l6ZW9mIChz
dHJ1Y3QgY2FjaGVkX3JlcGx5KSk7CisgIGFzc2VydF9iYWNrdHJhY2UgKGNyKTsKICAgcHRo
cmVhZF9tdXRleF9pbml0ICgmY3ItPmxvY2ssIE5VTEwpOwogICBwdGhyZWFkX211dGV4X2xv
Y2sgKCZjci0+bG9jayk7CiAgIG1lbWNweSAoJmNyLT5zb3VyY2UsIHNlbmRlciwgc2l6ZW9m
IChzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKZGlmZiAtLWdpdCBhL25mc2QvZnN5cy5jIGIvbmZz
ZC9mc3lzLmMKaW5kZXggZjc0NjcxNjUuLmRlZjQ0M2UyIDEwMDY0NAotLS0gYS9uZnNkL2Zz
eXMuYworKysgYi9uZnNkL2ZzeXMuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPGh1
cmQuaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1
ZGUgPGFzc2VydC1iYWNrdHJhY2UuaD4KIAogI2luY2x1ZGUgIm5mc2QuaCIKIApAQCAtNTQs
NiArNTUsMTIgQEAgaW5pdF9maWxlc3lzdGVtcyAodm9pZCkKIAogICBmc3lzdGFibGUgPSAo
c3RydWN0IGZzeXNfc3BlYyAqKSBtYWxsb2MgKChmc3lzdGFibGVzaXplID0gMTApCiAJCQkJ
CSAgICogc2l6ZW9mIChzdHJ1Y3QgZnN5c19zcGVjKSk7CisgIGlmICghZnN5c3RhYmxlKQor
ICAgIHsKKyAgICAgIGVycm9yICgwLCBFTk9NRU0sICJGYWlsZWQgdG8gYWxsb2NhdGUgbWVt
b3J5IGZvciBmc3lzdGFibGUiKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKICAgZm9yIChp
ID0gMDsgaSA8IGZzeXN0YWJsZXNpemU7IGkrKykKICAgICB7CiAgICAgICBmc3lzdGFibGVb
aV0uZnN5cyA9IE1BQ0hfUE9SVF9OVUxMOwpAQCAtOTYsOCArMTAzLDE1IEBAIGluaXRfZmls
ZXN5c3RlbXMgKHZvaWQpCiAKICAgICAgIGlmIChpbmRleCA+PSBmc3lzdGFibGVzaXplKQog
CXsKLQkgIGZzeXN0YWJsZSA9IChzdHJ1Y3QgZnN5c19zcGVjICopCisJICB2b2lkICpuZXdf
ZnN5c3RhYmxlID0KIAkgICAgcmVhbGxvYyAoZnN5c3RhYmxlLCBpbmRleCAqIDIgKiBzaXpl
b2YgKHN0cnVjdCBmc3lzX3NwZWMpKTsKKwkgIGlmICghbmV3X2ZzeXN0YWJsZSkKKwkgICAg
eworCSAgICAgIGVycm9yICgwLCBFTk9NRU0sICJDYW5ub3QgcmVhbGxvY2F0ZSBtZW1vcnkg
Zm9yIGZzeXN0YWJsZSIpOworCSAgICAgIHJldHVybjsKKwkgICAgfQorCisJICBmc3lzdGFi
bGUgPSBuZXdfZnN5c3RhYmxlOwogCSAgZm9yIChpID0gZnN5c3RhYmxlc2l6ZTsgaSA8IGlu
ZGV4ICogMjsgaSsrKQogCSAgICB7CiAJICAgICAgZnN5c3RhYmxlW2ldLmZzeXMgPSBNQUNI
X1BPUlRfTlVMTDsKQEAgLTE5MCw2ICsyMDQsNyBAQCBlbnRlcl9maWxlc3lzdGVtIChjaGFy
ICpuYW1lLCBmaWxlX3Qgcm9vdCkKICAgICAgIGZzeXN0YWJsZSA9IChzdHJ1Y3QgZnN5c19z
cGVjICopIHJlYWxsb2MgKGZzeXN0YWJsZSwKIAkJCQkJCShmc3lzdGFibGVzaXplICogMikK
IAkJCQkJCSogc2l6ZW9mIChzdHJ1Y3QgZnN5c19zcGVjKSk7CisgICAgICBhc3NlcnRfYmFj
a3RyYWNlIChmc3lzdGFibGUpOwogICAgICAgZm9yIChpID0gZnN5c3RhYmxlc2l6ZTsgaSA8
IGZzeXN0YWJsZXNpemUgKiAyOyBpKyspCiAJewogCSAgZnN5c3RhYmxlW2ldLmZzeXMgPSBN
QUNIX1BPUlRfTlVMTDsKQEAgLTE5OSw2ICsyMTQsNyBAQCBlbnRlcl9maWxlc3lzdGVtIChj
aGFyICpuYW1lLCBmaWxlX3Qgcm9vdCkKICAgICB9CiAKICAgZnN5c3RhYmxlW25mc3lzXS5u
YW1lID0gbWFsbG9jIChzdHJsZW4gKG5hbWUpICsgMSk7CisgIGFzc2VydF9iYWNrdHJhY2Ug
KGZzeXN0YWJsZVtuZnN5c10ubmFtZSk7CiAgIHN0cmNweSAoZnN5c3RhYmxlW25mc3lzXS5u
YW1lLCBuYW1lKTsKICAgZmlsZV9nZXRjb250cm9sIChyb290LCAmZnN5c3RhYmxlW25mc3lz
XS5mc3lzKTsKICAgbmZzeXMrKzsKZGlmZiAtLWdpdCBhL25mc2QvbG9vcC5jIGIvbmZzZC9s
b29wLmMKaW5kZXggOGUzYWIyNTEuLjM4NmE5MDQzIDEwMDY0NAotLS0gYS9uZnNkL2xvb3Au
YworKysgYi9uZnNkL2xvb3AuYwpAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSA8c3Ry
aW5nLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxhc3NlcnQtYmFja3RyYWNl
Lmg+CiAKICNpbmNsdWRlICJuZnNkLmgiCiAKQEAgLTgxLDYgKzgyLDcgQEAgc2VydmVyX2xv
b3AgKHZvaWQgKmFyZykKIAlnb3RvIHJlcG9zdF9yZXBseTsKIAogICAgICAgciA9IChpbnQg
KikgKHJidWYgPSBtYWxsb2MgKE1BWElPU0laRSkpOworICAgICAgYXNzZXJ0X2JhY2t0cmFj
ZSAocik7CiAKICAgICAgIGlmIChudG9obCAoKnApICE9IFJQQ19NU0dfVkVSU0lPTikKIAl7
CkBAIC0xNzcsNiArMTc5LDcgQEAgc2VydmVyX2xvb3AgKHZvaWQgKmFyZykKIAkgICAgewog
CSAgICAgIGZyZWUgKHJidWYpOwogCSAgICAgIHIgPSAoaW50ICopIChyYnVmID0gbWFsbG9j
IChhbXQpKTsKKwkgICAgICBhc3NlcnRfYmFja3RyYWNlIChyKTsKIAkgICAgfQogCX0KIApk
aWZmIC0tZ2l0IGEvbmZzZC94ZHIuYyBiL25mc2QveGRyLmMKaW5kZXggOGIxNzU1OTUuLmM0
MGRjMWVkIDEwMDY0NAotLS0gYS9uZnNkL3hkci5jCisrKyBiL25mc2QveGRyLmMKQEAgLTIz
LDYgKzIzLDcgQEAKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0
ZnMuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxhc3NlcnQtYmFja3RyYWNl
Lmg+CiAjaW5jbHVkZSAibmZzZC5oIgogCiAvKiBBbnkgYmV0dGVyIGlkZWFzPyAgKi8KQEAg
LTk2LDYgKzk3LDcgQEAgZGVjb2RlX25hbWUgKGludCAqcCwgY2hhciAqKm5hbWUpCiAgIGxl
biA9IG50b2hsICgqcCk7CiAgIHArKzsKICAgKm5hbWUgPSBtYWxsb2MgKGxlbiArIDEpOwor
ICBhc3NlcnRfYmFja3RyYWNlICgqbmFtZSk7CiAgIG1lbWNweSAoKm5hbWUsIHAsIGxlbik7
CiAgICgqbmFtZSlbbGVuXSA9ICdcMCc7CiAgIHJldHVybiBwICsgSU5UU0laRSAobGVuKTsK
ZGlmZiAtLWdpdCBhL3BmaW5ldC9nbHVlLWluY2x1ZGUvbGludXgva2VybmVsLmggYi9wZmlu
ZXQvZ2x1ZS1pbmNsdWRlL2xpbnV4L2tlcm5lbC5oCmluZGV4IDYyYmEyZmYxLi5lMzRjMGE3
NyAxMDA2NDQKLS0tIGEvcGZpbmV0L2dsdWUtaW5jbHVkZS9saW51eC9rZXJuZWwuaAorKysg
Yi9wZmluZXQvZ2x1ZS1pbmNsdWRlL2xpbnV4L2tlcm5lbC5oCkBAIC00Niw2ICs0Niw5IEBA
IHN0YXRpYyBpbmxpbmUgaW50CiBnZXRuYW1lIChjb25zdCBjaGFyICpuYW1lLCBjaGFyICoq
bmV3cCkKIHsKICAgKm5ld3AgPSBtYWxsb2MgKHN0cmxlbiAobmFtZSkgKyAxKTsKKyAgaWYg
KCEqbmV3cCkKKyAgICByZXR1cm4gRU5PTUVNOworCiAgIHN0cmNweSAoKm5ld3AsIG5hbWUp
OwogICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3BmaW5ldC9zb2NrZXQtb3BzLmMgYi9w
ZmluZXQvc29ja2V0LW9wcy5jCmluZGV4IGZmMmU4MmJiLi41YzU4N2ZhYSAxMDA2NDQKLS0t
IGEvcGZpbmV0L3NvY2tldC1vcHMuYworKysgYi9wZmluZXQvc29ja2V0LW9wcy5jCkBAIC0z
NDksNiArMzQ5LDkgQEAgU19zb2NrZXRfd2hhdGlzX2FkZHJlc3MgKHN0cnVjdCBzb2NrX2Fk
ZHIgKmFkZHIsCiAgICAgICB2b2lkICpuZXdfZGF0YSA9IG1tYXAgKDAsIGFkZHItPmFkZHJl
c3Muc2FfbGVuLCBQUk9UX1JFQUR8UFJPVF9XUklURSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTUFQX0FOT04sIDAsIDApOwogICAgICAgaWYgKG5ld19kYXRhID09IE1BUF9G
QUlMRUQpCisgICAgICAgIC8qIFNob3VsZCBjaGVjayB3aGV0aGVyIGVycm5vIGlzIGluZGVl
ZCBFTk9NRU0gLS0KKyAgICAgICAgICAgYnV0IHRoaXMgY2FuJ3QgYmUgZG9uZSBpbiBhIHN0
cmFpZ2h0Zm9yd2FyZCB3YXksCisgICAgICAgICAgIGJlY2F1c2UgdGhlIGdsdWUgaGVhZGVy
cyAjdW5kZWYgZXJybm8uICovCiAgICAgICAgIHJldHVybiBFTk9NRU07CiAKICAgICAgICpk
YXRhID0gbmV3X2RhdGE7CmRpZmYgLS1naXQgYS9wcm9jL21ndC5jIGIvcHJvYy9tZ3QuYwpp
bmRleCBkY2I2MTlhZi4uMDVhZjgyM2YgMTAwNjQ0Ci0tLSBhL3Byb2MvbWd0LmMKKysrIGIv
cHJvYy9tZ3QuYwpAQCAtODg1LDYgKzg4NSw3IEBAIGNvbXBsZXRlX3Byb2MgKHN0cnVjdCBw
cm9jICpwLCBwaWRfdCBwaWQpCiAgIGlmICghbnVsbGxvZ2luKQogICAgIHsKICAgICAgIG51
bGxsb2dpbiA9IG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgbG9naW4pICsgc2l6ZW9mIChudWxs
c25hbWUpICsgMSk7CisgICAgICBhc3NlcnRfYmFja3RyYWNlIChudWxsbG9naW4pOwogICAg
ICAgbnVsbGxvZ2luLT5sX3JlZmNudCA9IDE7CiAgICAgICBzdHJjcHkgKG51bGxsb2dpbi0+
bF9uYW1lLCBudWxsc25hbWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL3Byb2Nmcy9kaXJjYXQu
YyBiL3Byb2Nmcy9kaXJjYXQuYwppbmRleCA1YTYwODk5YS4uYzI1NzkyN2MgMTAwNjQ0Ci0t
LSBhL3Byb2Nmcy9kaXJjYXQuYworKysgYi9wcm9jZnMvZGlyY2F0LmMKQEAgLTM2LDYgKzM2
LDggQEAgZGlyY2F0X2dldF9jb250ZW50cyAodm9pZCAqaG9vaywgY2hhciAqKmNvbnRlbnRz
LCBzc2l6ZV90ICpjb250ZW50c19sZW4pCiAKICAgcG9zID0gMDsKICAgKmNvbnRlbnRzID0g
bWFsbG9jIChzeiA9IDUxMik7CisgIGlmICghKmNvbnRlbnRzKQorICAgIHJldHVybiBFTk9N
RU07CiAKICAgZm9yIChpPTA7IGkgPCBkY24tPm51bV9kaXJzOyBpKyspCiAgICAgewpAQCAt
NTMsOCArNTUsMTkgQEAgZGlyY2F0X2dldF9jb250ZW50cyAodm9pZCAqaG9vaywgY2hhciAq
KmNvbnRlbnRzLCBzc2l6ZV90ICpjb250ZW50c19sZW4pCiAJICByZXR1cm4gZXJyOwogCX0K
IAorICAgICAgY2hhciAqbmV3X2NvbnRlbnRzOwogICAgICAgd2hpbGUgKHBvcyArIHN1Ymxl
biA+IHN6KQotCSpjb250ZW50cyA9IHJlYWxsb2MgKCpjb250ZW50cywgc3ogKj0gMik7CisJ
eworCSAgbmV3X2NvbnRlbnRzID0gcmVhbGxvYyAoKmNvbnRlbnRzLCBzeiAqPSAyKTsKKwkg
IGlmICghbmV3X2NvbnRlbnRzKQorCSAgICB7CisJICAgICAgZnJlZSAoKmNvbnRlbnRzKTsK
KwkgICAgICAqY29udGVudHMgPSBOVUxMOworCSAgICAgIHJldHVybiBFTk9NRU07CisJICAg
IH0KKworCSAgKmNvbnRlbnRzID0gbmV3X2NvbnRlbnRzOworCX0KIAogICAgICAgbWVtY3B5
ICgqY29udGVudHMgKyBwb3MsIHN1YmNvbiwgc3VibGVuKTsKICAgICAgIHBvcyArPSBzdWJs
ZW47CmRpZmYgLS1naXQgYS9zdGFydHVwL3N0YXJ0dXAuYyBiL3N0YXJ0dXAvc3RhcnR1cC5j
CmluZGV4IGZlNDA5ZjVjLi44YWEwNzhhZiAxMDA2NDQKLS0tIGEvc3RhcnR1cC9zdGFydHVw
LmMKKysrIGIvc3RhcnR1cC9zdGFydHVwLmMKQEAgLTE1ODYsMTAgKzE1ODYsMTkgQEAgU19z
dGFydHVwX3JlcXVlc3Rfbm90aWZpY2F0aW9uIChtYWNoX3BvcnRfdCBzZXJ2ZXIsCiAgICAg
IGNhbGxzOyB0aGlzIGlzIGltcG9ydGFudC4gIFdlIG5lZWQgbGF0ZXIgbm90aWZpY2F0aW9u
IHJlcXVlc3RzCiAgICAgIHRvIGdldCBleGVjdXRlZCBmaXJzdC4gICovCiAgIG50ID0gbWFs
bG9jIChzaXplb2YgKHN0cnVjdCBudGZ5X3Rhc2spKTsKKyAgaWYgKCFudCkKKyAgICByZXR1
cm4gRU5PTUVNOworCiAgIG50LT5ub3RpZnlfcG9ydCA9IG5vdGlmeTsKICAgbnQtPm5leHQg
PSBudGZ5X3Rhc2tzOwogICBudGZ5X3Rhc2tzID0gbnQ7CiAgIG50LT5uYW1lID0gbWFsbG9j
IChzdHJsZW4gKG5hbWUpICsgMSk7CisgIGlmICghbnQtPm5hbWUpCisgICAgeworICAgICAg
ZnJlZSAobnQpOworICAgICAgcmV0dXJuIEVOT01FTTsKKyAgICB9CisKICAgc3RyY3B5IChu
dC0+bmFtZSwgbmFtZSk7CiAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvdGVybS9tYWlu
LmMgYi90ZXJtL21haW4uYwppbmRleCA5OWNlMmM2Ni4uOWMxZDgwN2QgMTAwNjQ0Ci0tLSBh
L3Rlcm0vbWFpbi5jCisrKyBiL3Rlcm0vbWFpbi5jCkBAIC0xMzIsNiArMTMyLDkgQEAgcGFy
c2Vfb3B0IChpbnQgb3B0LCBjaGFyICphcmcsIHN0cnVjdCBhcmdwX3N0YXRlICpzdGF0ZSkK
IAogICAgIGNhc2UgQVJHUF9LRVlfSU5JVDoKICAgICAgIHN0YXRlLT5ob29rID0gY2FsbG9j
ICgxLCBzaXplb2YgKnYpOworICAgICAgaWYgKCFzdGF0ZS0+aG9vaykKKyAgICAgICAgYXJn
cF9mYWlsdXJlIChzdGF0ZSwgRU5PTUVNLCAwLCAiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9y
eSBmb3IiCisJCQkJCSIgc3RhdGUtPmhvb2siKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
QVJHUF9LRVlfRklOSToKICAgICAgIGZyZWUgKHYpOwpkaWZmIC0tZ2l0IGEvdGVybS9tdW5n
ZS5jIGIvdGVybS9tdW5nZS5jCmluZGV4IDA5MDNkZDAzLi5jYTI3YWMxNSAxMDA2NDQKLS0t
IGEvdGVybS9tdW5nZS5jCisrKyBiL3Rlcm0vbXVuZ2UuYwpAQCAtNzUyLDYgKzc1Miw4IEBA
IHJlYWxsb2NhdGVfcXVldWUgKHN0cnVjdCBxdWV1ZSAqcSkKICAgICAgIC8qIE1ha2UgdGhl
IHF1ZXVlIHR3aWNlIGFzIGxhcmdlLiAqLwogICAgICAgbmV3cSA9IG1hbGxvYyAoc2l6ZW9m
IChzdHJ1Y3QgcXVldWUpCiAJCSAgICAgKyBxLT5hcnJheWxlbiAqIDIgKiBzaXplb2YgKHF1
b3RlZF9jaGFyKSk7CisgICAgICBhc3NlcnRfYmFja3RyYWNlIChuZXdxKTsKKwogICAgICAg
bmV3cS0+c3VzcCA9IHEtPnN1c3A7CiAgICAgICBuZXdxLT5sb3dhdCA9IHEtPmxvd2F0Owog
ICAgICAgbmV3cS0+aGl3YXQgPSBxLT5oaXdhdDsKZGlmZiAtLWdpdCBhL3Rlcm0vdXNlcnMu
YyBiL3Rlcm0vdXNlcnMuYwppbmRleCA2Mjk1MzRmZi4uMWRiZjQxZTggMTAwNjQ0Ci0tLSBh
L3Rlcm0vdXNlcnMuYworKysgYi90ZXJtL3VzZXJzLmMKQEAgLTQ0NSw2ICs0NDUsMTEgQEAg
U190ZXJtX29wZW5fY3R0eSAoc3RydWN0IHRyaXZmc19wcm90aWQgKmNyZWQsCiAgICAgICBp
ZiAoIWVycikKIAl7CiAJICBzdHJ1Y3QgcHJvdGlkX2hvb2sgKmhvb2sgPSBtYWxsb2MgKHNp
emVvZiAoc3RydWN0IHByb3RpZF9ob29rKSk7CisJICBpZiAoIWhvb2spCisJICAgIHsKKwkg
ICAgICBwb3J0c19wb3J0X2RlcmVmIChuZXdjcmVkKTsKKwkgICAgICByZXR1cm4gRU5PTUVN
OworCSAgICB9CiAKIAkgIGhvb2stPnBpZCA9IHBpZDsKIAkgIGhvb2stPnBncnAgPSBwZ3Jw
OwpAQCAtMTkzOCw3ICsxOTQzLDE0IEBAIHRyaXZmc19TX2lvX2FzeW5jIChzdHJ1Y3QgdHJp
dmZzX3Byb3RpZCAqY3JlZCwKICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZ2xvYmFs
X2xvY2spOwogICAgICAgcmV0dXJuIEVCQURGOwogICAgIH0KKwogICBhciA9IG1hbGxvYyAo
c2l6ZW9mIChzdHJ1Y3QgYXN5bmNfcmVxKSk7CisgIGlmICghYXIpCisgICAgeworICAgICAg
cHRocmVhZF9tdXRleF91bmxvY2sgKCZnbG9iYWxfbG9jayk7CisgICAgICByZXR1cm4gRU5P
TUVNOworICAgIH0KKwogICBhci0+bm90aWZ5ID0gbm90aWZ5OwogICBhci0+bmV4dCA9IGFz
eW5jX3JlcXVlc3RzOwogICBhc3luY19yZXF1ZXN0cyA9IGFyOwpkaWZmIC0tZ2l0IGEvdHJh
bnMvbWFnaWMuYyBiL3RyYW5zL21hZ2ljLmMKaW5kZXggNzNmZGFlYTMuLmQ3ZTQxNDZhIDEw
MDY0NAotLS0gYS90cmFucy9tYWdpYy5jCisrKyBiL3RyYW5zL21hZ2ljLmMKQEAgLTQyNyw3
ICs0MjcsNyBAQCBwYXJzZV9vcHQgKGludCBvcHQsIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bf
c3RhdGUgKnN0YXRlKQogCSAgdm9pZCAqYnVmID0gbW1hcCAoMCwgZ2V0cGFnZXNpemUgKCks
IFBST1RfUkVBRHxQUk9UX1dSSVRFLAogCQkJICAgIE1BUF9BTk9OLCAwLCAwKTsKIAkgIGlm
IChidWYgPT0gTUFQX0ZBSUxFRCkKLQkgICAgcmV0dXJuIGVycm5vOworCSAgICBhcmdwX2Zh
aWx1cmUgKHN0YXRlLCBlcnJubywgMCwgIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkiKTsK
IAkgIG0tPmRpcmJ1ZiA9IGJ1ZjsKIAkgIHN0cnVjdCBkaXJlbnQgKmQ7CiAJICBkID0gYWRk
IChtLT5kaXJidWYsICIuIik7CkBAIC00NjIsNiArNDYyLDcgQEAgbWFpbiAoaW50IGFyZ2Ms
IGNoYXIgKiphcmd2KQogICBtYWNoX3BvcnRfdCBib290c3RyYXA7CiAgIHN0cnVjdCB0cml2
ZnNfY29udHJvbCAqZnN5czsKICAgc3RydWN0IG1hZ2ljICptID0gY2FsbG9jICgxLCBzaXpl
b2YgKm0pOworICBhc3NlcnRfYmFja3RyYWNlIChtKTsKIAogICBhcmdwX3BhcnNlICgmYXJn
cCwgYXJnYywgYXJndiwgMCwgMCwgbSk7CiAKZGlmZiAtLWdpdCBhL3RyYW5zL25ldy1maWZv
LmMgYi90cmFucy9uZXctZmlmby5jCmluZGV4IDc4ODBlYjI0Li5lZThmNDgyMCAxMDA2NDQK
LS0tIGEvdHJhbnMvbmV3LWZpZm8uYworKysgYi90cmFucy9uZXctZmlmby5jCkBAIC0xMDAs
NiArMTAwLDcgQEAgc3RhdGljIHZvaWQKIGZpZm9fdHJhbnNfY3JlYXRlIChzdHJ1Y3QgZmlm
b190cmFucyAqZnJvbSwgc3RydWN0IGZpZm9fdHJhbnMgKip0cmFucykKIHsKICAgc3RydWN0
IGZpZm9fdHJhbnMgKm5ldyA9IG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZmlmb190cmFucykp
OworICBhc3NlcnRfYmFja3RyYWNlIChuZXcpOwogCiAgIG5ldy0+c2VydmVyID0gMDsKICAg
cHRocmVhZF9tdXRleF9pbml0ICgmbmV3LT5hY3RpdmVfZmlmb19sb2NrLCBOVUxMKTsKZGlm
ZiAtLWdpdCBhL3RyYW5zL3JlbWFwLmMgYi90cmFucy9yZW1hcC5jCmluZGV4IDM5ZDZmZjky
Li5iOTFmZTEwYiAxMDA2NDQKLS0tIGEvdHJhbnMvcmVtYXAuYworKysgYi90cmFucy9yZW1h
cC5jCkBAIC0xMjQsNiArMTI0LDkgQEAgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcs
IHN0cnVjdCBhcmdwX3N0YXRlICpzdGF0ZSkKIAl7CiAJICAvKiBTZWNvbmQgb2YgYSBwYWly
ICovCiAJICBzdHJ1Y3QgcmVtYXAgKnJlbWFwID0gbWFsbG9jIChzaXplb2YgKCpyZW1hcCkp
OworCSAgaWYgKCFyZW1hcCkKKwkgICAgYXJncF9mYWlsdXJlIChzdGF0ZSwgRU5PTUVNLCAw
LCAiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IiCisJCQkJCSAgICAiIHJlbWFwIik7
CiAJICByZW1hcC0+ZnJvbSA9IHJlbWFwX2Zyb207CiAJICByZW1hcC0+dG8gPSBzdHJkdXAg
KGFyZyk7CiAJICByZW1hcC0+bmV4dCA9IHJlbWFwczsKZGlmZiAtLWdpdCBhL3V0aWxzL21z
Z3BvcnQuYyBiL3V0aWxzL21zZ3BvcnQuYwppbmRleCBlM2VhNDMwMi4uNDViMmU4YmYgMTAw
NjQ0Ci0tLSBhL3V0aWxzL21zZ3BvcnQuYworKysgYi91dGlscy9tc2dwb3J0LmMKQEAgLTU1
NSw2ICs1NTUsOCBAQCBhZGRfY21kIChjbWRfZnVuY190IGZ1bmMsIHNpemVfdCBtaW5hcmdz
LCBzaXplX3QgbWF4YXJncywKICAgc3RydWN0IGNtZHNfYXJncF9wYXJhbXMgKnBhcmFtcyA9
IHN0YXRlLT5pbnB1dDsKICAgc2l6ZV90IG51bV9jbWRzID0gKnBhcmFtcy0+bnVtX2NtZHMg
KyAxOwogICBjbWRfdCAqY21kcyA9IHJlYWxsb2MgKCpwYXJhbXMtPmNtZHMsIG51bV9jbWRz
ICogc2l6ZW9mKGNtZF90KSk7CisgIGlmICghY21kcykKKyAgICByZXR1cm4gRU5PTUVNOwog
CiAgICpwYXJhbXMtPmNtZHMgPSBjbWRzOwogICAqcGFyYW1zLT5udW1fY21kcyA9IG51bV9j
bWRzOwpAQCAtNTY1LDYgKzU2NywxMiBAQCBhZGRfY21kIChjbWRfZnVuY190IGZ1bmMsIHNp
emVfdCBtaW5hcmdzLCBzaXplX3QgbWF4YXJncywKICAgaWYgKG1heGFyZ3MpCiAgICAgewog
ICAgICAgY21kLT5hcmdzID0gbWFsbG9jIChtYXhhcmdzICogc2l6ZW9mIChjaGFyICopKTsK
KyAgICAgIGlmICghY21kLT5hcmdzKQorCXsKKwkgIGZyZWUgKGNtZHMpOworCSAgcmV0dXJu
IEVOT01FTTsKKwl9CisKICAgICAgIGlmIChhcmcpCiAJY21kLT5hcmdzW2krK10gPSBhcmc7
CiAgICAgICB3aGlsZSAoaSA8IG1heGFyZ3MKQEAgLTU5Niw2ICs2MDQsOSBAQCBwYXJzZV9j
bWRfb3B0IChpbnQga2V5LCBjaGFyICphcmcsIHN0cnVjdCBhcmdwX3N0YXRlICpzdGF0ZSkK
ICAgICAgICAgICAgICByZS1wYXJzZSBpdCB3aXRoIDIgZGFzaGVzIHByZXBlbmRlZC4gKi8K
IAkgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGFyZykgKyAxOwogCSAgYXJnX2hhY2tfYnVmID0g
cmVhbGxvYyAoYXJnX2hhY2tfYnVmLCAyICsgbGVuKTsKKwkgIGlmICghYXJnX2hhY2tfYnVm
KQorCSAgICBhcmdwX2ZhaWx1cmUgKHN0YXRlLCBFTk9NRU0sIDAsICJGYWlsZWQgdG8gcmVh
bGxvY2F0ZSBtZW1vcnkgZm9yIgorCQkJCQkgICAgIiBhcmdfaGFja19idWYiKTsKIAkgIHN0
YXRlLT5hcmd2Wy0tc3RhdGUtPm5leHRdID0gYXJnX2hhY2tfYnVmOwogCSAgc3RhdGUtPmFy
Z3Zbc3RhdGUtPm5leHRdWzBdID0gJy0nOwogCSAgc3RhdGUtPmFyZ3Zbc3RhdGUtPm5leHRd
WzFdID0gJy0nOwpkaWZmIC0tZ2l0IGEvdXRpbHMvcHMuYyBiL3V0aWxzL3BzLmMKaW5kZXgg
NmEwOGY3MzYuLjE0ZGFjOGRiIDEwMDY0NAotLS0gYS91dGlscy9wcy5jCisrKyBiL3V0aWxz
L3BzLmMKQEAgLTI3Niw2ICsyNzYsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p
CiAJICAgIHsKIAkgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChhcmcpICsgMTsKIAkgICAg
ICBhcmdfaGFja19idWYgPSByZWFsbG9jIChhcmdfaGFja19idWYsIDEgKyBsZW4pOworCSAg
ICAgIGlmICghYXJnX2hhY2tfYnVmKQorCQlyZXR1cm4gRU5PTUVNOwogCSAgICAgIHN0YXRl
LT5hcmd2Wy0tc3RhdGUtPm5leHRdID0gYXJnX2hhY2tfYnVmOwogCSAgICAgIHN0YXRlLT5h
cmd2W3N0YXRlLT5uZXh0XVswXSA9ICctJzsKIAkgICAgICBtZW1jcHkgKCZzdGF0ZS0+YXJn
dltzdGF0ZS0+bmV4dF1bMV0sIGFyZywgbGVuKTsKZGlmZiAtLWdpdCBhL3V0aWxzL3NldHRy
YW5zLmMgYi91dGlscy9zZXR0cmFucy5jCmluZGV4IDE2MjJmNzA4Li4xNDA3NTA0ZCAxMDA2
NDQKLS0tIGEvdXRpbHMvc2V0dHJhbnMuYworKysgYi91dGlscy9zZXR0cmFucy5jCkBAIC0x
MjEsNyArMTIxLDcgQEAgZ2V0X2NyZWRlbnRpYWxzICh2b2lkKQogICAgIHJldHVybiBlcnJu
bzsKIAogICBnaWRzID0gbWFsbG9jIChnaWRzX2xlbiAqIHNpemVvZiAoZ2lkX3QpKTsKLSAg
aWYgKCEgdWlkcykKKyAgaWYgKCEgZ2lkcykKICAgICByZXR1cm4gRU5PTUVNOwogCiAgIGdp
ZHNfbGVuID0gZ2V0Z3JvdXBzIChnaWRzX2xlbiwgZ2lkcyk7Ci0tIAoyLjQzLjAKCg==

--------------sZiUZ1CmC3fOTmf8puv1Fmbs--