[PATCH] Coda

Peter J. Braam (braam@cs.cmu.edu)
Mon, 16 Mar 1998 02:07:34 -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.

--41945269-835729831-890032054=:2508
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi Linus,

Another little patch for Coda.

Instructions:
rm fs/coda/super.c
patch -p? < ..

You asked me how good the current dcache API suits Coda and I have now
looked into it in detail. It's splendid. In a mere 20 lines of code the
cache and attribute validations are stuffed into dentry_revalidate and
inode_revalidate, and do exactly what Coda wants (I think).

The negative entries and variable size of the dcache have led to an
enormous performance increase compared to 2.0 where we managed our own
fixed size cache without negative dentries.

I have found it pretty time consuming to understand what is going on --
I'll try to give a clear exposition of it at Linux Expo, hopefully
this will help some others.

BTW the Linux 2.1 kernels on my dual PII 2940UW just scream, it's great.
Are we close to 2.2?

- Peter -

--41945269-835729831-890032054=:2508
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="2.1.89.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.980316020734.2508C@carissimi.coda.cs.cmu.edu>
Content-Description: patch

ZGlmZiAtdXJOIGxpbnV4LTIuMS44OS5vcmlnL2ZzL2NvZGEvTWFrZWZpbGUg
bGludXgvZnMvY29kYS9NYWtlZmlsZQ0KLS0tIGxpbnV4LTIuMS44OS5vcmln
L2ZzL2NvZGEvTWFrZWZpbGUJU3VuIERlYyAyMSAxNzo0NToxMyAxOTk3DQor
KysgbGludXgvZnMvY29kYS9NYWtlZmlsZQlTdW4gTWFyIDE1IDIyOjAyOjM0
IDE5OTgNCkBAIC0zLDcgKzMsNyBAQA0KICMNCiANCiBPX1RBUkdFVCA6PSBj
b2RhLm8NCi1PX09CSlMgICA6PSBwc2Rldi5vIGNhY2hlLm8gY25vZGUubyBz
dXBlci5vIGRpci5vIGZpbGUubyB1cGNhbGwubyBjb2RhX2xpbnV4Lm9cDQor
T19PQkpTICAgOj0gcHNkZXYubyBjYWNoZS5vIGNub2RlLm8gaW5vZGUubyBk
aXIubyBmaWxlLm8gdXBjYWxsLm8gY29kYV9saW51eC5vXA0KICAgICAgICAg
ICAgIHN5bWxpbmsubyBwaW9jdGwubyBzeXNjdGwubw0KIE1fT0JKUyAgIDo9
ICQoT19UQVJHRVQpDQogDQpkaWZmIC11ck4gbGludXgtMi4xLjg5Lm9yaWcv
ZnMvY29kYS9jYWNoZS5jIGxpbnV4L2ZzL2NvZGEvY2FjaGUuYw0KLS0tIGxp
bnV4LTIuMS44OS5vcmlnL2ZzL2NvZGEvY2FjaGUuYwlXZWQgTWFyICA0IDE4
OjE0OjMyIDE5OTgNCisrKyBsaW51eC9mcy9jb2RhL2NhY2hlLmMJTW9uIE1h
ciAxNiAwMDoxNDo1NCAxOTk4DQpAQCAtMjQsMTYgKzI0LDIyIEBADQogI2lu
Y2x1ZGUgPGxpbnV4L2NvZGFfZnNfaS5oPg0KICNpbmNsdWRlIDxsaW51eC9j
b2RhX2NhY2hlLmg+DQogDQotLyogS2VlcCB2YXJpb3VzIHN0YXRzICovDQot
c3RydWN0IGNmc25jX3N0YXRpc3RpY3MgY2ZzbmNfc3RhdDsNCitzdGF0aWMg
dm9pZCBjb2RhX2NjaW5zZXJ0KHN0cnVjdCBjb2RhX2NhY2hlICplbCwgc3Ry
dWN0IHN1cGVyX2Jsb2NrICpzYik7DQorc3RhdGljIHZvaWQgY29kYV9jbmlu
c2VydChzdHJ1Y3QgY29kYV9jYWNoZSAqZWwsIHN0cnVjdCBjb2RhX2lub2Rl
X2luZm8gKmNpaSk7DQorc3RhdGljIHZvaWQgY29kYV9jY3JlbW92ZShzdHJ1
Y3QgY29kYV9jYWNoZSAqZWwpOw0KK3N0YXRpYyB2b2lkIGNvZGFfY25yZW1v
dmUoc3RydWN0IGNvZGFfY2FjaGUgKmVsKTsNCitzdGF0aWMgdm9pZCBjb2Rh
X2NhY2hlX2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzayk7
DQorc3RhdGljIHN0cnVjdCBjb2RhX2NhY2hlICogY29kYV9jYWNoZV9maW5k
KHN0cnVjdCBpbm9kZSAqaW5vZGUpOw0KIA0KIA0KLS8qIHdlIG5lZWQgdG8g
Y2FsbCBJTklUX0xJU1RfSEVBRCBvbiBjbnAtPmNfY25oZWFkIGFuZCBzYmkt
PnNiaV9jY2hlYWQgKi8NCisvKiBLZWVwIHZhcmlvdXMgc3RhdHMgKi8NCitz
dHJ1Y3QgY2ZzbmNfc3RhdGlzdGljcyBjZnNuY19zdGF0Ow0KIA0KLXZvaWQg
Y29kYV9jY2luc2VydChzdHJ1Y3QgY29kYV9jYWNoZSAqZWwsIHN0cnVjdCBz
dXBlcl9ibG9jayAqc2IpDQorLyogaW5zZXJ0IGEgYWNsLWNhY2hlIGVudHJ5
IGluIHNiIGxpc3QgKi8NCitzdGF0aWMgdm9pZCBjb2RhX2NjaW5zZXJ0KHN0
cnVjdCBjb2RhX2NhY2hlICplbCwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYikN
CiB7DQogCXN0cnVjdCBjb2RhX3NiX2luZm8gKnNiaSA9IGNvZGFfc2JwKHNi
KTsNCi1FTlRSWTsNCisJRU5UUlk7DQogCWlmICggIXNiaSB8fCAgIWVsKSB7
DQogCQlwcmludGsoImNvZGFfY2NpbnNlcnQ6IE5VTEwgc2JpIG9yIGVsIVxu
Iik7DQogCQlyZXR1cm4gOw0KQEAgLTQyLDE3ICs0OCwxOSBAQA0KIAlsaXN0
X2FkZCgmZWwtPmNjX2NjbGlzdCwgJnNiaS0+c2JpX2NjaGVhZCk7DQogfQ0K
IA0KLXZvaWQgY29kYV9jbmluc2VydChzdHJ1Y3QgY29kYV9jYWNoZSAqZWws
IHN0cnVjdCBjb2RhX2lub2RlX2luZm8gKmNucCkNCisvKiBpbnNlcnQgYSBh
Y2wtY2FjaGUgZW50cnkgaW4gdGhlIGlub2RlIGxpc3QgKi8NCitzdGF0aWMg
dm9pZCBjb2RhX2NuaW5zZXJ0KHN0cnVjdCBjb2RhX2NhY2hlICplbCwgc3Ry
dWN0IGNvZGFfaW5vZGVfaW5mbyAqY2lpKQ0KIHsNCi1FTlRSWTsNCi0JaWYg
KCAhY25wIHx8ICAhZWwpIHsNCi0JCXByaW50aygiY29kYV9jbmluc2VydDog
TlVMTCBjbnAgb3IgZWwhXG4iKTsNCisJRU5UUlk7DQorCWlmICggIWNpaSB8
fCAgIWVsKSB7DQorCQlwcmludGsoImNvZGFfY25pbnNlcnQ6IE5VTEwgY2lp
IG9yIGVsIVxuIik7DQogCQlyZXR1cm4gOw0KIAl9DQotCWxpc3RfYWRkKCZl
bC0+Y2NfY25saXN0LCAmY25wLT5jX2NuaGVhZCk7DQorCWxpc3RfYWRkKCZl
bC0+Y2NfY25saXN0LCAmY2lpLT5jX2NuaGVhZCk7DQogfQ0KIA0KLXZvaWQg
Y29kYV9jY3JlbW92ZShzdHJ1Y3QgY29kYV9jYWNoZSAqZWwpDQorLyogcmVt
b3ZlIGEgY2FjaGUgZW50cnkgZnJvbSB0aGUgc3VwZXJibG9jayBsaXN0ICov
DQorc3RhdGljIHZvaWQgY29kYV9jY3JlbW92ZShzdHJ1Y3QgY29kYV9jYWNo
ZSAqZWwpDQogew0KIAlFTlRSWTsNCiAgICAgICAgIGlmIChlbC0+Y2NfY2Ns
aXN0Lm5leHQgJiYgZWwtPmNjX2NjbGlzdC5wcmV2KQ0KQEAgLTYxLDcgKzY5
LDggQEANCiAJCXByaW50aygiY29kYV9jbnJlbW92ZTogdHJ5aW5nIHRvIHJl
bW92ZSAwIGVudHJ5ISIpOw0KIH0NCiANCi12b2lkIGNvZGFfY25yZW1vdmUo
c3RydWN0IGNvZGFfY2FjaGUgKmVsKQ0KKy8qIHJlbW92ZSBhIGNhY2hlIGVu
dHJ5IGZyb20gdGhlIGlub2RlJ3MgbGlzdCAqLw0KK3N0YXRpYyB2b2lkIGNv
ZGFfY25yZW1vdmUoc3RydWN0IGNvZGFfY2FjaGUgKmVsKQ0KIHsNCiAJRU5U
Ulk7DQogCWlmIChlbC0+Y2NfY25saXN0Lm5leHQgJiYgZWwtPmNjX2NubGlz
dC5wcmV2KQ0KQEAgLTcwLDEwICs3OSwxMCBAQA0KIAkJcHJpbnRrKCJjb2Rh
X2NucmVtb3ZlOiB0cnlpbmcgdG8gcmVtb3ZlIDAgZW50cnkhIik7DQogfQ0K
IA0KLQ0KLXZvaWQgY29kYV9jYWNoZV9jcmVhdGUoc3RydWN0IGlub2RlICpp
bm9kZSwgaW50IG1hc2spDQorLyogY3JlYXRlIGEgbmV3IGNhY2hlIGVudHJ5
IGFuZCBlbmxpc3QgaXQgKi8NCitzdGF0aWMgdm9pZCBjb2RhX2NhY2hlX2Ny
ZWF0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzaykNCiB7DQotCXN0
cnVjdCBjb2RhX2lub2RlX2luZm8gKmNucCA9IElUT0MoaW5vZGUpOw0KKwlz
dHJ1Y3QgY29kYV9pbm9kZV9pbmZvICpjaWkgPSBJVE9DKGlub2RlKTsNCiAJ
c3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLT5pX3NiOw0KIAlzdHJ1
Y3QgY29kYV9jYWNoZSAqY2MgPSBOVUxMOw0KIAlFTlRSWTsNCkBAIC04NSwx
NyArOTQsMTkgQEANCiAJfQ0KIAljb2RhX2xvYWRfY3JlZHMoJmNjLT5jY19j
cmVkKTsNCiAJY2MtPmNjX21hc2sgPSBtYXNrOw0KLQljb2RhX2NuaW5zZXJ0
KGNjLCBjbnApOw0KKwljb2RhX2NuaW5zZXJ0KGNjLCBjaWkpOw0KIAljb2Rh
X2NjaW5zZXJ0KGNjLCBzYik7DQogfQ0KIA0KLXN0cnVjdCBjb2RhX2NhY2hl
ICogY29kYV9jYWNoZV9maW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUpDQorLyog
c2VlIGlmIHRoZXJlIGlzIGEgbWF0Y2ggZm9yIHRoZSBjdXJyZW50IA0KKyAg
IGNyZWRlbnRpYWxzIGFscmVhZHkgKi8NCitzdGF0aWMgc3RydWN0IGNvZGFf
Y2FjaGUgKiBjb2RhX2NhY2hlX2ZpbmQoc3RydWN0IGlub2RlICppbm9kZSkN
CiB7DQotCXN0cnVjdCBjb2RhX2lub2RlX2luZm8gKmNucCA9IElUT0MoaW5v
ZGUpOw0KKwlzdHJ1Y3QgY29kYV9pbm9kZV9pbmZvICpjaWkgPSBJVE9DKGlu
b2RlKTsNCiAJc3RydWN0IGxpc3RfaGVhZCAqbGgsICpsZTsNCiAJc3RydWN0
IGNvZGFfY2FjaGUgKmNjID0gTlVMTDsNCiAJDQotCWxlID0gbGggPSAmY25w
LT5jX2NuaGVhZDsNCisJbGUgPSBsaCA9ICZjaWktPmNfY25oZWFkOw0KIAl3
aGlsZSggKGxlID0gbGUtPm5leHQgKSAhPSBsaCApICB7DQogCQkvKiBjb21w
YXJlIG5hbWUgYW5kIGNyZWRzICovDQogCQljYyA9IGxpc3RfZW50cnkobGUs
IHN0cnVjdCBjb2RhX2NhY2hlLCBjY19jbmxpc3QpOw0KQEAgLTEwNyw2ICsx
MTgsNyBAQA0KIAkJcmV0dXJuIE5VTEw7DQogfQ0KIA0KKy8qIGNyZWF0ZSBv
ciBleHRlbmQgYW4gYWNsIGNhY2hlIGhpdCAqLw0KIHZvaWQgY29kYV9jYWNo
ZV9lbnRlcihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzaykNCiB7DQog
CXN0cnVjdCBjb2RhX2NhY2hlICpjYzsNCkBAIC0xMjAsMTcgKzEzMiwyMSBA
QA0KIAl9DQogfQ0KIA0KLXZvaWQgY29kYV9jYWNoZV9jbGVhcl9jbnAoc3Ry
dWN0IGNvZGFfaW5vZGVfaW5mbyAqY25wKQ0KKy8qIHJlbW92ZSBhbGwgY2Fj
aGVkIGFjbCBtYXRjaGVzIGZyb20gYW4gaW5vZGUgKi8NCit2b2lkIGNvZGFf
Y2FjaGVfY2xlYXJfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkNCiB7DQog
CXN0cnVjdCBsaXN0X2hlYWQgKmxoLCAqbGU7DQorCXN0cnVjdCBjb2RhX2lu
b2RlX2luZm8gKmNpaTsNCiAJc3RydWN0IGNvZGFfY2FjaGUgKmNjOw0KKwlF
TlRSWTsNCiANCi0JaWYgKCAhY25wICkgew0KLQkJcHJpbnRrKCJjb2RhX2Nh
Y2hlX2NucF9jbGVhcjogTlVMTCBjbm9kZVxuIik7DQorCWlmICggIWlub2Rl
ICkgew0KKwkJQ0RFQlVHKERfQ0FDSEUsICJjb2RhX2NhY2hlX2NsZWFyX2lu
b2RlOiBOVUxMIGlub2RlXG4iKTsNCiAJCXJldHVybjsNCiAJfQ0KKwljaWkg
PSBJVE9DKGlub2RlKTsNCiAJDQotCWxoID0gbGUgPSAmY25wLT5jX2NuaGVh
ZDsNCisJbGggPSBsZSA9ICZjaWktPmNfY25oZWFkOw0KIAl3aGlsZSAoIChs
ZSA9IGxlLT5uZXh0ICkgIT0gbGggKSB7DQogCQljYyA9IGxpc3RfZW50cnko
bGUsIHN0cnVjdCBjb2RhX2NhY2hlLCBjY19jbmxpc3QpOw0KIAkJY29kYV9j
bnJlbW92ZShjYyk7DQpAQCAtMTM5LDYgKzE1NSw3IEBADQogCX0NCiB9DQog
DQorLyogcmVtb3ZlIGFsbCBhY2wgY2FjaGVzICovDQogdm9pZCBjb2RhX2Nh
Y2hlX2NsZWFyX2FsbChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQ0KIHsNCiAJ
c3RydWN0IGxpc3RfaGVhZCAqbGgsICpsZTsNCkBAIC0xNTAsNiArMTY3LDkg
QEANCiAJCXJldHVybjsNCiAJfQ0KIAkNCisJaWYgKCBsaXN0X2VtcHR5KCZz
YmktPnNiaV9jY2hlYWQpICkNCisJCXJldHVybjsNCisNCiAJbGggPSBsZSA9
ICZzYmktPnNiaV9jY2hlYWQ7DQogCXdoaWxlICggKGxlID0gbGUtPm5leHQg
KSAhPSBsaCApIHsNCiAJCWNjID0gbGlzdF9lbnRyeShsZSwgc3RydWN0IGNv
ZGFfY2FjaGUsIGNjX2NjbGlzdCk7DQpAQCAtMTU5LDYgKzE3OSw3IEBADQog
CX0NCiB9DQogDQorLyogcmVtb3ZlIGFsbCBhY2wgY2FjaGVzIGZvciBhIHBy
aW5jaXBhbCAqLw0KIHZvaWQgY29kYV9jYWNoZV9jbGVhcl9jcmVkKHN0cnVj
dCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBjb2RhX2NyZWQgKmNyZWQpDQog
ew0KIAlzdHJ1Y3QgbGlzdF9oZWFkICpsaCwgKmxlOw0KQEAgLTE3MCw2ICsx
OTEsOSBAQA0KIAkJcmV0dXJuOw0KIAl9DQogCQ0KKwlpZiAobGlzdF9lbXB0
eSgmc2JpLT5zYmlfY2NoZWFkKSkNCisJCXJldHVybjsNCisNCiAJbGggPSBs
ZSA9ICZzYmktPnNiaV9jY2hlYWQ7DQogCXdoaWxlICggKGxlID0gbGUtPm5l
eHQgKSAhPSBsaCApIHsNCiAJCWNjID0gbGlzdF9lbnRyeShsZSwgc3RydWN0
IGNvZGFfY2FjaGUsIGNjX2NjbGlzdCk7DQpAQCAtMTgwLDE1ICsyMDQsMTcg
QEANCiAJCX0NCiAJfQ0KIH0NCi0JCQ0KIA0KKw0KKy8qIGNoZWNrIGlmIHRo
ZSBtYXNrIGhhcyBiZWVuIG1hdGNoZWQgYWdhaW5zdCB0aGUgYWNsDQorICAg
YWxyZWFkeSAqLw0KIGludCBjb2RhX2NhY2hlX2NoZWNrKHN0cnVjdCBpbm9k
ZSAqaW5vZGUsIGludCBtYXNrKQ0KIHsNCi0Jc3RydWN0IGNvZGFfaW5vZGVf
aW5mbyAqY25wID0gSVRPQyhpbm9kZSk7DQorCXN0cnVjdCBjb2RhX2lub2Rl
X2luZm8gKmNpaSA9IElUT0MoaW5vZGUpOw0KIAlzdHJ1Y3QgbGlzdF9oZWFk
ICpsaCwgKmxlOw0KIAlzdHJ1Y3QgY29kYV9jYWNoZSAqY2MgPSBOVUxMOw0K
IAkNCi0JbGUgPSBsaCA9ICZjbnAtPmNfY25oZWFkOw0KKwlsZSA9IGxoID0g
JmNpaS0+Y19jbmhlYWQ7DQogCXdoaWxlKCAobGUgPSBsZS0+bmV4dCApICE9
IGxoICkgIHsNCiAJCS8qIGNvbXBhcmUgbmFtZSBhbmQgY3JlZHMgKi8NCiAJ
CWNjID0gbGlzdF9lbnRyeShsZSwgc3RydWN0IGNvZGFfY2FjaGUsIGNjX2Nu
bGlzdCk7DQpAQCAtMjA0LDExMCArMjMwLDcwIEBADQogfQ0KIA0KIA0KLS8q
ICAgREVOVFJZIHJlbGF0ZWQgc3R1ZmYgKi8NCisvKiAgIERDQUNIRSAmIFpB
UFBJTkcgcmVsYXRlZCBzdHVmZiAqLw0KIA0KLS8qIHdoZW4gdGhlIGRlbnRy
eSBjb3VudCBmYWxscyB0byAwIHRoaXMgaXMgY2FsbGVkLiBJZiBWZW51cyBo
YXMNCi0gICBhc2tlZCBmb3IgaXQgdG8gYmUgZmx1c2hlZCwgd2UgdGFrZSBp
dCBvdXQgb2YgdGhlIGRlbnRyeSBoYXNoIA0KLSAgIHRhYmxlIHdpdGggZF9k
cm9wICovDQotDQotc3RhdGljIHZvaWQgY29kYV9mbGFnX2NoaWxkcmVuKHN0
cnVjdCBkZW50cnkgKnBhcmVudCkNCisvKiB0aGUgZm9sbG93aW5nIHJvdXRp
bmVzIHNldCBmbGFncyBpbiB0aGUgaW5vZGVzLiBUaGV5IGFyZSANCisgICBk
ZXRlY3RlZCBieToNCisgICAtIGEgZGVudHJ5IG1ldGhvZDogY29kYV9kZW50
cnlfcmV2YWxpZGF0ZSAoZm9yIGxvb2t1cHMpDQorICAgICBpZiB0aGUgZmxh
ZyBpcyBDX1BVUkdFDQorICAgLSBhbiBpbm9kZSBtZXRob2QgY29kYV9yZXZh
bGlkYXRlIChmb3IgYXR0cmlidXRlcykgaWYgdGhlIA0KKyAgICAgZmxhZyBp
cyBDX0FUVFINCisqLw0KK3N0YXRpYyB2b2lkIGNvZGFfZmxhZ19jaGlsZHJl
bihzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIGludCBmbGFnKQ0KIHsNCiAJc3Ry
dWN0IGxpc3RfaGVhZCAqY2hpbGQ7DQotCXN0cnVjdCBjb2RhX2lub2RlX2lu
Zm8gKmNucDsNCiAJc3RydWN0IGRlbnRyeSAqZGU7DQogDQogCWNoaWxkID0g
cGFyZW50LT5kX3N1YmRpcnMubmV4dDsNCiAJd2hpbGUgKCBjaGlsZCAhPSAm
cGFyZW50LT5kX3N1YmRpcnMgKSB7DQogCQlkZSA9IGxpc3RfZW50cnkoY2hp
bGQsIHN0cnVjdCBkZW50cnksIGRfY2hpbGQpOw0KLQkJY25wID0gSVRPQyhk
ZS0+ZF9pbm9kZSk7DQotCQlpZiAoY25wKSANCi0JCQljbnAtPmNfZmxhZ3Mg
fD0gQ19aQVBGSUQ7DQotCQlDREVCVUcoRF9DQUNIRSwgIlpBUEZJRCBmb3Ig
JXNcbiIsIGNvZGFfZjJzKCZjbnAtPmNfZmlkKSk7DQotCQkNCisJCWNvZGFf
ZmxhZ19pbm9kZShkZS0+ZF9pbm9kZSwgZmxhZyk7DQorCQlDREVCVUcoRF9D
QUNIRSwgIiVkIGZvciAlKnMvJSpzXG4iLCBmbGFnLCANCisJCSAgICAgICBk
ZS0+ZF9uYW1lLmxlbiwgZGUtPmRfbmFtZS5uYW1lLCANCisJCSAgICAgICBk
ZS0+ZF9wYXJlbnQtPmRfbmFtZS5sZW4sIGRlLT5kX3BhcmVudC0+ZF9uYW1l
Lm5hbWUpOw0KIAkJY2hpbGQgPSBjaGlsZC0+bmV4dDsNCisJCWlmICggIWRl
LT5kX2lub2RlICkNCisJCQlkX2Ryb3AoZGUpOyANCiAJfQ0KIAlyZXR1cm47
IA0KIH0NCiANCi0vKiBmbGFnIGRlbnRyeSBhbmQgcG9zc2libHkgIGNoaWxk
cmVuIG9mIGEgZGVudHJ5IHdpdGggQ19aQVBGSUQgKi8NCi12b2lkICBjb2Rh
X2RlbnRyeV9kZWxldGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KLXsNCi0J
c3RydWN0IGlub2RlICppbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsNCi0Jc3Ry
dWN0IGNvZGFfaW5vZGVfaW5mbyAqY25wID0gTlVMTDsNCi0JRU5UUlk7DQot
DQotCWlmIChpbm9kZSkgeyANCi0JCWNucCA9IElUT0MoaW5vZGUpOw0KLQkJ
aWYgKCBjbnAgKSANCi0JCQlDSEVDS19DTk9ERShjbnApOw0KLQl9IGVsc2Ug
ew0KLQkJQ0RFQlVHKERfQ0FDSEUsICJObyBpbm9kZSBmb3IgZGVudHJ5X2Rl
bGV0ZSFcbiIpOw0KLQkJcmV0dXJuOw0KLQl9DQogDQotCQ0KLQlpZiAoICFj
bnAgKSB7DQotCQlwcmludGsoIk5vIGNub2RlIGZvciBkZW50cnlfZGVsZXRl
IVxuIik7DQotCQlyZXR1cm47DQotCX0NCit2b2lkIGNvZGFfZmxhZ19hbGlh
c19jaGlsZHJlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgZmxhZykNCit7
DQorCXN0cnVjdCBsaXN0X2hlYWQgKmFsaWFzOw0KKwlzdHJ1Y3QgZGVudHJ5
ICphbGlhc19kZTsNCiANCi0JaWYgKCBjbnAtPmNfZmxhZ3MgJiAoQ19aQVBG
SUQgfCBDX1pBUERJUikgKQ0KLQkJZF9kcm9wKGRlbnRyeSk7DQotCWlmICgg
KGNucC0+Y19mbGFncyAmIENfWkFQRElSKSAmJiBTX0lTRElSKGlub2RlLT5p
X21vZGUpICkgew0KLQkJY29kYV9mbGFnX2NoaWxkcmVuKGRlbnRyeSk7DQor
CWlmICggIWlub2RlICkgDQorCQlyZXR1cm47IA0KKwlhbGlhcyA9IGlub2Rl
LT5pX2RlbnRyeS5uZXh0OyANCisJd2hpbGUgKCBhbGlhcyAhPSAmaW5vZGUt
PmlfZGVudHJ5ICkgew0KKwkJYWxpYXNfZGUgPSBsaXN0X2VudHJ5KGFsaWFz
LCBzdHJ1Y3QgZGVudHJ5LCBkX2FsaWFzKTsNCisJCWlmICggIWFsaWFzX2Rl
ICkgew0KKwkJCXByaW50aygiQ29ycnVwdCBhbGlhcyBsaXN0IGZvciAlKnNc
biIsDQorCQkJICAgICAgIGFsaWFzX2RlLT5kX25hbWUubGVuLCBhbGlhc19k
ZS0+ZF9uYW1lLm5hbWUpOw0KKwkJCXJldHVybjsNCisJCX0NCisJCWNvZGFf
ZmxhZ19jaGlsZHJlbihhbGlhc19kZSwgZmxhZyk7DQorCQlhbGlhcz0gYWxp
YXMtPm5leHQ7DQogCX0NCi0JcmV0dXJuOw0KIH0NCiANCi1zdGF0aWMgdm9p
ZCBjb2RhX3phcF9jbm9kZShzdHJ1Y3QgY29kYV9pbm9kZV9pbmZvICpjbnAs
IGludCBmbGFncykNCit2b2lkIGNvZGFfZmxhZ19pbm9kZShzdHJ1Y3QgaW5v
ZGUgKmlub2RlLCBpbnQgZmxhZykNCiB7DQotCWNucC0+Y19mbGFncyB8PSBm
bGFnczsNCi0JY29kYV9jYWNoZV9jbGVhcl9jbnAoY25wKTsNCi19DQorCXN0
cnVjdCBjb2RhX2lub2RlX2luZm8gKmNpaTsNCiANCi0NCi0NCi0vKiB0aGUg
ZGFjaGUgd2lsbCBub3RpY2UgdGhlIGZsYWdzIGFuZCBkcm9wIGVudHJpZXMg
KHBvc3NpYmx5IHdpdGgNCi0gICBjaGlsZHJlbikgdGhlIG1vbWVudCB0aGV5
IGFyZSBubyBsb25nZXIgaW4gdXNlICAqLw0KLXZvaWQgY29kYV96YXBmaWQo
c3RydWN0IFZpY2VGaWQgKmZpZCwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwg
aW50IGZsYWcpDQotew0KLQlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gTlVMTDsN
Ci0Jc3RydWN0IGNvZGFfaW5vZGVfaW5mbyAqY25wOw0KLQ0KLQlFTlRSWTsN
Ci0gDQotCWlmICggIXNiICkgew0KLQkJcHJpbnRrKCJjb2RhX3phcGZpZDog
bm8gc2IhXG4iKTsNCisJaWYgKCAhaW5vZGUgKSB7DQorCQlDREVCVUcoRF9D
QUNIRSwgIiBubyBpbm9kZSFcbiIpOw0KIAkJcmV0dXJuOw0KIAl9DQorCWNp
aSA9IElUT0MoaW5vZGUpOw0KKwljaWktPmNfZmxhZ3MgfD0gZmxhZzsNCit9
CQkNCiANCi0JaWYgKCAhZmlkICkgew0KLQkJcHJpbnRrKCJjb2RhX3phcGZp
ZDogbm8gZmlkIVxuIik7DQotCQlyZXR1cm47DQotCX0NCiANCi0JaWYgKCBj
b2RhX2ZpZF9pc192b2xyb290KGZpZCkgKSB7DQotCQlzdHJ1Y3QgbGlzdF9o
ZWFkICpsaCwgKmxlOw0KLQkJc3RydWN0IGNvZGFfc2JfaW5mbyAqc2JpID0g
Y29kYV9zYnAoc2IpOw0KLQkJbGUgPSBsaCA9ICZzYmktPnNiaV92b2xyb290
aGVhZDsNCi0JCXdoaWxlICggKGxlID0gbGUtPm5leHQpICE9IGxoICkgew0K
LQkJCWNucCA9IGxpc3RfZW50cnkobGUsIHN0cnVjdCBjb2RhX2lub2RlX2lu
Zm8sIGNfdm9scm9vdGxpc3QpOw0KLQkJCWlmICggY25wLT5jX2ZpZC5Wb2x1
bWUgPT0gZmlkLT5Wb2x1bWUpIA0KLQkJCQljb2RhX3phcF9jbm9kZShjbnAs
IGZsYWcpOw0KLQkJfQ0KLQkJcmV0dXJuOw0KLQl9DQogDQogDQotCWlub2Rl
ID0gY29kYV9maWRfdG9faW5vZGUoZmlkLCBzYik7DQotCWlmICggIWlub2Rl
ICkgew0KLQkJQ0RFQlVHKERfQ0FDSEUsICJjb2RhX3phcGZpZDogbm8gaW5v
ZGUhXG4iKTsNCi0JCXJldHVybjsNCi0JfQ0KLQljbnAgPSBJVE9DKGlub2Rl
KTsNCi0JY29kYV96YXBfY25vZGUoY25wLCBmbGFnKTsNCi19DQotCQkNCiAN
CiBpbnQNCiBjZnNuY19uY19pbmZvKGNoYXIgKmJ1ZmZlciwgY2hhciAqKnN0
YXJ0LCBvZmZfdCBvZmZzZXQsIGludCBsZW5ndGgsIGludCBkdW1teSkNCmRp
ZmYgLXVyTiBsaW51eC0yLjEuODkub3JpZy9mcy9jb2RhL2Nub2RlLmMgbGlu
dXgvZnMvY29kYS9jbm9kZS5jDQotLS0gbGludXgtMi4xLjg5Lm9yaWcvZnMv
Y29kYS9jbm9kZS5jCVdlZCBNYXIgIDQgMTg6MTQ6MzIgMTk5OA0KKysrIGxp
bnV4L2ZzL2NvZGEvY25vZGUuYwlNb24gTWFyIDE2IDAwOjE4OjQxIDE5OTgN
CkBAIC0xNSw4ICsxNSw2IEBADQogDQogLyogY25vZGUuYyAqLw0KIA0KLQ0K
LSAgICAgICAgICAgICAgDQogc3RhdGljIHZvaWQgY29kYV9maWxsX2lub2Rl
IChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgY29kYV92YXR0ciAqYXR0
cikNCiB7DQogICAgICAgICBDREVCVUcoRF9TVVBFUiwgImlubzogJWxkXG4i
LCBpbm9kZS0+aV9pbm8pOw0KQEAgLTU2LDggKzU0LDggQEANCiAgICAgICAg
IEVOVFJZOw0KIA0KICAgICAgICAgLyogDQotICAgICAgICAgKiBXZSBnZXQg
aW5vZGUgbnVtYmVycyBmcm9tIFZlbnVzIC0tIHNlZSB2ZW51cyBzb3VyY2UN
Ci0gICAgICAgICAqLw0KKyAgICAgICAgKiBXZSBnZXQgaW5vZGUgbnVtYmVy
cyBmcm9tIFZlbnVzIC0tIHNlZSB2ZW51cyBzb3VyY2UNCisJKi8NCiANCiAJ
ZXJyb3IgPSB2ZW51c19nZXRhdHRyKHNiLCBmaWQsICZhdHRyKTsNCiAJaWYg
KCBlcnJvciApIHsNCkBAIC03OSw3ICs3Nyw3IEBADQogCQltZW1zZXQoY25w
LCAwLCAoaW50KSBzaXplb2Yoc3RydWN0IGNvZGFfaW5vZGVfaW5mbykpOw0K
IAkJY25wLT5jX2ZpZCA9ICpmaWQ7DQogCQljbnAtPmNfbWFnaWMgPSBDT0RB
X0NOT0RFX01BR0lDOw0KLQkJY25wLT5jX2ZsYWdzID0gQ19WQVRUUjsNCisJ
CWNucC0+Y19mbGFncyA9IDA7DQogCQljbnAtPmNfdm5vZGUgPSAqaW5vZGU7
DQogCQlJTklUX0xJU1RfSEVBRCgmKGNucC0+Y19jbmhlYWQpKTsNCiAJCUlO
SVRfTElTVF9IRUFEKCYoY25wLT5jX3ZvbHJvb3RsaXN0KSk7DQpAQCAtMTEx
LDIwICsxMDksNTEgQEANCiANCiAgDQogDQotLyogY29udmVydCBhIGZpZCB0
byBhbiBpbm9kZS4gQXZvaWRzIGhhdmluZyBhIGhhc2ggdGFibGUNCi0gICBz
dWNoIGFzIHByZXNlbnQgaW4gdGhlIE1hY2ggbWluaWNhY2hlICovDQorLyog
Y29udmVydCBhIGZpZCB0byBhbiBpbm9kZS4gTW9zdGx5IHdlIGNhbiBjb21w
dXRlDQorICAgdGhlIGlub2RlIG51bWJlciBmcm9tIHRoZSBGSUQsIGJ1dCBu
b3QgZm9yIHZvbHVtZQ0KKyAgIG1vdW50IHBvaW50czogdGhvc2UgYXJlIGlu
IGEgbGlzdCAqLw0KIHN0cnVjdCBpbm9kZSAqY29kYV9maWRfdG9faW5vZGUo
VmljZUZpZCAqZmlkLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKSANCiB7DQog
CWlub190IG5yOw0KIAlzdHJ1Y3QgaW5vZGUgKmlub2RlOw0KIAlzdHJ1Y3Qg
Y29kYV9pbm9kZV9pbmZvICpjbnA7DQotRU5UUlk7DQorCUVOVFJZOw0KIA0K
IAlDREVCVUcoRF9JTk9ERSwgIiVzXG4iLCBjb2RhX2YycyhmaWQpKTsNCiAN
CisJaWYgKCAhc2IgKSB7DQorCQlwcmludGsoImNvZGFfZmlkX3RvX2lub2Rl
OiBubyBzYiFcbiIpOw0KKwkJcmV0dXJuIE5VTEw7DQorCX0NCisNCisJaWYg
KCAhZmlkICkgew0KKwkJcHJpbnRrKCJjb2RhX2ZpZF90b19pbm9kZTogbm8g
ZmlkIVxuIik7DQorCQlyZXR1cm4gTlVMTDsNCisJfQ0KKw0KKw0KKwlpZiAo
IGNvZGFfZmlkX2lzX3ZvbHJvb3QoZmlkKSApIHsNCisJCXN0cnVjdCBjb2Rh
X2lub2RlX2luZm8gKmNpaTsNCisJCXN0cnVjdCBsaXN0X2hlYWQgKmxoLCAq
bGU7DQorCQlzdHJ1Y3QgY29kYV9zYl9pbmZvICpzYmkgPSBjb2RhX3NicChz
Yik7DQorCQlsZSA9IGxoID0gJnNiaS0+c2JpX3ZvbHJvb3RoZWFkOw0KKw0K
KwkJd2hpbGUgKCAobGUgPSBsZS0+bmV4dCkgIT0gbGggKSB7DQorCQkJY2lp
ID0gbGlzdF9lbnRyeShsZSwgc3RydWN0IGNvZGFfaW5vZGVfaW5mbywgDQor
CQkJCQkgY192b2xyb290bGlzdCk7DQorCQkJaWYgKCBjaWktPmNfZmlkLlZv
bHVtZSA9PSBmaWQtPlZvbHVtZSkgew0KKwkJCQlpbm9kZSA9IGNpaS0+Y192
bm9kZTsNCisJCQkJQ0RFQlVHKERfSU5PREUsICJ2b2x1bWUgcm9vdCwgZm91
bmQgJWxkXG4iLCBjaWktPmNfdm5vZGUtPmlfaW5vKTsNCisJCQkJcmV0dXJu
IGNpaS0+Y192bm9kZTsNCisJCQl9DQorCQkJDQorCQl9DQorCQlyZXR1cm4g
TlVMTDsNCisJfQ0KKw0KKwkvKiBmaWQgaXMgbm90IHZvbHVtZSByb290LCBo
ZW5jZSBpbm8gaXMgY29tcHV0YWJsZSAqLw0KIAluciA9IGNvZGFfZjJpKGZp
ZCk7DQogCWlub2RlID0gaWdldChzYiwgbnIpOw0KLQ0KIAlpZiAoICFpbm9k
ZSApIHsNCiAJCXByaW50aygiY29kYV9maWRfdG9faW5vZGU6IG51bGwgZnJv
bSBpZ2V0LCBzYiAlcCwgbnIgJWxkLlxuIiwNCiAJCSAgICAgICBzYiwgbnIp
Ow0KQEAgLTEzMywxOSArMTYyLDI1IEBADQogDQogCS8qIGNoZWNrIGlmIHRo
aXMgaW5vZGUgaXMgbGlua2VkIHRvIGEgY25vZGUgKi8NCiAJY25wID0gSVRP
Qyhpbm9kZSk7DQotDQogCWlmICggY25wLT5jX21hZ2ljICE9IENPREFfQ05P
REVfTUFHSUMgKSB7DQorCQlDREVCVUcoRF9JTk9ERSwgInVuaW5pdGlhbGl6
ZWQgaW5vZGUuIFJldHVybi5cbiIpOw0KIAkJaXB1dChpbm9kZSk7DQogCQly
ZXR1cm4gTlVMTDsNCiAJfQ0KIA0KLQkvKiBtYWtlIHN1cmUgZmlkIGlzIHRo
ZSBvbmUgd2Ugd2FudCAqLw0KLQlpZiAoICFjb2RhX2ZpZGVxKGZpZCwgJihj
bnAtPmNfZmlkKSkgKSB7DQorCS8qIG1ha2Ugc3VyZSBmaWQgaXMgdGhlIG9u
ZSB3ZSB3YW50OyANCisJICAgdW5mb3J0dW5hdGVseSBWZW51cyB3aWxsIHNo
YW1lbGVzc2x5IHNlbmQgdXMgbW91bnQtc3ltbGlua3MuDQorCSAgIFRoZXNl
IGhhdmUgdGhlIHNhbWUgaW5vZGUgYXMgdGhlIHJvb3Qgb2YgdGhlIHZvbHVt
ZSB0aGV5DQorCSAgIG1vdW50LCBidXQgdGhlIGZpZCB3aWxsIGJlIHdyb25n
LiANCisJKi8NCisJaWYgKCAhY29kYV9maWRlcShmaWQsICYoY25wLT5jX2Zp
ZCkpICYmIA0KKwkgICAgICFjb2RhX2ZpZF9pc192b2xyb290KCYoY25wLT5j
X2ZpZCkpKSB7DQogCQlwcmludGsoImNvZGFfZmlkMmlub2RlOiBiYWQgY25v
ZGUhIFRlbGwgUGV0ZXIuXG4iKTsNCiAJCWlwdXQoaW5vZGUpOw0KIAkJcmV0
dXJuIE5VTEw7DQogCX0NCiANCisJQ0RFQlVHKERfSU5PREUsICJmb3VuZCAl
bGRcbiIsIGlub2RlLT5pX2lubyk7DQogCWlwdXQoaW5vZGUpOwkNCiAJcmV0
dXJuIGlub2RlOw0KIH0NCmRpZmYgLXVyTiBsaW51eC0yLjEuODkub3JpZy9m
cy9jb2RhL2NvZGFfbGludXguYyBsaW51eC9mcy9jb2RhL2NvZGFfbGludXgu
Yw0KLS0tIGxpbnV4LTIuMS44OS5vcmlnL2ZzL2NvZGEvY29kYV9saW51eC5j
CVdlZCBNYXIgIDQgMTg6MTQ6MzIgMTk5OA0KKysrIGxpbnV4L2ZzL2NvZGEv
Y29kYV9saW51eC5jCU1vbiBNYXIgMTYgMDA6MzY6MjEgMTk5OA0KQEAgLTMy
LDE0ICszMiwxNSBAQA0KIC8qIGNhbGxlciBtdXN0IGFsbG9jYXRlIDM2IGJ5
dGUgc3RyaW5nICEgKi8NCiBjaGFyICogY29kYV9mMnMoVmljZUZpZCAqZikN
CiB7DQotCXN0YXRpYyBjaGFyIHNbNTBdOw0KKwlzdGF0aWMgY2hhciBzWzYw
XTsNCiAJaWYgKCBmICkgew0KLQkJc3ByaW50ZihzLCAiKCUxMGx4LCUxMGx4
LCUxMGx4KSIsIA0KKwkJc3ByaW50ZihzLCAiKCUtI2x4LCUtI2x4LCUtI2x4
KSIsIA0KIAkJCSBmLT5Wb2x1bWUsIGYtPlZub2RlLCBmLT5VbmlxdWUpOw0K
IAl9DQogCXJldHVybiBzOw0KIH0NCiANCisvKiByZWNvZ25pemUgc3BlY2lh
bCAuQ09OVFJPTCBuYW1lICovDQogaW50IGNvZGFfaXNjb250cm9sKGNvbnN0
IGNoYXIgKm5hbWUsIHNpemVfdCBsZW5ndGgpDQogew0KIAlpZiAoKENGU19D
T05UUk9MTEVOID09IGxlbmd0aCkgJiYgDQpAQCAtNDgsMTYgKzQ5LDIzIEBA
DQogCXJldHVybiAwOw0KIH0NCiANCisvKiByZWNvZ25pemUgL2NvZGEgaW5v
ZGUgKi8NCiBpbnQgY29kYV9pc3Jvb3Qoc3RydWN0IGlub2RlICppKQ0KIHsN
CiAgICAgaWYgKCBpLT5pX3NiLT5zX3Jvb3QtPmRfaW5vZGUgPT0gaSApIHsN
Ci0JcmV0dXJuIDE7DQorCSAgICByZXR1cm4gMTsNCiAgICAgfSBlbHNlIHsN
Ci0JcmV0dXJuIDA7DQorCSAgICByZXR1cm4gMDsNCiAgICAgfQ0KIH0NCiAN
Ci0JDQorLyogaXMgdGhpcyBhIHZvbHVtZSByb290IEZJRCAqLw0KK2ludCBj
b2RhX2ZpZF9pc192b2xyb290KHN0cnVjdCBWaWNlRmlkICpmaWQpDQorew0K
KwlyZXR1cm4gKCAoZmlkLT5Wbm9kZSA9PSAxKSAmJiAoZmlkLT5VbmlxdWUg
PT0gMSApICk7DQorfQ0KKw0KKy8qIHB1dCB0aGUgY3VycmVudCBwcm9jZXNz
IGNyZWRlbnRpYWxzIGluIHRoZSBjcmVkICovDQogdm9pZCBjb2RhX2xvYWRf
Y3JlZHMoc3RydWN0IGNvZGFfY3JlZCAqY3JlZCkNCiB7DQogICAgICAgICBj
cmVkLT5jcl91aWQgPSAodnVpZF90KSBjdXJyZW50LT51aWQ7DQpAQCAtOTcs
MTEgKzEwNSw2IEBADQogCXJldHVybiBjb2RhX2ZsYWdzOw0KIH0NCiANCi0N
Ci1pbnQgY29kYV9maWRfaXNfdm9scm9vdChzdHJ1Y3QgVmljZUZpZCAqZmlk
KQ0KLXsNCi0JcmV0dXJuICggKGZpZC0+Vm5vZGUgPT0gMSkgJiYgKGZpZC0+
VW5pcXVlID09IDEgKSApOw0KLX0NCiANCiAvKiB1dGlsaXR5IGZ1bmN0aW9u
cyBiZWxvdyAqLw0KIHZvaWQgY29kYV92YXR0cl90b19pYXR0cihzdHJ1Y3Qg
aW5vZGUgKmlub2RlLCBzdHJ1Y3QgY29kYV92YXR0ciAqYXR0cikNCmRpZmYg
LXVyTiBsaW51eC0yLjEuODkub3JpZy9mcy9jb2RhL2Rpci5jIGxpbnV4L2Zz
L2NvZGEvZGlyLmMNCi0tLSBsaW51eC0yLjEuODkub3JpZy9mcy9jb2RhL2Rp
ci5jCVdlZCBNYXIgIDQgMTg6MTQ6MzIgMTk5OA0KKysrIGxpbnV4L2ZzL2Nv
ZGEvZGlyLmMJTW9uIE1hciAxNiAwMDozMDoxNCAxOTk4DQpAQCAtNDAsMTcg
KzQwLDIxIEBADQogLyogZGlyIGZpbGUtb3BzICovDQogc3RhdGljIGludCBj
b2RhX3JlYWRkaXIoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmRpcmVudCwg
ZmlsbGRpcl90IGZpbGxkaXIpOw0KIA0KKy8qIGRlbnRyeSBvcHMgKi8NCitp
bnQgY29kYV9kZW50cnlfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICpkZSk7
DQorDQogLyogc3VwcG9ydCByb3V0aW5lcyAqLw0KIHN0YXRpYyBpbnQgY29k
YV92ZW51c19yZWFkZGlyKHN0cnVjdCBmaWxlICpmaWxwLCB2b2lkICpkaXJl
bnQsIA0KIAkJCSAgICAgIGZpbGxkaXJfdCBmaWxsZGlyKTsNCiBpbnQgY29k
YV9mc3luYyhzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkp
Ow0KK3N0YXRpYyBpbnQgY29kYV9yZWZyZXNoX2lub2RlKHN0cnVjdCBkZW50
cnkgKmRlbnRyeSk7DQogDQogc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zIGNv
ZGFfZGVudHJ5X29wZXJhdGlvbnMgPQ0KIHsNCi0JTlVMTCwgLyogcmV2YWxp
ZGF0ZSAqLw0KKwljb2RhX2RlbnRyeV9yZXZhbGlkYXRlLCAvKiByZXZhbGlk
YXRlICovDQogCU5VTEwsIC8qIGhhc2ggKi8NCiAJTlVMTCwNCi0JY29kYV9k
ZW50cnlfZGVsZXRlDQorCU5VTEwsDQogfTsNCiANCiBzdHJ1Y3QgaW5vZGVf
b3BlcmF0aW9ucyBjb2RhX2Rpcl9pbm9kZV9vcGVyYXRpb25zID0NCkBAIC03
NCw3ICs3OCw3IEBADQogCWNvZGFfcGVybWlzc2lvbiwgICAgICAgIC8qIHBl
cm1pc3Npb24gKi8NCiAJTlVMTCwgICAgICAgICAgICAgICAgICAgLyogc21h
cCAqLw0KIAlOVUxMLCAgICAgICAgICAgICAgICAgICAvKiB1cGRhdGUgcGFn
ZSAqLw0KLSAgICAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgLyogcmV2
YWxpZGF0ZSAqLw0KKyAgICAgICAgY29kYV9yZXZhbGlkYXRlX2lub2RlICAg
LyogcmV2YWxpZGF0ZSAqLw0KIH07DQogDQogc3RydWN0IGZpbGVfb3BlcmF0
aW9ucyBjb2RhX2Rpcl9vcGVyYXRpb25zID0gew0KQEAgLTExNyw3ICsxMjEs
NiBAQA0KIAl9DQogDQogCWRpcmNucCA9IElUT0MoZGlyKTsNCi0JQ0hFQ0tf
Q05PREUoZGlyY25wKTsNCiANCiAJaWYgKCBsZW5ndGggPiBDRlNfTUFYTkFN
TEVOICkgew0KIAkgICAgICAgIHByaW50aygibmFtZSB0b28gbG9uZzogbG9v
a3VwLCAlcyAoJSpzKVxuIiwgDQpAQCAtMTQxLDkgKzE0NCwxMyBAQA0KIAkJ
CSAgICAgKGNvbnN0IGNoYXIgKiluYW1lLCBsZW5ndGgsICZ0eXBlLCAmcmVz
ZmlkKTsNCiANCiAJcmVzX2lub2RlID0gTlVMTDsNCi0JaWYgKCFlcnJvciB8
fCAoZXJyb3IgPT0gLUNGU19OT0NBQ0hFKSApIHsNCi0JCWlmIChlcnJvciA9
PSAtQ0ZTX05PQ0FDSEUpIA0KKwlpZiAoIWVycm9yKSB7DQorCQlpZiAodHlw
ZSAmIENGU19OT0NBQ0hFKSB7DQorCQkJdHlwZSAmPSAofkNGU19OT0NBQ0hF
KTsNCisJCQlDREVCVUcoRF9JTk9ERSwgImRyb3BtZSBzZXQgZm9yICVzXG4i
LCANCisJCQkgICAgICAgY29kYV9mMnMoJnJlc2ZpZCkpOw0KIAkJCWRyb3Bt
ZSA9IDE7DQorCQl9DQogCSAgICAJZXJyb3IgPSBjb2RhX2Nub2RlX21ha2Uo
JnJlc19pbm9kZSwgJnJlc2ZpZCwgZGlyLT5pX3NiKTsNCiAJCWlmIChlcnJv
cikNCiAJCQlyZXR1cm4gLWVycm9yOw0KQEAgLTE1Miw3ICsxNTksNyBAQA0K
IAkJICAgICAgIGNvZGFfZjJzKCZkaXJjbnAtPmNfZmlkKSwgbGVuZ3RoLCBu
YW1lLCBlcnJvcik7DQogCQlyZXR1cm4gZXJyb3I7DQogCX0NCi0JQ0RFQlVH
KERfSU5PREUsICJsb29rdXA6ICVzIGlzICglcykgdHlwZSAlZCByZXN1bHQg
JWQsIGRyb3BtZSAlZFxuIiwNCisJQ0RFQlVHKERfSU5PREUsICJsb29rdXA6
ICVzIGlzICglcyksIHR5cGUgJWQgcmVzdWx0ICVkLCBkcm9wbWUgJWRcbiIs
DQogCSAgICAgICBuYW1lLCBjb2RhX2YycygmcmVzZmlkKSwgdHlwZSwgZXJy
b3IsIGRyb3BtZSk7DQogDQogZXhpdDoNCkBAIC0yMjgsNyArMjM1LDYgQEAN
CiAgICAgICAgIENIRUNLX0NOT0RFKGRpcmNucCk7DQogDQogICAgICAgICBp
ZiAoIGxlbmd0aCA+IENGU19NQVhOQU1MRU4gKSB7DQotCQljaGFyIHN0cls1
MF07DQogCQlwcmludGsoIm5hbWUgdG9vIGxvbmc6IGNyZWF0ZSwgJXMoJXMp
XG4iLCANCiAJCSAgICAgICBjb2RhX2YycygmZGlyY25wLT5jX2ZpZCksIG5h
bWUpOw0KIAkJcmV0dXJuIC1FTkFNRVRPT0xPTkc7DQpAQCAtMjM4LDcgKzI0
NCw2IEBADQogCQkJCTAsIG1vZGUsICZuZXdmaWQsICZhdHRycyk7DQogDQog
ICAgICAgICBpZiAoIGVycm9yICkgew0KLQkJY2hhciBzdHJbNTBdOw0KIAkJ
Q0RFQlVHKERfSU5PREUsICJjcmVhdGU6ICVzLCByZXN1bHQgJWRcbiIsDQog
CQkgICAgICAgY29kYV9mMnMoJm5ld2ZpZCksIGVycm9yKTsgDQogCQlkX2Ry
b3AoZGUpOw0KQEAgLTMyMSw3ICszMjYsNiBAQA0KICAgICAgICAgY29uc3Qg
Y2hhciAqIG5hbWUgPSBkZS0+ZF9uYW1lLm5hbWU7DQogCWludCBsZW4gPSBk
ZS0+ZF9uYW1lLmxlbjsNCiAgICAgICAgIHN0cnVjdCBjb2RhX2lub2RlX2lu
Zm8gKmRpcl9jbnAsICpjbnA7DQotCWNoYXIgc3RyWzUwXTsNCiAJaW50IGVy
cm9yOw0KIA0KICAgICAgICAgRU5UUlk7DQpAQCAtNDA4LDcgKzQxMiw2IEBA
DQogICAgICAgICBpbnQgZXJyb3I7DQogCWNvbnN0IGNoYXIgKm5hbWUgPSBk
ZS0+ZF9uYW1lLm5hbWU7DQogCWludCBsZW4gPSBkZS0+ZF9uYW1lLmxlbjsN
Ci0JY2hhciBmaWRzdHJbNTBdOw0KIA0KIAlFTlRSWTsNCiANCkBAIC03ODEs
MyArNzg0LDgyIEBADQogICAgICAgICBDT0RBX0ZSRUUoYnVmZiwgc2l6ZSk7
DQogICAgICAgICByZXR1cm4gZXJyb3I7DQogfQ0KKw0KK2ludCBjb2RhX2Rl
bnRyeV9yZXZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKmRlKQ0KK3sNCisJaW50
IHZhbGlkID0gMTsNCisJc3RydWN0IGlub2RlICppbm9kZSA9IGRlLT5kX2lu
b2RlOw0KKwlzdHJ1Y3QgY29kYV9pbm9kZV9pbmZvICpjaWk7DQorCUVOVFJZ
Ow0KKw0KKwlpZiAoaW5vZGUpIHsNCisJCWlmIChpc19iYWRfaW5vZGUoaW5v
ZGUpKQ0KKwkJCXJldHVybiAwOw0KKwkJY2lpID0gSVRPQyhkZS0+ZF9pbm9k
ZSk7DQorCQlpZiAoY2lpLT5jX2ZsYWdzICYgQ19QVVJHRSkgDQorCQkJdmFs
aWQgPSAwOw0KKwl9DQorCXJldHVybiB2YWxpZCB8fCAgY29kYV9pc3Jvb3Qo
ZGUtPmRfaW5vZGUpOw0KK30NCisNCisNCitzdGF0aWMgaW50IGNvZGFfcmVm
cmVzaF9pbm9kZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQorew0KKwlzdHJ1
Y3QgY29kYV92YXR0ciBhdHRyOw0KKwlpbnQgZXJyb3I7DQorCWludCBvbGRf
bW9kZTsNCisJaW5vX3Qgb2xkX2lubzsNCisJc3RydWN0IGlub2RlICppbm9k
ZSA9IGRlbnRyeS0+ZF9pbm9kZTsNCisJc3RydWN0IGNvZGFfaW5vZGVfaW5m
byAqY2lpID0gSVRPQyhpbm9kZSk7DQorCQ0KKwlFTlRSWTsNCisJZXJyb3Ig
PSB2ZW51c19nZXRhdHRyKGlub2RlLT5pX3NiLCAmKGNpaS0+Y19maWQpLCAm
YXR0cik7DQorCWlmICggZXJyb3IgKSB7IA0KKwkJbWFrZV9iYWRfaW5vZGUo
aW5vZGUpOw0KKwkJcmV0dXJuIC1FSU87DQorCX0NCisNCisJLyogdGhpcyBi
YWJ5IG1heSBiZSBsb3N0IGlmOg0KKwkgICAtIGl0J3MgdHlwZSBjaGFuZ2Vk
DQorICAgICAgICAgICAgLSBpdCdzIGlubyBjaGFuZ2VkIA0KKwkqLw0KKwlv
bGRfbW9kZSA9IGlub2RlLT5pX21vZGU7DQorCW9sZF9pbm8gPSBpbm9kZS0+
aV9pbm87DQorCWNvZGFfdmF0dHJfdG9faWF0dHIoaW5vZGUsICZhdHRyKTsN
CisNCisJaWYgKChpbm9kZS0+aV9pbm8gIT0gb2xkX2lubykgfHwNCisJICAg
ICgob2xkX21vZGUgJiBTX0lGTVQpICE9IChpbm9kZS0+aV9tb2RlICYgU19J
Rk1UKSkpIHsNCisJCW1ha2VfYmFkX2lub2RlKGlub2RlKTsNCisJCWlub2Rl
LT5pX21vZGUgPSBvbGRfbW9kZTsNCisJCXJldHVybiAtRUlPOw0KKwl9DQor
CQ0KKwljaWktPmNfZmxhZ3MgJj0gfkNfVkFUVFI7DQorCXJldHVybiAwOw0K
K30NCisNCisNCisvKg0KKyAqIFRoaXMgaXMgY2FsbGVkIHdoZW4gd2Ugd2Fu
dCB0byBjaGVjayBpZiB0aGUgaW5vZGUgaGFzDQorICogY2hhbmdlZCBvbiB0
aGUgc2VydmVyLiAgQ29kYSBtYWtlcyB0aGlzIGVhc3kgc2luY2UgdGhlDQor
ICogY2FjaGUgbWFuYWdlciBWZW51cyBpc3N1ZXMgYSBkb3duY2FsbCB0byB0
aGUga2VybmVsIHdoZW4gdGhpcyANCisgKiBoYXBwZW5zIA0KKyAqLw0KKw0K
K2ludCBjb2RhX3JldmFsaWRhdGVfaW5vZGUoc3RydWN0IGRlbnRyeSAqZGVu
dHJ5KQ0KK3sNCisJaW50IGVycm9yID0gMDsNCisJc3RydWN0IGNvZGFfaW5v
ZGVfaW5mbyAqY2lpID0gSVRPQyhkZW50cnktPmRfaW5vZGUpOw0KKw0KKwlF
TlRSWTsNCisJQ0RFQlVHKERfSU5PREUsICJyZXZhbGlkYXRpbmc6ICUqcy8l
KnNcbiIsIA0KKwkgICAgICAgZGVudHJ5LT5kX25hbWUubGVuLCBkZW50cnkt
PmRfbmFtZS5uYW1lLA0KKwkgICAgICAgZGVudHJ5LT5kX3BhcmVudC0+ZF9u
YW1lLmxlbiwgZGVudHJ5LT5kX3BhcmVudC0+ZF9uYW1lLm5hbWUpOw0KKw0K
KwlpZiAoIGNpaS0+Y19mbGFncyAmIChDX1ZBVFRSIHwgQ19QVVJHRSApKSB7
DQorCQllcnJvciA9IGNvZGFfcmVmcmVzaF9pbm9kZShkZW50cnkpOw0KKwl9
DQorDQorCXJldHVybiBlcnJvcjsNCit9DQorDQpkaWZmIC11ck4gbGludXgt
Mi4xLjg5Lm9yaWcvZnMvY29kYS9maWxlLmMgbGludXgvZnMvY29kYS9maWxl
LmMNCi0tLSBsaW51eC0yLjEuODkub3JpZy9mcy9jb2RhL2ZpbGUuYwlXZWQg
TWFyICA0IDE4OjE0OjMyIDE5OTgNCisrKyBsaW51eC9mcy9jb2RhL2ZpbGUu
YwlTdW4gTWFyIDE1IDIyOjAwOjA3IDE5OTgNCkBAIC0zMCw3ICszMCw3IEBA
DQogc3RhdGljIHNzaXplX3QgY29kYV9maWxlX3dyaXRlKHN0cnVjdCBmaWxl
ICpmLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCwgbG9mZl90ICpv
ZmYpOw0KIHN0YXRpYyBpbnQgY29kYV9maWxlX21tYXAoc3RydWN0IGZpbGUg
KiBmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEpOw0KIA0KLS8q
IGV4cG9ydGVkIGZyb20gdGhpcyBmaWxlICovDQorLyogYWxzbyBleHBvcnRl
ZCBmcm9tIHRoaXMgZmlsZSAodXNlZCBmb3IgZGlycykgKi8NCiBpbnQgY29k
YV9mc3luYyhzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkp
Ow0KIA0KIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGNvZGFfZmlsZV9pbm9k
ZV9vcGVyYXRpb25zID0gew0KQEAgLTQzLDcgKzQzLDcgQEANCiAJTlVMTCwJ
CQkvKiBta2RpciAqLw0KIAlOVUxMLAkJCS8qIHJtZGlyICovDQogCU5VTEws
CQkJLyogbWtub2QgKi8NCi0JTlVMTCwJCS8qIHJlbmFtZSAqLw0KKwlOVUxM
LAkJICAgICAgICAvKiByZW5hbWUgKi8NCiAJTlVMTCwJCQkvKiByZWFkbGlu
ayAqLw0KIAlOVUxMLAkJCS8qIGZvbGxvd19saW5rICovDQogCWNvZGFfcmVh
ZHBhZ2UsICAgIAkvKiByZWFkcGFnZSAqLw0KQEAgLTUzLDcgKzUzLDcgQEAN
CiAgICAgICAgIGNvZGFfcGVybWlzc2lvbiwgICAgICAgIC8qIHBlcm1pc3Np
b24gKi8NCiAJTlVMTCwgICAgICAgICAgICAgICAgICAgLyogc21hcCAqLw0K
IAlOVUxMLCAgICAgICAgICAgICAgICAgICAvKiB1cGRhdGUgcGFnZSAqLw0K
LSAgICAgICAgTlVMTCAgICAgICAgICAgICAgICAgICAgLyogcmV2YWxpZGF0
ZSAqLw0KKyAgICAgICAgY29kYV9yZXZhbGlkYXRlX2lub2RlICAgLyogcmV2
YWxpZGF0ZSAqLw0KIH07DQogDQogc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBj
b2RhX2ZpbGVfb3BlcmF0aW9ucyA9IHsNCkBAIC03NCw0MSArNzQsNDcgQEAN
CiB9Ow0KIA0KIC8qICBGaWxlIGZpbGUgb3BlcmF0aW9ucyAqLw0KLXN0YXRp
YyBpbnQgY29kYV9yZWFkcGFnZShzdHJ1Y3QgZmlsZSAqIGZpbGUsIHN0cnVj
dCBwYWdlICogcGFnZSkNCitzdGF0aWMgaW50IGNvZGFfcmVhZHBhZ2Uoc3Ry
dWN0IGZpbGUgKiBjb2RhX2ZpbGUsIHN0cnVjdCBwYWdlICogcGFnZSkNCiB7
DQotCXN0cnVjdCBkZW50cnkgKmRlID0gZmlsZS0+Zl9kZW50cnk7DQotCXN0
cnVjdCBpbm9kZSAqaW5vZGUgPSBkZS0+ZF9pbm9kZTsNCisJc3RydWN0IGRl
bnRyeSAqZGUgPSBjb2RhX2ZpbGUtPmZfZGVudHJ5Ow0KKwlzdHJ1Y3QgaW5v
ZGUgKmNvZGFfaW5vZGUgPSBkZS0+ZF9pbm9kZTsNCiAJc3RydWN0IGRlbnRy
eSBjb250X2RlbnRyeTsNCi0gICAgICAgIHN0cnVjdCBpbm9kZSAqY29udF9p
bm9kZTsNCi0gICAgICAgIHN0cnVjdCBjb2RhX2lub2RlX2luZm8gKmNucDsN
CisJc3RydWN0IGZpbGUgY29udF9maWxlOw0KKyAgICAgICAgc3RydWN0IGNv
ZGFfaW5vZGVfaW5mbyAqY2lpOw0KIA0KICAgICAgICAgRU5UUlk7DQogICAg
ICAgICANCi0gICAgICAgIGNucCA9IElUT0MoaW5vZGUpOw0KLSAgICAgICAg
Q0hFQ0tfQ05PREUoY25wKTsNCisgICAgICAgIGNpaSA9IElUT0MoY29kYV9p
bm9kZSk7DQogDQotICAgICAgICBpZiAoICEgY25wLT5jX292cCApIHsNCi0g
ICAgICAgICAgICBwcmludGsoImNvZGFfcmVhZHBhZ2U6IG5vIG9wZW4gaW5v
ZGUgZm9yIGlubyAlbGRcbiIsIGlub2RlLT5pX2lubyk7DQorICAgICAgICBp
ZiAoICEgY2lpLT5jX292cCApIHsNCisJCXByaW50aygiY29kYV9yZWFkcGFn
ZTogbm8gb3BlbiBpbm9kZSBmb3IgaW5vICVsZCwgJXNcbiIsIA0KKwkJICAg
ICAgIGNvZGFfaW5vZGUtPmlfaW5vLCBkZS0+ZF9uYW1lLm5hbWUpOw0KICAg
ICAgICAgICAgICAgICByZXR1cm4gLUVOWElPOw0KICAgICAgICAgfQ0KKyAg
ICAgICANCisgICAgICAgIGNvZGFfcHJlcGFyZV9vcGVuZmlsZShjb2RhX2lu
b2RlLCBjb2RhX2ZpbGUsIGNpaS0+Y19vdnAsDQorCQkJICAgICAgJmNvbnRf
ZmlsZSwgJmNvbnRfZGVudHJ5KTsNCiANCi0gICAgICAgIGNvbnRfaW5vZGUg
PSBjbnAtPmNfb3ZwOw0KLQljb250X2RlbnRyeS5kX2lub2RlID0gY29udF9p
bm9kZTsNCi0NCi0gICAgICAgIENERUJVRyhEX0lOT0RFLCAiY29kYSBpbm86
ICVsZCwgY2FjaGVkIGlubyAlbGQsIHBhZ2Ugb2Zmc2V0OiAlbHhcbiIsIGlu
b2RlLT5pX2lubywgY29udF9pbm9kZS0+aV9pbm8sIHBhZ2UtPm9mZnNldCk7
DQorICAgICAgICBDREVCVUcoRF9JTk9ERSwgImNvZGEgaW5vOiAlbGQsIGNh
Y2hlZCBpbm8gJWxkLCBwYWdlIG9mZnNldDogJWx4XG4iLCANCisJICAgICAg
IGNvZGFfaW5vZGUtPmlfaW5vLCBjaWktPmNfb3ZwLT5pX2lubywgcGFnZS0+
b2Zmc2V0KTsNCiANCi0gICAgICAgIGdlbmVyaWNfcmVhZHBhZ2UoJmNvbnRf
ZGVudHJ5LCBwYWdlKTsNCisgICAgICAgIGdlbmVyaWNfcmVhZHBhZ2UoJmNv
bnRfZmlsZSwgcGFnZSk7DQogICAgICAgICBFWElUOw0KICAgICAgICAgcmV0
dXJuIDA7DQogfQ0KIA0KIHN0YXRpYyBpbnQgY29kYV9maWxlX21tYXAoc3Ry
dWN0IGZpbGUgKiBmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEp
DQogew0KLSAgICAgICAgc3RydWN0IGNvZGFfaW5vZGVfaW5mbyAqY25wOw0K
LQljbnAgPSBJVE9DKGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlKTsNCi0JY25w
LT5jX21tY291bnQrKzsNCisgICAgICAgIHN0cnVjdCBjb2RhX2lub2RlX2lu
Zm8gKmNpaTsNCisJaW50IHJlczsNCisNCisgICAgICAgIEVOVFJZOw0KKwlj
aWkgPSBJVE9DKGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlKTsNCisJY2lpLT5j
X21tY291bnQrKzsNCiAgIA0KLQlyZXR1cm4gZ2VuZXJpY19maWxlX21tYXAo
ZmlsZSwgdm1hKTsNCisJcmVzID1nZW5lcmljX2ZpbGVfbW1hcChmaWxlLCB2
bWEpOw0KKwlFWElUOw0KKwlyZXR1cm4gcmVzOw0KIH0NCiANCiBzdGF0aWMg
c3NpemVfdCBjb2RhX2ZpbGVfcmVhZChzdHJ1Y3QgZmlsZSAqY29kYV9maWxl
LCBjaGFyICpidWZmLCANCkBAIC0xMjAsNyArMTI2LDYgQEANCiAgICAgICAg
IHN0cnVjdCBmaWxlICBjb250X2ZpbGU7DQogCXN0cnVjdCBkZW50cnkgY29u
dF9kZW50cnk7DQogICAgICAgICBpbnQgcmVzdWx0ID0gMDsNCi0NCiAgICAg
ICAgIEVOVFJZOw0KIA0KICAgICAgICAgY25wID0gSVRPQyhjb2RhX2lub2Rl
KTsNCmRpZmYgLXVyTiBsaW51eC0yLjEuODkub3JpZy9mcy9jb2RhL2lub2Rl
LmMgbGludXgvZnMvY29kYS9pbm9kZS5jDQotLS0gbGludXgtMi4xLjg5Lm9y
aWcvZnMvY29kYS9pbm9kZS5jCVdlZCBEZWMgMzEgMTk6MDA6MDAgMTk2OQ0K
KysrIGxpbnV4L2ZzL2NvZGEvaW5vZGUuYwlTdW4gTWFyIDE1IDIyOjAwOjA3
IDE5OTgNCkBAIC0wLDAgKzEsMzY5IEBADQorLyoNCisgKiBTdXBlciBibG9j
ay9maWxlc3lzdGVtIHdpZGUgb3BlcmF0aW9ucw0KKyAqDQorICogQ29wcnly
aWdodCAoQykgMTk5NiBQZXRlciBKLiBCcmFhbSA8YnJhYW1AbWF0aHMub3gu
YWMudWs+IGFuZCANCisgKiBNaWNoYWVsIENhbGxhaGFuIDxjYWxsYWhhbkBt
YXRocy5veC5hYy51az4gDQorICogDQorICogUmV3cml0dGVuIGZvciBMaW51
eCAyLjEuICBQZXRlciBCcmFhbSA8YnJhYW1AY3MuY211LmVkdT4NCisgKiBD
b3B5cmlnaHQgKEMpIENhcm5lZ2llIE1lbGxvbiBVbml2ZXJzaXR5DQorICov
DQorDQorI2RlZmluZSBfX05PX1ZFUlNJT05fXw0KKyNpbmNsdWRlIDxsaW51
eC9tb2R1bGUuaD4NCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQorI2lu
Y2x1ZGUgPGxpbnV4L21tLmg+DQorI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5o
Pg0KKyNpbmNsdWRlIDxsaW51eC9zdGF0Lmg+DQorI2luY2x1ZGUgPGxpbnV4
L2Vycm5vLmg+DQorI2luY2x1ZGUgPGxpbnV4L2xvY2tzLmg+DQorI2luY2x1
ZGUgPGxpbnV4L3VuaXN0ZC5oPg0KKw0KKyNpbmNsdWRlIDxhc20vc3lzdGVt
Lmg+DQorI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+DQorDQorI2luY2x1ZGUg
PGxpbnV4L2ZzLmg+DQorI2luY2x1ZGUgPGxpbnV4L3N0YXQuaD4NCisjaW5j
bHVkZSA8bGludXgvZXJybm8uaD4NCisjaW5jbHVkZSA8bGludXgvbG9ja3Mu
aD4NCisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+DQorI2luY2x1ZGUgPGFz
bS91YWNjZXNzLmg+DQorI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4NCisj
aW5jbHVkZSA8YXNtL3NlZ21lbnQuaD4NCisNCisjaW5jbHVkZSA8bGludXgv
Y29kYS5oPg0KKyNpbmNsdWRlIDxsaW51eC9jb2RhX2xpbnV4Lmg+DQorI2lu
Y2x1ZGUgPGxpbnV4L2NvZGFfcHNkZXYuaD4NCisjaW5jbHVkZSA8bGludXgv
Y29kYV9mc19pLmg+DQorI2luY2x1ZGUgPGxpbnV4L2NvZGFfY2FjaGUuaD4N
CisNCisNCisvKiBWRlMgc3VwZXJfYmxvY2sgb3BzICovDQorc3RhdGljIHN0
cnVjdCBzdXBlcl9ibG9jayAqY29kYV9yZWFkX3N1cGVyKHN0cnVjdCBzdXBl
cl9ibG9jayAqLCB2b2lkICosIGludCk7DQorc3RhdGljIHZvaWQgY29kYV9y
ZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqKTsNCitzdGF0aWMgaW50ICBjb2Rh
X25vdGlmeV9jaGFuZ2Uoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qg
aWF0dHIgKmF0dHIpOw0KK3N0YXRpYyB2b2lkIGNvZGFfcHV0X2lub2RlKHN0
cnVjdCBpbm9kZSAqKTsNCitzdGF0aWMgdm9pZCBjb2RhX2RlbGV0ZV9pbm9k
ZShzdHJ1Y3QgaW5vZGUgKik7DQorc3RhdGljIHZvaWQgY29kYV9wdXRfc3Vw
ZXIoc3RydWN0IHN1cGVyX2Jsb2NrICopOw0KK3N0YXRpYyBpbnQgY29kYV9z
dGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IHN0YXRmcyAq
YnVmLCANCisJCSAgICAgICBpbnQgYnVmc2l6KTsNCisNCisvKiBoZWxwZXIg
ZnVuY3Rpb25zICovDQorc3RhdGljIGlubGluZSBzdHJ1Y3QgdmNvbW0gKmNv
ZGFfcHNpbm9kZTJ2Y29tbShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsNCitzdGF0
aWMgaW50IGNvZGFfZ2V0X3BzZGV2KHZvaWQgKiwgc3RydWN0IGlub2RlICoq
KTsNCitzdGF0aWMgc3RydWN0IGNvZGFfc2JfaW5mbyAqY29kYV9wc2lub2Rl
MnNiaShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsNCisNCisvKiBleHBvcnRlZCBv
cGVyYXRpb25zICovDQorc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgY29kYV9z
dXBlcl9vcGVyYXRpb25zID0NCit7DQorCWNvZGFfcmVhZF9pbm9kZSwgICAg
ICAgIC8qIHJlYWRfaW5vZGUgKi8NCisJTlVMTCwgICAgICAgICAgICAgICAg
ICAgLyogd3JpdGVfaW5vZGUgKi8NCisJY29kYV9wdXRfaW5vZGUsCSAgICAg
ICAgLyogcHV0X2lub2RlICovDQorCWNvZGFfZGVsZXRlX2lub2RlLCAgICAg
IC8qIGRlbGV0ZV9pbm9kZSAqLw0KKwljb2RhX25vdGlmeV9jaGFuZ2UsCS8q
IG5vdGlmeV9jaGFuZ2UgKi8NCisJY29kYV9wdXRfc3VwZXIsCSAgICAgICAg
LyogcHV0X3N1cGVyICovDQorCU5VTEwsCQkJLyogd3JpdGVfc3VwZXIgKi8N
CisJY29kYV9zdGF0ZnMsICAgCQkvKiBzdGF0ZnMgKi8NCisJTlVMTAkJCS8q
IHJlbW91bnRfZnMgKi8NCit9Ow0KKw0KKy8qDQorICogZ2xvYmFscw0KKyAq
Lw0KK3N0cnVjdCBjb2RhX3NiX2luZm8gY29kYV9zdXBlcl9pbmZvW01BWF9D
T0RBREVWU107DQorDQorDQorc3RhdGljIHN0cnVjdCBzdXBlcl9ibG9jayAq
IGNvZGFfcmVhZF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCANCisJ
CQkJCSAgICB2b2lkICpkYXRhLCBpbnQgc2lsZW50KQ0KK3sNCisgICAgICAg
IHN0cnVjdCBpbm9kZSAqcHNkZXYgPSAwLCAqcm9vdCA9IDA7IA0KKwlzdHJ1
Y3QgY29kYV9zYl9pbmZvICpzYmkgPSBOVUxMOw0KKwlzdHJ1Y3QgdmNvbW0g
KnZjID0gTlVMTDsNCisgICAgICAgIFZpY2VGaWQgZmlkOw0KKwlrZGV2X3Qg
ZGV2ID0gc2ItPnNfZGV2Ow0KKyAgICAgICAgaW50IGVycm9yOw0KKw0KKwlF
TlRSWTsNCisgICAgICAgIE1PRF9JTkNfVVNFX0NPVU5UOyANCisgICAgICAg
IGlmIChjb2RhX2dldF9wc2RldihkYXRhLCAmcHNkZXYpKQ0KKyAgICAgICAg
ICAgICAgICBnb3RvIGVycm9yOw0KKw0KKyAgICAgICAgdmMgPSBjb2RhX3Bz
aW5vZGUydmNvbW0ocHNkZXYpOw0KKyAgICAgICAgaWYgKCAhdmMgKQ0KKwkg
ICAgICAgIGdvdG8gZXJyb3I7DQorCXZjLT52Y19zYiA9IHNiOw0KKwl2Yy0+
dmNfaW51c2UgPSAxOw0KKw0KKwlzYmkgPSBjb2RhX3BzaW5vZGUyc2JpKHBz
ZGV2KTsNCisJaWYgKCAhc2JpICkNCisJICAgICAgICBnb3RvIGVycm9yOw0K
KyAgICAgICAgc2JpLT5zYmlfcHNkZXYgPSBwc2RldjsNCisJc2JpLT5zYmlf
dmNvbW0gPSB2YzsNCisJSU5JVF9MSVNUX0hFQUQoJihzYmktPnNiaV9jY2hl
YWQpKTsNCisJSU5JVF9MSVNUX0hFQUQoJihzYmktPnNiaV92b2xyb290aGVh
ZCkpOw0KKw0KKyAgICAgICAgbG9ja19zdXBlcihzYik7DQorICAgICAgICBz
Yi0+dS5nZW5lcmljX3NicCA9IHNiaTsNCisgICAgICAgIHNiLT5zX2Jsb2Nr
c2l6ZSA9IDEwMjQ7CS8qIFhYWFhYICB3aGF0IGRvIHdlIHB1dCBoZXJlPz8g
Ki8NCisgICAgICAgIHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzID0gMTA7DQorICAg
ICAgICBzYi0+c19tYWdpYyA9IENPREFfU1VQRVJfTUFHSUM7DQorICAgICAg
ICBzYi0+c19kZXYgPSBkZXY7DQorICAgICAgICBzYi0+c19vcCA9ICZjb2Rh
X3N1cGVyX29wZXJhdGlvbnM7DQorDQorCS8qIGdldCByb290IGZpZCBmcm9t
IFZlbnVzOiB0aGlzIG5lZWRzIHRoZSByb290IGlub2RlICovDQorCWVycm9y
ID0gdmVudXNfcm9vdGZpZChzYiwgJmZpZCk7DQorCWlmICggZXJyb3IgKSB7
DQorCSAgICAgICAgcHJpbnRrKCJjb2RhX3JlYWRfc3VwZXI6IGNvZGFfZ2V0
X3Jvb3RmaWQgZmFpbGVkIHdpdGggJWRcbiIsDQorCQkgICAgICAgZXJyb3Ip
Ow0KKwkJc2ItPnNfZGV2ID0gMDsNCisJICAgICAgICB1bmxvY2tfc3VwZXIo
c2IpOw0KKwkJZ290byBlcnJvcjsNCisJfQkgIA0KKwlwcmludGsoImNvZGFf
cmVhZF9zdXBlcjogcm9vdGZpZCBpcyAlc1xuIiwgY29kYV9mMnMoJmZpZCkp
Ow0KKwkNCisJLyogbWFrZSByb290IGlub2RlICovDQorICAgICAgICBlcnJv
ciA9IGNvZGFfY25vZGVfbWFrZSgmcm9vdCwgJmZpZCwgc2IpOw0KKyAgICAg
ICAgaWYgKCBlcnJvciB8fCAhcm9vdCApIHsNCisJICAgIHByaW50aygiRmFp
bHVyZSBvZiBjb2RhX2Nub2RlX21ha2UgZm9yIHJvb3Q6IGVycm9yICVkXG4i
LCBlcnJvcik7DQorCSAgICBzYi0+c19kZXYgPSAwOw0KKwkgICAgdW5sb2Nr
X3N1cGVyKHNiKTsNCisJICAgIGdvdG8gZXJyb3I7DQorCX0gDQorDQorCXBy
aW50aygiY29kYV9yZWFkX3N1cGVyOiByb290aW5vZGUgaXMgJWxkIGRldiAl
ZFxuIiwgDQorCSAgICAgICByb290LT5pX2lubywgcm9vdC0+aV9kZXYpOw0K
KwlzYmktPnNiaV9yb290ID0gcm9vdDsNCisJc2ItPnNfcm9vdCA9IGRfYWxs
b2Nfcm9vdChyb290LCBOVUxMKTsNCisJdW5sb2NrX3N1cGVyKHNiKTsNCisJ
RVhJVDsgIA0KKyAgICAgICAgcmV0dXJuIHNiOw0KKw0KK2Vycm9yOg0KK0VY
SVQ7ICANCisJTU9EX0RFQ19VU0VfQ09VTlQ7DQorCWlmIChzYmkpIHsNCisJ
CXNiaS0+c2JpX3Zjb21tID0gTlVMTDsNCisJCXNiaS0+c2JpX3Jvb3QgPSBO
VUxMOw0KKwl9DQorCWlmICggdmMgKSB7DQorCQl2Yy0+dmNfc2IgPSBOVUxM
Ow0KKwkJdmMtPnZjX2ludXNlID0gMDsNCisJfQ0KKyAgICAgICAgaWYgKHJv
b3QpIHsNCisgICAgICAgICAgICAgICAgaXB1dChyb290KTsNCisgICAgICAg
IH0NCisgICAgICAgIHNiLT5zX2RldiA9IDA7DQorICAgICAgICByZXR1cm4g
TlVMTDsNCit9DQorDQorc3RhdGljIHZvaWQgY29kYV9wdXRfc3VwZXIoc3Ry
dWN0IHN1cGVyX2Jsb2NrICpzYikNCit7DQorICAgICAgICBzdHJ1Y3QgY29k
YV9zYl9pbmZvICpzYl9pbmZvOw0KKw0KKyAgICAgICAgRU5UUlk7DQorDQor
ICAgICAgICBsb2NrX3N1cGVyKHNiKTsNCisNCisgICAgICAgIHNiLT5zX2Rl
diA9IDA7DQorCWNvZGFfY2FjaGVfY2xlYXJfYWxsKHNiKTsNCisJc2JfaW5m
byA9IGNvZGFfc2JwKHNiKTsNCisJc2JfaW5mby0+c2JpX3Zjb21tLT52Y19p
bnVzZSA9IDA7DQorCXNiX2luZm8tPnNiaV92Y29tbS0+dmNfc2IgPSBOVUxM
Ow0KKwlwcmludGsoIkNvZGE6IEJ5ZSBieWUuXG4iKTsNCisJbWVtc2V0KHNi
X2luZm8sIDAsIHNpemVvZigqIHNiX2luZm8pKTsNCisNCisgICAgICAgIHVu
bG9ja19zdXBlcihzYik7DQorICAgICAgICBNT0RfREVDX1VTRV9DT1VOVDsN
CisJRVhJVDsNCit9DQorDQorLyogYWxsIGZpbGxpbmcgaW4gb2YgaW5vZGVz
IHBvc3Rwb25lZCB1bnRpbCBsb29rdXAgKi8NCitzdGF0aWMgdm9pZCBjb2Rh
X3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkNCit7DQorCXN0cnVj
dCBjb2RhX2lub2RlX2luZm8gKmNpaTsNCisJRU5UUlk7DQorCWNpaSA9IElU
T0MoaW5vZGUpOw0KKwljaWktPmNfbWFnaWMgPSAwOw0KKwlyZXR1cm47DQor
fQ0KKw0KK3N0YXRpYyB2b2lkIGNvZGFfcHV0X2lub2RlKHN0cnVjdCBpbm9k
ZSAqaW4pIA0KK3sNCisJRU5UUlk7DQorDQorICAgICAgICBDREVCVUcoRF9J
Tk9ERSwiaW5vOiAlbGQsIGNvdW50ICVkXG4iLCBpbi0+aV9pbm8sIGluLT5p
X2NvdW50KTsNCisNCisJaWYgKCBpbi0+aV9jb3VudCA9PSAxICkgDQorCQlp
bi0+aV9ubGluayA9IDA7DQorCQkNCit9DQorDQorc3RhdGljIHZvaWQgY29k
YV9kZWxldGVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkNCit7DQorICAg
ICAgICBzdHJ1Y3QgY29kYV9pbm9kZV9pbmZvICpjaWk7DQorICAgICAgICBz
dHJ1Y3QgaW5vZGUgKm9wZW5faW5vZGU7DQorDQorICAgICAgICBFTlRSWTsN
CisgICAgICAgIENERUJVRyhEX1NVUEVSLCAiIGlub2RlLT5pbm86ICVsZCwg
Y291bnQ6ICVkXG4iLCANCisJICAgICAgIGlub2RlLT5pX2lubywgaW5vZGUt
PmlfY291bnQpOyAgICAgICAgDQorDQorICAgICAgICBjaWkgPSBJVE9DKGlu
b2RlKTsNCisJaWYgKCBpbm9kZS0+aV9pbm8gPT0gQ1RMX0lOTyB8fCBjaWkt
PmNfbWFnaWMgIT0gQ09EQV9DTk9ERV9NQUdJQyApIHsNCisJICAgICAgICBj
bGVhcl9pbm9kZShpbm9kZSk7DQorCQlyZXR1cm47DQorCX0NCisNCisNCisJ
aWYgKCBjb2RhX2ZpZF9pc192b2xyb290KCZjaWktPmNfZmlkKSApDQorCQls
aXN0X2RlbCgmY2lpLT5jX3ZvbHJvb3RsaXN0KTsNCisNCisgICAgICAgIG9w
ZW5faW5vZGUgPSBjaWktPmNfb3ZwOw0KKyAgICAgICAgaWYgKCBvcGVuX2lu
b2RlICkgew0KKyAgICAgICAgICAgICAgICBDREVCVUcoRF9TVVBFUiwgIkRF
TElOTyBjYWNoZWQgZmlsZTogaW5vICVsZCBjb3VudCAlZC5cbiIsICANCisJ
CSAgICAgICBvcGVuX2lub2RlLT5pX2lubywgIG9wZW5faW5vZGUtPmlfY291
bnQpOw0KKyAgICAgICAgICAgICAgICBjaWktPmNfb3ZwID0gTlVMTDsNCisg
ICAgICAgICAgICAgICAgaXB1dChvcGVuX2lub2RlKTsNCisgICAgICAgIH0N
CisJDQorCWNvZGFfY2FjaGVfY2xlYXJfaW5vZGUoaW5vZGUpOw0KKw0KKwlp
bm9kZS0+dS5nZW5lcmljX2lwID0gTlVMTDsNCisgICAgICAgIGNsZWFyX2lu
b2RlKGlub2RlKTsNCisJRVhJVDsNCit9DQorDQorc3RhdGljIGludCAgY29k
YV9ub3RpZnlfY2hhbmdlKHN0cnVjdCBkZW50cnkgKmRlLCBzdHJ1Y3QgaWF0
dHIgKmlhdHRyKQ0KK3sNCisJc3RydWN0IGlub2RlICppbm9kZSA9IGRlLT5k
X2lub2RlOw0KKyAgICAgICAgc3RydWN0IGNvZGFfaW5vZGVfaW5mbyAqY2lp
Ow0KKyAgICAgICAgc3RydWN0IGNvZGFfdmF0dHIgdmF0dHI7DQorICAgICAg
ICBpbnQgZXJyb3I7DQorCQ0KKwlFTlRSWTsNCisgICAgICAgIG1lbXNldCgm
dmF0dHIsIDAsIHNpemVvZih2YXR0cikpOyANCisgICAgICAgIGNpaSA9IElU
T0MoaW5vZGUpOw0KKyAgICAgICAgQ0hFQ0tfQ05PREUoY2lpKTsNCisNCisg
ICAgICAgIGNvZGFfaWF0dHJfdG9fdmF0dHIoaWF0dHIsICZ2YXR0cik7DQor
ICAgICAgICB2YXR0ci52YV90eXBlID0gQ19WTk9OOyAvKiBjYW5ub3Qgc2V0
IHR5cGUgKi8NCisJQ0RFQlVHKERfU1VQRVIsICJ2YXR0ci52YV9tb2RlICVv
XG4iLCB2YXR0ci52YV9tb2RlKTsNCisNCisgICAgICAgIGVycm9yID0gdmVu
dXNfc2V0YXR0cihpbm9kZS0+aV9zYiwgJmNpaS0+Y19maWQsICZ2YXR0cik7
DQorDQorICAgICAgICBpZiAoICFlcnJvciApIHsNCisJICAgICAgICBjb2Rh
X3ZhdHRyX3RvX2lhdHRyKGlub2RlLCAmdmF0dHIpOyANCisJCWNvZGFfY2Fj
aGVfY2xlYXJfaW5vZGUoaW5vZGUpOw0KKyAgICAgICAgfQ0KKwlDREVCVUco
RF9TVVBFUiwgImlub2RlLmlfbW9kZSAlbywgZXJyb3IgJWRcbiIsIA0KKwkg
ICAgICAgaW5vZGUtPmlfbW9kZSwgZXJyb3IpOw0KKw0KKwlFWElUOw0KKyAg
ICAgICAgcmV0dXJuIGVycm9yOw0KK30NCisNCisvKiAgd2UgbmVlZCBfc29t
ZXRoaW5nXyBmb3IgdGhpcyByb3V0aW5lLiBMZXQncyBtaW1pYyBBRlMgKi8N
CitzdGF0aWMgaW50IGNvZGFfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAq
c2IsIHN0cnVjdCBzdGF0ZnMgKmJ1ZiwgDQorCQkgICAgICAgaW50IGJ1ZnNp
eikNCit7DQorCXN0cnVjdCBzdGF0ZnMgdG1wOw0KKw0KKwl0bXAuZl90eXBl
ID0gQ09EQV9TVVBFUl9NQUdJQzsNCisJdG1wLmZfYnNpemUgPSAxMDI0Ow0K
Kwl0bXAuZl9ibG9ja3MgPSA5MDAwMDAwOw0KKwl0bXAuZl9iZnJlZSA9IDkw
MDAwMDA7DQorCXRtcC5mX2JhdmFpbCA9IDkwMDAwMDAgOw0KKwl0bXAuZl9m
aWxlcyA9IDkwMDAwMDA7DQorCXRtcC5mX2ZmcmVlID0gOTAwMDAwMDsNCisJ
dG1wLmZfbmFtZWxlbiA9IDA7DQorCWNvcHlfdG9fdXNlcihidWYsICZ0bXAs
IGJ1ZnNpeik7DQorCXJldHVybiAwOyANCit9DQorDQorDQorLyogaW5pdF9j
b2RhOiB1c2VkIGJ5IGZpbGVzeXN0ZW1zLmMgdG8gcmVnaXN0ZXIgY29kYSAq
Lw0KKw0KK3N0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGNvZGFfZnNfdHlwZSA9
IHsNCisgICAiY29kYSIsIDAsIGNvZGFfcmVhZF9zdXBlciwgTlVMTA0KK307
DQorDQoraW50IGluaXRfY29kYV9mcyh2b2lkKQ0KK3sNCisJcmV0dXJuIHJl
Z2lzdGVyX2ZpbGVzeXN0ZW0oJmNvZGFfZnNfdHlwZSk7DQorfQ0KKw0KKy8q
IE1PRFVMRSBzdHVmZiBpcyBpbiBwc2Rldi5jICovDQorDQorLyogIGhlbHBl
cnMgKi8NCitzdGF0aWMgaW5saW5lIHN0cnVjdCB2Y29tbSAqY29kYV9wc2lu
b2RlMnZjb21tKHN0cnVjdCBpbm9kZSAqaW5vZGUpIA0KK3sNCisgICAgICAg
IA0KKwl1bnNpZ25lZCBpbnQgbWlub3IgPSBNSU5PUihpbm9kZS0+aV9yZGV2
KTsNCisJQ0RFQlVHKERfUFNERVYsIm1pbm9yICVkXG4iLCBtaW5vcik7DQor
CWlmICggbWlub3IgPCBNQVhfQ09EQURFVlMgKSANCisJICAgICAgcmV0dXJu
ICYocHNkZXZfdmNvbW1bbWlub3JdKTsNCisJZWxzZQ0KKwkgICAgICByZXR1
cm4gTlVMTDsNCit9DQorDQorc3RhdGljIHN0cnVjdCBjb2RhX3NiX2luZm8g
KmNvZGFfcHNpbm9kZTJzYmkoc3RydWN0IGlub2RlICppbm9kZSkgDQorew0K
Kwl1bnNpZ25lZCBpbnQgbWlub3IgPSBNSU5PUihpbm9kZS0+aV9yZGV2KTsN
CisNCisJQ0RFQlVHKERfUFNERVYsIm1pbm9yICVkXG4iLCBtaW5vcik7DQor
CWlmICggKG1pbm9yID49IDApICYmIChtaW5vciA8IE1BWF9DT0RBREVWUykp
IA0KKwkgICAgICAgIHJldHVybiAmKGNvZGFfc3VwZXJfaW5mb1ttaW5vcl0p
Ow0KKwllbHNlDQorCSAgICAgICAgcmV0dXJuIE5VTEw7DQorfQ0KKw0KKy8q
IG5hbWUgbG9va3VwIGZvciBwc2RldiBwYXNzZWQgaW4gYnkgbW91bnQgKi8N
CitzdGF0aWMgaW50IGNvZGFfZ2V0X3BzZGV2KHZvaWQgKmRhdGEsIHN0cnVj
dCBpbm9kZSAqKnJlc19kZXYpDQorew0KKyAgICAgICAgY2hhciAqKnBzZGV2
X3BhdGg7DQorICAgICAgICBzdHJ1Y3QgaW5vZGUgKnBzZGV2ID0gMDsNCisJ
c3RydWN0IGRlbnRyeSAqZW50PU5VTEw7DQorDQorIA0KKwlpZiAoICEgZGF0
YSApIHsgDQorCQlwcmludGsoImNvZGFfZ2V0X3BzZGV2OiBubyBkYXRhIVxu
Iik7DQorCQlyZXR1cm4gMTsNCisJfSANCisNCisJcHNkZXZfcGF0aCA9IGRh
dGE7DQorICAgICAgICBlbnQgPSBuYW1laSgoY2hhciAqKSAqcHNkZXZfcGF0
aCk7DQorICAgICAgICBpZiAoSVNfRVJSKGVudCkpIHsNCisJCXByaW50aygi
bmFtZWkgZXJyb3IgJWxkIGZvciAlZFxuIiwgUFRSX0VSUihlbnQpLCANCisJ
CSAgICAgICAoaW50KSBwc2Rldl9wYXRoKTsNCisJCXJldHVybiAxOw0KKyAg
ICAgICAgfQ0KKwlwc2RldiA9IGVudC0+ZF9pbm9kZTsNCisNCisgICAgICAg
IGlmICghU19JU0NIUihwc2Rldi0+aV9tb2RlKSkgew0KKwkJcHJpbnRrKCJu
b3QgYSBjaGFyYWN0ZXIgZGV2aWNlXG4iKTsNCisJCXJldHVybiAxOw0KKyAg
ICAgICAgfQ0KKwlDREVCVUcoRF9QU0RFViwibWFqb3IgJWQsIG1pbm9yICVk
LCBjb3VudCAlZFxuIiwgDQorCSAgICAgICBNQUpPUihwc2Rldi0+aV9yZGV2
KSwgDQorCSAgICAgICBNSU5PUihwc2Rldi0+aV9yZGV2KSwgcHNkZXYtPmlf
Y291bnQpOw0KKyAgICAgICAgDQorICAgICAgICBpZiAoTUFKT1IocHNkZXYt
PmlfcmRldikgIT0gQ09EQV9QU0RFVl9NQUpPUikgew0KKwkJcHJpbnRrKCJk
ZXZpY2UgJWQgbm90IGEgQ29kYSBQU0RFViBkZXZpY2VcbiIsIA0KKwkJICAg
ICAgIE1BSk9SKHBzZGV2LT5pX3JkZXYpKTsNCisJCXJldHVybiAxOw0KKyAg
ICAgICAgfQ0KKw0KKyAgICAgICAgaWYgKE1JTk9SKHBzZGV2LT5pX3JkZXYp
ID49IE1BWF9DT0RBREVWUykgeyANCisJCXByaW50aygibWlub3IgJWQgbm90
IGFuIGFsbG9jYXRlZCBDb2RhIFBTREVWXG4iLCANCisJCSAgICAgICBwc2Rl
di0+aV9yZGV2KTsNCisJCXJldHVybiAxOw0KKyAgICAgICAgfQ0KKw0KKyAg
ICAgICAgaWYgKHBzZGV2LT5pX2NvdW50IDwgMSkgew0KKwkJcHJpbnRrKCJj
b2RhIGRldmljZSBtaW5vciAlZCBub3Qgb3BlbiAoaV9jb3VudCA9ICVkKVxu
IiwgDQorCQkgICAgICAgTUlOT1IocHNkZXYtPmlfcmRldiksIHBzZGV2LT5p
X2NvdW50KTsNCisJCXJldHVybiAxOw0KKyAgICAgICAgfQ0KKyAgICAgICAg
DQorICAgICAgICAqcmVzX2RldiA9IHBzZGV2Ow0KKwlFWElUOyAgDQorICAg
ICAgICByZXR1cm4gMDsNCit9DQpkaWZmIC11ck4gbGludXgtMi4xLjg5Lm9y
aWcvZnMvY29kYS9wc2Rldi5jIGxpbnV4L2ZzL2NvZGEvcHNkZXYuYw0KLS0t
IGxpbnV4LTIuMS44OS5vcmlnL2ZzL2NvZGEvcHNkZXYuYwlXZWQgTWFyICA0
IDE4OjE0OjMyIDE5OTgNCisrKyBsaW51eC9mcy9jb2RhL3BzZGV2LmMJU3Vu
IE1hciAxNSAyMjowMDowNyAxOTk4DQpAQCAtNDQ3LDcgKzQ0Nyw3IEBADQog
aW50IGluaXRfbW9kdWxlKHZvaWQpDQogew0KICAgaW50IHN0YXR1czsNCi0g
IHByaW50ayhLRVJOX0lORk8gIkNvZGEgS2VybmVsL1VzZXIgY29tbXVuaWNh
dGlvbnMgbW9kdWxlIDEuMFxuIik7DQorICBwcmludGsoS0VSTl9JTkZPICJD
b2RhIEtlcm5lbC9Vc2VyIGNvbW11bmljYXRpb25zIG1vZHVsZSAyLjBcbiIp
Ow0KIA0KICAgc3RhdHVzID0gaW5pdF9jb2RhX3BzZGV2KCk7DQogICBpZiAo
IHN0YXR1cyApIHsNCmRpZmYgLXVyTiBsaW51eC0yLjEuODkub3JpZy9mcy9j
b2RhL3BzZGV2LmMgbGludXgvZnMvY29kYS9wc2Rldi5jDQotLS0gbGludXgt
Mi4xLjg5Lm9yaWcvZnMvY29kYS9wc2Rldi5jCVdlZCBNYXIgIDQgMTg6MTQ6
MzIgMTk5OA0KKysrIGxpbnV4L2ZzL2NvZGEvcHNkZXYuYwlNb24gTWFyIDE2
IDAxOjM0OjA2IDE5OTgNCkBAIC02NSw3ICs2NSw3IEBADQogLyogc3RhdGlz
dGljcyAqLw0KIHN0cnVjdCBjb2RhX3VwY2FsbHN0YXRzIGNvZGFfY2FsbHN0
YXRzOw0KIGludCAgICAgICAgICAgY29kYV9oYXJkID0gMDsgIC8qIGludHJv
ZHVjZXMgYSB0aW1lb3V0IG9uIHVwY2FsbHMgKi8NCi11bnNpZ25lZCBsb25n
IGNvZGFfdGltZW91dCA9IDEwOyAvKiAuLiBzZWNzLCB0aGVuIHNpZ25hbHMg
d2lsbCBkZXF1ZXVlICovDQordW5zaWduZWQgbG9uZyBjb2RhX3RpbWVvdXQg
PSAzMDsgLyogLi4gc2VjcywgdGhlbiBzaWduYWxzIHdpbGwgZGVxdWV1ZSAq
Lw0KIGV4dGVybiBzdHJ1Y3QgY29kYV9zYl9pbmZvIGNvZGFfc3VwZXJfaW5m
b1tNQVhfQ09EQURFVlNdOw0KIHN0cnVjdCB2Y29tbSBwc2Rldl92Y29tbVtN
QVhfQ09EQURFVlNdOw0KIA0KQEAgLTQ0Nyw3ICs0NDcsNyBAQA0KIGludCBp
bml0X21vZHVsZSh2b2lkKQ0KIHsNCiAgIGludCBzdGF0dXM7DQotICBwcmlu
dGsoS0VSTl9JTkZPICJDb2RhIEtlcm5lbC9Vc2VyIGNvbW11bmljYXRpb25z
IG1vZHVsZSAxLjBcbiIpOw0KKyAgcHJpbnRrKEtFUk5fSU5GTyAiQ29kYSBL
ZXJuZWwvVXNlciBjb21tdW5pY2F0aW9ucyBtb2R1bGUgMi4wXG4iKTsNCiAN
CiAgIHN0YXR1cyA9IGluaXRfY29kYV9wc2RldigpOw0KICAgaWYgKCBzdGF0
dXMgKSB7DQpkaWZmIC11ck4gbGludXgtMi4xLjg5Lm9yaWcvZnMvY29kYS91
cGNhbGwuYyBsaW51eC9mcy9jb2RhL3VwY2FsbC5jDQotLS0gbGludXgtMi4x
Ljg5Lm9yaWcvZnMvY29kYS91cGNhbGwuYwlXZWQgTWFyICA0IDE4OjE0OjMy
IDE5OTgNCisrKyBsaW51eC9mcy9jb2RhL3VwY2FsbC5jCU1vbiBNYXIgMTYg
MDE6MzU6MDAgMTk5OA0KQEAgLTUwMCw3ICs1MDAsNiBAQA0KICAgICAgICAg
dW5pb24gb3V0cHV0QXJncyAqb3V0cDsNCiAgICAgICAgIGludCBpbnNpemUs
IG91dHNpemUsIGVycm9yOw0KIAlpbnQgaW9jc2l6ZTsNCi0JY2hhciBzdHJb
NTBdOw0KIA0KIAlpbnNpemUgPSBWQ19NQVhNU0dTSVpFOw0KIAlVUEFSRyhD
RlNfSU9DVEwpOw0KQEAgLTU4Nyw3ICs1ODYsNiBAQA0KIHN0YXRpYyBpbmxp
bmUgdm9pZCBjb2RhX3dhaXRmb3JfdXBjYWxsKHN0cnVjdCB2bXNnICp2bXAp
DQogew0KIAlzdHJ1Y3Qgd2FpdF9xdWV1ZQl3YWl0ID0geyBjdXJyZW50LCBO
VUxMIH07DQotCW9sZF9zaWdzZXRfdCBwZW5kaW5nOw0KIA0KIAl2bXAtPnZt
X3Bvc3R0aW1lID0gamlmZmllczsNCiANCkBAIC02MDgsMTMgKzYwNiw5IEBA
DQogCQlpZiAoIGppZmZpZXMgPiB2bXAtPnZtX3Bvc3R0aW1lICsgY29kYV90
aW1lb3V0ICogSFogKQ0KIAkJCWJyZWFrOyANCiAJCQkJDQotCQlzcGluX2xv
Y2tfaXJxKCZjdXJyZW50LT5zaWdtYXNrX2xvY2spOw0KLQkJcGVuZGluZyA9
IGN1cnJlbnQtPmJsb2NrZWQuc2lnWzBdICYgY3VycmVudC0+c2lnbmFsLnNp
Z1swXTsNCi0JCXNwaW5fdW5sb2NrX2lycSgmY3VycmVudC0+c2lnbWFza19s
b2NrKTsNCi0NCiAJCS8qIGlmIHRoaXMgcHJvY2VzcyByZWFsbHkgd2FudHMg
dG8gZGllLCBsZXQgaXQgZ28gKi8NCi0JCWlmICggc2lnaXNtZW1iZXIoJnBl
bmRpbmcsIFNJR0tJTEwpIHx8DQotCQkgICAgIHNpZ2lzbWVtYmVyKCZwZW5k
aW5nLCBTSUdJTlQpICkNCisJCWlmICggc2lnaXNtZW1iZXIoJmN1cnJlbnQt
PnNpZ25hbCwgU0lHS0lMTCkgfHwNCisJCSAgICAgc2lnaXNtZW1iZXIoJmN1
cnJlbnQtPnNpZ25hbCwgU0lHSU5UKSApDQogCQkJYnJlYWs7DQogCQllbHNl
IA0KIAkJCXNjaGVkdWxlKCk7DQpAQCAtNzY1LDEwICs3NTksMTQgQEANCiAg
KiAgICAgICAgICAgICAgICAgIFRoaXMgY2FsbCBpcyBhIHJlc3VsdCBvZiB0
b2tlbiBleHBpcmF0aW9uLg0KICAqDQogICogVGhlIG5leHQgYXJpc2UgYXMg
dGhlIHJlc3VsdCBvZiBjYWxsYmFja3Mgb24gYSBmaWxlIG9yIGRpcmVjdG9y
eS4NCi0gKiBDRlNfWkFQRElSICAgIC0tIGZsdXNoIHRoZSBhdHRyaWJ1dGVz
IGZvciB0aGUgZGlyIGZyb20gaXRzIGNub2RlLg0KLSAqICAgICAgICAgICAg
ICAgICAgWmFwIGFsbCBjaGlsZHJlbiBvZiB0aGlzIGRpcmVjdG9yeSBmcm9t
IHRoZSBuYW1lY2FjaGUuDQogICogQ0ZTX1pBUEZJTEUgICAtLSBmbHVzaCB0
aGUgY2FjaGVkIGF0dHJpYnV0ZXMgZm9yIGEgZmlsZS4NCi0gKiBDRlNfWkFQ
Vk5PREUgIC0tIGludGVuZGVkIHRvIGJlIGEgemFwZmlsZSBmb3IganVzdCBv
bmUgY3JlZC4gTm90IHVzZWQ/DQorDQorICogQ0ZTX1pBUERJUiAgICAtLSBm
bHVzaCB0aGUgYXR0cmlidXRlcyBmb3IgdGhlIGRpciBhbmQNCisgKiAgICAg
ICAgICAgICAgICAgIGZvcmNlIGEgbmV3IGxvb2t1cCBmb3IgYWxsIHRoZSBj
aGlsZHJlbg0KKyAgICAgICAgICAgICAgICAgICAgb2YgdGhpcyBkaXIuDQor
DQorICogQ0ZTX1pBUFZOT0RFICAtLSBpbnRlbmRlZCB0byBiZSBhIHphcGZp
bGUgZm9yIGp1c3Qgb25lIGNyZWQuIA0KKyAgICAgICAgICAgICAgICAgICAg
Tm90IHVzZWQ/DQogICoNCiAgKiBUaGUgbmV4dCBpcyBhIHJlc3VsdCBvZiBW
ZW51cyBkZXRlY3RpbmcgYW4gaW5jb25zaXN0ZW50IGZpbGUuDQogICogQ0ZT
X1BVUkdFRklEICAtLSBmbHVzaCB0aGUgYXR0cmlidXRlIGZvciB0aGUgZmls
ZQ0KQEAgLTgwMyw1MyArODAxLDQ4IEBADQogCSAgICByZXR1cm4oMCk7DQog
ICAgIH0NCiAgICAgY2FzZSBDRlNfWkFQRElSIDogew0KKwkgICAgc3RydWN0
IGlub2RlICppbm9kZTsNCiAJICAgIFZpY2VGaWQgKmZpZCA9ICZvdXQtPmNm
c196YXBkaXIuQ29kYUZpZDsNCi0JICAgIGNoYXIgc3RyWzUwXTsNCiAJICAg
IGlmICggIWZpZCApIHsNCiAJCSAgICBwcmludGsoIlpBUERJUjogTnVsbCBm
aWRcbiIpOw0KIAkJICAgIHJldHVybiAwOw0KIAkgICAgfQ0KIAkgICAgQ0RF
QlVHKERfRE9XTkNBTEwsICJ6YXBkaXI6IGZpZCA9ICVzXG4iLCBjb2RhX2Yy
cyhmaWQpKTsNCiAJICAgIGNsc3RhdHMoQ0ZTX1pBUERJUik7DQotCSAgICBj
b2RhX3phcGZpZChmaWQsIHNiLCBDX1pBUERJUik7DQotCSAgICByZXR1cm4o
MCk7DQotICAgIH0NCi0gICAgY2FzZSBDRlNfWkFQVk5PREUgOiB7DQotCSAg
ICBWaWNlRmlkICpmaWQgPSAmb3V0LT5jZnNfemFwdm5vZGUuVkZpZDsNCi0J
ICAgIGNoYXIgc3RyWzUwXTsNCi0JICAgIHN0cnVjdCBjb2RhX2NyZWQgKmNy
ZWQgPSAmb3V0LT5jZnNfemFwdm5vZGUuY3JlZDsNCi0JICAgIGlmICggIWZp
ZCB8fCAhY3JlZCApIHsNCi0JCSAgICBwcmludGsoIlpBUFZOT0RFOiBOdWxs
IGZpZCBvciBjcmVkXG4iKTsNCi0JCSAgICByZXR1cm4gMDsNCi0JICAgIH0N
Ci0JICAgIENERUJVRyhEX0RPV05DQUxMLCAiemFwdm5vZGU6IGZpZCA9ICVz
XG4iLCBjb2RhX2YycyhmaWQpKTsNCi0JICAgIGNvZGFfemFwZmlkKGZpZCwg
c2IsIENfWkFQRklEKTsNCi0JICAgIGNvZGFfY2FjaGVfY2xlYXJfY3JlZChz
YiwgY3JlZCk7DQotCSAgICBjbHN0YXRzKENGU19aQVBWTk9ERSk7DQorCSAg
ICBpbm9kZSA9IGNvZGFfZmlkX3RvX2lub2RlKGZpZCwgc2IpOw0KKwkgICAg
Y29kYV9mbGFnX2lub2RlKGlub2RlLCBDX1ZBVFRSKTsNCisJICAgIGNvZGFf
Y2FjaGVfY2xlYXJfaW5vZGUoaW5vZGUpOw0KKwkgICAgY29kYV9mbGFnX2Fs
aWFzX2NoaWxkcmVuKGlub2RlLCBDX1BVUkdFKTsNCiAJICAgIHJldHVybigw
KTsNCiAgICAgfQ0KKw0KKyAgICBjYXNlIENGU19aQVBWTk9ERSA6IA0KICAg
ICBjYXNlIENGU19aQVBGSUxFIDogew0KKwkgICAgc3RydWN0IGlub2RlICpp
bm9kZTsNCiAJICAgIHN0cnVjdCBWaWNlRmlkICpmaWQgPSAmb3V0LT5jZnNf
emFwZmlsZS5Db2RhRmlkOw0KLQkgICAgY2hhciBzdHJbNTBdOw0KIAkgICAg
Y2xzdGF0cyhDRlNfWkFQRklMRSk7DQogCSAgICBpZiAoICFmaWQgKSB7DQog
CQkgICAgcHJpbnRrKCJaQVBGSUxFOiBOdWxsIGZpZFxuIik7DQogCQkgICAg
cmV0dXJuIDA7DQogCSAgICB9DQogCSAgICBDREVCVUcoRF9ET1dOQ0FMTCwg
InphcGZpbGU6IGZpZCA9ICVzXG4iLCBjb2RhX2YycyhmaWQpKTsNCi0JICAg
IGNvZGFfemFwZmlkKGZpZCwgc2IsIENfWkFQRklEKTsNCisJICAgIGlub2Rl
ID0gY29kYV9maWRfdG9faW5vZGUoZmlkLCBzYik7DQorCSAgICBjb2RhX2Zs
YWdfaW5vZGUoaW5vZGUsIENfVkFUVFIpOw0KKwkgICAgY29kYV9jYWNoZV9j
bGVhcl9pbm9kZShpbm9kZSk7DQogCSAgICByZXR1cm4gMDsNCiAgICAgfQ0K
ICAgICBjYXNlIENGU19QVVJHRUZJRCA6IHsNCisJICAgIHN0cnVjdCBpbm9k
ZSAqaW5vZGU7DQogCSAgICBWaWNlRmlkICpmaWQgPSAmb3V0LT5jZnNfcHVy
Z2VmaWQuQ29kYUZpZDsNCi0JICAgIGNoYXIgc3RyWzUwXTsNCiAJICAgIGlm
ICggIWZpZCApIHsNCiAJCSAgICBwcmludGsoIlBVUkdFRklEOiBOdWxsIGZp
ZFxuIik7DQogCQkgICAgcmV0dXJuIDA7DQogCSAgICB9DQogCSAgICBDREVC
VUcoRF9ET1dOQ0FMTCwgInB1cmdlZmlkOiBmaWQgPSAlc1xuIiwgY29kYV9m
MnMoZmlkKSk7DQogCSAgICBjbHN0YXRzKENGU19QVVJHRUZJRCk7DQotCSAg
ICBjb2RhX3phcGZpZChmaWQsIHNiLCBDX1pBUERJUik7DQorCSAgICBpbm9k
ZSA9IGNvZGFfZmlkX3RvX2lub2RlKGZpZCwgc2IpOw0KKwkgICAgY29kYV9m
bGFnX2lub2RlKGlub2RlLCBDX1BVUkdFKTsNCisJICAgIGNvZGFfY2FjaGVf
Y2xlYXJfaW5vZGUoaW5vZGUpOw0KIAkgICAgcmV0dXJuIDA7DQogICAgIH0N
CiAgICAgY2FzZSBDRlNfUkVQTEFDRSA6IHsNCmRpZmYgLXVyTiBsaW51eC0y
LjEuODkub3JpZy9pbmNsdWRlL2xpbnV4L2NvZGEuaCBsaW51eC9pbmNsdWRl
L2xpbnV4L2NvZGEuaA0KLS0tIGxpbnV4LTIuMS44OS5vcmlnL2luY2x1ZGUv
bGludXgvY29kYS5oCVdlZCBNYXIgIDQgMTg6MTQ6MzIgMTk5OA0KKysrIGxp
bnV4L2luY2x1ZGUvbGludXgvY29kYS5oCVN1biBNYXIgMTUgMjM6MzE6MTUg
MTk5OA0KQEAgLTU4Nyw5ICs1ODcsOSBAQA0KIH07DQogDQogLyogDQotICog
T2NjYXNpb25hbGx5LCBkb24ndCBjYWNoZSB0aGUgZmlkIHJldHVybmVkIGJ5
IENGU19MT09LVVAuIEZvciBpbnN0YW5jZSwgaWYNCi0gKiB0aGUgZmlkIGlz
IGluY29uc2lzdGVudC4gVGhpcyBjYXNlIGlzIGhhbmRsZWQgYnkgc2V0dGlu
ZyB0aGUgdG9wIGJpdCBvZiB0aGUNCi0gKiByZXR1cm4gcmVzdWx0IHBhcmFt
ZXRlci4NCisgKiBPY2Nhc2lvbmFsbHksIHdlIGRvbid0IGNhY2hlIHRoZSBm
aWQgcmV0dXJuZWQgYnkgQ0ZTX0xPT0tVUC4gDQorICogRm9yIGluc3RhbmNl
LCBpZiB0aGUgZmlkIGlzIGluY29uc2lzdGVudC4gDQorICogVGhpcyBjYXNl
IGlzIGhhbmRsZWQgYnkgc2V0dGluZyB0aGUgdG9wIGJpdCBvZiB0aGUgdHlw
ZSByZXN1bHQgcGFyYW1ldGVyLg0KICAqLw0KICNkZWZpbmUgQ0ZTX05PQ0FD
SEUgICAgICAgICAgMHg4MDAwMDAwMA0KIA0KZGlmZiAtdXJOIGxpbnV4LTIu
MS44OS5vcmlnL2luY2x1ZGUvbGludXgvY29kYV9jYWNoZS5oIGxpbnV4L2lu
Y2x1ZGUvbGludXgvY29kYV9jYWNoZS5oDQotLS0gbGludXgtMi4xLjg5Lm9y
aWcvaW5jbHVkZS9saW51eC9jb2RhX2NhY2hlLmgJV2VkIE1hciAgNCAxODox
NDozMiAxOTk4DQorKysgbGludXgvaW5jbHVkZS9saW51eC9jb2RhX2NhY2hl
LmgJU3VuIE1hciAxNSAyMjowMDozNyAxOTk4DQpAQCAtMjEsMTkgKzIxLDE2
IEBADQogCXN0cnVjdCBjb2RhX2NyZWQgICBjY19jcmVkOw0KIH07DQogDQot
dm9pZCBjb2RhX2NjaW5zZXJ0KHN0cnVjdCBjb2RhX2NhY2hlICplbCwgc3Ry
dWN0IHN1cGVyX2Jsb2NrICpzYik7DQotdm9pZCBjb2RhX2NuaW5zZXJ0KHN0
cnVjdCBjb2RhX2NhY2hlICplbCwgc3RydWN0IGNvZGFfaW5vZGVfaW5mbyAq
Y25wKTsNCi12b2lkIGNvZGFfY2NyZW1vdmUoc3RydWN0IGNvZGFfY2FjaGUg
KmVsKTsNCi12b2lkIGNvZGFfY25yZW1vdmUoc3RydWN0IGNvZGFfY2FjaGUg
KmVsKTsNCi12b2lkIGNvZGFfY2FjaGVfY3JlYXRlKHN0cnVjdCBpbm9kZSAq
aW5vZGUsIGludCBtYXNrKTsNCi1zdHJ1Y3QgY29kYV9jYWNoZSAqY29kYV9j
YWNoZV9maW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUpOw0KKy8qIGNyZWRlbnRp
YWwgY2FjaGUgKi8NCiB2b2lkIGNvZGFfY2FjaGVfZW50ZXIoc3RydWN0IGlu
b2RlICppbm9kZSwgaW50IG1hc2spOw0KLXZvaWQgY29kYV9jYWNoZV9jbGVh
cl9jbnAoc3RydWN0IGNvZGFfaW5vZGVfaW5mbyAqY25wKTsNCit2b2lkIGNv
ZGFfY2FjaGVfY2xlYXJfaW5vZGUoc3RydWN0IGlub2RlICopOw0KIHZvaWQg
Y29kYV9jYWNoZV9jbGVhcl9hbGwoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7
DQogdm9pZCBjb2RhX2NhY2hlX2NsZWFyX2NyZWQoc3RydWN0IHN1cGVyX2Js
b2NrICpzYiwgc3RydWN0IGNvZGFfY3JlZCAqY3JlZCk7DQogaW50IGNvZGFf
Y2FjaGVfY2hlY2soc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1hc2spOw0K
LXZvaWQgY29kYV9kZW50cnlfZGVsZXRlKHN0cnVjdCBkZW50cnkgKmRlbnRy
eSk7DQotdm9pZCBjb2RhX3phcGZpZChzdHJ1Y3QgVmljZUZpZCAqZmlkLCBz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgZmxhZyk7DQorDQorLyogZm9y
IGRvd25jYWxscyBhbmQgYXR0cmlidXRlcyBhbmQgbG9va3VwcyAqLw0KK3Zv
aWQgY29kYV9mbGFnX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBm
bGFnKTsNCit2b2lkIGNvZGFfZmxhZ19hbGlhc19jaGlsZHJlbihzdHJ1Y3Qg
aW5vZGUgKmlub2RlLCBpbnQgZmxhZyk7DQogDQogDQogLyoNCmRpZmYgLXVy
TiBsaW51eC0yLjEuODkub3JpZy9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5o
IGxpbnV4L2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgNCi0tLSBsaW51eC0y
LjEuODkub3JpZy9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oCVdlZCBNYXIg
IDQgMTg6MTQ6MzIgMTk5OA0KKysrIGxpbnV4L2luY2x1ZGUvbGludXgvY29k
YV9mc19pLmgJU3VuIE1hciAxNSAyMzozNToyMCAxOTk4DQpAQCAtMTcsNyAr
MTcsNyBAQA0KIA0KICNkZWZpbmUgQ09EQV9DTk9ERV9NQUdJQyAgICAgICAg
MHg0NzExNDcxMQ0KIC8qDQotICogc21iIGZzIGlub2RlIGRhdGEgKGluIG1l
bW9yeSBvbmx5KQ0KKyAqIGNvZGEgZnMgaW5vZGUgZGF0YQ0KICAqLw0KIHN0
cnVjdCBjb2RhX2lub2RlX2luZm8gew0KICAgICAgICAgc3RydWN0IFZpY2VG
aWQgICAgIGNfZmlkOwkvKiBDb2RhIGlkZW50aWZpZXIgKi8NCkBAIC0zNiwx
NiArMzYsMTMgQEANCiAjZGVmaW5lIENfVkFUVFIgICAgICAgMHgxICAgICAg
ICAgLyogVmFsaWRpdHkgb2YgdmF0dHIgaW4gdGhlIGNub2RlICovDQogI2Rl
ZmluZSBDX1NZTUxJTksgICAgIDB4MiAgICAgICAgIC8qIFZhbGlkaXR5IG9m
IHN5bWxpbmsgcG9pbnRlciBpbiB0aGUgY25vZGUgKi8NCiAjZGVmaW5lIENf
RFlJTkcgICAgICAgMHg0CSAgLyogU2V0IGZvciBvdXRzdGFuZGluZyBjbm9k
ZXMgZnJvbSB2ZW51cyAod2hpY2ggZGllZCkgKi8NCi0jZGVmaW5lIENfWkFQ
RklEICAgICAgMHg4DQorI2RlZmluZSBDX1BVUkdFICAgICAgMHg4DQogI2Rl
ZmluZSBDX1pBUERJUiAgICAgIDB4MTANCiAjZGVmaW5lIENfSU5JVEVEICAg
ICAgMHgyMA0KIA0KIGludCBjb2RhX2Nub2RlX21ha2Uoc3RydWN0IGlub2Rl
ICoqLCBzdHJ1Y3QgVmljZUZpZCAqLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7
DQogaW50IGNvZGFfY25vZGVfbWFrZWN0bChzdHJ1Y3QgaW5vZGUgKippbm9k
ZSwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7DQogc3RydWN0IGlub2RlICpj
b2RhX2ZpZF90b19pbm9kZShWaWNlRmlkICpmaWQsIHN0cnVjdCBzdXBlcl9i
bG9jayAqc2IpOw0KLQ0KLS8qIGlub2RlIHRvIGNub2RlICovDQotI2RlZmlu
ZSBJVE9DKGlub2RlKSAoKHN0cnVjdCBjb2RhX2lub2RlX2luZm8gKikmKChp
bm9kZSktPnUuY29kYV9pKSkNCiANCiANCiAjZW5kaWYNCmRpZmYgLXVyTiBs
aW51eC0yLjEuODkub3JpZy9pbmNsdWRlL2xpbnV4L2NvZGFfbGludXguaCBs
aW51eC9pbmNsdWRlL2xpbnV4L2NvZGFfbGludXguaA0KLS0tIGxpbnV4LTIu
MS44OS5vcmlnL2luY2x1ZGUvbGludXgvY29kYV9saW51eC5oCVdlZCBNYXIg
IDQgMTg6MTQ6MzIgMTk5OA0KKysrIGxpbnV4L2luY2x1ZGUvbGludXgvY29k
YV9saW51eC5oCVN1biBNYXIgMTUgMjM6MzU6MjggMTk5OA0KQEAgLTM2LDYg
KzM2LDcgQEANCiBpbnQgY29kYV9vcGVuKHN0cnVjdCBpbm9kZSAqaSwgc3Ry
dWN0IGZpbGUgKmYpOw0KIGludCBjb2RhX3JlbGVhc2Uoc3RydWN0IGlub2Rl
ICppLCBzdHJ1Y3QgZmlsZSAqZik7DQogaW50IGNvZGFfcGVybWlzc2lvbihz
dHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzayk7DQoraW50IGNvZGFfcmV2
YWxpZGF0ZV9pbm9kZShzdHJ1Y3QgZGVudHJ5ICopOw0KIA0KIC8qIGdsb2Jh
bCB2YXJpYWJsZXMgKi8NCiBleHRlcm4gaW50IGNvZGFfZGVidWc7DQpAQCAt
NDMsMTAgKzQ0LDEzIEBADQogZXh0ZXJuIGludCBjb2RhX2FjY2Vzc19jYWNo
ZTsNCiANCiAvKiB0aGlzIGZpbGU6ICBoZWxvZXJzICovDQorc3RhdGljIF9f
aW5saW5lX18gc3RydWN0IFZpY2VGaWQgKmNvZGFfaTJmKHN0cnVjdCBpbm9k
ZSAqKTsNCiBjaGFyICpjb2RhX2YycyhWaWNlRmlkICpmKTsNCiBpbnQgY29k
YV9pc3Jvb3Qoc3RydWN0IGlub2RlICppKTsNCiBpbnQgY29kYV9maWRfaXNf
dm9scm9vdChzdHJ1Y3QgVmljZUZpZCAqKTsNCiBpbnQgY29kYV9pc2NvbnRy
b2woY29uc3QgY2hhciAqbmFtZSwgc2l6ZV90IGxlbmd0aCk7DQorDQorDQog
dm9pZCBjb2RhX2xvYWRfY3JlZHMoc3RydWN0IGNvZGFfY3JlZCAqY3JlZCk7
DQogaW50IGNvZGFfbXljcmVkKHN0cnVjdCBjb2RhX2NyZWQgKik7DQogdm9p
ZCBjb2RhX3ZhdHRyX3RvX2lhdHRyKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg
Y29kYV92YXR0ciAqKTsNCkBAIC0xMTEsNSArMTE1LDE5IEBADQogDQogDQog
I2RlZmluZSBDT0RBX0ZSRUUocHRyLHNpemUpIGRvIHtpZiAoc2l6ZSA8IDMw
MDApIHsga2ZyZWVfcygocHRyKSwgKHNpemUpKTsgQ0RFQlVHKERfTUFMTE9D
LCAia2ZyZWVkOiAleCBhdCAleC5cbiIsIChpbnQpIHNpemUsIChpbnQpIHB0
cik7IH0gZWxzZSB7IHZmcmVlKChwdHIpKTsgQ0RFQlVHKERfTUFMTE9DLCAi
dmZyZWVkOiAleCBhdCAleC5cbiIsIChpbnQpIHNpemUsIChpbnQpIHB0cik7
fSB9IHdoaWxlICgwKQ0KKw0KKy8qIGlub2RlIHRvIGNub2RlICovDQorDQor
c3RhdGljIF9faW5saW5lX18gc3RydWN0IFZpY2VGaWQgKmNvZGFfaTJmKHN0
cnVjdCBpbm9kZSAqaW5vZGUpDQorew0KKwlyZXR1cm4gJihpbm9kZS0+dS5j
b2RhX2kuY19maWQpOw0KK30NCisNCisjZGVmaW5lIElUT0MoaW5vZGUpICgm
KChpbm9kZSktPnUuY29kYV9pKSkNCisNCisNCisNCisNCisNCiANCiAjZW5k
aWYNCg==
--41945269-835729831-890032054=:2508--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu