Re: mmap on a device returns ENODEV

Alexander Viro (viro@math.psu.edu)
Wed, 8 Dec 1999 20:35:26 -0500 (EST)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

---559023410-2032315143-944703326=:373
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Wed, 8 Dec 1999, Alexander Viro wrote:

[snip]

> Geez... Thanks. Actually I'ld rather finish this story with the
> symlinks-in-pagecache patch first. Could you comment on the variant I've
> sent to you yesterday? It applies to 2.3.31 and seems to work here. I can
> rediff it if you want but that would differ only in one-line offset at
> fs/ext2/inode.c

Argh. OK, version of the patch against -pre2 attached.
Al

---559023410-2032315143-944703326=:373
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=as-patch-21a
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.GSO.4.10.9912082035260.373@weyl.math.psu.edu>
Content-Description:
Content-Disposition: attachment; filename=as-patch-21a

ZGlmZiAtdXJOIGxpbnV4LTIuMy4zMi1wcmUyL2ZzL2F1dG9mcy9zeW1saW5r
LmMgbGludXgtYmlyZC5zeW1saW5rL2ZzL2F1dG9mcy9zeW1saW5rLmMNCi0t
LSBsaW51eC0yLjMuMzItcHJlMi9mcy9hdXRvZnMvc3ltbGluay5jCU1vbiBE
ZWMgIDYgMjI6MDY6MDAgMTk5OQ0KKysrIGxpbnV4LWJpcmQuc3ltbGluay9m
cy9hdXRvZnMvc3ltbGluay5jCVdlZCBEZWMgIDggMjA6MTk6MjYgMTk5OQ0K
QEAgLTEwLDQ5ICsxMCwyMSBAQA0KICAqDQogICogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSAqLw0KIA0KLSNpbmNsdWRlIDxsaW51eC9zdHJpbmcu
aD4NCi0jaW5jbHVkZSA8bGludXgvc2NoZWQuaD4NCiAjaW5jbHVkZSAiYXV0
b2ZzX2kuaCINCiANCiBzdGF0aWMgaW50IGF1dG9mc19yZWFkbGluayhzdHJ1
Y3QgZGVudHJ5ICpkZW50cnksIGNoYXIgKmJ1ZmZlciwgaW50IGJ1ZmxlbikN
CiB7DQotCXN0cnVjdCBhdXRvZnNfc3ltbGluayAqc2w7DQotCWludCBsZW47
DQotDQotCXNsID0gKHN0cnVjdCBhdXRvZnNfc3ltbGluayAqKWRlbnRyeS0+
ZF9pbm9kZS0+dS5nZW5lcmljX2lwOw0KLQlsZW4gPSBzbC0+bGVuOw0KLQlp
ZiAobGVuID4gYnVmbGVuKSBsZW4gPSBidWZsZW47DQotCWNvcHlfdG9fdXNl
cihidWZmZXIsIHNsLT5kYXRhLCBsZW4pOw0KLQlyZXR1cm4gbGVuOw0KKwlj
aGFyICpzPSgoc3RydWN0IGF1dG9mc19zeW1saW5rICopZGVudHJ5LT5kX2lu
b2RlLT51LmdlbmVyaWNfaXApLT5kYXRhOw0KKwlyZXR1cm4gdmZzX3JlYWRs
aW5rKGRlbnRyeSwgYnVmZmVyLCBidWZsZW4sIHMpOw0KIH0NCiANCi1zdGF0
aWMgc3RydWN0IGRlbnRyeSAqIGF1dG9mc19mb2xsb3dfbGluayhzdHJ1Y3Qg
ZGVudHJ5ICpkZW50cnksDQotCQkJCQlzdHJ1Y3QgZGVudHJ5ICpiYXNlLA0K
LQkJCQkJdW5zaWduZWQgaW50IGZvbGxvdykNCitzdGF0aWMgc3RydWN0IGRl
bnRyeSAqYXV0b2ZzX2ZvbGxvd19saW5rKHN0cnVjdCBkZW50cnkgKmRlbnRy
eSwgc3RydWN0IGRlbnRyeSAqYmFzZSwgdW5zaWduZWQgZmxhZ3MpDQogew0K
LQlzdHJ1Y3QgYXV0b2ZzX3N5bWxpbmsgKnNsOw0KLQ0KLQlzbCA9IChzdHJ1
Y3QgYXV0b2ZzX3N5bWxpbmsgKilkZW50cnktPmRfaW5vZGUtPnUuZ2VuZXJp
Y19pcDsNCi0JcmV0dXJuIGxvb2t1cF9kZW50cnkoc2wtPmRhdGEsIGJhc2Us
IGZvbGxvdyk7DQorCWNoYXIgKnM9KChzdHJ1Y3QgYXV0b2ZzX3N5bWxpbmsg
KilkZW50cnktPmRfaW5vZGUtPnUuZ2VuZXJpY19pcCktPmRhdGE7DQorCXJl
dHVybiB2ZnNfZm9sbG93X2xpbmsoZGVudHJ5LCBiYXNlLCBmbGFncywgcyk7
DQogfQ0KIA0KIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGF1dG9mc19zeW1s
aW5rX2lub2RlX29wZXJhdGlvbnMgPSB7DQotCU5VTEwsCQkJLyogZmlsZSBv
cGVyYXRpb25zICovDQotCU5VTEwsCQkJLyogY3JlYXRlICovDQotCU5VTEws
CQkJLyogbG9va3VwICovDQotCU5VTEwsCQkJLyogbGluayAqLw0KLQlOVUxM
LAkJCS8qIHVubGluayAqLw0KLQlOVUxMLAkJCS8qIHN5bWxpbmsgKi8NCi0J
TlVMTCwJCQkvKiBta2RpciAqLw0KLQlOVUxMLAkJCS8qIHJtZGlyICovDQot
CU5VTEwsCQkJLyogbWtub2QgKi8NCi0JTlVMTCwJCQkvKiByZW5hbWUgKi8N
Ci0JYXV0b2ZzX3JlYWRsaW5rLAkvKiByZWFkbGluayAqLw0KLQlhdXRvZnNf
Zm9sbG93X2xpbmssCS8qIGZvbGxvd19saW5rICovDQotCU5VTEwsCQkJLyog
Z2V0X2Jsb2NrICovDQotCU5VTEwsCQkJLyogcmVhZHBhZ2UgKi8NCi0JTlVM
TCwJCQkvKiB3cml0ZXBhZ2UgKi8NCi0JTlVMTCwJCQkvKiB0cnVuY2F0ZSAq
Lw0KLQlOVUxMLAkJCS8qIHBlcm1pc3Npb24gKi8NCi0JTlVMTAkJCS8qIHJl
dmFsaWRhdGUgKi8NCisJcmVhZGxpbms6CWF1dG9mc19yZWFkbGluaywNCisJ
Zm9sbG93X2xpbms6CWF1dG9mc19mb2xsb3dfbGluaw0KIH07DQpkaWZmIC11
ck4gbGludXgtMi4zLjMyLXByZTIvZnMvYnVmZmVyLmMgbGludXgtYmlyZC5z
eW1saW5rL2ZzL2J1ZmZlci5jDQotLS0gbGludXgtMi4zLjMyLXByZTIvZnMv
YnVmZmVyLmMJTW9uIERlYyAgNiAyMjowNjowMSAxOTk5DQorKysgbGludXgt
YmlyZC5zeW1saW5rL2ZzL2J1ZmZlci5jCVdlZCBEZWMgIDggMjA6MTk6MjYg
MTk5OQ0KQEAgLTEzNzgsMTEgKzEzNzgsMTAgQEANCiAJcmV0dXJuIGVycjsN
CiB9DQogDQotaW50IGJsb2NrX3dyaXRlX3JhbmdlKHN0cnVjdCBkZW50cnkg
KmRlbnRyeSwgc3RydWN0IHBhZ2UgKnBhZ2UsDQoraW50IGJsb2NrX3dyaXRl
X3plcm9fcmFuZ2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IHBhZ2Ug
KnBhZ2UsDQogCQl1bnNpZ25lZCB6ZXJvZnJvbSwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sDQogCQljb25zdCBjaGFyICogYnVmKQ0KIHsNCi0Jc3Ry
dWN0IGlub2RlICppbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsNCiAJdW5zaWdu
ZWQgemVyb3RvID0gMCwgYmxvY2tfc3RhcnQsIGJsb2NrX2VuZDsNCiAJdW5z
aWduZWQgbG9uZyBibG9jazsNCiAJaW50IGVyciA9IDAsIHBhcnRpYWwgPSAw
LCBuZWVkX2JhbGFuY2VfZGlydHkgPSAwOw0KQEAgLTE1MDQsNyArMTUwMyw3
IEBADQogDQogaW50IGJsb2NrX3dyaXRlX3BhcnRpYWxfcGFnZShzdHJ1Y3Qg
ZmlsZSAqZmlsZSwgc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcg
b2Zmc2V0LCB1bnNpZ25lZCBsb25nIGJ5dGVzLCBjb25zdCBjaGFyICogYnVm
KQ0KIHsNCi0Jc3RydWN0IGRlbnRyeSAqZGVudHJ5ID0gZmlsZS0+Zl9kZW50
cnk7DQorCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlLT5mX2RlbnRyeS0+
ZF9pbm9kZTsNCiAJaW50IGVycjsNCiANCiAJaWYgKCFQYWdlTG9ja2VkKHBh
Z2UpKQ0KQEAgLTE1MTQsNyArMTUxMyw3IEBADQogCWlmIChieXRlcytvZmZz
ZXQgPCAwIHx8IGJ5dGVzK29mZnNldCA+IFBBR0VfU0laRSkNCiAJCUJVRygp
Ow0KIA0KLQllcnIgPSBibG9ja193cml0ZV9yYW5nZShkZW50cnksIHBhZ2Us
IG9mZnNldCxvZmZzZXQsb2Zmc2V0K2J5dGVzLCBidWYpOw0KKwllcnIgPSBi
bG9ja193cml0ZV9yYW5nZShpbm9kZSwgcGFnZSwgb2Zmc2V0LCBieXRlcywg
YnVmKTsNCiAJcmV0dXJuIGVyciA/IGVyciA6IGJ5dGVzOw0KIH0NCiANCkBA
IC0xNTI1LDggKzE1MjQsNyBAQA0KIA0KIGludCBibG9ja193cml0ZV9jb250
X3BhZ2Uoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBwYWdlICpwYWdlLCB1
bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBieXRlcywgY29u
c3QgY2hhciAqIGJ1ZikNCiB7DQotCXN0cnVjdCBkZW50cnkgKmRlbnRyeSA9
IGZpbGUtPmZfZGVudHJ5Ow0KLQlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZGVu
dHJ5LT5kX2lub2RlOw0KKwlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+
Zl9kZW50cnktPmRfaW5vZGU7DQogCWludCBlcnI7DQogCXVuc2lnbmVkIHpl
cm9mcm9tID0gb2Zmc2V0Ow0KIA0KQEAgLTE1MzUsNyArMTUzMyw4IEBADQog
CWVsc2UgaWYgKHBhZ2UtPmluZGV4ID09IChpbm9kZS0+aV9zaXplID4+IFBB
R0VfQ0FDSEVfU0hJRlQpICYmDQogCQkgb2Zmc2V0ID4gKGlub2RlLT5pX3Np
emUgJiB+UEFHRV9DQUNIRV9NQVNLKSkNCiAJCXplcm9mcm9tID0gaW5vZGUt
Pmlfc2l6ZSAmIH5QQUdFX0NBQ0hFX01BU0s7DQotCWVyciA9IGJsb2NrX3dy
aXRlX3JhbmdlKGRlbnRyeSwgcGFnZSwgemVyb2Zyb20sb2Zmc2V0LG9mZnNl
dCtieXRlcyxidWYpOw0KKwllcnIgPSBibG9ja193cml0ZV96ZXJvX3Jhbmdl
KGlub2RlLCBwYWdlLCB6ZXJvZnJvbSxvZmZzZXQsb2Zmc2V0K2J5dGVzLA0K
KwkJCQkJYnVmKTsNCiAJcmV0dXJuIGVyciA/IGVyciA6IGJ5dGVzOw0KIH0N
CiANCkBAIC0xODI5LDkgKzE4MjgsOCBAQA0KICAqIG1hcmtfYnVmZmVyX3Vw
dG9kYXRlKCkgZnVuY3Rpb25zIHByb3BhZ2F0ZSBidWZmZXIgc3RhdGUgaW50
byB0aGUNCiAgKiBwYWdlIHN0cnVjdCBvbmNlIElPIGhhcyBjb21wbGV0ZWQu
DQogICovDQotaW50IGJsb2NrX3JlYWRfZnVsbF9wYWdlKHN0cnVjdCBkZW50
cnkgKiBkZW50cnksIHN0cnVjdCBwYWdlICogcGFnZSkNCitzdGF0aWMgaW5s
aW5lIGludCBfX2Jsb2NrX3JlYWRfZnVsbF9wYWdlKHN0cnVjdCBpbm9kZSAq
aW5vZGUsIHN0cnVjdCBwYWdlICpwYWdlKQ0KIHsNCi0Jc3RydWN0IGlub2Rl
ICppbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsNCiAJdW5zaWduZWQgbG9uZyBp
YmxvY2s7DQogCXN0cnVjdCBidWZmZXJfaGVhZCAqYmgsICpoZWFkLCAqYXJy
W01BWF9CVUZfUEVSX1BBR0VdOw0KIAl1bnNpZ25lZCBpbnQgYmxvY2tzaXpl
LCBibG9ja3M7DQpAQCAtMTg4OCw2ICsxODg2LDQ3IEBADQogCWlmIChrYWRk
cikNCiAJCWt1bm1hcChwYWdlKTsNCiAJcmV0dXJuIDA7DQorfQ0KKw0KK2lu
dCBibG9ja19yZWFkX2Z1bGxfcGFnZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnks
IHN0cnVjdCBwYWdlICpwYWdlKQ0KK3sNCisJcmV0dXJuIF9fYmxvY2tfcmVh
ZF9mdWxsX3BhZ2UoZGVudHJ5LT5kX2lub2RlLCBwYWdlKTsNCit9DQorDQor
aW50IGJsb2NrX3N5bWxpbmsoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qg
Y2hhciAqc3ltbmFtZSwgaW50IGxlbikNCit7DQorCXN0cnVjdCBwYWdlICpw
YWdlID0gZ3JhYl9jYWNoZV9wYWdlKCZpbm9kZS0+aV9kYXRhLCAwKTsNCisJ
bW1fc2VnbWVudF90IGZzOw0KKwlpbnQgZXJyID0gLUVOT01FTTsNCisNCisJ
aWYgKCFwYWdlKQ0KKwkJZ290byBmYWlsOw0KKwlmcyA9IGdldF9mcygpOw0K
KwlzZXRfZnMoS0VSTkVMX0RTKTsNCisJZXJyID0gYmxvY2tfd3JpdGVfcmFu
Z2UoaW5vZGUsIHBhZ2UsIDAsIGxlbi0xLCBzeW1uYW1lKTsNCisJc2V0X2Zz
KGZzKTsNCisJaW5vZGUtPmlfc2l6ZSA9IGxlbi0xOw0KKwlpZiAoZXJyKQ0K
KwkJZ290byBmYWlsX3dyaXRlOw0KKwkvKg0KKwkgKiBOb3RpY2UgdGhhdCB3
ZSBhcmUgX25vdF8gZ29pbmcgdG8gYmxvY2sgaGVyZSAtIGVuZCBvZiBwYWdl
IGlzDQorCSAqIHVubWFwcGVkLCBzbyB0aGlzIHdpbGwgb25seSB0cnkgdG8g
bWFwIHRoZSByZXN0IG9mIHBhZ2UsIHNlZQ0KKwkgKiB0aGF0IGl0IGlzIHVu
bWFwcGVkICh0eXBpY2FsbHkgZXZlbiB3aWxsIG5vdCBsb29rIGludG8gaW5v
ZGUgLQ0KKwkgKiAtPmlfc2l6ZSB3aWxsIGJlIGVub3VnaCBmb3IgZXZlcnl0
aGluZykgYW5kIHplcm8gaXQgb3V0Lg0KKwkgKiBPVE9IIGl0J3Mgb2J2aW91
c2x5IGNvcnJlY3QgYW5kIHNob3VsZCBtYWtlIHRoZSBwYWdlIHVwLXRvLWRh
dGUuDQorCSAqLw0KKwllcnIgPSBfX2Jsb2NrX3JlYWRfZnVsbF9wYWdlKGlu
b2RlLCBwYWdlKTsNCisJd2FpdF9vbl9wYWdlKHBhZ2UpOw0KKwlwYWdlX2Nh
Y2hlX3JlbGVhc2UocGFnZSk7DQorCWlmIChlcnIgPCAwKQ0KKwkJZ290byBm
YWlsOw0KKwltYXJrX2lub2RlX2RpcnR5KGlub2RlKTsNCisJcmV0dXJuIDA7
DQorZmFpbF93cml0ZToNCisJVW5sb2NrUGFnZShwYWdlKTsNCisJcGFnZV9j
YWNoZV9yZWxlYXNlKHBhZ2UpOw0KK2ZhaWw6DQorCXJldHVybiBlcnI7DQog
fQ0KIA0KIC8qDQpkaWZmIC11ck4gbGludXgtMi4zLjMyLXByZTIvZnMvY29k
YS9zeW1saW5rLmMgbGludXgtYmlyZC5zeW1saW5rL2ZzL2NvZGEvc3ltbGlu
ay5jDQotLS0gbGludXgtMi4zLjMyLXByZTIvZnMvY29kYS9zeW1saW5rLmMJ
TW9uIERlYyAgNiAyMjowNjowMSAxOTk5DQorKysgbGludXgtYmlyZC5zeW1s
aW5rL2ZzL2NvZGEvc3ltbGluay5jCVdlZCBEZWMgIDggMjA6MTk6MjYgMTk5
OQ0KQEAgLTE0LDkgKzE0LDYgQEANCiAjaW5jbHVkZSA8bGludXgvc3RhdC5o
Pg0KICNpbmNsdWRlIDxsaW51eC9lcnJuby5oPg0KICNpbmNsdWRlIDxsaW51
eC9sb2Nrcy5oPg0KLSNpbmNsdWRlIDxhc20vc2VnbWVudC5oPg0KLSNpbmNs
dWRlIDxhc20vdWFjY2Vzcy5oPg0KLSNpbmNsdWRlIDxsaW51eC9zdHJpbmcu
aD4NCiANCiAjaW5jbHVkZSA8bGludXgvY29kYS5oPg0KICNpbmNsdWRlIDxs
aW51eC9jb2RhX2xpbnV4Lmg+DQpAQCAtMjUsOTcgKzIyLDM0IEBADQogI2lu
Y2x1ZGUgPGxpbnV4L2NvZGFfY2FjaGUuaD4NCiAjaW5jbHVkZSA8bGludXgv
Y29kYV9wcm9jLmg+DQogDQotc3RhdGljIGludCBjb2RhX3JlYWRsaW5rKHN0
cnVjdCBkZW50cnkgKmRlLCBjaGFyICpidWZmZXIsIGludCBsZW5ndGgpOw0K
LXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpjb2RhX2ZvbGxvd19saW5rKHN0cnVj
dCBkZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqLCANCi0JCQkJICAgICAgIHVu
c2lnbmVkIGludCk7DQotDQotc3RydWN0IGlub2RlX29wZXJhdGlvbnMgY29k
YV9zeW1saW5rX2lub2RlX29wZXJhdGlvbnMgPSB7DQotCU5VTEwsCQkJLyog
bm8gZmlsZS1vcGVyYXRpb25zICovDQotCU5VTEwsCQkJLyogY3JlYXRlICov
DQotCU5VTEwsCQkJLyogbG9va3VwICovDQotCU5VTEwsCQkJLyogbGluayAq
Lw0KLQlOVUxMLAkJCS8qIHVubGluayAqLw0KLQlOVUxMLAkJCS8qIHN5bWxp
bmsgKi8NCi0JTlVMTCwJCQkvKiBta2RpciAqLw0KLQlOVUxMLAkJCS8qIHJt
ZGlyICovDQotCU5VTEwsCQkJLyogbWtub2QgKi8NCi0JTlVMTCwJCQkvKiBy
ZW5hbWUgKi8NCi0JY29kYV9yZWFkbGluaywJCS8qIHJlYWRsaW5rICovDQot
CWNvZGFfZm9sbG93X2xpbmssICAgICAJLyogZm9sbG93X2xpbmsgKi8NCi0J
TlVMTCwJCQkvKiBnZXRfYmxvY2sgKi8NCi0JTlVMTCwJCQkvKiByZWFkcGFn
ZSAqLw0KLQlOVUxMLAkJCS8qIHdyaXRlcGFnZSAqLw0KLQlOVUxMLAkJCS8q
IHRydW5jYXRlICovDQotCU5VTEwsICAgICAgICAgICAgCS8qIHBlcm1pc3Np
b24gKi8NCi0gICAgICAgIE5VTEwgICAgICAgICAgICAgICAgICAgIC8qIHJl
dmFsaWRhdGUgKi8NCi19Ow0KLQ0KLXN0YXRpYyBpbnQgY29kYV9yZWFkbGlu
ayhzdHJ1Y3QgZGVudHJ5ICpkZSwgY2hhciAqYnVmZmVyLCBpbnQgbGVuZ3Ro
KQ0KK3N0YXRpYyBpbnQgY29kYV9zeW1saW5rX2ZpbGxlcihzdHJ1Y3QgZGVu
dHJ5ICpkZW50cnksIHN0cnVjdCBwYWdlICpwYWdlKQ0KIHsNCi0Jc3RydWN0
IGlub2RlICppbm9kZSA9IGRlLT5kX2lub2RlOw0KLSAgICAgICAgaW50IGxl
bjsNCi0JaW50IGVycm9yOw0KLSAgICAgICAgY2hhciAqYnVmOw0KLQlzdHJ1
Y3QgY29kYV9pbm9kZV9pbmZvICpjcDsNCi0gICAgICAgIEVOVFJZOw0KLQ0K
LSAgICAgICAgY3AgPSBJVE9DKGlub2RlKTsNCi0JY29kYV92ZnNfc3RhdC5y
ZWFkbGluaysrOw0KLQ0KLSAgICAgICAgLyogdGhlIG1heGltdW0gbGVuZ3Ro
IHdlIHJlY2VpdmUgaXMgbGVuICovDQotICAgICAgICBpZiAoIGxlbmd0aCA+
IENPREFfTUFYUEFUSExFTiApIA0KLQkgICAgICAgIGxlbiA9IENPREFfTUFY
UEFUSExFTjsNCi0JZWxzZQ0KLQkgICAgICAgIGxlbiA9IGxlbmd0aDsNCi0J
Q09EQV9BTExPQyhidWYsIGNoYXIgKiwgbGVuKTsNCi0JaWYgKCAhYnVmICkg
DQotCSAgICAgICAgcmV0dXJuIC1FTk9NRU07DQotCQ0KLQllcnJvciA9IHZl
bnVzX3JlYWRsaW5rKGlub2RlLT5pX3NiLCAmKGNwLT5jX2ZpZCksIGJ1Ziwg
Jmxlbik7DQotDQotICAgICAgICBDREVCVUcoRF9JTk9ERSwgInJlc3VsdCAl
c1xuIiwgYnVmKTsNCi0JaWYgKCEgZXJyb3IpIHsNCi0JCWNvcHlfdG9fdXNl
cihidWZmZXIsIGJ1ZiwgbGVuKTsNCi0JCXB1dF91c2VyKCdcMCcsIGJ1ZmZl
ciArIGxlbik7DQotCQllcnJvciA9IGxlbjsNCi0JfQ0KLQlpZiAoIGJ1ZiAp
DQotCQlDT0RBX0ZSRUUoYnVmLCBsZW4pOw0KLQlyZXR1cm4gZXJyb3I7DQot
fQ0KLQ0KLXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpjb2RhX2ZvbGxvd19saW5r
KHN0cnVjdCBkZW50cnkgKmRlLCBzdHJ1Y3QgZGVudHJ5ICpiYXNlLA0KLQkJ
CQkgICAgICAgdW5zaWduZWQgaW50IGZvbGxvdykNCi17DQotCXN0cnVjdCBp
bm9kZSAqaW5vZGUgPSBkZS0+ZF9pbm9kZTsNCisJc3RydWN0IGlub2RlICpp
bm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsNCiAJaW50IGVycm9yOw0KIAlzdHJ1
Y3QgY29kYV9pbm9kZV9pbmZvICpjbnA7DQotCXVuc2lnbmVkIGludCBsZW47
DQotCWNoYXIgbWVtW0NPREFfTUFYUEFUSExFTl07DQotCWNoYXIgKnBhdGg7
DQotCUVOVFJZOw0KLQlDREVCVUcoRF9JTk9ERSwgIigleC8lbGQpXG4iLCBp
bm9kZS0+aV9kZXYsIGlub2RlLT5pX2lubyk7DQotCQ0KKwl1bnNpZ25lZCBp
bnQgbGVuID0gUEFHRV9TSVpFOw0KKwljaGFyICpwID0gKGNoYXIqKWttYXAo
cGFnZSk7DQorDQogICAgICAgICBjbnAgPSBJVE9DKGlub2RlKTsNCiAJY29k
YV92ZnNfc3RhdC5mb2xsb3dfbGluaysrOw0KIA0KLQlsZW4gPSBDT0RBX01B
WFBBVEhMRU47DQotCWVycm9yID0gdmVudXNfcmVhZGxpbmsoaW5vZGUtPmlf
c2IsICYoY25wLT5jX2ZpZCksIG1lbSwgJmxlbik7DQotDQotCWlmIChlcnJv
cikgew0KLQkJZHB1dChiYXNlKTsNCi0JCXJldHVybiBFUlJfUFRSKGVycm9y
KTsNCi0JfQ0KLQlsZW4gPSBzdHJsZW4obWVtKTsNCi0JcGF0aCA9IGttYWxs
b2MobGVuICsgMSwgR0ZQX0tFUk5FTCk7DQotCWlmICghcGF0aCkgew0KLQkJ
ZHB1dChiYXNlKTsNCi0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOw0KLQl9
DQotCW1lbWNweShwYXRoLCBtZW0sIGxlbik7DQotCXBhdGhbbGVuXSA9IDA7
DQotDQotCWJhc2UgPSBsb29rdXBfZGVudHJ5KHBhdGgsIGJhc2UsIGZvbGxv
dyk7DQotCWtmcmVlKHBhdGgpOw0KLQlyZXR1cm4gYmFzZTsNCisJZXJyb3Ig
PSB2ZW51c19yZWFkbGluayhpbm9kZS0+aV9zYiwgJihjbnAtPmNfZmlkKSwg
cCwgJmxlbik7DQorCWlmIChlcnJvcikNCisJCWdvdG8gZmFpbDsNCisJU2V0
UGFnZVVwdG9kYXRlKHBhZ2UpOw0KKwlrdW5tYXAocGFnZSk7DQorCVVubG9j
a1BhZ2UocGFnZSk7DQorCXJldHVybiAwOw0KKw0KK2ZhaWw6DQorCVNldFBh
Z2VFcnJvcihwYWdlKTsNCisJa3VubWFwKHBhZ2UpOw0KKwlVbmxvY2tQYWdl
KHBhZ2UpOw0KKwlyZXR1cm4gZXJyb3I7DQogfQ0KKw0KK3N0cnVjdCBpbm9k
ZV9vcGVyYXRpb25zIGNvZGFfc3ltbGlua19pbm9kZV9vcGVyYXRpb25zID0g
ew0KKwlyZWFkbGluazoJcGFnZV9yZWFkbGluaywNCisJZm9sbG93X2xpbms6
CXBhZ2VfZm9sbG93X2xpbmssDQorCXJlYWRwYWdlOgljb2RhX3N5bWxpbmtf
ZmlsbGVyDQorfTsNCmRpZmYgLXVyTiBsaW51eC0yLjMuMzItcHJlMi9mcy9l
eHQyL2lub2RlLmMgbGludXgtYmlyZC5zeW1saW5rL2ZzL2V4dDIvaW5vZGUu
Yw0KLS0tIGxpbnV4LTIuMy4zMi1wcmUyL2ZzL2V4dDIvaW5vZGUuYwlXZWQg
RGVjICA4IDE2OjU5OjAyIDE5OTkNCisrKyBsaW51eC1iaXJkLnN5bWxpbmsv
ZnMvZXh0Mi9pbm9kZS5jCVdlZCBEZWMgIDggMjA6MTk6MjYgMTk5OQ0KQEAg
LTcxMyw3ICs3MTMsOSBAQA0KIAllbHNlIGlmIChTX0lTRElSKGlub2RlLT5p
X21vZGUpKQ0KIAkJaW5vZGUtPmlfb3AgPSAmZXh0Ml9kaXJfaW5vZGVfb3Bl
cmF0aW9uczsNCiAJZWxzZSBpZiAoU19JU0xOSyhpbm9kZS0+aV9tb2RlKSkN
Ci0JCWlub2RlLT5pX29wID0gJmV4dDJfc3ltbGlua19pbm9kZV9vcGVyYXRp
b25zOw0KKwkJaW5vZGUtPmlfb3AgPSBpbm9kZS0+aV9ibG9ja3MNCisJCQkJ
PyZleHQyX3N5bWxpbmtfaW5vZGVfb3BlcmF0aW9ucw0KKwkJCQk6JmV4dDJf
ZmFzdF9zeW1saW5rX2lub2RlX29wZXJhdGlvbnM7DQogCWVsc2UgDQogCQlp
bml0X3NwZWNpYWxfaW5vZGUoaW5vZGUsIGlub2RlLT5pX21vZGUsDQogCQkJ
CSAgIGxlMzJfdG9fY3B1KHJhd19pbm9kZS0+aV9ibG9ja1swXSkpOw0KZGlm
ZiAtdXJOIGxpbnV4LTIuMy4zMi1wcmUyL2ZzL2V4dDIvbmFtZWkuYyBsaW51
eC1iaXJkLnN5bWxpbmsvZnMvZXh0Mi9uYW1laS5jDQotLS0gbGludXgtMi4z
LjMyLXByZTIvZnMvZXh0Mi9uYW1laS5jCU1vbiBEZWMgIDYgMjI6MDY6MDIg
MTk5OQ0KKysrIGxpbnV4LWJpcmQuc3ltbGluay9mcy9leHQyL25hbWVpLmMJ
V2VkIERlYyAgOCAyMDoxOToyNiAxOTk5DQpAQCAtNjc3LDQ4ICs2NzcsMzIg
QEANCiANCiBpbnQgZXh0Ml9zeW1saW5rIChzdHJ1Y3QgaW5vZGUgKiBkaXIs
IHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY29uc3QgY2hhciAqIHN5bW5hbWUp
DQogew0KLQlzdHJ1Y3QgZXh0Ml9kaXJfZW50cnlfMiAqIGRlOw0KIAlzdHJ1
Y3QgaW5vZGUgKiBpbm9kZTsNCi0Jc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgg
PSBOVUxMLCAqIG5hbWVfYmxvY2sgPSBOVUxMOw0KLQljaGFyICogbGluazsN
Ci0JaW50IGksIGwsIGVyciA9IC1FSU87DQotCWNoYXIgYzsNCisJc3RydWN0
IGV4dDJfZGlyX2VudHJ5XzIgKiBkZTsNCisJc3RydWN0IGJ1ZmZlcl9oZWFk
ICogYmggPSBOVUxMOw0KKwlpbnQgbCwgZXJyOw0KIA0KLQlpZiAoIShpbm9k
ZSA9IGV4dDJfbmV3X2lub2RlIChkaXIsIFNfSUZMTkssICZlcnIpKSkgew0K
LQkJcmV0dXJuIGVycjsNCi0JfQ0KLQlpbm9kZS0+aV9tb2RlID0gU19JRkxO
SyB8IFNfSVJXWFVHTzsNCi0JaW5vZGUtPmlfb3AgPSAmZXh0Ml9zeW1saW5r
X2lub2RlX29wZXJhdGlvbnM7DQotCWZvciAobCA9IDA7IGwgPCBpbm9kZS0+
aV9zYi0+c19ibG9ja3NpemUgLSAxICYmDQotCSAgICAgc3ltbmFtZSBbbF07
IGwrKykNCi0JCTsNCi0JaWYgKGwgPj0gc2l6ZW9mIChpbm9kZS0+dS5leHQy
X2kuaV9kYXRhKSkgew0KKwllcnIgPSAtRU5BTUVUT09MT05HOw0KKwlsID0g
c3RybGVuKHN5bW5hbWUpKzE7DQorCWlmIChsID4gZGlyLT5pX3NiLT5zX2Js
b2Nrc2l6ZSkNCisJCWdvdG8gb3V0Ow0KIA0KLQkJZXh0Ml9kZWJ1ZyAoImw9
JWQsIG5vcm1hbCBzeW1saW5rXG4iLCBsKTsNCisJZXJyID0gLUVJTzsNCisJ
aWYgKCEoaW5vZGUgPSBleHQyX25ld19pbm9kZSAoZGlyLCBTX0lGTE5LLCAm
ZXJyKSkpDQorCQlnb3RvIG91dDsNCiANCi0JCW5hbWVfYmxvY2sgPSBleHQy
X2JyZWFkIChpbm9kZSwgMCwgMSwgJmVycik7DQotCQlpZiAoIW5hbWVfYmxv
Y2spIHsNCi0JCQlpbm9kZS0+aV9ubGluay0tOw0KLQkJCW1hcmtfaW5vZGVf
ZGlydHkoaW5vZGUpOw0KLQkJCWlwdXQgKGlub2RlKTsNCi0JCQlyZXR1cm4g
ZXJyOw0KLQkJfQ0KLQkJbGluayA9IG5hbWVfYmxvY2stPmJfZGF0YTsNCi0J
fSBlbHNlIHsNCi0JCWxpbmsgPSAoY2hhciAqKSBpbm9kZS0+dS5leHQyX2ku
aV9kYXRhOw0KLQ0KLQkJZXh0Ml9kZWJ1ZyAoImw9JWQsIGZhc3Qgc3ltbGlu
a1xuIiwgbCk7DQorCWlub2RlLT5pX21vZGUgPSBTX0lGTE5LIHwgU19JUldY
VUdPOw0KIA0KKwlpZiAobCA+IHNpemVvZiAoaW5vZGUtPnUuZXh0Ml9pLmlf
ZGF0YSkpIHsNCisJCWlub2RlLT5pX29wID0gJmV4dDJfc3ltbGlua19pbm9k
ZV9vcGVyYXRpb25zOw0KKwkJZXJyID0gYmxvY2tfc3ltbGluayhpbm9kZSwg
c3ltbmFtZSwgbCk7DQorCQlpZiAoZXJyKQ0KKwkJCWdvdG8gb3V0X25vX2Vu
dHJ5Ow0KKwl9IGVsc2Ugew0KKwkJaW5vZGUtPmlfb3AgPSAmZXh0Ml9mYXN0
X3N5bWxpbmtfaW5vZGVfb3BlcmF0aW9uczsNCisJCW1lbWNweSgoY2hhciop
Jmlub2RlLT51LmV4dDJfaS5pX2RhdGEsc3ltbmFtZSxsKTsNCisJCWlub2Rl
LT5pX3NpemUgPSBsLTE7DQogCX0NCi0JaSA9IDA7DQotCXdoaWxlIChpIDwg
aW5vZGUtPmlfc2ItPnNfYmxvY2tzaXplIC0gMSAmJiAoYyA9ICooc3ltbmFt
ZSsrKSkpDQotCQlsaW5rW2krK10gPSBjOw0KLQlsaW5rW2ldID0gMDsNCi0J
aWYgKG5hbWVfYmxvY2spIHsNCi0JCW1hcmtfYnVmZmVyX2RpcnR5KG5hbWVf
YmxvY2ssIDEpOw0KLQkJYnJlbHNlIChuYW1lX2Jsb2NrKTsNCi0JfQ0KLQlp
bm9kZS0+aV9zaXplID0gaTsNCiAJbWFya19pbm9kZV9kaXJ0eShpbm9kZSk7
DQogDQogCWJoID0gZXh0Ml9hZGRfZW50cnkgKGRpciwgZGVudHJ5LT5kX25h
bWUubmFtZSwgZGVudHJ5LT5kX25hbWUubGVuLCAmZGUsICZlcnIpOw0KZGlm
ZiAtdXJOIGxpbnV4LTIuMy4zMi1wcmUyL2ZzL2V4dDIvc3ltbGluay5jIGxp
bnV4LWJpcmQuc3ltbGluay9mcy9leHQyL3N5bWxpbmsuYw0KLS0tIGxpbnV4
LTIuMy4zMi1wcmUyL2ZzL2V4dDIvc3ltbGluay5jCU1vbiBEZWMgIDYgMjI6
MDY6MDIgMTk5OQ0KKysrIGxpbnV4LWJpcmQuc3ltbGluay9mcy9leHQyL3N5
bWxpbmsuYwlXZWQgRGVjICA4IDIwOjE5OjI2IDE5OTkNCkBAIC0xNiw4OSAr
MTYsMjggQEANCiAgKi8NCiANCiAjaW5jbHVkZSA8bGludXgvZnMuaD4NCi0j
aW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4NCisjaW5jbHVkZSA8bGludXgvZXh0
Ml9mcy5oPg0KIA0KLQ0KLQ0KLXN0YXRpYyBpbnQgZXh0Ml9yZWFkbGluayAo
c3RydWN0IGRlbnRyeSAqLCBjaGFyICosIGludCk7DQotc3RhdGljIHN0cnVj
dCBkZW50cnkgKmV4dDJfZm9sbG93X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBz
dHJ1Y3QgZGVudHJ5ICosIHVuc2lnbmVkIGludCk7DQotDQotLyoNCi0gKiBz
eW1saW5rcyBjYW4ndCBkbyBtdWNoLi4uDQotICovDQotc3RydWN0IGlub2Rl
X29wZXJhdGlvbnMgZXh0Ml9zeW1saW5rX2lub2RlX29wZXJhdGlvbnMgPSB7
DQotCU5VTEwsCQkJLyogbm8gZmlsZS1vcGVyYXRpb25zICovDQotCU5VTEws
CQkJLyogY3JlYXRlICovDQotCU5VTEwsCQkJLyogbG9va3VwICovDQotCU5V
TEwsCQkJLyogbGluayAqLw0KLQlOVUxMLAkJCS8qIHVubGluayAqLw0KLQlO
VUxMLAkJCS8qIHN5bWxpbmsgKi8NCi0JTlVMTCwJCQkvKiBta2RpciAqLw0K
LQlOVUxMLAkJCS8qIHJtZGlyICovDQotCU5VTEwsCQkJLyogbWtub2QgKi8N
Ci0JTlVMTCwJCQkvKiByZW5hbWUgKi8NCi0JZXh0Ml9yZWFkbGluaywJCS8q
IHJlYWRsaW5rICovDQotCWV4dDJfZm9sbG93X2xpbmssCS8qIGZvbGxvd19s
aW5rICovDQotCU5VTEwsCQkJLyogZ2V0X2Jsb2NrICovDQotCU5VTEwsCQkJ
LyogcmVhZHBhZ2UgKi8NCi0JTlVMTCwJCQkvKiB3cml0ZXBhZ2UgKi8NCi0J
TlVMTCwJCQkvKiB0cnVuY2F0ZSAqLw0KLQlOVUxMLAkJCS8qIHBlcm1pc3Np
b24gKi8NCi0JTlVMTAkJCS8qIHJldmFsaWRhdGUgKi8NCi19Ow0KLQ0KLXN0
YXRpYyBzdHJ1Y3QgZGVudHJ5ICogZXh0Ml9mb2xsb3dfbGluayhzdHJ1Y3Qg
ZGVudHJ5ICogZGVudHJ5LA0KLQkJCQkJc3RydWN0IGRlbnRyeSAqYmFzZSwN
Ci0JCQkJCXVuc2lnbmVkIGludCBmb2xsb3cpDQorc3RhdGljIGludCBleHQy
X3JlYWRsaW5rKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY2hhciAqYnVmZmVy
LCBpbnQgYnVmbGVuKQ0KIHsNCi0Jc3RydWN0IGlub2RlICppbm9kZSA9IGRl
bnRyeS0+ZF9pbm9kZTsNCi0Jc3RydWN0IGJ1ZmZlcl9oZWFkICogYmggPSBO
VUxMOw0KLQlpbnQgZXJyb3I7DQotCWNoYXIgKiBsaW5rOw0KLQ0KLQlsaW5r
ID0gKGNoYXIgKikgaW5vZGUtPnUuZXh0Ml9pLmlfZGF0YTsNCi0JaWYgKGlu
b2RlLT5pX2Jsb2Nrcykgew0KLQkJaWYgKCEoYmggPSBleHQyX2JyZWFkIChp
bm9kZSwgMCwgMCwgJmVycm9yKSkpIHsNCi0JCQlkcHV0KGJhc2UpOw0KLQkJ
CXJldHVybiBFUlJfUFRSKC1FSU8pOw0KLQkJfQ0KLQkJbGluayA9IGJoLT5i
X2RhdGE7DQotCX0NCi0JVVBEQVRFX0FUSU1FKGlub2RlKTsNCi0JYmFzZSA9
IGxvb2t1cF9kZW50cnkobGluaywgYmFzZSwgZm9sbG93KTsNCi0JaWYgKGJo
KQ0KLQkJYnJlbHNlKGJoKTsNCi0JcmV0dXJuIGJhc2U7DQorCWNoYXIgKnMg
PSAoY2hhciAqKWRlbnRyeS0+ZF9pbm9kZS0+dS5leHQyX2kuaV9kYXRhOw0K
KwlyZXR1cm4gdmZzX3JlYWRsaW5rKGRlbnRyeSwgYnVmZmVyLCBidWZsZW4s
IHMpOw0KIH0NCiANCi1zdGF0aWMgaW50IGV4dDJfcmVhZGxpbmsgKHN0cnVj
dCBkZW50cnkgKiBkZW50cnksIGNoYXIgKiBidWZmZXIsIGludCBidWZsZW4p
DQorc3RhdGljIHN0cnVjdCBkZW50cnkgKmV4dDJfZm9sbG93X2xpbmsoc3Ry
dWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZGVudHJ5ICpiYXNlLCB1bnNp
Z25lZCBmbGFncykNCiB7DQotCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50
cnktPmRfaW5vZGU7DQotCXN0cnVjdCBidWZmZXJfaGVhZCAqIGJoID0gTlVM
TDsNCi0JY2hhciAqIGxpbms7DQotCWludCBpOw0KLQ0KLQlpZiAoYnVmbGVu
ID4gaW5vZGUtPmlfc2ItPnNfYmxvY2tzaXplIC0gMSkNCi0JCWJ1ZmxlbiA9
IGlub2RlLT5pX3NiLT5zX2Jsb2Nrc2l6ZSAtIDE7DQorCWNoYXIgKnMgPSAo
Y2hhciAqKWRlbnRyeS0+ZF9pbm9kZS0+dS5leHQyX2kuaV9kYXRhOw0KKwly
ZXR1cm4gdmZzX2ZvbGxvd19saW5rKGRlbnRyeSwgYmFzZSwgZmxhZ3MsIHMp
Ow0KK30NCiANCi0JbGluayA9IChjaGFyICopIGlub2RlLT51LmV4dDJfaS5p
X2RhdGE7DQotCWlmIChpbm9kZS0+aV9ibG9ja3MpIHsNCi0JCWludCBlcnI7
DQotCQliaCA9IGV4dDJfYnJlYWQgKGlub2RlLCAwLCAwLCAmZXJyKTsNCi0J
CWlmICghYmgpIHsNCi0JCQlpZihlcnIgPCAwKSAvKiBpbmRpY2F0ZSB0eXBl
IG9mIGVycm9yICovDQotCQkJCXJldHVybiBlcnI7DQotCQkJcmV0dXJuIDA7
DQotCQl9DQotCQlsaW5rID0gYmgtPmJfZGF0YTsNCi0JfQ0KK3N0cnVjdCBp
bm9kZV9vcGVyYXRpb25zIGV4dDJfZmFzdF9zeW1saW5rX2lub2RlX29wZXJh
dGlvbnMgPSB7DQorCXJlYWRsaW5rOglleHQyX3JlYWRsaW5rLA0KKwlmb2xs
b3dfbGluazoJZXh0Ml9mb2xsb3dfbGluaywNCit9Ow0KIA0KLQlpID0gMDsN
Ci0Jd2hpbGUgKGkgPCBidWZsZW4gJiYgbGlua1tpXSkNCi0JCWkrKzsNCi0J
aWYgKGNvcHlfdG9fdXNlcihidWZmZXIsIGxpbmssIGkpKQ0KLQkJaSA9IC1F
RkFVTFQ7DQotCWlmIChiaCkNCi0JCWJyZWxzZSAoYmgpOw0KLQlyZXR1cm4g
aTsNCi19DQorc3RydWN0IGlub2RlX29wZXJhdGlvbnMgZXh0Ml9zeW1saW5r
X2lub2RlX29wZXJhdGlvbnMgPSB7DQorCXJlYWRsaW5rOglwYWdlX3JlYWRs
aW5rLA0KKwlmb2xsb3dfbGluazoJcGFnZV9mb2xsb3dfbGluaywNCisJZ2V0
X2Jsb2NrOglleHQyX2dldF9ibG9jaywNCisJcmVhZHBhZ2U6CWJsb2NrX3Jl
YWRfZnVsbF9wYWdlLA0KK307DQpkaWZmIC11ck4gbGludXgtMi4zLjMyLXBy
ZTIvZnMvbWluaXgvbmFtZWkuYyBsaW51eC1iaXJkLnN5bWxpbmsvZnMvbWlu
aXgvbmFtZWkuYw0KLS0tIGxpbnV4LTIuMy4zMi1wcmUyL2ZzL21pbml4L25h
bWVpLmMJU3VuIFNlcCAxMiAyMDoyNToyMCAxOTk5DQorKysgbGludXgtYmly
ZC5zeW1saW5rL2ZzL21pbml4L25hbWVpLmMJV2VkIERlYyAgOCAyMDoxOToy
NiAxOTk5DQpAQCAtNDYxLDQ2ICs0NjEsNDMgQEANCiB7DQogCXN0cnVjdCBt
aW5peF9kaXJfZW50cnkgKiBkZTsNCiAJc3RydWN0IGlub2RlICogaW5vZGUg
PSBOVUxMOw0KLQlzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCA9IE5VTEwsICog
bmFtZV9ibG9jayA9IE5VTEw7DQorCXN0cnVjdCBidWZmZXJfaGVhZCAqIGJo
ID0gTlVMTDsNCiAJaW50IGk7DQotCWNoYXIgYzsNCisJaW50IGVycjsNCiAN
Ci0JaW5vZGUgPSBtaW5peF9uZXdfaW5vZGUoZGlyLCAmaSk7DQotCWlmIChp
KQ0KLQkJcmV0dXJuIGk7DQorCWVyciA9IC1FTkFNRVRPT0xPTkc7DQorCWkg
PSBzdHJsZW4oc3ltbmFtZSkrMTsNCisJaWYgKGk+MTAyNCkNCisJCWdvdG8g
b3V0Ow0KKwlpbm9kZSA9IG1pbml4X25ld19pbm9kZShkaXIsICZlcnIpOw0K
KwlpZiAoZXJyKQ0KKwkJZ290byBvdXQ7DQorCWVyciA9IC1FTk9TUEM7DQog
CWlmICghaW5vZGUpDQotCQlyZXR1cm4gLUVOT1NQQzsNCisJCWdvdG8gb3V0
Ow0KIA0KIAlpbm9kZS0+aV9tb2RlID0gU19JRkxOSyB8IDA3Nzc7DQogCWlu
b2RlLT5pX29wID0gJm1pbml4X3N5bWxpbmtfaW5vZGVfb3BlcmF0aW9uczsN
Ci0JbmFtZV9ibG9jayA9IG1pbml4X2JyZWFkKGlub2RlLDAsMSk7DQotCWlm
ICghbmFtZV9ibG9jaykgew0KLQkJaW5vZGUtPmlfbmxpbmstLTsNCi0JICAg
ICAgICBtYXJrX2lub2RlX2RpcnR5KGlub2RlKTsNCi0JCWlwdXQoaW5vZGUp
Ow0KLQkJcmV0dXJuIC1FTk9TUEM7DQotCX0NCi0JaSA9IDA7DQotCXdoaWxl
IChpIDwgMTAyMyAmJiAoYz0qKHN5bW5hbWUrKykpKQ0KLQkJbmFtZV9ibG9j
ay0+Yl9kYXRhW2krK10gPSBjOw0KLQluYW1lX2Jsb2NrLT5iX2RhdGFbaV0g
PSAwOw0KLQltYXJrX2J1ZmZlcl9kaXJ0eShuYW1lX2Jsb2NrLCAxKTsNCi0J
YnJlbHNlKG5hbWVfYmxvY2spOw0KLQlpbm9kZS0+aV9zaXplID0gaTsNCi0J
bWFya19pbm9kZV9kaXJ0eShpbm9kZSk7DQotCWkgPSBtaW5peF9hZGRfZW50
cnkoZGlyLCBkZW50cnktPmRfbmFtZS5uYW1lLA0KKwllcnIgPSBibG9ja19z
eW1saW5rKGlub2RlLCBzeW1uYW1lLCBpKTsNCisJaWYgKGVycikNCisJCWdv
dG8gZmFpbDsNCisNCisJZXJyID0gbWluaXhfYWRkX2VudHJ5KGRpciwgZGVu
dHJ5LT5kX25hbWUubmFtZSwNCiAJCQkgICAgZGVudHJ5LT5kX25hbWUubGVu
LCAmYmgsICZkZSk7DQotCWlmIChpKSB7DQotCQlpbm9kZS0+aV9ubGluay0t
Ow0KLQkJbWFya19pbm9kZV9kaXJ0eShpbm9kZSk7DQotCQlpcHV0KGlub2Rl
KTsNCi0JCXJldHVybiBpOw0KLQl9DQorCWlmIChlcnIpDQorCQlnb3RvIGZh
aWw7DQorDQogCWRlLT5pbm9kZSA9IGlub2RlLT5pX2lubzsNCiAJbWFya19i
dWZmZXJfZGlydHkoYmgsIDEpOw0KIAlicmVsc2UoYmgpOw0KIAlkX2luc3Rh
bnRpYXRlKGRlbnRyeSwgaW5vZGUpOw0KLQlyZXR1cm4gMDsNCitvdXQ6DQor
CXJldHVybiBlcnI7DQorZmFpbDoNCisJaW5vZGUtPmlfbmxpbmstLTsNCisJ
bWFya19pbm9kZV9kaXJ0eShpbm9kZSk7DQorCWlwdXQoaW5vZGUpOw0KKwln
b3RvIG91dDsNCiB9DQogDQogaW50IG1pbml4X2xpbmsoc3RydWN0IGRlbnRy
eSAqIG9sZF9kZW50cnksIHN0cnVjdCBpbm9kZSAqIGRpciwNCmRpZmYgLXVy
TiBsaW51eC0yLjMuMzItcHJlMi9mcy9taW5peC9zeW1saW5rLmMgbGludXgt
YmlyZC5zeW1saW5rL2ZzL21pbml4L3N5bWxpbmsuYw0KLS0tIGxpbnV4LTIu
My4zMi1wcmUyL2ZzL21pbml4L3N5bWxpbmsuYwlNb24gRGVjICA2IDIyOjA2
OjAzIDE5OTkNCisrKyBsaW51eC1iaXJkLnN5bWxpbmsvZnMvbWluaXgvc3lt
bGluay5jCVdlZCBEZWMgIDggMjA6MTk6MjYgMTk5OQ0KQEAgLTQsNzcgKzQs
MTkgQEANCiAgKiAgQ29weXJpZ2h0IChDKSAxOTkxLCAxOTkyICBMaW51cyBU
b3J2YWxkcw0KICAqDQogICogIG1pbml4IHN5bWxpbmsgaGFuZGxpbmcgY29k
ZQ0KKyAqDQorICogIENvZGUgcmVtb3ZlZC4gMTk5OSwgQVYgOy0pDQogICov
DQogDQotI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+DQotI2luY2x1ZGUgPGxp
bnV4L3NjaGVkLmg+DQogI2luY2x1ZGUgPGxpbnV4L2ZzLmg+DQogI2luY2x1
ZGUgPGxpbnV4L21pbml4X2ZzLmg+DQotI2luY2x1ZGUgPGxpbnV4L3N0YXQu
aD4NCi0NCi0jaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4NCi0NCi1zdGF0aWMg
aW50IG1pbml4X3JlYWRsaW5rKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBp
bnQpOw0KLXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICptaW5peF9mb2xsb3dfbGlu
ayhzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkgKiwgdW5zaWduZWQg
aW50KTsNCiANCiAvKg0KICAqIHN5bWxpbmtzIGNhbid0IGRvIG11Y2guLi4N
CiAgKi8NCiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBtaW5peF9zeW1saW5r
X2lub2RlX29wZXJhdGlvbnMgPSB7DQotCU5VTEwsCQkJLyogbm8gZmlsZS1v
cGVyYXRpb25zICovDQotCU5VTEwsCQkJLyogY3JlYXRlICovDQotCU5VTEws
CQkJLyogbG9va3VwICovDQotCU5VTEwsCQkJLyogbGluayAqLw0KLQlOVUxM
LAkJCS8qIHVubGluayAqLw0KLQlOVUxMLAkJCS8qIHN5bWxpbmsgKi8NCi0J
TlVMTCwJCQkvKiBta2RpciAqLw0KLQlOVUxMLAkJCS8qIHJtZGlyICovDQot
CU5VTEwsCQkJLyogbWtub2QgKi8NCi0JTlVMTCwJCQkvKiByZW5hbWUgKi8N
Ci0JbWluaXhfcmVhZGxpbmssCQkvKiByZWFkbGluayAqLw0KLQltaW5peF9m
b2xsb3dfbGluaywJLyogZm9sbG93X2xpbmsgKi8NCi0JTlVMTCwJCQkvKiBn
ZXRfYmxvY2sgKi8NCi0JTlVMTCwJCQkvKiByZWFkcGFnZSAqLw0KLQlOVUxM
LAkJCS8qIHdyaXRlcGFnZSAqLw0KLQlOVUxMLAkJCS8qIHRydW5jYXRlICov
DQotCU5VTEwsCQkJLyogcGVybWlzc2lvbiAqLw0KLQlOVUxMCQkJLyogcmV2
YWxpZGF0ZSAqLw0KKwlyZWFkbGluazoJcGFnZV9yZWFkbGluaywNCisJZm9s
bG93X2xpbms6CXBhZ2VfZm9sbG93X2xpbmssDQorCWdldF9ibG9jazoJbWlu
aXhfZ2V0X2Jsb2NrLA0KKwlyZWFkcGFnZToJYmxvY2tfcmVhZF9mdWxsX3Bh
Z2UNCiB9Ow0KLQ0KLXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICogbWluaXhfZm9s
bG93X2xpbmsoc3RydWN0IGRlbnRyeSAqIGRlbnRyeSwNCi0JCQkJCXN0cnVj
dCBkZW50cnkgKiBiYXNlLA0KLQkJCQkJdW5zaWduZWQgaW50IGZvbGxvdykN
Ci17DQotCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnktPmRfaW5vZGU7
DQotCXN0cnVjdCBidWZmZXJfaGVhZCAqIGJoOw0KLQ0KLQliaCA9IG1pbml4
X2JyZWFkKGlub2RlLCAwLCAwKTsNCi0JaWYgKCFiaCkgew0KLQkJZHB1dChi
YXNlKTsNCi0JCXJldHVybiBFUlJfUFRSKC1FSU8pOw0KLQl9DQotCVVQREFU
RV9BVElNRShpbm9kZSk7DQotCWJhc2UgPSBsb29rdXBfZGVudHJ5KGJoLT5i
X2RhdGEsIGJhc2UsIGZvbGxvdyk7DQotCWJyZWxzZShiaCk7DQotCXJldHVy
biBiYXNlOw0KLX0NCi0NCi1zdGF0aWMgaW50IG1pbml4X3JlYWRsaW5rKHN0
cnVjdCBkZW50cnkgKiBkZW50cnksIGNoYXIgKiBidWZmZXIsIGludCBidWZs
ZW4pDQotew0KLQlzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaDsNCi0JaW50IGk7
DQotCWNoYXIgYzsNCi0NCi0JaWYgKGJ1ZmxlbiA+IDEwMjMpDQotCQlidWZs
ZW4gPSAxMDIzOw0KLQliaCA9IG1pbml4X2JyZWFkKGRlbnRyeS0+ZF9pbm9k
ZSwgMCwgMCk7DQotCWlmICghYmgpDQotCQlyZXR1cm4gMDsNCi0JaSA9IDA7
DQotCXdoaWxlIChpPGJ1ZmxlbiAmJiAoYyA9IGJoLT5iX2RhdGFbaV0pKSB7
DQotCQlpKys7DQotCQlwdXRfdXNlcihjLGJ1ZmZlcisrKTsNCi0JfQ0KLQli
cmVsc2UoYmgpOw0KLQlyZXR1cm4gaTsNCi19DQpkaWZmIC11ck4gbGludXgt
Mi4zLjMyLXByZTIvZnMvbmFtZWkuYyBsaW51eC1iaXJkLnN5bWxpbmsvZnMv
bmFtZWkuYw0KLS0tIGxpbnV4LTIuMy4zMi1wcmUyL2ZzL25hbWVpLmMJVGh1
IE9jdCAxNCAyMDowOTozMSAxOTk5DQorKysgbGludXgtYmlyZC5zeW1saW5r
L2ZzL25hbWVpLmMJV2VkIERlYyAgOCAyMDoxOToyNiAxOTk5DQpAQCAtMTYs
NiArMTYsNyBAQA0KICNpbmNsdWRlIDxsaW51eC9wcm9jX2ZzLmg+DQogI2lu
Y2x1ZGUgPGxpbnV4L3NtcF9sb2NrLmg+DQogI2luY2x1ZGUgPGxpbnV4L3F1
b3Rhb3BzLmg+DQorI2luY2x1ZGUgPGxpbnV4L3BhZ2VtYXAuaD4NCiANCiAj
aW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4NCiAjaW5jbHVkZSA8YXNtL3VuYWxp
Z25lZC5oPg0KQEAgLTE0MTgsNCArMTQxOSw4NiBAQA0KIAl9DQogCXVubG9j
a19rZXJuZWwoKTsNCiAJcmV0dXJuIGVycm9yOw0KK30NCisNCitpbnQgdmZz
X3JlYWRsaW5rKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY2hhciAqYnVmZmVy
LCBpbnQgYnVmbGVuLCBjaGFyICpsaW5rKQ0KK3sNCisJdTMyIGxlbjsNCisN
CisJbGVuID0gUFRSX0VSUihsaW5rKTsNCisJaWYgKElTX0VSUihsaW5rKSkN
CisJCWdvdG8gb3V0Ow0KKw0KKwlsZW4gPSBzdHJsZW4obGluayk7DQorCWlm
IChsZW4gPiBidWZsZW4pDQorCQlsZW4gPSBidWZsZW47DQorCWNvcHlfdG9f
dXNlcihidWZmZXIsIGxpbmssIGxlbik7DQorb3V0Og0KKwlyZXR1cm4gbGVu
Ow0KK30NCisNCitzdHJ1Y3QgZGVudHJ5ICoNCit2ZnNfZm9sbG93X2xpbmso
c3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZGVudHJ5ICpiYXNlLA0K
K3Vuc2lnbmVkIGludCBmb2xsb3csIGNoYXIgKmxpbmspDQorew0KKwlzdHJ1
Y3QgZGVudHJ5ICpyZXN1bHQ7DQorCVVQREFURV9BVElNRShkZW50cnktPmRf
aW5vZGUpOw0KKw0KKwlpZiAoSVNfRVJSKGxpbmspKQ0KKwkJZ290byBmYWls
Ow0KKw0KKwlyZXN1bHQgPSBsb29rdXBfZGVudHJ5KGxpbmssIGJhc2UsIGZv
bGxvdyk7DQorCXJldHVybiByZXN1bHQ7DQorDQorZmFpbDoNCisJZHB1dChi
YXNlKTsNCisJcmV0dXJuIChzdHJ1Y3QgZGVudHJ5ICopbGluazsNCit9DQor
DQorLyogZ2V0IHRoZSBsaW5rIGNvbnRlbnRzIGludG8gcGFnZWNhY2hlICov
DQorc3RhdGljIGNoYXIgKnBhZ2VfZ2V0bGluayhzdHJ1Y3QgZGVudHJ5ICog
ZGVudHJ5LCBzdHJ1Y3QgcGFnZSAqKnBwYWdlKQ0KK3sNCisJc3RydWN0IHBh
Z2UgKiBwYWdlOw0KKwlwYWdlID0gcmVhZF9jYWNoZV9wYWdlKCZkZW50cnkt
PmRfaW5vZGUtPmlfZGF0YSwgMCwNCisJCQkJKGZpbGxlcl90ICopZGVudHJ5
LT5kX2lub2RlLT5pX29wLT5yZWFkcGFnZSwNCisJCQkJZGVudHJ5KTsNCisJ
aWYgKElTX0VSUihwYWdlKSkNCisJCWdvdG8gc3luY19mYWlsOw0KKwl3YWl0
X29uX3BhZ2UocGFnZSk7DQorCWlmICghUGFnZV9VcHRvZGF0ZShwYWdlKSkN
CisJCWdvdG8gYXN5bmNfZmFpbDsNCisJKnBwYWdlID0gcGFnZTsNCisJcmV0
dXJuIChjaGFyKikga21hcChwYWdlKTsNCisNCithc3luY19mYWlsOg0KKwlw
YWdlX2NhY2hlX3JlbGVhc2UocGFnZSk7DQorCXJldHVybiBFUlJfUFRSKC1F
SU8pOw0KKw0KK3N5bmNfZmFpbDoNCisJcmV0dXJuIChjaGFyKilwYWdlOw0K
K30NCisNCitpbnQgcGFnZV9yZWFkbGluayhzdHJ1Y3QgZGVudHJ5ICpkZW50
cnksIGNoYXIgKmJ1ZmZlciwgaW50IGJ1ZmxlbikNCit7DQorCXN0cnVjdCBw
YWdlICpwYWdlID0gTlVMTDsNCisJY2hhciAqcyA9IHBhZ2VfZ2V0bGluayhk
ZW50cnksICZwYWdlKTsNCisJaW50IHJlcyA9IHZmc19yZWFkbGluayhkZW50
cnksYnVmZmVyLGJ1ZmxlbixzKTsNCisJaWYgKHBhZ2UpIHsNCisJCWt1bm1h
cChwYWdlKTsNCisJCXBhZ2VfY2FjaGVfcmVsZWFzZShwYWdlKTsNCisJfQ0K
KwlyZXR1cm4gcmVzOw0KK30NCisNCitzdHJ1Y3QgZGVudHJ5ICoNCitwYWdl
X2ZvbGxvd19saW5rKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGRl
bnRyeSAqYmFzZSwgdW5zaWduZWQgaW50IGZvbGxvdykNCit7DQorCXN0cnVj
dCBwYWdlICpwYWdlID0gTlVMTDsNCisJY2hhciAqcyA9IHBhZ2VfZ2V0bGlu
ayhkZW50cnksICZwYWdlKTsNCisJc3RydWN0IGRlbnRyeSAqcmVzID0gdmZz
X2ZvbGxvd19saW5rKGRlbnRyeSxiYXNlLGZvbGxvdyxzKTsNCisJaWYgKHBh
Z2UpIHsNCisJCWt1bm1hcChwYWdlKTsNCisJCXBhZ2VfY2FjaGVfcmVsZWFz
ZShwYWdlKTsNCisJfQ0KKwlyZXR1cm4gcmVzOw0KIH0NCmRpZmYgLXVyTiBs
aW51eC0yLjMuMzItcHJlMi9mcy9uZnMvZGlyLmMgbGludXgtYmlyZC5zeW1s
aW5rL2ZzL25mcy9kaXIuYw0KLS0tIGxpbnV4LTIuMy4zMi1wcmUyL2ZzL25m
cy9kaXIuYwlNb24gRGVjICA2IDIyOjA2OjAzIDE5OTkNCisrKyBsaW51eC1i
aXJkLnN5bWxpbmsvZnMvbmZzL2Rpci5jCVdlZCBEZWMgIDggMjA6MTk6MjYg
MTk5OQ0KQEAgLTQxOCw3ICs0MTgsNyBAQA0KIHsNCiAJc3RydWN0IGRlbnRy
eSAqZGVudHJ5ID0gZmlscC0+Zl9kZW50cnk7DQogCXN0cnVjdCBpbm9kZSAq
aW5vZGUgPSBkZW50cnktPmRfaW5vZGU7DQotCXN0cnVjdCBwYWdlICpwYWdl
LCAqKmhhc2g7DQorCXN0cnVjdCBwYWdlICpwYWdlOw0KIAlsb25nIG9mZnNl
dDsNCiAJaW50IHJlczsNCiANCkBAIC00MzIsOCArNDMyLDcgQEANCiAJaWYg
KChvZmZzZXQgPSBuZnNfcmVhZGRpcl9vZmZzZXQoaW5vZGUsIGZpbHAtPmZf
cG9zKSkgPCAwKQ0KIAkJZ290byBub19kaXJlbnRfcGFnZTsNCiANCi0JaGFz
aCA9IHBhZ2VfaGFzaCgmaW5vZGUtPmlfZGF0YSwgb2Zmc2V0KTsNCi0JcGFn
ZSA9IF9fZmluZF9nZXRfcGFnZSgmaW5vZGUtPmlfZGF0YSwgb2Zmc2V0LCBo
YXNoKTsNCisJcGFnZSA9IGZpbmRfZ2V0X3BhZ2UoJmlub2RlLT5pX2RhdGEs
IG9mZnNldCk7DQogCWlmICghcGFnZSkNCiAJCWdvdG8gbm9fZGlyZW50X3Bh
Z2U7DQogCWlmICghUGFnZV9VcHRvZGF0ZShwYWdlKSkNCmRpZmYgLXVyTiBs
aW51eC0yLjMuMzItcHJlMi9mcy9uZnMvc3ltbGluay5jIGxpbnV4LWJpcmQu
c3ltbGluay9mcy9uZnMvc3ltbGluay5jDQotLS0gbGludXgtMi4zLjMyLXBy
ZTIvZnMvbmZzL3N5bWxpbmsuYwlNb24gRGVjICA2IDIyOjA2OjAzIDE5OTkN
CisrKyBsaW51eC1iaXJkLnN5bWxpbmsvZnMvbmZzL3N5bWxpbmsuYwlXZWQg
RGVjICA4IDIwOjE5OjI3IDE5OTkNCkBAIC0yMiwzNSArMjIsNiBAQA0KICNp
bmNsdWRlIDxsaW51eC9tYWxsb2MuaD4NCiAjaW5jbHVkZSA8bGludXgvc3Ry
aW5nLmg+DQogDQotI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+DQotDQotc3Rh
dGljIGludCBuZnNfcmVhZGxpbmsoc3RydWN0IGRlbnRyeSAqLCBjaGFyICos
IGludCk7DQotc3RhdGljIHN0cnVjdCBkZW50cnkgKm5mc19mb2xsb3dfbGlu
ayhzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkgKiwgdW5zaWduZWQg
aW50KTsNCi0NCi0vKg0KLSAqIHN5bWxpbmtzIGNhbid0IGRvIG11Y2guLi4N
Ci0gKi8NCi1zdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBuZnNfc3ltbGlua19p
bm9kZV9vcGVyYXRpb25zID0gew0KLQlOVUxMLAkJCS8qIG5vIGZpbGUtb3Bl
cmF0aW9ucyAqLw0KLQlOVUxMLAkJCS8qIGNyZWF0ZSAqLw0KLQlOVUxMLAkJ
CS8qIGxvb2t1cCAqLw0KLQlOVUxMLAkJCS8qIGxpbmsgKi8NCi0JTlVMTCwJ
CQkvKiB1bmxpbmsgKi8NCi0JTlVMTCwJCQkvKiBzeW1saW5rICovDQotCU5V
TEwsCQkJLyogbWtkaXIgKi8NCi0JTlVMTCwJCQkvKiBybWRpciAqLw0KLQlO
VUxMLAkJCS8qIG1rbm9kICovDQotCU5VTEwsCQkJLyogcmVuYW1lICovDQot
CW5mc19yZWFkbGluaywJCS8qIHJlYWRsaW5rICovDQotCW5mc19mb2xsb3df
bGluaywJLyogZm9sbG93X2xpbmsgKi8NCi0JTlVMTCwJCQkvKiBnZXRfYmxv
Y2sgKi8NCi0JTlVMTCwJCQkvKiByZWFkcGFnZSAqLw0KLQlOVUxMLAkJCS8q
IHdyaXRlcGFnZSAqLw0KLQlOVUxMLAkJCS8qIHRydW5jYXRlICovDQotCU5V
TEwsCQkJLyogcGVybWlzc2lvbiAqLw0KLQlOVUxMCQkJLyogcmV2YWxpZGF0
ZSAqLw0KLX07DQotDQogLyogU3ltbGluayBjYWNoaW5nIGluIHRoZSBwYWdl
IGNhY2hlIGlzIGV2ZW4gbW9yZSBzaW1wbGlzdGljDQogICogYW5kIHN0cmFp
Z2h0LWZvcndhcmQgdGhhbiByZWFkZGlyIGNhY2hpbmcuDQogICovDQpAQCAt
OTEsMTIgKzYyLDEyIEBADQogCWlmIChJU19FUlIocGFnZSkpDQogCQlnb3Rv
IHJlYWRfZmFpbGVkOw0KIAlpZiAoIVBhZ2VfVXB0b2RhdGUocGFnZSkpDQot
CQlnb3RvIGZvbGxvd2xpbmtfcmVhZF9lcnJvcjsNCisJCWdvdG8gZ2V0bGlu
a19yZWFkX2Vycm9yOw0KIAkqcHBhZ2UgPSBwYWdlOw0KIAlwID0gKHUzMiAq
KSBrbWFwKHBhZ2UpOw0KIAlyZXR1cm4gKGNoYXIqKShwKzEpOw0KIAkJDQot
Zm9sbG93bGlua19yZWFkX2Vycm9yOg0KK2dldGxpbmtfcmVhZF9lcnJvcjoN
CiAJcGFnZV9jYWNoZV9yZWxlYXNlKHBhZ2UpOw0KIAlyZXR1cm4gRVJSX1BU
UigtRUlPKTsNCiByZWFkX2ZhaWxlZDoNCkBAIC0xMDYsNDEgKzc3LDMxIEBA
DQogc3RhdGljIGludCBuZnNfcmVhZGxpbmsoc3RydWN0IGRlbnRyeSAqZGVu
dHJ5LCBjaGFyICpidWZmZXIsIGludCBidWZsZW4pDQogew0KIAlzdHJ1Y3Qg
cGFnZSAqcGFnZSA9IE5VTEw7DQotCXUzMiBsZW47DQotCWNoYXIgKnMgPSBu
ZnNfZ2V0bGluayhkZW50cnksICZwYWdlKTsNCi0JVVBEQVRFX0FUSU1FKGRl
bnRyeS0+ZF9pbm9kZSk7DQotDQotCWxlbiA9IFBUUl9FUlIocyk7DQotCWlm
IChJU19FUlIocykpDQotCQlnb3RvIG91dDsNCi0NCi0JbGVuID0gc3RybGVu
KHMpOw0KLQlpZiAobGVuID4gYnVmbGVuKQ0KLQkJbGVuID0gYnVmbGVuOw0K
LQljb3B5X3RvX3VzZXIoYnVmZmVyLCBzLCBsZW4pOw0KLQlrdW5tYXAocGFn
ZSk7DQotCXBhZ2VfY2FjaGVfcmVsZWFzZShwYWdlKTsNCi1vdXQ6DQotCXJl
dHVybiBsZW47DQorCWludCByZXMgPSB2ZnNfcmVhZGxpbmsoZGVudHJ5LGJ1
ZmZlcixidWZsZW4sbmZzX2dldGxpbmsoZGVudHJ5LCZwYWdlKSk7DQorCWlm
IChwYWdlKSB7DQorCQlrdW5tYXAocGFnZSk7DQorCQlwYWdlX2NhY2hlX3Jl
bGVhc2UocGFnZSk7DQorCX0NCisJcmV0dXJuIHJlczsNCiB9DQogDQogc3Rh
dGljIHN0cnVjdCBkZW50cnkgKg0KIG5mc19mb2xsb3dfbGluayhzdHJ1Y3Qg
ZGVudHJ5ICpkZW50cnksIHN0cnVjdCBkZW50cnkgKmJhc2UsIHVuc2lnbmVk
IGludCBmb2xsb3cpDQogew0KLQlzdHJ1Y3QgZGVudHJ5ICpyZXN1bHQ7DQog
CXN0cnVjdCBwYWdlICpwYWdlID0gTlVMTDsNCi0JY2hhciAqcyA9IG5mc19n
ZXRsaW5rKGRlbnRyeSwgJnBhZ2UpOw0KLQlVUERBVEVfQVRJTUUoZGVudHJ5
LT5kX2lub2RlKTsNCi0NCi0JaWYgKElTX0VSUihzKSkNCi0JCWdvdG8gZmFp
bDsNCi0NCi0JcmVzdWx0ID0gbG9va3VwX2RlbnRyeShzLCBiYXNlLCBmb2xs
b3cpOw0KLQ0KLQlrdW5tYXAocGFnZSk7DQotCXBhZ2VfY2FjaGVfcmVsZWFz
ZShwYWdlKTsNCi0JcmV0dXJuIHJlc3VsdDsNCi0NCi1mYWlsOg0KLQlyZXR1
cm4gKHN0cnVjdCBkZW50cnkgKilzOw0KKwlzdHJ1Y3QgZGVudHJ5ICpyZXMg
PSB2ZnNfZm9sbG93X2xpbmsoZGVudHJ5LCBiYXNlLCBmb2xsb3csDQorCQkJ
CQkgICAgIG5mc19nZXRsaW5rKGRlbnRyeSwgJnBhZ2UpKTsNCisJaWYgKHBh
Z2UpIHsNCisJCWt1bm1hcChwYWdlKTsNCisJCXBhZ2VfY2FjaGVfcmVsZWFz
ZShwYWdlKTsNCisJfQ0KKwlyZXR1cm4gcmVzOw0KIH0NCisNCisvKg0KKyAq
IHN5bWxpbmtzIGNhbid0IGRvIG11Y2guLi4NCisgKi8NCitzdHJ1Y3QgaW5v
ZGVfb3BlcmF0aW9ucyBuZnNfc3ltbGlua19pbm9kZV9vcGVyYXRpb25zID0g
ew0KKwlyZWFkbGluazoJbmZzX3JlYWRsaW5rLA0KKwlmb2xsb3dfbGluazoJ
bmZzX2ZvbGxvd19saW5rLA0KK307DQpkaWZmIC11ck4gbGludXgtMi4zLjMy
LXByZTIvZnMvcHJvYy9nZW5lcmljLmMgbGludXgtYmlyZC5zeW1saW5rL2Zz
L3Byb2MvZ2VuZXJpYy5jDQotLS0gbGludXgtMi4zLjMyLXByZTIvZnMvcHJv
Yy9nZW5lcmljLmMJV2VkIE5vdiAyNCAwNTo1NjoxOSAxOTk5DQorKysgbGlu
dXgtYmlyZC5zeW1saW5rL2ZzL3Byb2MvZ2VuZXJpYy5jCVdlZCBEZWMgIDgg
MjA6MTk6MjcgMTk5OQ0KQEAgLTE5OSw0MCArMTk5LDIxIEBADQogCXJldHVy
biBQUk9DX0RZTkFNSUNfRklSU1QgKyBpOw0KIH0NCiANCi1zdGF0aWMgaW50
IHByb2NfcmVhZGxpbmsoc3RydWN0IGRlbnRyeSAqIGRlbnRyeSwgY2hhciAq
IGJ1ZmZlciwgaW50IGJ1ZmxlbikNCitzdGF0aWMgaW50IHByb2NfcmVhZGxp
bmsoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjaGFyICpidWZmZXIsIGludCBi
dWZsZW4pDQogew0KLQlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZGVudHJ5LT5k
X2lub2RlOw0KLQlzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKiBkZTsNCi0JaW50
IGxlbjsNCi0JZGUgPSAoc3RydWN0IHByb2NfZGlyX2VudHJ5ICopIGlub2Rl
LT51LmdlbmVyaWNfaXA7DQotCWxlbiA9IGRlLT5zaXplKzE7DQotCWlmIChs
ZW4gPiBidWZsZW4pDQotCQlsZW4gPSBidWZsZW47DQotCWNvcHlfdG9fdXNl
cihidWZmZXIsIGRlLT5kYXRhLCBsZW4pOw0KLQlyZXR1cm4gbGVuOw0KKwlj
aGFyICpzPSgoc3RydWN0IHByb2NfZGlyX2VudHJ5ICopZGVudHJ5LT5kX2lu
b2RlLT51LmdlbmVyaWNfaXApLT5kYXRhOw0KKwlyZXR1cm4gdmZzX3JlYWRs
aW5rKGRlbnRyeSwgYnVmZmVyLCBidWZsZW4sIHMpOw0KIH0NCiANCi1zdHJ1
Y3QgZGVudHJ5ICogcHJvY19mb2xsb3dfbGluayhzdHJ1Y3QgZGVudHJ5ICog
ZGVudHJ5LCBzdHJ1Y3QgZGVudHJ5ICpiYXNlLCB1bnNpZ25lZCBpbnQgZm9s
bG93KQ0KK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpwcm9jX2ZvbGxvd19saW5r
KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGRlbnRyeSAqYmFzZSwg
dW5zaWduZWQgZmxhZ3MpDQogew0KLQlzdHJ1Y3QgaW5vZGUgKmlub2RlID0g
ZGVudHJ5LT5kX2lub2RlOw0KLQlzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKiBk
ZTsNCi0JZGUgPSAoc3RydWN0IHByb2NfZGlyX2VudHJ5ICopIGlub2RlLT51
LmdlbmVyaWNfaXA7DQotCXJldHVybiBsb29rdXBfZGVudHJ5KGRlLT5kYXRh
LCBiYXNlLCBmb2xsb3cpOw0KKwljaGFyICpzPSgoc3RydWN0IHByb2NfZGly
X2VudHJ5ICopZGVudHJ5LT5kX2lub2RlLT51LmdlbmVyaWNfaXApLT5kYXRh
Ow0KKwlyZXR1cm4gdmZzX2ZvbGxvd19saW5rKGRlbnRyeSwgYmFzZSwgZmxh
Z3MsIHMpOw0KIH0NCiANCiBzdGF0aWMgc3RydWN0IGlub2RlX29wZXJhdGlv
bnMgcHJvY19saW5rX2lub2RlX29wZXJhdGlvbnMgPSB7DQotCU5VTEwsCQkJ
Lyogbm8gZmlsZS1vcHMgKi8NCi0JTlVMTCwJCQkvKiBjcmVhdGUgKi8NCi0J
TlVMTCwJCQkvKiBsb29rdXAgKi8NCi0JTlVMTCwJCQkvKiBsaW5rICovDQot
CU5VTEwsCQkJLyogdW5saW5rICovDQotCU5VTEwsCQkJLyogc3ltbGluayAq
Lw0KLQlOVUxMLAkJCS8qIG1rZGlyICovDQotCU5VTEwsCQkJLyogcm1kaXIg
Ki8NCi0JTlVMTCwJCQkvKiBta25vZCAqLw0KLQlOVUxMLAkJCS8qIHJlbmFt
ZSAqLw0KLQlwcm9jX3JlYWRsaW5rLAkJLyogcmVhZGxpbmsgKi8NCi0JcHJv
Y19mb2xsb3dfbGluaywJLyogZm9sbG93X2xpbmsgKi8NCisJcmVhZGxpbms6
CXByb2NfcmVhZGxpbmssDQorCWZvbGxvd19saW5rOglwcm9jX2ZvbGxvd19s
aW5rDQogfTsNCiANCiAvKg0KZGlmZiAtdXJOIGxpbnV4LTIuMy4zMi1wcmUy
L2ZzL3Byb2Mvcm9vdC5jIGxpbnV4LWJpcmQuc3ltbGluay9mcy9wcm9jL3Jv
b3QuYw0KLS0tIGxpbnV4LTIuMy4zMi1wcmUyL2ZzL3Byb2Mvcm9vdC5jCVdl
ZCBOb3YgMjQgMDU6NTY6MTkgMTk5OQ0KKysrIGxpbnV4LWJpcmQuc3ltbGlu
ay9mcy9wcm9jL3Jvb3QuYwlXZWQgRGVjICA4IDIwOjE5OjI3IDE5OTkNCkBA
IC0yNywxNCArMjcsOSBAQA0KICAqLw0KIHN0YXRpYyBpbnQgcHJvY19zZWxm
X3JlYWRsaW5rKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY2hhciAqYnVmZmVy
LCBpbnQgYnVmbGVuKQ0KIHsNCi0JaW50IGxlbjsNCiAJY2hhciB0bXBbMzBd
Ow0KLQ0KLQlsZW4gPSBzcHJpbnRmKHRtcCwgIiVkIiwgY3VycmVudC0+cGlk
KTsNCi0JaWYgKGJ1ZmxlbiA8IGxlbikNCi0JCWxlbiA9IGJ1ZmxlbjsNCi0J
Y29weV90b191c2VyKGJ1ZmZlciwgdG1wLCBsZW4pOw0KLQlyZXR1cm4gbGVu
Ow0KKwlzcHJpbnRmKHRtcCwgIiVkIiwgY3VycmVudC0+cGlkKTsNCisJcmV0
dXJuIHZmc19yZWFkbGluayhkZW50cnksYnVmZmVyLGJ1Zmxlbix0bXApOw0K
IH0NCiANCiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqIHByb2Nfc2VsZl9mb2xs
b3dfbGluayhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksDQpAQCAtNDIsMjQgKzM3
LDEzIEBADQogCQkJCQkJdW5zaWduZWQgaW50IGZvbGxvdykNCiB7DQogCWNo
YXIgdG1wWzMwXTsNCi0NCiAJc3ByaW50Zih0bXAsICIlZCIsIGN1cnJlbnQt
PnBpZCk7DQotCXJldHVybiBsb29rdXBfZGVudHJ5KHRtcCwgYmFzZSwgZm9s
bG93KTsNCisJcmV0dXJuIHZmc19mb2xsb3dfbGluayhkZW50cnksYmFzZSxm
b2xsb3csdG1wKTsNCiB9CQ0KIA0KIHN0YXRpYyBzdHJ1Y3QgaW5vZGVfb3Bl
cmF0aW9ucyBwcm9jX3NlbGZfaW5vZGVfb3BlcmF0aW9ucyA9IHsNCi0JTlVM
TCwJCQkvKiBubyBmaWxlLW9wcyAqLw0KLQlOVUxMLAkJCS8qIGNyZWF0ZSAq
Lw0KLQlOVUxMLAkJCS8qIGxvb2t1cCAqLw0KLQlOVUxMLAkJCS8qIGxpbmsg
Ki8NCi0JTlVMTCwJCQkvKiB1bmxpbmsgKi8NCi0JTlVMTCwJCQkvKiBzeW1s
aW5rICovDQotCU5VTEwsCQkJLyogbWtkaXIgKi8NCi0JTlVMTCwJCQkvKiBy
bWRpciAqLw0KLQlOVUxMLAkJCS8qIG1rbm9kICovDQotCU5VTEwsCQkJLyog
cmVuYW1lICovDQotCXByb2Nfc2VsZl9yZWFkbGluaywJLyogcmVhZGxpbmsg
Ki8NCi0JcHJvY19zZWxmX2ZvbGxvd19saW5rLAkvKiBmb2xsb3dfbGluayAq
Lw0KKwlyZWFkbGluazoJcHJvY19zZWxmX3JlYWRsaW5rLA0KKwlmb2xsb3df
bGluazoJcHJvY19zZWxmX2ZvbGxvd19saW5rDQogfTsNCiANCiBzdGF0aWMg
c3RydWN0IHByb2NfZGlyX2VudHJ5IHByb2Nfcm9vdF9zZWxmID0gew0KZGlm
ZiAtdXJOIGxpbnV4LTIuMy4zMi1wcmUyL2ZzL3JvbWZzL2lub2RlLmMgbGlu
dXgtYmlyZC5zeW1saW5rL2ZzL3JvbWZzL2lub2RlLmMNCi0tLSBsaW51eC0y
LjMuMzItcHJlMi9mcy9yb21mcy9pbm9kZS5jCU1vbiBEZWMgIDYgMjI6MDY6
MDQgMTk5OQ0KKysrIGxpbnV4LWJpcmQuc3ltbGluay9mcy9yb21mcy9pbm9k
ZS5jCVdlZCBEZWMgIDggMjA6MTk6MjcgMTk5OQ0KQEAgLTQ0NCw2MyArNDQ0
LDYgQEANCiAJcmV0dXJuIHJlc3VsdDsNCiB9DQogDQotc3RhdGljIGludA0K
LXJvbWZzX3JlYWRsaW5rKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY2hhciAq
YnVmZmVyLCBpbnQgbGVuKQ0KLXsNCi0Jc3RydWN0IGlub2RlICppbm9kZSA9
IGRlbnRyeS0+ZF9pbm9kZTsNCi0JaW50IG15bGVuOw0KLQljaGFyIGJ1ZltS
T01GU19NQVhGTl07CQkvKiBYWFggZHluYW1pYyAqLw0KLQ0KLQlpZiAoIWlu
b2RlIHx8ICFTX0lTTE5LKGlub2RlLT5pX21vZGUpKSB7DQotCQlteWxlbiA9
IC1FQkFERjsNCi0JCWdvdG8gb3V0Ow0KLQl9DQotDQotCW15bGVuID0gbWlu
KHNpemVvZihidWYpLCBpbm9kZS0+aV9zaXplKTsNCi0NCi0JaWYgKHJvbWZz
X2NvcHlmcm9tKGlub2RlLCBidWYsIGlub2RlLT51LnJvbWZzX2kuaV9kYXRh
b2Zmc2V0LCBteWxlbikgPD0gMCkgew0KLQkJbXlsZW4gPSAtRUlPOw0KLQkJ
Z290byBvdXQ7DQotCX0NCi0JY29weV90b191c2VyKGJ1ZmZlciwgYnVmLCBt
eWxlbik7DQotDQotb3V0Og0KLQlyZXR1cm4gbXlsZW47DQotfQ0KLQ0KLXN0
YXRpYyBzdHJ1Y3QgZGVudHJ5ICpyb21mc19mb2xsb3dfbGluayhzdHJ1Y3Qg
ZGVudHJ5ICpkZW50cnksDQotCQkJCQlzdHJ1Y3QgZGVudHJ5ICpiYXNlLA0K
LQkJCQkJdW5zaWduZWQgaW50IGZvbGxvdykNCi17DQotCXN0cnVjdCBpbm9k
ZSAqaW5vZGUgPSBkZW50cnktPmRfaW5vZGU7DQotCWNoYXIgKmxpbms7DQot
CWludCBsZW4sIGNudDsNCi0NCi0JbGVuID0gaW5vZGUtPmlfc2l6ZTsNCi0N
Ci0JZGVudHJ5ID0gRVJSX1BUUigtRUFHQUlOKTsJCQkvKiBjb3JyZWN0PyAq
Lw0KLQlpZiAoIShsaW5rID0ga21hbGxvYyhsZW4rMSwgR0ZQX0tFUk5FTCkp
KQ0KLQkJZ290byBvdXRub2J1ZjsNCi0NCi0JY250ID0gcm9tZnNfY29weWZy
b20oaW5vZGUsIGxpbmssIGlub2RlLT51LnJvbWZzX2kuaV9kYXRhb2Zmc2V0
LCBsZW4pOw0KLQlpZiAobGVuICE9IGNudCkgew0KLQkJZGVudHJ5ID0gRVJS
X1BUUigtRUlPKTsNCi0JCWdvdG8gb3V0Ow0KLQl9IGVsc2UNCi0JCWxpbmtb
bGVuXSA9IDA7DQotDQotCWRlbnRyeSA9IGxvb2t1cF9kZW50cnkobGluaywg
YmFzZSwgZm9sbG93KTsNCi0Ja2ZyZWUobGluayk7DQotDQotCWlmICgwKSB7
DQotb3V0Og0KLQkJa2ZyZWUobGluayk7DQotb3V0bm9idWY6DQotCQlkcHV0
KGJhc2UpOw0KLQl9DQotCXJldHVybiBkZW50cnk7DQotfQ0KLQ0KIC8qIE1h
cHBpbmcgZnJvbSBvdXIgdHlwZXMgdG8gdGhlIGtlcm5lbCAqLw0KIA0KIHN0
YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJvbWZzX2ZpbGVfb3BlcmF0
aW9ucyA9IHsNCkBAIC01ODQsMjQgKzUyNyw5IEBADQogfTsNCiANCiBzdGF0
aWMgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgcm9tZnNfbGlua19pbm9kZV9v
cGVyYXRpb25zID0gew0KLQlOVUxMLAkJCS8qIG5vIGZpbGUgb3BlcmF0aW9u
cyBvbiBzeW1saW5rcyAqLw0KLQlOVUxMLAkJCS8qIGNyZWF0ZSAqLw0KLQlO
VUxMLAkJCS8qIGxvb2t1cCAqLw0KLQlOVUxMLAkJCS8qIGxpbmsgKi8NCi0J
TlVMTCwJCQkvKiB1bmxpbmsgKi8NCi0JTlVMTCwJCQkvKiBzeW1saW5rICov
DQotCU5VTEwsCQkJLyogbWtkaXIgKi8NCi0JTlVMTCwJCQkvKiBybWRpciAq
Lw0KLQlOVUxMLAkJCS8qIG1rbm9kICovDQotCU5VTEwsCQkJLyogcmVuYW1l
ICovDQotCXJvbWZzX3JlYWRsaW5rLAkJLyogcmVhZGxpbmsgKi8NCi0Jcm9t
ZnNfZm9sbG93X2xpbmssCS8qIGZvbGxvd19saW5rICovDQotCU5VTEwsCQkJ
LyogZ2V0X2Jsb2NrICovDQotCU5VTEwsCQkJLyogcmVhZHBhZ2UgKi8NCi0J
TlVMTCwJCQkvKiB3cml0ZXBhZ2UgKi8NCi0JTlVMTCwJCQkvKiB0cnVuY2F0
ZSAqLw0KLQlOVUxMLAkJCS8qIHBlcm1pc3Npb24gKi8NCi0JTlVMTAkJCS8q
IHJldmFsaWRhdGUgKi8NCisJcmVhZGxpbms6CXBhZ2VfcmVhZGxpbmssDQor
CWZvbGxvd19saW5rOglwYWdlX2ZvbGxvd19saW5rLA0KKwlyZWFkcGFnZToJ
cm9tZnNfcmVhZHBhZ2UNCiB9Ow0KIA0KIHN0YXRpYyBtb2RlX3Qgcm9tZnNf
bW9kZW1hcFtdID0NCmRpZmYgLXVyTiBsaW51eC0yLjMuMzItcHJlMi9mcy9z
eXN2L25hbWVpLmMgbGludXgtYmlyZC5zeW1saW5rL2ZzL3N5c3YvbmFtZWku
Yw0KLS0tIGxpbnV4LTIuMy4zMi1wcmUyL2ZzL3N5c3YvbmFtZWkuYwlTdW4g
Tm92ICA3IDE1OjIzOjA2IDE5OTkNCisrKyBsaW51eC1iaXJkLnN5bWxpbmsv
ZnMvc3lzdi9uYW1laS5jCVdlZCBEZWMgIDggMjA6MTk6MjcgMTk5OQ0KQEAg
LTQ0MCw1OSArNDQwLDQxIEBADQogaW50IHN5c3Zfc3ltbGluayhzdHJ1Y3Qg
aW5vZGUgKiBkaXIsIHN0cnVjdCBkZW50cnkgKiBkZW50cnksIA0KIAkJIGNv
bnN0IGNoYXIgKiBzeW1uYW1lKQ0KIHsNCi0Jc3RydWN0IHN5c3ZfZGlyX2Vu
dHJ5ICogZGU7DQogCXN0cnVjdCBpbm9kZSAqIGlub2RlOw0KLQlzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKiBuYW1lX2Jsb2NrOw0KLQljaGFyICogbmFtZV9ibG9j
a19kYXRhOw0KLQlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzYjsNCi0JaW50IGk7
DQotCWNoYXIgYzsNCisJc3RydWN0IHN5c3ZfZGlyX2VudHJ5ICogZGU7DQog
CXN0cnVjdCBidWZmZXJfaGVhZCAqIGJoOw0KKwlpbnQgZXJyOw0KKwlpbnQg
bDsNCiANCisJZXJyID0gLUVOQU1FVE9PTE9ORzsNCisJbCA9IHN0cmxlbihz
eW1uYW1lKSsxOw0KKwlpZiAobCA+IGRpci0+aV9zYi0+c3ZfYmxvY2tfc2l6
ZV8xKQ0KKwkJZ290byBvdXQ7DQorCWVyciA9IC1FTk9TUEM7DQogCWlmICgh
KGlub2RlID0gc3lzdl9uZXdfaW5vZGUoZGlyKSkpDQotCQlyZXR1cm4gLUVO
T1NQQzsNCisJCWdvdG8gb3V0Ow0KIA0KIAlpbm9kZS0+aV9tb2RlID0gU19J
RkxOSyB8IDA3Nzc7DQogCWlub2RlLT5pX29wID0gJnN5c3Zfc3ltbGlua19p
bm9kZV9vcGVyYXRpb25zOw0KLQluYW1lX2Jsb2NrID0gc3lzdl9maWxlX2Jy
ZWFkKGlub2RlLCAwLCAxKTsNCi0JaWYgKCFuYW1lX2Jsb2NrKSB7DQotCQlp
bm9kZS0+aV9ubGluay0tOw0KLQkJbWFya19pbm9kZV9kaXJ0eShpbm9kZSk7
DQotCQlpcHV0KGlub2RlKTsNCi0JCXJldHVybiAtRU5PU1BDOw0KLQl9DQot
CXNiID0gaW5vZGUtPmlfc2I7DQotCW5hbWVfYmxvY2tfZGF0YSA9IG5hbWVf
YmxvY2stPmJfZGF0YTsNCi0JaSA9IDA7DQotCXdoaWxlIChpIDwgc2ItPnN2
X2Jsb2NrX3NpemVfMSAmJiAoYyA9ICooc3ltbmFtZSsrKSkpDQotCQluYW1l
X2Jsb2NrX2RhdGFbaSsrXSA9IGM7DQotCW5hbWVfYmxvY2tfZGF0YVtpXSA9
IDA7DQotCW1hcmtfYnVmZmVyX2RpcnR5KG5hbWVfYmxvY2ssIDEpOw0KLQli
cmVsc2UobmFtZV9ibG9jayk7DQotCWlub2RlLT5pX3NpemUgPSBpOw0KKwll
cnIgPSBibG9ja19zeW1saW5rKGlub2RlLCBzeW1uYW1lLCBsKTsNCisJaWYg
KGVycikNCisJCWdvdG8gb3V0X25vX2VudHJ5Ow0KIAltYXJrX2lub2RlX2Rp
cnR5KGlub2RlKTsNCi0JYmggPSBzeXN2X2ZpbmRfZW50cnkoZGlyLCBkZW50
cnktPmRfbmFtZS5uYW1lLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVudHJ5LT5kX25hbWUubGVuLCAmZGUpOw0KLQlpZiAoYmgpIHsNCi0J
CWlub2RlLT5pX25saW5rLS07DQotCQltYXJrX2lub2RlX2RpcnR5KGlub2Rl
KTsNCi0JCWlwdXQoaW5vZGUpOw0KLQkJYnJlbHNlKGJoKTsNCi0JCXJldHVy
biAtRUVYSVNUOw0KLQl9DQotCWkgPSBzeXN2X2FkZF9lbnRyeShkaXIsIGRl
bnRyeS0+ZF9uYW1lLm5hbWUsDQorCWVyciA9IHN5c3ZfYWRkX2VudHJ5KGRp
ciwgZGVudHJ5LT5kX25hbWUubmFtZSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZW50cnktPmRfbmFtZS5sZW4sICZiaCwgJmRlKTsNCi0JaWYg
KGkpIHsNCi0JCWlub2RlLT5pX25saW5rLS07DQotCQltYXJrX2lub2RlX2Rp
cnR5KGlub2RlKTsNCi0JCWlwdXQoaW5vZGUpOw0KLQkJcmV0dXJuIGk7DQot
CX0NCisJaWYgKGVycikNCisJCWdvdG8gb3V0X25vX2VudHJ5Ow0KIAlkZS0+
aW5vZGUgPSBpbm9kZS0+aV9pbm87DQogCW1hcmtfYnVmZmVyX2RpcnR5KGJo
LCAxKTsNCiAJYnJlbHNlKGJoKTsNCiAgICAgICAgIGRfaW5zdGFudGlhdGUo
ZGVudHJ5LCBpbm9kZSk7DQotCXJldHVybiAwOw0KK291dDoNCisJcmV0dXJu
IGVycjsNCitvdXRfbm9fZW50cnk6DQorCWlub2RlLT5pX25saW5rLS07DQor
CW1hcmtfaW5vZGVfZGlydHkoaW5vZGUpOw0KKwlpcHV0KGlub2RlKTsNCisJ
Z290byBvdXQ7DQogfQ0KIA0KIGludCBzeXN2X2xpbmsoc3RydWN0IGRlbnRy
eSAqIG9sZF9kZW50cnksIHN0cnVjdCBpbm9kZSAqIGRpciwgDQpkaWZmIC11
ck4gbGludXgtMi4zLjMyLXByZTIvZnMvc3lzdi9zeW1saW5rLmMgbGludXgt
YmlyZC5zeW1saW5rL2ZzL3N5c3Yvc3ltbGluay5jDQotLS0gbGludXgtMi4z
LjMyLXByZTIvZnMvc3lzdi9zeW1saW5rLmMJTW9uIERlYyAgNiAyMjowNjow
NCAxOTk5DQorKysgbGludXgtYmlyZC5zeW1saW5rL2ZzL3N5c3Yvc3ltbGlu
ay5jCVdlZCBEZWMgIDggMjA6MTk6MjcgMTk5OQ0KQEAgLTEzLDc3ICsxMywx
NCBAQA0KICAqICBTeXN0ZW1WL0NvaGVyZW50IHN5bWxpbmsgaGFuZGxpbmcg
Y29kZQ0KICAqLw0KIA0KLSNpbmNsdWRlIDxsaW51eC9lcnJuby5oPg0KLSNp
bmNsdWRlIDxsaW51eC9zY2hlZC5oPg0KICNpbmNsdWRlIDxsaW51eC9zeXN2
X2ZzLmg+DQotI2luY2x1ZGUgPGxpbnV4L3N0YXQuaD4NCi0NCi0jaW5jbHVk
ZSA8YXNtL3VhY2Nlc3MuaD4NCi0NCi1zdGF0aWMgaW50IHN5c3ZfcmVhZGxp
bmsoc3RydWN0IGRlbnRyeSAqLCBjaGFyICosIGludCk7DQotc3RhdGljIHN0
cnVjdCBkZW50cnkgKnN5c3ZfZm9sbG93X2xpbmsoc3RydWN0IGRlbnRyeSAq
LCBzdHJ1Y3QgZGVudHJ5ICosIHVuc2lnbmVkIGludCk7DQogDQogLyoNCiAg
KiBzeW1saW5rcyBjYW4ndCBkbyBtdWNoLi4uDQogICovDQogc3RydWN0IGlu
b2RlX29wZXJhdGlvbnMgc3lzdl9zeW1saW5rX2lub2RlX29wZXJhdGlvbnMg
PSB7DQotCU5VTEwsCQkJLyogbm8gZmlsZS1vcGVyYXRpb25zICovDQotCU5V
TEwsCQkJLyogY3JlYXRlICovDQotCU5VTEwsCQkJLyogbG9va3VwICovDQot
CU5VTEwsCQkJLyogbGluayAqLw0KLQlOVUxMLAkJCS8qIHVubGluayAqLw0K
LQlOVUxMLAkJCS8qIHN5bWxpbmsgKi8NCi0JTlVMTCwJCQkvKiBta2RpciAq
Lw0KLQlOVUxMLAkJCS8qIHJtZGlyICovDQotCU5VTEwsCQkJLyogbWtub2Qg
Ki8NCi0JTlVMTCwJCQkvKiByZW5hbWUgKi8NCi0Jc3lzdl9yZWFkbGluaywJ
CS8qIHJlYWRsaW5rICovDQotCXN5c3ZfZm9sbG93X2xpbmssCS8qIGZvbGxv
d19saW5rICovDQotCU5VTEwsCQkJLyogZ2V0X2Jsb2NrICovDQotCU5VTEws
CQkJLyogcmVhZHBhZ2UgKi8NCi0JTlVMTCwJCQkvKiB3cml0ZXBhZ2UgKi8N
Ci0JTlVMTCwJCQkvKiB0cnVuY2F0ZSAqLw0KLQlOVUxMLAkJCS8qIHBlcm1p
c3Npb24gKi8NCi0JTlVMTAkJCS8qIHJldmFsaWRhdGUgKi8NCisJcmVhZGxp
bms6CXBhZ2VfcmVhZGxpbmssDQorCWZvbGxvd19saW5rOglwYWdlX2ZvbGxv
d19saW5rLA0KKwlnZXRfYmxvY2s6CXN5c3ZfZ2V0X2Jsb2NrLA0KKwlyZWFk
cGFnZToJYmxvY2tfcmVhZF9mdWxsX3BhZ2UNCiB9Ow0KLQ0KLXN0YXRpYyBz
dHJ1Y3QgZGVudHJ5ICpzeXN2X2ZvbGxvd19saW5rKHN0cnVjdCBkZW50cnkg
KiBkZW50cnksDQotCQkJCQlzdHJ1Y3QgZGVudHJ5ICogYmFzZSwNCi0JCQkJ
CXVuc2lnbmVkIGludCBmb2xsb3cpDQotew0KLQlzdHJ1Y3QgaW5vZGUgKmlu
b2RlID0gZGVudHJ5LT5kX2lub2RlOw0KLQlzdHJ1Y3QgYnVmZmVyX2hlYWQg
KiBiaDsNCi0NCi0JYmggPSBzeXN2X2ZpbGVfYnJlYWQoaW5vZGUsIDAsIDAp
Ow0KLQlpZiAoIWJoKSB7DQotCQlkcHV0KGJhc2UpOw0KLQkJcmV0dXJuIEVS
Ul9QVFIoLUVJTyk7DQotCX0NCi0JVVBEQVRFX0FUSU1FKGlub2RlKTsNCi0J
YmFzZSA9IGxvb2t1cF9kZW50cnkoYmgtPmJfZGF0YSwgYmFzZSwgZm9sbG93
KTsNCi0JYnJlbHNlKGJoKTsNCi0JcmV0dXJuIGJhc2U7DQotfQ0KLQ0KLXN0
YXRpYyBpbnQgc3lzdl9yZWFkbGluayhzdHJ1Y3QgZGVudHJ5ICogZGVudHJ5
LCBjaGFyICogYnVmZmVyLCBpbnQgYnVmbGVuKQ0KLXsNCi0Jc3RydWN0IGlu
b2RlICppbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsNCi0Jc3RydWN0IGJ1ZmZl
cl9oZWFkICogYmg7DQotCWNoYXIgKiBiaF9kYXRhOw0KLQlpbnQgaTsNCi0J
Y2hhciBjOw0KLQ0KLQlpZiAoYnVmbGVuID4gaW5vZGUtPmlfc2ItPnN2X2Js
b2NrX3NpemVfMSkNCi0JCWJ1ZmxlbiA9IGlub2RlLT5pX3NiLT5zdl9ibG9j
a19zaXplXzE7DQotCWJoID0gc3lzdl9maWxlX2JyZWFkKGlub2RlLCAwLCAw
KTsNCi0JaWYgKCFiaCkNCi0JCXJldHVybiAwOw0KLQliaF9kYXRhID0gYmgt
PmJfZGF0YTsNCi0JaSA9IDA7DQotCXdoaWxlIChpPGJ1ZmxlbiAmJiAoYyA9
IGJoX2RhdGFbaV0pKSB7DQotCQlpKys7DQotCQlwdXRfdXNlcihjLGJ1ZmZl
cisrKTsNCi0JfQ0KLQlicmVsc2UoYmgpOw0KLQlyZXR1cm4gaTsNCi19DQpk
aWZmIC11ck4gbGludXgtMi4zLjMyLXByZTIvZnMvdWRmL3N5bWxpbmsuYyBs
aW51eC1iaXJkLnN5bWxpbmsvZnMvdWRmL3N5bWxpbmsuYw0KLS0tIGxpbnV4
LTIuMy4zMi1wcmUyL2ZzL3VkZi9zeW1saW5rLmMJTW9uIERlYyAgNiAyMjow
NjowNCAxOTk5DQorKysgbGludXgtYmlyZC5zeW1saW5rL2ZzL3VkZi9zeW1s
aW5rLmMJV2VkIERlYyAgOCAyMDoxOToyNyAxOTk5DQpAQCAtMzMsMTU1ICsz
Myw5MyBAQA0KICNpbmNsdWRlIDxsaW51eC9tbS5oPg0KICNpbmNsdWRlIDxs
aW51eC9zdGF0Lmg+DQogI2luY2x1ZGUgPGxpbnV4L21hbGxvYy5oPg0KKyNp
bmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+DQogI2luY2x1ZGUgInVkZl9pLmgi
DQogDQotc3RhdGljIGludCB1ZGZfcmVhZGxpbmsoc3RydWN0IGRlbnRyeSAq
LCBjaGFyICosIGludCk7DQotc3RhdGljIHN0cnVjdCBkZW50cnkgKiB1ZGZf
Zm9sbG93X2xpbmsoc3RydWN0IGRlbnRyeSAqIGRlbnRyeSwNCi0Jc3RydWN0
IGRlbnRyeSAqIGJhc2UsIHVuc2lnbmVkIGludCBmb2xsb3cpOw0KLQ0KLS8q
DQotICogc3ltbGlua3MgY2FuJ3QgZG8gbXVjaC4uLg0KLSAqLw0KLXN0cnVj
dCBpbm9kZV9vcGVyYXRpb25zIHVkZl9zeW1saW5rX2lub2RlX29wZXJhdGlv
bnMgPSB7DQotCU5VTEwsCQkJLyogbm8gZmlsZS1vcGVyYXRpb25zICovDQot
CU5VTEwsCQkJLyogY3JlYXRlICovDQotCU5VTEwsCQkJLyogbG9va3VwICov
DQotCU5VTEwsCQkJLyogbGluayAqLw0KLQlOVUxMLAkJCS8qIHVubGluayAq
Lw0KLQlOVUxMLAkJCS8qIHN5bWxpbmsgKi8NCi0JTlVMTCwJCQkvKiBta2Rp
ciAqLw0KLQlOVUxMLAkJCS8qIHJtZGlyICovDQotCU5VTEwsCQkJLyogbWtu
b2QgKi8NCi0JTlVMTCwJCQkvKiByZW5hbWUgKi8NCi0JdWRmX3JlYWRsaW5r
LAkJLyogcmVhZGxpbmsgKi8NCi0JdWRmX2ZvbGxvd19saW5rLAkvKiBmb2xs
b3dfbGluayAqLw0KLQlOVUxMLAkJCS8qIGdldF9ibG9jayAqLw0KLQlOVUxM
LAkJCS8qIHJlYWRwYWdlICovDQotCU5VTEwsCQkJLyogd3JpdGVwYWdlICov
DQotCU5VTEwsCQkJLyogdHJ1bmNhdGUgKi8NCi0JTlVMTCwJCQkvKiBwZXJt
aXNzaW9uICovDQotCU5VTEwJCQkvKiByZXZhbGlkYXRlICovDQotfTsNCi0N
Ci1pbnQgdWRmX3BjX3RvX2NoYXIoY2hhciAqZnJvbSwgaW50IGZyb21sZW4s
IGNoYXIgKip0bykNCitzdGF0aWMgdm9pZCB1ZGZfcGNfdG9fY2hhcihjaGFy
ICpmcm9tLCBpbnQgZnJvbWxlbiwgY2hhciAqdG8pDQogew0KIAlzdHJ1Y3Qg
UGF0aENvbXBvbmVudCAqcGM7DQogCWludCBlbGVuID0gMCwgbGVuID0gMDsN
CisJY2hhciAqcCA9IHRvOw0KIA0KLQkqdG8gPSAoY2hhciAqKWttYWxsb2Mo
ZnJvbWxlbiwgR0ZQX0tFUk5FTCk7DQotDQotCWlmICghKCp0bykpDQotCQly
ZXR1cm4gLTE7DQotDQotCXdoaWxlIChlbGVuIDwgZnJvbWxlbikNCi0Jew0K
Kwl3aGlsZSAoZWxlbiA8IGZyb21sZW4pIHsNCiAJCXBjID0gKHN0cnVjdCBQ
YXRoQ29tcG9uZW50ICopKGZyb20gKyBlbGVuKTsNCi0JCWlmIChwYy0+Y29t
cG9uZW50VHlwZSA9PSAxICYmIHBjLT5sZW5ndGhDb21wb25lbnRJZGVudCA9
PSAwKQ0KLQkJew0KLQkJCSgqdG8pWzBdID0gJy8nOw0KLQkJCWxlbiA9IDE7
DQotCQl9DQotCQllbHNlIGlmIChwYy0+Y29tcG9uZW50VHlwZSA9PSAzKQ0K
LQkJew0KLQkJCW1lbWNweSgmKCp0bylbbGVuXSwgIi4uLyIsIDMpOw0KLQkJ
CWxlbiArPSAzOw0KLQkJfQ0KLSAgICAgICAgZWxzZSBpZiAocGMtPmNvbXBv
bmVudFR5cGUgPT0gNCkNCi0JCXsNCi0JCQltZW1jcHkoJigqdG8pW2xlbl0s
ICIuLyIsIDIpOw0KLQkJCWxlbiArPSAyOw0KLQkJfQ0KLQkJZWxzZSBpZiAo
cGMtPmNvbXBvbmVudFR5cGUgPT0gNSkNCi0JCXsNCi0JCQltZW1jcHkoJigq
dG8pW2xlbl0sIHBjLT5jb21wb25lbnRJZGVudCwgcGMtPmxlbmd0aENvbXBv
bmVudElkZW50KTsNCi0JCQlsZW4gKz0gcGMtPmxlbmd0aENvbXBvbmVudElk
ZW50ICsgMTsNCi0JCQkoKnRvKVtsZW4tMV0gPSAnLyc7DQorCQlzd2l0Y2gg
KHBjLT5jb21wb25lbnRUeXBlKSB7DQorCQkJY2FzZSAxOg0KKwkJCQlpZiAo
cGMtPmxlbmd0aENvbXBvbmVudElkZW50ID09IDApIHsNCisJCQkJCXAgPSB0
bzsNCisJCQkJCSpwKysgPSAnLyc7DQorCQkJCX0NCisJCQkJYnJlYWs7DQor
CQkJY2FzZSAzOg0KKwkJCQltZW1jcHkocCwgIi4uLyIsIDMpOw0KKwkJCQlw
ICs9IDM7DQorCQkJCWJyZWFrOw0KKwkJCWNhc2UgNDoNCisJCQkJbWVtY3B5
KHAsICIuLyIsIDIpOw0KKwkJCQlwICs9IDI7DQorCQkJCS8qIHRoYXQgd291
bGQgYmUgLiAtIGp1c3QgaWdub3JlICovDQorCQkJCWJyZWFrOw0KKwkJCWNh
c2UgNToNCisJCQkJbWVtY3B5KHArbGVuLCBwYy0+Y29tcG9uZW50SWRlbnQs
DQorCQkJCQlwYy0+bGVuZ3RoQ29tcG9uZW50SWRlbnQpOw0KKwkJCQlwICs9
IHBjLT5sZW5ndGhDb21wb25lbnRJZGVudDsNCisJCQkJKnArKyA9ICcvJzsN
CiAJCX0NCiAJCWVsZW4gKz0gc2l6ZW9mKHN0cnVjdCBQYXRoQ29tcG9uZW50
KSArIHBjLT5sZW5ndGhDb21wb25lbnRJZGVudDsNCiAJfQ0KIA0KLQlpZiAo
bGVuKQ0KLQl7DQotCQlsZW4gLS07DQotCQkoKnRvKVtsZW5dID0gJ1wwJzsN
CisJaWYgKHA+dG8rMSkgew0KKwkJcFstMV0gPSAnXDAnOw0KIAl9DQotCXJl
dHVybiBsZW47DQogfQ0KIA0KLXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICogdWRm
X2ZvbGxvd19saW5rKHN0cnVjdCBkZW50cnkgKiBkZW50cnksDQotCXN0cnVj
dCBkZW50cnkgKiBiYXNlLCB1bnNpZ25lZCBpbnQgZm9sbG93KQ0KK3N0YXRp
YyBpbnQgdWRmX3N5bWxpbmtfZmlsbGVyKHN0cnVjdCBkZW50cnkgKiBkZW50
cnksIHN0cnVjdCBwYWdlICpwYWdlKQ0KIHsNCiAJc3RydWN0IGlub2RlICpp
bm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsNCiAJc3RydWN0IGJ1ZmZlcl9oZWFk
ICpiaCA9IE5VTEw7DQotCWNoYXIgKnN5bWxpbmssICp0bXBidWY7DQotCWlu
dCBsZW47DQotCQ0KLQlpZiAoVURGX0lfQUxMT0NUWVBFKGlub2RlKSA9PSBJ
Q0JfRkxBR19BRF9JTl9JQ0IpDQotCXsNCi0JCWJoID0gdWRmX3RyZWFkKGlu
b2RlLT5pX3NiLCBpbm9kZS0+aV9pbm8sIGlub2RlLT5pX3NiLT5zX2Jsb2Nr
c2l6ZSk7DQotDQotCQlpZiAoIWJoKQ0KLQkJCXJldHVybiAwOw0KLQ0KLQkJ
c3ltbGluayA9IGJoLT5iX2RhdGEgKyB1ZGZfZmlsZV9lbnRyeV9hbGxvY19v
ZmZzZXQoaW5vZGUpOw0KLQl9DQotCWVsc2UNCi0Jew0KLQkJYmggPSBicmVh
ZChpbm9kZS0+aV9kZXYsIHVkZl9ibG9ja19tYXAoaW5vZGUsIDApLCBpbm9k
ZS0+aV9zYi0+c19ibG9ja3NpemUpOw0KLQ0KLQkJaWYgKCFiaCkNCi0JCQly
ZXR1cm4gMDsNCi0NCi0JCXN5bWxpbmsgPSBiaC0+Yl9kYXRhOw0KLQl9DQot
DQotCWlmICgobGVuID0gdWRmX3BjX3RvX2NoYXIoc3ltbGluaywgaW5vZGUt
Pmlfc2l6ZSwgJnRtcGJ1ZikpID49IDApDQotCXsNCi0JCWJhc2UgPSBsb29r
dXBfZGVudHJ5KHRtcGJ1ZiwgYmFzZSwgZm9sbG93KTsNCi0JCWtmcmVlKHRt
cGJ1Zik7DQotCQlyZXR1cm4gYmFzZTsNCi0JfQ0KLQllbHNlDQotCQlyZXR1
cm4gRVJSX1BUUigtRU5PTUVNKTsNCi19DQorCWNoYXIgKnN5bWxpbms7DQor
CWludCBlcnI7DQogDQotc3RhdGljIGludCB1ZGZfcmVhZGxpbmsoc3RydWN0
IGRlbnRyeSAqIGRlbnRyeSwgY2hhciAqIGJ1ZmZlciwgaW50IGJ1ZmxlbikN
Ci17DQotCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnktPmRfaW5vZGU7
DQotCXN0cnVjdCBidWZmZXJfaGVhZCAqYmggPSBOVUxMOw0KLQljaGFyICpz
eW1saW5rLCAqdG1wYnVmOw0KLQlpbnQgbGVuOw0KKwljaGFyICpwID0gKGNo
YXIqKWttYXAocGFnZSk7DQogCQ0KLQlpZiAoVURGX0lfQUxMT0NUWVBFKGlu
b2RlKSA9PSBJQ0JfRkxBR19BRF9JTl9JQ0IpDQotCXsNCi0JCWJoID0gdWRm
X3RyZWFkKGlub2RlLT5pX3NiLCBpbm9kZS0+aV9pbm8sIGlub2RlLT5pX3Ni
LT5zX2Jsb2Nrc2l6ZSk7DQorCWVyciA9IC1FSU87DQorCWlmIChVREZfSV9B
TExPQ1RZUEUoaW5vZGUpID09IElDQl9GTEFHX0FEX0lOX0lDQikgew0KKwkJ
YmggPSB1ZGZfdHJlYWQoaW5vZGUtPmlfc2IsIGlub2RlLT5pX2lubywNCisJ
CQkJaW5vZGUtPmlfc2ItPnNfYmxvY2tzaXplKTsNCiANCiAJCWlmICghYmgp
DQotCQkJcmV0dXJuIDA7DQorCQkJZ290byBvdXQ7DQogDQogCQlzeW1saW5r
ID0gYmgtPmJfZGF0YSArIHVkZl9maWxlX2VudHJ5X2FsbG9jX29mZnNldChp
bm9kZSk7DQotCX0NCi0JZWxzZQ0KLQl7DQotCQliaCA9IGJyZWFkKGlub2Rl
LT5pX2RldiwgdWRmX2Jsb2NrX21hcChpbm9kZSwgMCksIGlub2RlLT5pX3Ni
LT5zX2Jsb2Nrc2l6ZSk7DQorCX0gZWxzZSB7DQorCQliaCA9IGJyZWFkKGlu
b2RlLT5pX2RldiwgdWRmX2Jsb2NrX21hcChpbm9kZSwgMCksDQorCQkJCWlu
b2RlLT5pX3NiLT5zX2Jsb2Nrc2l6ZSk7DQogDQogCQlpZiAoIWJoKQ0KLQkJ
CXJldHVybiAwOw0KKwkJCWdvdG8gb3V0Ow0KIA0KIAkJc3ltbGluayA9IGJo
LT5iX2RhdGE7DQogCX0NCiANCi0JaWYgKChsZW4gPSB1ZGZfcGNfdG9fY2hh
cihzeW1saW5rLCBpbm9kZS0+aV9zaXplLCAmdG1wYnVmKSkgPj0gMCkNCi0J
ew0KLQkJaWYgKGNvcHlfdG9fdXNlcihidWZmZXIsIHRtcGJ1ZiwgbGVuID4g
YnVmbGVuID8gYnVmbGVuIDogbGVuKSkNCi0JCQlsZW4gPSAtRUZBVUxUOw0K
LQkJa2ZyZWUodG1wYnVmKTsNCi0JfQ0KLQllbHNlDQotCQlsZW4gPSAtRU5P
TUVNOw0KLQ0KLQlVUERBVEVfQVRJTUUoaW5vZGUpOw0KLQlpZiAoYmgpDQot
CQl1ZGZfcmVsZWFzZV9kYXRhKGJoKTsNCi0JcmV0dXJuIGxlbjsNCisJdWRm
X3BjX3RvX2NoYXIoc3ltbGluaywgaW5vZGUtPmlfc2l6ZSwgcCk7DQorCXVk
Zl9yZWxlYXNlX2RhdGEoYmgpOw0KKwlTZXRQYWdlVXB0b2RhdGUocGFnZSk7
DQorCWt1bm1hcChwYWdlKTsNCisJVW5sb2NrUGFnZShwYWdlKTsNCisJcmV0
dXJuIDA7DQorb3V0Og0KKwlTZXRQYWdlRXJyb3IocGFnZSk7DQorCWt1bm1h
cChwYWdlKTsNCisJVW5sb2NrUGFnZShwYWdlKTsNCisJcmV0dXJuIC1FSU87
DQogfQ0KKw0KKy8qDQorICogc3ltbGlua3MgY2FuJ3QgZG8gbXVjaC4uLg0K
KyAqLw0KK3N0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHVkZl9zeW1saW5rX2lu
b2RlX29wZXJhdGlvbnMgPSB7DQorCXJlYWRsaW5rOglwYWdlX3JlYWRsaW5r
LA0KKwlmb2xsb3dfbGluazoJcGFnZV9mb2xsb3dfbGluaywNCisJcmVhZHBh
Z2U6CXVkZl9zeW1saW5rX2ZpbGxlciwNCit9Ow0KZGlmZiAtdXJOIGxpbnV4
LTIuMy4zMi1wcmUyL2ZzL3Vmcy9pbm9kZS5jIGxpbnV4LWJpcmQuc3ltbGlu
ay9mcy91ZnMvaW5vZGUuYw0KLS0tIGxpbnV4LTIuMy4zMi1wcmUyL2ZzL3Vm
cy9pbm9kZS5jCVRodSBOb3YgMTEgMjI6MDg6MDIgMTk5OQ0KKysrIGxpbnV4
LWJpcmQuc3ltbGluay9mcy91ZnMvaW5vZGUuYwlXZWQgRGVjICA4IDIwOjE5
OjI3IDE5OTkNCkBAIC02MzEsNyArNjMxLDkgQEANCiAJZWxzZSBpZiAoU19J
U0RJUihpbm9kZS0+aV9tb2RlKSkNCiAJCWlub2RlLT5pX29wID0gJnVmc19k
aXJfaW5vZGVfb3BlcmF0aW9uczsNCiAJZWxzZSBpZiAoU19JU0xOSyhpbm9k
ZS0+aV9tb2RlKSkNCi0JCWlub2RlLT5pX29wID0gJnVmc19zeW1saW5rX2lu
b2RlX29wZXJhdGlvbnM7DQorCQlpbm9kZS0+aV9vcCA9IGlub2RlLT5pX2Js
b2Nrcw0KKwkJCQk/JnVmc19zeW1saW5rX2lub2RlX29wZXJhdGlvbnMNCisJ
CQkJOiZ1ZnNfZmFzdF9zeW1saW5rX2lub2RlX29wZXJhdGlvbnM7DQogCWVs
c2UNCiAJCWluaXRfc3BlY2lhbF9pbm9kZShpbm9kZSwgaW5vZGUtPmlfbW9k
ZSwNCiAJCQkJICAgU1dBQjMyKHVmc19pbm9kZS0+dWlfdTIudWlfYWRkci51
aV9kYlswXSkpOw0KZGlmZiAtdXJOIGxpbnV4LTIuMy4zMi1wcmUyL2ZzL3Vm
cy9uYW1laS5jIGxpbnV4LWJpcmQuc3ltbGluay9mcy91ZnMvbmFtZWkuYw0K
LS0tIGxpbnV4LTIuMy4zMi1wcmUyL2ZzL3Vmcy9uYW1laS5jCVN1biBTZXAg
MTIgMTQ6Mjk6MjQgMTk5OQ0KKysrIGxpbnV4LWJpcmQuc3ltbGluay9mcy91
ZnMvbmFtZWkuYwlXZWQgRGVjICA4IDIwOjE5OjI3IDE5OTkNCkBAIC03NTEs
NTUgKzc1MSw0MiBAQA0KIGludCB1ZnNfc3ltbGluayAoc3RydWN0IGlub2Rl
ICogZGlyLCBzdHJ1Y3QgZGVudHJ5ICogZGVudHJ5LA0KIAljb25zdCBjaGFy
ICogc3ltbmFtZSkNCiB7DQotCXN0cnVjdCBzdXBlcl9ibG9jayAqIHNiOw0K
KwlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzYiA9IGRpci0+aV9zYjsNCiAJc3Ry
dWN0IHVmc19kaXJfZW50cnkgKiBkZTsNCiAJc3RydWN0IGlub2RlICogaW5v
ZGU7DQotCXN0cnVjdCBidWZmZXJfaGVhZCAqIGJoLCAqIG5hbWVfYmxvY2s7
DQotCWNoYXIgKiBsaW5rOw0KLQl1bnNpZ25lZCBpLCBsOw0KKwlzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKiBiaCA9IE5VTEw7DQorCXVuc2lnbmVkIGw7DQogCWlu
dCBlcnI7DQotCWNoYXIgYzsNCi0JdW5zaWduZWQgc3dhYjsNCisJdW5zaWdu
ZWQgc3dhYiA9IHNiLT51LnVmc19zYi5zX3N3YWI7DQogCQ0KIAlVRlNEKCgi
RU5URVJcbiIpKQ0KIAkNCi0Jc2IgPSBkaXItPmlfc2I7DQotCXN3YWIgPSBz
Yi0+dS51ZnNfc2Iuc19zd2FiOw0KLQliaCA9IG5hbWVfYmxvY2sgPSBOVUxM
Ow0KKw0KKwllcnIgPSAtRU5BTUVUT09MT05HOw0KKwlsID0gc3RybGVuKHN5
bW5hbWUpKzE7DQorCWlmIChsID4gZGlyLT5pX3NiLT5zX2Jsb2Nrc2l6ZSkN
CisJCWdvdG8gb3V0Ow0KKw0KIAllcnIgPSAtRUlPOw0KIAkNCiAJaWYgKCEo
aW5vZGUgPSB1ZnNfbmV3X2lub2RlIChkaXIsIFNfSUZMTkssICZlcnIpKSkg
ew0KIAkJcmV0dXJuIGVycjsNCiAJfQ0KIAlpbm9kZS0+aV9tb2RlID0gU19J
RkxOSyB8IFNfSVJXWFVHTzsNCi0JaW5vZGUtPmlfb3AgPSAmdWZzX3N5bWxp
bmtfaW5vZGVfb3BlcmF0aW9uczsNCi0JZm9yIChsID0gMDsgbCA8IHNiLT5z
X2Jsb2Nrc2l6ZSAtIDEgJiYgc3ltbmFtZSBbbF07IGwrKyk7DQogDQotCS8q
KippZiAobCA+PSBzaXplb2YgKGlub2RlLT51LnVmc19pLmlfZGF0YSkpIHsq
KiovDQorCS8qKippZiAobCA+IHNpemVvZiAoaW5vZGUtPnUudWZzX2kuaV9k
YXRhKSkgeyoqKi8NCiAJaWYgKDEpIHsNCiAJCS8qIHNsb3cgc3ltbGluayAq
Lw0KLQkJbmFtZV9ibG9jayA9IHVmc19icmVhZCAoaW5vZGUsIDAsIDEsICZl
cnIpOw0KLQkJaWYgKCFuYW1lX2Jsb2NrKSB7DQotCQkJaW5vZGUtPmlfbmxp
bmstLTsNCi0JCQltYXJrX2lub2RlX2RpcnR5KGlub2RlKTsNCi0JCQlpcHV0
IChpbm9kZSk7DQotCQkJcmV0dXJuIGVycjsNCi0JCX0NCi0JCWxpbmsgPSBu
YW1lX2Jsb2NrLT5iX2RhdGE7DQotCQkNCisJCWlub2RlLT5pX29wID0gJnVm
c19zeW1saW5rX2lub2RlX29wZXJhdGlvbnM7DQorCQllcnIgPSBibG9ja19z
eW1saW5rKGlub2RlLCBzeW1uYW1lLCBsKTsNCisJCWlmIChlcnIpDQorCQkJ
Z290byBvdXRfbm9fZW50cnk7DQogCX0gZWxzZSB7DQogCQkvKiBmYXN0IHN5
bWxpbmsgKi8NCi0JCWxpbmsgPSAoY2hhciAqKSBpbm9kZS0+dS51ZnNfaS5p
X3UxLmlfZGF0YTsNCisJCWlub2RlLT5pX29wID0gJnVmc19mYXN0X3N5bWxp
bmtfaW5vZGVfb3BlcmF0aW9uczsNCisJCW1lbWNweSgoY2hhciopJmlub2Rl
LT51LnVmc19pLmlfdTEuaV9kYXRhLHN5bW5hbWUsbCk7DQorCQlpbm9kZS0+
aV9zaXplID0gbC0xOw0KIAl9DQotCWkgPSAwOw0KLQl3aGlsZSAoaSA8IHNi
LT5zX2Jsb2Nrc2l6ZSAtIDEgJiYgKGMgPSAqKHN5bW5hbWUrKykpKQ0KLQkJ
bGlua1tpKytdID0gYzsNCi0JbGlua1tpXSA9IDA7DQotCWlmIChuYW1lX2Js
b2NrKSB7DQotCQltYXJrX2J1ZmZlcl9kaXJ0eShuYW1lX2Jsb2NrLCAxKTsN
Ci0JCWJyZWxzZSAobmFtZV9ibG9jayk7DQotCX0NCi0JaW5vZGUtPmlfc2l6
ZSA9IGk7DQogCW1hcmtfaW5vZGVfZGlydHkoaW5vZGUpOw0KIA0KIAliaCA9
IHVmc19hZGRfZW50cnkgKGRpciwgZGVudHJ5LT5kX25hbWUubmFtZSwgZGVu
dHJ5LT5kX25hbWUubGVuLCAmZGUsICZlcnIpOw0KQEAgLTgyOCwxNiArODE1
LDEyIEBADQogaW50IHVmc19saW5rIChzdHJ1Y3QgZGVudHJ5ICogb2xkX2Rl
bnRyeSwgc3RydWN0IGlub2RlICogZGlyLA0KIAlzdHJ1Y3QgZGVudHJ5ICpk
ZW50cnkpDQogew0KLQlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzYjsNCiAJc3Ry
dWN0IGlub2RlICppbm9kZSA9IG9sZF9kZW50cnktPmRfaW5vZGU7DQorCXN0
cnVjdCBzdXBlcl9ibG9jayAqIHNiID0gaW5vZGUtPmlfc2I7DQogCXN0cnVj
dCB1ZnNfZGlyX2VudHJ5ICogZGU7DQogCXN0cnVjdCBidWZmZXJfaGVhZCAq
IGJoOw0KIAlpbnQgZXJyOw0KLQl1bnNpZ25lZCBzd2FiOw0KLQ0KLQlpbm9k
ZSA9IG9sZF9kZW50cnktPmRfaW5vZGU7DQotCXNiID0gaW5vZGUtPmlfc2I7
DQotCXN3YWIgPSBzYi0+dS51ZnNfc2Iuc19zd2FiOw0KKwl1bnNpZ25lZCBz
d2FiID0gc2ItPnUudWZzX3NiLnNfc3dhYjsNCiAJDQogCWlmIChTX0lTRElS
KGlub2RlLT5pX21vZGUpKQ0KIAkJcmV0dXJuIC1FUEVSTTsNCmRpZmYgLXVy
TiBsaW51eC0yLjMuMzItcHJlMi9mcy91ZnMvc3ltbGluay5jIGxpbnV4LWJp
cmQuc3ltbGluay9mcy91ZnMvc3ltbGluay5jDQotLS0gbGludXgtMi4zLjMy
LXByZTIvZnMvdWZzL3N5bWxpbmsuYwlNb24gRGVjICA2IDIyOjA2OjA0IDE5
OTkNCisrKyBsaW51eC1iaXJkLnN5bWxpbmsvZnMvdWZzL3N5bWxpbmsuYwlX
ZWQgRGVjICA4IDIwOjE5OjI3IDE5OTkNCkBAIC0yMywxMTYgKzIzLDI5IEBA
DQogICogIGV4dDIgc3ltbGluayBoYW5kbGluZyBjb2RlDQogICovDQogDQot
I2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+DQotDQotI2luY2x1ZGUgPGxpbnV4
L2Vycm5vLmg+DQogI2luY2x1ZGUgPGxpbnV4L2ZzLmg+DQogI2luY2x1ZGUg
PGxpbnV4L3Vmc19mcy5oPg0KLSNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPg0K
LSNpbmNsdWRlIDxsaW51eC9tbS5oPg0KLSNpbmNsdWRlIDxsaW51eC9zdGF0
Lmg+DQotDQotDQotI3VuZGVmIFVGU19TWU1MSU5LX0RFQlVHDQotDQotI2lm
ZGVmIFVGU19TWU1MSU5LX0RFQlVHDQotI2RlZmluZSBVRlNEKHgpIHByaW50
aygiKCVzLCAlZCksICVzOiIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19GVU5D
VElPTl9fKTsgcHJpbnRrIHg7DQotI2Vsc2UNCi0jZGVmaW5lIFVGU0QoeCkN
Ci0jZW5kaWYNCi0NCiANCi1zdGF0aWMgc3RydWN0IGRlbnRyeSAqIHVmc19m
b2xsb3dfbGluayhzdHJ1Y3QgZGVudHJ5ICogZGVudHJ5LA0KLQlzdHJ1Y3Qg
ZGVudHJ5ICogYmFzZSwgdW5zaWduZWQgaW50IGZvbGxvdykNCitzdGF0aWMg
aW50IHVmc19yZWFkbGluayhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGNoYXIg
KmJ1ZmZlciwgaW50IGJ1ZmxlbikNCiB7DQotCXN0cnVjdCBpbm9kZSAqIGlu
b2RlOw0KLQlzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaDsNCi0JaW50IGVycm9y
Ow0KLQljaGFyICogbGluazsNCi0NCi0JVUZTRCgoIkVOVEVSXG4iKSkNCi0N
Ci0JaW5vZGUgPSBkZW50cnktPmRfaW5vZGU7DQotCWJoID0gTlVMTDsNCi0J
Lyogc2xvdyBzeW1saW5rICovCSAgICANCi0JaWYgKGlub2RlLT5pX2Jsb2Nr
cykgew0KLQkJaWYgKCEoYmggPSB1ZnNfYnJlYWQgKGlub2RlLCAwLCAwLCAm
ZXJyb3IpKSkgew0KLQkJCWRwdXQoYmFzZSk7DQotCQkJcmV0dXJuIEVSUl9Q
VFIoLUVJTyk7DQotCQl9DQotCQlsaW5rID0gYmgtPmJfZGF0YTsNCi0JfQ0K
LQkvKiBmYXN0IHN5bWxpbmsgKi8NCi0JZWxzZSB7DQotCQlsaW5rID0gKGNo
YXIgKikgaW5vZGUtPnUudWZzX2kuaV91MS5pX3N5bWxpbms7DQotCX0NCi0J
VVBEQVRFX0FUSU1FKGlub2RlKTsNCi0JYmFzZSA9IGxvb2t1cF9kZW50cnko
bGluaywgYmFzZSwgZm9sbG93KTsNCi0JaWYgKGJoKQ0KLQkJYnJlbHNlKGJo
KTsNCi0JVUZTRCgoIkVYSVRcbiIpKQ0KLQlyZXR1cm4gYmFzZTsNCisJY2hh
ciAqcyA9IChjaGFyICopZGVudHJ5LT5kX2lub2RlLT51LnVmc19pLmlfdTEu
aV9zeW1saW5rOw0KKwlyZXR1cm4gdmZzX3JlYWRsaW5rKGRlbnRyeSwgYnVm
ZmVyLCBidWZsZW4sIHMpOw0KIH0NCiANCi1zdGF0aWMgaW50IHVmc19yZWFk
bGluayAoc3RydWN0IGRlbnRyeSAqIGRlbnRyeSwgY2hhciAqIGJ1ZmZlciwg
aW50IGJ1ZmxlbikNCitzdGF0aWMgc3RydWN0IGRlbnRyeSAqdWZzX2ZvbGxv
d19saW5rKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGRlbnRyeSAq
YmFzZSwgdW5zaWduZWQgZmxhZ3MpDQogew0KLQlzdHJ1Y3Qgc3VwZXJfYmxv
Y2sgKiBzYjsNCi0Jc3RydWN0IGlub2RlICogaW5vZGU7DQotCXN0cnVjdCBi
dWZmZXJfaGVhZCAqIGJoOw0KLQljaGFyICogbGluazsNCi0JaW50IGk7DQot
DQotCVVGU0QoKCJFTlRFUlxuIikpDQotDQotCWlub2RlID0gZGVudHJ5LT5k
X2lub2RlOw0KLQlzYiA9IGlub2RlLT5pX3NiOw0KLQliaCA9IE5VTEw7DQot
CWlmIChidWZsZW4gPiBzYi0+c19ibG9ja3NpemUgLSAxKQ0KLQkJYnVmbGVu
ID0gc2ItPnNfYmxvY2tzaXplIC0gMTsNCi0JLyogc2xvdyBzeW1saW5rICov
DQotCWlmIChpbm9kZS0+aV9ibG9ja3MpIHsNCi0JCWludCBlcnI7DQotCQli
aCA9IHVmc19icmVhZCAoaW5vZGUsIDAsIDAsICZlcnIpOw0KLQkJaWYgKCFi
aCkgew0KLQkJCWlmKGVyciA8IDApIC8qIGluZGljYXRlIHR5cGUgb2YgZXJy
b3IgKi8NCi0JCQkJcmV0dXJuIGVycjsNCi0JCQlyZXR1cm4gMDsNCi0JCX0N
Ci0JCWxpbmsgPSBiaC0+Yl9kYXRhOw0KLQl9DQotCS8qIGZhc3Qgc3ltbGlu
ayAqLw0KLQllbHNlIHsNCi0JCWxpbmsgPSAoY2hhciAqKSBpbm9kZS0+dS51
ZnNfaS5pX3UxLmlfc3ltbGluazsNCi0JfQ0KLQlpID0gMDsNCi0Jd2hpbGUg
KGkgPCBidWZsZW4gJiYgbGlua1tpXSkNCi0JCWkrKzsNCi0JaWYgKGNvcHlf
dG9fdXNlcihidWZmZXIsIGxpbmssIGkpKQ0KLQkJaSA9IC1FRkFVTFQ7DQot
CVVQREFURV9BVElNRShpbm9kZSk7DQotCWlmIChiaCkNCi0JCWJyZWxzZSAo
YmgpOw0KLQlVRlNEKCgiRU5URVJcbiIpKQ0KLQlyZXR1cm4gaTsNCisJY2hh
ciAqcyA9IChjaGFyICopZGVudHJ5LT5kX2lub2RlLT51LnVmc19pLmlfdTEu
aV9zeW1saW5rOw0KKwlyZXR1cm4gdmZzX2ZvbGxvd19saW5rKGRlbnRyeSwg
YmFzZSwgZmxhZ3MsIHMpOw0KIH0NCiANCitzdHJ1Y3QgaW5vZGVfb3BlcmF0
aW9ucyB1ZnNfZmFzdF9zeW1saW5rX2lub2RlX29wZXJhdGlvbnMgPSB7DQor
CXJlYWRsaW5rOgl1ZnNfcmVhZGxpbmssDQorCWZvbGxvd19saW5rOgl1ZnNf
Zm9sbG93X2xpbmssDQorfTsNCisNCiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9u
cyB1ZnNfc3ltbGlua19pbm9kZV9vcGVyYXRpb25zID0gew0KLQlOVUxMLAkJ
CS8qIG5vIGZpbGUtb3BlcmF0aW9ucyAqLw0KLQlOVUxMLAkJCS8qIGNyZWF0
ZSAqLw0KLQlOVUxMLAkJCS8qIGxvb2t1cCAqLw0KLQlOVUxMLAkJCS8qIGxp
bmsgKi8NCi0JTlVMTCwJCQkvKiB1bmxpbmsgKi8NCi0JTlVMTCwJCQkvKiBz
eW1saW5rICovDQotCU5VTEwsCQkJLyogbWtkaXIgKi8NCi0JTlVMTCwJCQkv
KiBybWRpciAqLw0KLQlOVUxMLAkJCS8qIG1rbm9kICovDQotCU5VTEwsCQkJ
LyogcmVuYW1lICovDQotCXVmc19yZWFkbGluaywJCS8qIHJlYWRsaW5rICov
DQotCXVmc19mb2xsb3dfbGluaywJLyogZm9sbG93X2xpbmsgKi8NCi0JTlVM
TCwJCQkvKiBnZXRfYmxvY2sgKi8NCi0JTlVMTCwJCQkvKiByZWFkcGFnZSAq
Lw0KLQlOVUxMLAkJCS8qIHdyaXRlcGFnZSAqLw0KLQlOVUxMLAkJCS8qIHRy
dW5jYXRlICovDQotCU5VTEwsCQkJLyogcGVybWlzc2lvbiAqLw0KLQlOVUxM
CQkJLyogcmV2YWxpZGF0ZSAqLw0KKwlyZWFkbGluazoJcGFnZV9yZWFkbGlu
aywNCisJZm9sbG93X2xpbms6CXBhZ2VfZm9sbG93X2xpbmssDQorCWdldF9i
bG9jazoJdWZzX2dldGZyYWdfYmxvY2ssDQorCXJlYWRwYWdlOglibG9ja19y
ZWFkX2Z1bGxfcGFnZQ0KIH07DQpkaWZmIC11ck4gbGludXgtMi4zLjMyLXBy
ZTIvZnMvdW1zZG9zL25hbWVpLmMgbGludXgtYmlyZC5zeW1saW5rL2ZzL3Vt
c2Rvcy9uYW1laS5jDQotLS0gbGludXgtMi4zLjMyLXByZTIvZnMvdW1zZG9z
L25hbWVpLmMJU3VuIFNlcCAxMiAxMzo1NToyNCAxOTk5DQorKysgbGludXgt
YmlyZC5zeW1saW5rL2ZzL3Vtc2Rvcy9uYW1laS5jCVdlZCBEZWMgIDggMjA6
MTk6MjcgMTk5OQ0KQEAgLTQ3NSw4ICs0NzUsNiBAQA0KICAqIExldCdzIGdv
IGZvciBzaW1wbGljaXR5Li4uDQogICovDQogDQotZXh0ZXJuIHN0cnVjdCBp
bm9kZV9vcGVyYXRpb25zIHVtc2Rvc19zeW1saW5rX2lub2RlX29wZXJhdGlv
bnM7DQotDQogLyoNCiAgKiBBVi4gU2hvdWxkIGJlIGNhbGxlZCB3aXRoIGRp
ci0+aV9zZW0gZG93bi4NCiAgKi8NCmRpZmYgLXVyTiBsaW51eC0yLjMuMzIt
cHJlMi9pbmNsdWRlL2xpbnV4L2V4dDJfZnMuaCBsaW51eC1iaXJkLnN5bWxp
bmsvaW5jbHVkZS9saW51eC9leHQyX2ZzLmgNCi0tLSBsaW51eC0yLjMuMzIt
cHJlMi9pbmNsdWRlL2xpbnV4L2V4dDJfZnMuaAlTdW4gU2VwIDEyIDE2OjU1
OjU3IDE5OTkNCisrKyBsaW51eC1iaXJkLnN5bWxpbmsvaW5jbHVkZS9saW51
eC9leHQyX2ZzLmgJV2VkIERlYyAgOCAyMDoxOToyNyAxOTk5DQpAQCAtNjE1
LDYgKzYxNSw3IEBADQogDQogLyogc3ltbGluay5jICovDQogZXh0ZXJuIHN0
cnVjdCBpbm9kZV9vcGVyYXRpb25zIGV4dDJfc3ltbGlua19pbm9kZV9vcGVy
YXRpb25zOw0KK2V4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBleHQy
X2Zhc3Rfc3ltbGlua19pbm9kZV9vcGVyYXRpb25zOw0KIA0KICNlbmRpZgkv
KiBfX0tFUk5FTF9fICovDQogDQpkaWZmIC11ck4gbGludXgtMi4zLjMyLXBy
ZTIvaW5jbHVkZS9saW51eC9mcy5oIGxpbnV4LWJpcmQuc3ltbGluay9pbmNs
dWRlL2xpbnV4L2ZzLmgNCi0tLSBsaW51eC0yLjMuMzItcHJlMi9pbmNsdWRl
L2xpbnV4L2ZzLmgJTW9uIERlYyAgNiAyMjowNjowNSAxOTk5DQorKysgbGlu
dXgtYmlyZC5zeW1saW5rL2luY2x1ZGUvbGludXgvZnMuaAlXZWQgRGVjICA4
IDIwOjE5OjI3IDE5OTkNCkBAIC05NDYsMTIgKzk0NiwyNCBAQA0KIGV4dGVy
biBpbnQgYmxvY2tfd3JpdGVfZnVsbF9wYWdlIChzdHJ1Y3QgZGVudHJ5ICos
IHN0cnVjdCBwYWdlICopOw0KIGV4dGVybiBpbnQgYmxvY2tfd3JpdGVfcGFy
dGlhbF9wYWdlIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAqLCB1bnNp
Z25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBjb25zdCBjaGFyICopOw0KIGV4
dGVybiBpbnQgYmxvY2tfd3JpdGVfY29udF9wYWdlIChzdHJ1Y3QgZmlsZSAq
LCBzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25n
LCBjb25zdCBjaGFyICopOw0KK2V4dGVybiBpbnQgYmxvY2tfd3JpdGVfemVy
b19yYW5nZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWdu
ZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgY2hhciAqKTsNCitleHRl
cm4gaW5saW5lIGludCBibG9ja193cml0ZV9yYW5nZShzdHJ1Y3QgaW5vZGUg
Kmlub2RlLCBzdHJ1Y3QgcGFnZSAqcGFnZSwNCisJCQkJdW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgbGVuLGNvbnN0IGNoYXIgKmJ1ZikgDQorew0KKwlyZXR1
cm4gYmxvY2tfd3JpdGVfemVyb19yYW5nZShpbm9kZSwgcGFnZSwgZnJvbSwg
ZnJvbSwgZnJvbStsZW4sIGJ1Zik7DQorfQ0KIGV4dGVybiBpbnQgYmxvY2tf
Zmx1c2hwYWdlKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcpOw0KK2V4
dGVybiBpbnQgYmxvY2tfc3ltbGluayhzdHJ1Y3QgaW5vZGUgKiwgY29uc3Qg
Y2hhciAqLCBpbnQpOw0KIA0KIGV4dGVybiBpbnQgZ2VuZXJpY19maWxlX21t
YXAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOw0K
IGV4dGVybiBzc2l6ZV90IGdlbmVyaWNfZmlsZV9yZWFkKHN0cnVjdCBmaWxl
ICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7DQogZXh0ZXJuIHNzaXpl
X3QgZ2VuZXJpY19maWxlX3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IGNo
YXIgKiwgc2l6ZV90LCBsb2ZmX3QgKiwgd3JpdGVwYWdlX3QpOw0KLWV4dGVy
biB2b2lkIGRvX2dlbmVyaWNfZmlsZV9yZWFkKHN0cnVjdCBmaWxlICogZmls
cCwgbG9mZl90ICpwcG9zLCByZWFkX2Rlc2NyaXB0b3JfdCAqIGRlc2MsIHJl
YWRfYWN0b3JfdCBhY3Rvcik7DQorZXh0ZXJuIHZvaWQgZG9fZ2VuZXJpY19m
aWxlX3JlYWQoc3RydWN0IGZpbGUgKiwgbG9mZl90ICosIHJlYWRfZGVzY3Jp
cHRvcl90ICosIHJlYWRfYWN0b3JfdCk7DQorDQorZXh0ZXJuIGludCB2ZnNf
cmVhZGxpbmsoc3RydWN0IGRlbnRyeSAqLCBjaGFyICosIGludCwgY2hhciAq
KTsNCitleHRlcm4gc3RydWN0IGRlbnRyeSAqdmZzX2ZvbGxvd19saW5rKHN0
cnVjdCBkZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqLCB1bnNpZ25lZCwgY2hh
ciAqKTsNCitleHRlcm4gaW50IHBhZ2VfcmVhZGxpbmsoc3RydWN0IGRlbnRy
eSAqLCBjaGFyICosIGludCk7DQorZXh0ZXJuIHN0cnVjdCBkZW50cnkgKnBh
Z2VfZm9sbG93X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5
ICosIHVuc2lnbmVkKTsNCiANCiBleHRlcm4gc3RydWN0IHN1cGVyX2Jsb2Nr
ICpnZXRfc3VwZXIoa2Rldl90KTsNCiBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmdl
dF9lbXB0eV9zdXBlcih2b2lkKTsNCmRpZmYgLXVyTiBsaW51eC0yLjMuMzIt
cHJlMi9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIGxpbnV4LWJpcmQuc3ltbGlu
ay9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oDQotLS0gbGludXgtMi4zLjMyLXBy
ZTIvaW5jbHVkZS9saW51eC91ZnNfZnMuaAlNb24gTm92IDIyIDA4OjUwOjE4
IDE5OTkNCisrKyBsaW51eC1iaXJkLnN5bWxpbmsvaW5jbHVkZS9saW51eC91
ZnNfZnMuaAlXZWQgRGVjICA4IDIwOjE5OjI3IDE5OTkNCkBAIC01NjMsNiAr
NTYzLDcgQEANCiANCiAvKiBzeW1saW5rLmMgKi8NCiBleHRlcm4gc3RydWN0
IGlub2RlX29wZXJhdGlvbnMgdWZzX3N5bWxpbmtfaW5vZGVfb3BlcmF0aW9u
czsNCitleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Zhc3Rf
c3ltbGlua19pbm9kZV9vcGVyYXRpb25zOw0KIA0KIC8qIHRydW5jYXRlLmMg
Ki8NCiBleHRlcm4gdm9pZCB1ZnNfdHJ1bmNhdGUgKHN0cnVjdCBpbm9kZSAq
KTsNCmRpZmYgLXVyTiBsaW51eC0yLjMuMzItcHJlMi9rZXJuZWwva3N5bXMu
YyBsaW51eC1iaXJkLnN5bWxpbmsva2VybmVsL2tzeW1zLmMNCi0tLSBsaW51
eC0yLjMuMzItcHJlMi9rZXJuZWwva3N5bXMuYwlNb24gRGVjICA2IDIyOjA2
OjA2IDE5OTkNCisrKyBsaW51eC1iaXJkLnN5bWxpbmsva2VybmVsL2tzeW1z
LmMJV2VkIERlYyAgOCAyMDoxOToyNyAxOTk5DQpAQCAtMTg4LDYgKzE4OCw3
IEBADQogRVhQT1JUX1NZTUJPTChibG9ja193cml0ZV9mdWxsX3BhZ2UpOw0K
IEVYUE9SVF9TWU1CT0woYmxvY2tfd3JpdGVfcGFydGlhbF9wYWdlKTsNCiBF
WFBPUlRfU1lNQk9MKGJsb2NrX3dyaXRlX2NvbnRfcGFnZSk7DQorRVhQT1JU
X1NZTUJPTChibG9ja193cml0ZV96ZXJvX3JhbmdlKTsNCiBFWFBPUlRfU1lN
Qk9MKGdlbmVyaWNfZmlsZV9yZWFkKTsNCiBFWFBPUlRfU1lNQk9MKGRvX2dl
bmVyaWNfZmlsZV9yZWFkKTsNCiBFWFBPUlRfU1lNQk9MKGdlbmVyaWNfZmls
ZV93cml0ZSk7DQpAQCAtMjE4LDYgKzIxOSwxMSBAQA0KIEVYUE9SVF9TWU1C
T0woX19maW5kX2xvY2tfcGFnZSk7DQogRVhQT1JUX1NZTUJPTChncmFiX2Nh
Y2hlX3BhZ2UpOw0KIEVYUE9SVF9TWU1CT0wocmVhZF9jYWNoZV9wYWdlKTsN
CitFWFBPUlRfU1lNQk9MKHZmc19yZWFkbGluayk7DQorRVhQT1JUX1NZTUJP
TCh2ZnNfZm9sbG93X2xpbmspOw0KK0VYUE9SVF9TWU1CT0wocGFnZV9yZWFk
bGluayk7DQorRVhQT1JUX1NZTUJPTChwYWdlX2ZvbGxvd19saW5rKTsNCitF
WFBPUlRfU1lNQk9MKGJsb2NrX3N5bWxpbmspOw0KIA0KICNpZiAhZGVmaW5l
ZChDT05GSUdfTkZTRCkgJiYgZGVmaW5lZChDT05GSUdfTkZTRF9NT0RVTEUp
DQogRVhQT1JUX1NZTUJPTChkb19uZnNzZXJ2Y3RsKTsNCg==
---559023410-2032315143-944703326=:373--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/