Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Dec 2011 11:40:35 -0600
From:      Alan Cox <alc@rice.edu>
To:        Sean Bruno <seanbru@yahoo-inc.com>
Cc:        Alan Cox <alc@cs.rice.edu>, "xen@freebsd.org" <xen@freebsd.org>
Subject:   Re: PV i386 patch
Message-ID:  <4EFA0313.6030105@rice.edu>
In-Reply-To: <1324679157.17645.6.camel@hitfishpass-lx.corp.yahoo.com>
References:  <4EEB9CCE.6090701@rice.edu> <1324169806.3093.3.camel@hitfishpass-lx.corp.yahoo.com> <4EED4982.3080208@freebsd.org> <1324339762.3093.14.camel@hitfishpass-lx.corp.yahoo.com> <4EF04F3C.9010309@rice.edu> <1324387685.3093.28.camel@hitfishpass-lx.corp.yahoo.com> <4EF0D8D7.2060503@rice.edu> <4EF0EC1A.4010604@freebsd.org> <1324412718.12783.10.camel@hitfishpass-lx.corp.yahoo.com> <4EF245D1.2050503@rice.edu> <1324679157.17645.6.camel@hitfishpass-lx.corp.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------060709010809090804020504
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 12/23/2011 16:25, Sean Bruno wrote:
> On Wed, 2011-12-21 at 12:47 -0800, Alan Cox wrote:
>> Can you please try the attached patch?  I'm trying to reduce the number
>> of differences between the native and Xen pmap implementations.
>>
>> Alan
>>
>
> Without really looking at the output, I note that this didn't apply
> cleanly against -head ... can you regenerate it?
>

My bad.  I gave you the wrong patch.  Try this instead.

Alan


--------------060709010809090804020504
Content-Type: text/plain;
 name="native_xen_merge.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="native_xen_merge.patch"

SW5kZXg6IGkzODYvaTM4Ni9wbWFwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaTM4Ni9pMzg2L3Bt
YXAuYwkocmV2aXNpb24gMjI4NTcwKQorKysgaTM4Ni9pMzg2L3BtYXAuYwkod29ya2luZyBj
b3B5KQpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyB2b2lkIHBtYXBfdXBkYXRlX3BkZV9p
bnZhbGlkYXRlKHZtX29mZnNldF90CiAKIHN0YXRpYyB2bV9wYWdlX3QgcG1hcF9hbGxvY3B0
ZShwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmEsIGludCBmbGFncyk7CiAKLXN0YXRpYyB2
bV9wYWdlX3QgX3BtYXBfYWxsb2NwdGUocG1hcF90IHBtYXAsIHVuc2lnbmVkIHB0ZXBpbmRl
eCwgaW50IGZsYWdzKTsKK3N0YXRpYyB2bV9wYWdlX3QgX3BtYXBfYWxsb2NwdGUocG1hcF90
IHBtYXAsIHVfaW50IHB0ZXBpbmRleCwgaW50IGZsYWdzKTsKIHN0YXRpYyBpbnQgX3BtYXBf
dW53aXJlX3B0ZV9ob2xkKHBtYXBfdCBwbWFwLCB2bV9wYWdlX3QgbSwgdm1fcGFnZV90ICpm
cmVlKTsKIHN0YXRpYyBwdF9lbnRyeV90ICpwbWFwX3B0ZV9xdWljayhwbWFwX3QgcG1hcCwg
dm1fb2Zmc2V0X3QgdmEpOwogc3RhdGljIHZvaWQgcG1hcF9wdGVfcmVsZWFzZShwdF9lbnRy
eV90ICpwdGUpOwpAQCAtMzQwLDYgKzM0MCw4IEBAIHN0YXRpYyB2b2lkICpwbWFwX3BkcHRf
YWxsb2NmKHVtYV96b25lX3Qgem9uZSwgaW50CiAjZW5kaWYKIHN0YXRpYyB2b2lkIHBtYXBf
c2V0X3BnKHZvaWQpOwogCitzdGF0aWMgX19pbmxpbmUgdm9pZCBwYWdlemVybyh2b2lkICpw
YWdlKTsKKwogQ1RBU1NFUlQoMSA8PCBQREVTSElGVCA9PSBzaXplb2YocGRfZW50cnlfdCkp
OwogQ1RBU1NFUlQoMSA8PCBQVEVTSElGVCA9PSBzaXplb2YocHRfZW50cnlfdCkpOwogCkBA
IC0xMjE2LDcgKzEyMTgsNyBAQCBwbWFwX2lzX2N1cnJlbnQocG1hcF90IHBtYXApCiB7CiAK
IAlyZXR1cm4gKHBtYXAgPT0ga2VybmVsX3BtYXAgfHwKLQkJKHBtYXAgPT0gdm1zcGFjZV9w
bWFwKGN1cnRocmVhZC0+dGRfcHJvYy0+cF92bXNwYWNlKSAmJgorCSAgICAocG1hcCA9PSB2
bXNwYWNlX3BtYXAoY3VydGhyZWFkLT50ZF9wcm9jLT5wX3Ztc3BhY2UpICYmCiAJICAgIChw
bWFwLT5wbV9wZGlyW1BURFBUREldICYgUEdfRlJBTUUpID09IChQVERwZGVbMF0gJiBQR19G
UkFNRSkpKTsKIH0KIApAQCAtMTc1OSw3ICsxNzYxLDYgQEAgcG1hcF9waW5pdChwbWFwX3Qg
cG1hcCkKIAlpZiAocG1hcC0+cG1fcGRpciA9PSBOVUxMKSB7CiAJCXBtYXAtPnBtX3BkaXIg
PSAocGRfZW50cnlfdCAqKWttZW1fYWxsb2Nfbm9mYXVsdChrZXJuZWxfbWFwLAogCQkgICAg
TkJQVEQpOwotCiAJCWlmIChwbWFwLT5wbV9wZGlyID09IE5VTEwpIHsKIAkJCVBNQVBfTE9D
S19ERVNUUk9ZKHBtYXApOwogCQkJcmV0dXJuICgwKTsKQEAgLTE3OTIsMTAgKzE3OTMsOSBA
QCBwbWFwX3Bpbml0KHBtYXBfdCBwbWFwKQogCiAJcG1hcF9xZW50ZXIoKHZtX29mZnNldF90
KXBtYXAtPnBtX3BkaXIsIHB0ZHBnLCBOUEdQVEQpOwogCi0JZm9yIChpID0gMDsgaSA8IE5Q
R1BURDsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IE5QR1BURDsgaSsrKQogCQlpZiAoKHB0
ZHBnW2ldLT5mbGFncyAmIFBHX1pFUk8pID09IDApCi0JCQliemVybyhwbWFwLT5wbV9wZGly
ICsgKGkgKiBOUERFUEcpLCBQQUdFX1NJWkUpOwotCX0KKwkJCXBhZ2V6ZXJvKHBtYXAtPnBt
X3BkaXIgKyAoaSAqIE5QREVQRykpOwogCiAJbXR4X2xvY2tfc3BpbigmYWxscG1hcHNfbG9j
ayk7CiAJTElTVF9JTlNFUlRfSEVBRCgmYWxscG1hcHMsIHBtYXAsIHBtX2xpc3QpOwpAQCAt
MTgyNCw3ICsxODI0LDcgQEAgcG1hcF9waW5pdChwbWFwX3QgcG1hcCkKICAqIG1hcHBlZCBj
b3JyZWN0bHkuCiAgKi8KIHN0YXRpYyB2bV9wYWdlX3QKLV9wbWFwX2FsbG9jcHRlKHBtYXBf
dCBwbWFwLCB1bnNpZ25lZCBwdGVwaW5kZXgsIGludCBmbGFncykKK19wbWFwX2FsbG9jcHRl
KHBtYXBfdCBwbWFwLCB1X2ludCBwdGVwaW5kZXgsIGludCBmbGFncykKIHsKIAl2bV9wYWRk
cl90IHB0ZXBhOwogCXZtX3BhZ2VfdCBtOwpAQCAtMTg3Miw3ICsxODcyLDcgQEAgc3RhdGlj
IHZtX3BhZ2VfdAogc3RhdGljIHZtX3BhZ2VfdAogcG1hcF9hbGxvY3B0ZShwbWFwX3QgcG1h
cCwgdm1fb2Zmc2V0X3QgdmEsIGludCBmbGFncykKIHsKLQl1bnNpZ25lZCBwdGVwaW5kZXg7
CisJdV9pbnQgcHRlcGluZGV4OwogCXBkX2VudHJ5X3QgcHRlcGE7CiAJdm1fcGFnZV90IG07
CiAKQEAgLTIwMjAsNyArMjAyMCw3IEBAIHBtYXBfbGF6eWZpeChwbWFwX3QgcG1hcCkKIAlj
cjMgPSB2dG9waHlzKHBtYXAtPnBtX3BkaXIpOwogCWlmIChjcjMgPT0gcmNyMygpKSB7CiAJ
CWxvYWRfY3IzKFBDUFVfR0VUKGN1cnBjYiktPnBjYl9jcjMpOwotCQlDUFVfQ0xSKFBDUFVf
R0VUKGNwdWlkKSwgJnBtYXAtPnBtX2FjdGl2ZSk7IAorCQlDUFVfQ0xSKFBDUFVfR0VUKGNw
dWlkKSwgJnBtYXAtPnBtX2FjdGl2ZSk7CiAJfQogfQogI2VuZGlmCS8qIFNNUCAqLwpAQCAt
Mjg0OSw3ICsyODQ5LDcgQEAgcG1hcF9yZW1vdmUocG1hcF90IHBtYXAsIHZtX29mZnNldF90
IHN2YSwgdm1fb2Zmc2UKIAl9CiAKIAlmb3IgKDsgc3ZhIDwgZXZhOyBzdmEgPSBwZG54dCkg
ewotCQl1bnNpZ25lZCBwZGlyaW5kZXg7CisJCXVfaW50IHBkaXJpbmRleDsKIAogCQkvKgog
CQkgKiBDYWxjdWxhdGUgaW5kZXggZm9yIG5leHQgcGFnZSB0YWJsZS4KQEAgLTMwNzAsNyAr
MzA3MCw3IEBAIHBtYXBfcHJvdGVjdChwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3Qgc3ZhLCB2
bV9vZmZzCiAJUE1BUF9MT0NLKHBtYXApOwogCWZvciAoOyBzdmEgPCBldmE7IHN2YSA9IHBk
bnh0KSB7CiAJCXB0X2VudHJ5X3Qgb2JpdHMsIHBiaXRzOwotCQl1bnNpZ25lZCBwZGlyaW5k
ZXg7CisJCXVfaW50IHBkaXJpbmRleDsKIAogCQlwZG54dCA9IChzdmEgKyBOQlBEUikgJiB+
UERSTUFTSzsKIAkJaWYgKHBkbnh0IDwgc3ZhKQpAQCAtMzU5Niw3ICszNTk2LDcgQEAgcG1h
cF9lbnRlcl9vYmplY3QocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHN0YXJ0LAogCQltID0g
VEFJTFFfTkVYVChtLCBsaXN0cSk7CiAJfQogCXZtX3BhZ2VfdW5sb2NrX3F1ZXVlcygpOwot
IAlQTUFQX1VOTE9DSyhwbWFwKTsKKwlQTUFQX1VOTE9DSyhwbWFwKTsKIH0KIAogLyoKQEAg
LTM2MzgsNyArMzYzOCw3IEBAIHBtYXBfZW50ZXJfcXVpY2tfbG9ja2VkKHBtYXBfdCBwbWFw
LCB2bV9vZmZzZXRfdCB2CiAJICogcmVzaWRlbnQsIHdlIGFyZSBjcmVhdGluZyBpdCBoZXJl
LgogCSAqLwogCWlmICh2YSA8IFZNX01BWFVTRVJfQUREUkVTUykgewotCQl1bnNpZ25lZCBw
dGVwaW5kZXg7CisJCXVfaW50IHB0ZXBpbmRleDsKIAkJcGRfZW50cnlfdCBwdGVwYTsKIAog
CQkvKgpAQCAtMzkwNCw3ICszOTA0LDcgQEAgcG1hcF9jb3B5KHBtYXBfdCBkc3RfcG1hcCwg
cG1hcF90IHNyY19wbWFwLCB2bV9vZmYKIAkJcHRfZW50cnlfdCAqc3JjX3B0ZSwgKmRzdF9w
dGU7CiAJCXZtX3BhZ2VfdCBkc3RtcHRlLCBzcmNtcHRlOwogCQlwZF9lbnRyeV90IHNyY3B0
ZXBhZGRyOwotCQl1bnNpZ25lZCBwdGVwaW5kZXg7CisJCXVfaW50IHB0ZXBpbmRleDsKIAog
CQlLQVNTRVJUKGFkZHIgPCBVUFRfTUlOX0FERFJFU1MsCiAJCSAgICAoInBtYXBfY29weTog
aW52YWxpZCB0byBwbWFwX2NvcHkgcGFnZSB0YWJsZXMiKSk7CkBAIC01MjQ0LDcgKzUyNDQs
NyBAQCBwbWFwX3BpZF9kdW1wKGludCBwaWQpCiAjaWYgZGVmaW5lZChERUJVRykKIAogc3Rh
dGljIHZvaWQJcGFkcyhwbWFwX3QgcG0pOwotdm9pZAkJcG1hcF9wdmR1bXAodm1fb2Zmc2V0
X3QgcGEpOwordm9pZAkJcG1hcF9wdmR1bXAodm1fcGFkZHJfdCBwYSk7CiAKIC8qIHByaW50
IGFkZHJlc3Mgc3BhY2Ugb2YgcG1hcCovCiBzdGF0aWMgdm9pZApJbmRleDogaTM4Ni94ZW4v
cG1hcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGkzODYveGVuL3BtYXAuYwkocmV2aXNpb24gMjI4
NzQ2KQorKysgaTM4Ni94ZW4vcG1hcC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1
LDggQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4K
ICNpZmRlZiBTTVAKICNpbmNsdWRlIDxzeXMvc21wLmg+CisjZWxzZQorI2luY2x1ZGUgPHN5
cy9jcHVzZXQuaD4KICNlbmRpZgogCiAjaW5jbHVkZSA8dm0vdm0uaD4KQEAgLTIyMSw2ICsy
MjMsOCBAQCBleHRlcm4gdV9pbnQzMl90IEtFUk5lbmQ7CiBwdF9lbnRyeV90IHBnX254Owog
I2VuZGlmCiAKK3N0YXRpYyBTWVNDVExfTk9ERShfdm0sIE9JRF9BVVRPLCBwbWFwLCBDVExG
TEFHX1JELCAwLCAiVk0vcG1hcCBwYXJhbWV0ZXJzIik7CisKIHN0YXRpYyBpbnQgcGF0X3dv
cmtzOwkJCS8qIElzIHBhZ2UgYXR0cmlidXRlIHRhYmxlIHNhbmU/ICovCiAKIC8qCkBAIC0y
NzMsMTkgKzI3Nyw2IEBAIFNZU0NUTF9JTlQoX2RlYnVnLCBPSURfQVVUTywgUE1BUDF1bmNo
YW5nZWQsIENUTEZMCiAJICAgIk51bWJlciBvZiB0aW1lcyBwbWFwX3B0ZV9xdWljayBkaWRu
J3QgY2hhbmdlIFBNQVAxIik7CiBzdGF0aWMgc3RydWN0IG10eCBQTUFQMm11dGV4OwogCi1z
dGF0aWMgU1lTQ1RMX05PREUoX3ZtLCBPSURfQVVUTywgcG1hcCwgQ1RMRkxBR19SRCwgMCwg
IlZNL3BtYXAgcGFyYW1ldGVycyIpOwotCi1TWVNDVExfSU5UKF92bV9wbWFwLCBPSURfQVVU
TywgcHZfZW50cnlfbWF4LCBDVExGTEFHX1JELCAmcHZfZW50cnlfbWF4LCAwLAotCSJNYXgg
bnVtYmVyIG9mIFBWIGVudHJpZXMiKTsKLVNZU0NUTF9JTlQoX3ZtX3BtYXAsIE9JRF9BVVRP
LCBzaHBncGVycHJvYywgQ1RMRkxBR19SRCwgJnNocGdwZXJwcm9jLCAwLAotCSJQYWdlIHNo
YXJlIGZhY3RvciBwZXIgcHJvYyIpOwotc3RhdGljIFNZU0NUTF9OT0RFKF92bV9wbWFwLCBP
SURfQVVUTywgcGRlLCBDVExGTEFHX1JELCAwLAotICAgICIyLzRNQiBwYWdlIG1hcHBpbmcg
Y291bnRlcnMiKTsKLQotc3RhdGljIHVfbG9uZyBwbWFwX3BkZV9tYXBwaW5nczsKLVNZU0NU
TF9VTE9ORyhfdm1fcG1hcF9wZGUsIE9JRF9BVVRPLCBtYXBwaW5ncywgQ1RMRkxBR19SRCwK
LSAgICAmcG1hcF9wZGVfbWFwcGluZ3MsIDAsICIyLzRNQiBwYWdlIG1hcHBpbmdzIik7Ci0K
IHN0YXRpYyB2b2lkCWZyZWVfcHZfZW50cnkocG1hcF90IHBtYXAsIHB2X2VudHJ5X3QgcHYp
Owogc3RhdGljIHB2X2VudHJ5X3QgZ2V0X3B2X2VudHJ5KHBtYXBfdCBsb2NrZWRfcG1hcCwg
aW50IHRyeSk7CiBzdGF0aWMgdm9pZAlwbWFwX3B2aF9mcmVlKHN0cnVjdCBtZF9wYWdlICpw
dmgsIHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSk7CkBAIC0yOTQsNiArMjg1LDggQEAg
c3RhdGljIHB2X2VudHJ5X3QgcG1hcF9wdmhfcmVtb3ZlKHN0cnVjdCBtZF9wYWdlICoKIAog
c3RhdGljIHZtX3BhZ2VfdCBwbWFwX2VudGVyX3F1aWNrX2xvY2tlZChtdWx0aWNhbGxfZW50
cnlfdCAqKm1jbCwgaW50ICpjb3VudCwgcG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhLAog
ICAgIHZtX3BhZ2VfdCBtLCB2bV9wcm90X3QgcHJvdCwgdm1fcGFnZV90IG1wdGUpOworc3Rh
dGljIHZvaWQgcG1hcF9mbHVzaF9wYWdlKHZtX3BhZ2VfdCBtKTsKK3N0YXRpYyB2b2lkIHBt
YXBfa2VudGVyX2F0dHIodm1fb2Zmc2V0X3QgdmEsIHZtX3BhZGRyX3QgcGEsIGludCBtb2Rl
KTsKIHN0YXRpYyBpbnQgcG1hcF9yZW1vdmVfcHRlKHBtYXBfdCBwbWFwLCBwdF9lbnRyeV90
ICpwdHEsIHZtX29mZnNldF90IHN2YSwKICAgICB2bV9wYWdlX3QgKmZyZWUpOwogc3RhdGlj
IHZvaWQgcG1hcF9yZW1vdmVfcGFnZShzdHJ1Y3QgcG1hcCAqcG1hcCwgdm1fb2Zmc2V0X3Qg
dmEsCkBAIC0zMDUsMTQgKzI5OCwxMiBAQCBzdGF0aWMgYm9vbGVhbl90IHBtYXBfdHJ5X2lu
c2VydF9wdl9lbnRyeShwbWFwX3QgcAogCiBzdGF0aWMgdm1fcGFnZV90IHBtYXBfYWxsb2Nw
dGUocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhLCBpbnQgZmxhZ3MpOwogCi1zdGF0aWMg
dm1fcGFnZV90IF9wbWFwX2FsbG9jcHRlKHBtYXBfdCBwbWFwLCB1bnNpZ25lZCBwdGVwaW5k
ZXgsIGludCBmbGFncyk7CitzdGF0aWMgdm1fcGFnZV90IF9wbWFwX2FsbG9jcHRlKHBtYXBf
dCBwbWFwLCB1X2ludCBwdGVwaW5kZXgsIGludCBmbGFncyk7CiBzdGF0aWMgaW50IF9wbWFw
X3Vud2lyZV9wdGVfaG9sZChwbWFwX3QgcG1hcCwgdm1fcGFnZV90IG0sIHZtX3BhZ2VfdCAq
ZnJlZSk7CiBzdGF0aWMgcHRfZW50cnlfdCAqcG1hcF9wdGVfcXVpY2socG1hcF90IHBtYXAs
IHZtX29mZnNldF90IHZhKTsKIHN0YXRpYyB2b2lkIHBtYXBfcHRlX3JlbGVhc2UocHRfZW50
cnlfdCAqcHRlKTsKIHN0YXRpYyBpbnQgcG1hcF91bnVzZV9wdChwbWFwX3QsIHZtX29mZnNl
dF90LCB2bV9wYWdlX3QgKik7Ci1zdGF0aWMgdm1fb2Zmc2V0X3QgcG1hcF9rbWVtX2Nob29z
ZSh2bV9vZmZzZXRfdCBhZGRyKTsKIHN0YXRpYyBib29sZWFuX3QgcG1hcF9pc19wcmVmYXVs
dGFibGVfbG9ja2VkKHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCBhZGRyKTsKLXN0YXRpYyB2
b2lkIHBtYXBfa2VudGVyX2F0dHIodm1fb2Zmc2V0X3QgdmEsIHZtX3BhZGRyX3QgcGEsIGlu
dCBtb2RlKTsKIAogc3RhdGljIF9faW5saW5lIHZvaWQgcGFnZXplcm8odm9pZCAqcGFnZSk7
CiAKQEAgLTMyNiw4ICszMTcsNiBAQCBDVEFTU0VSVCgxIDw8IFBURVNISUZUID09IHNpemVv
ZihwdF9lbnRyeV90KSk7CiAgKi8KIENUQVNTRVJUKEtFUk5CQVNFICUgKDEgPDwgMjQpID09
IDApOwogCi0KLQogdm9pZCAKIHBkX3NldChzdHJ1Y3QgcG1hcCAqcG1hcCwgaW50IHB0ZXBp
bmRleCwgdm1fcGFkZHJfdCB2YWwsIGludCB0eXBlKQogewpAQCAtMzU5LDI0ICszNDgsNiBA
QCBwZF9zZXQoc3RydWN0IHBtYXAgKnBtYXAsIGludCBwdGVwaW5kZXgsIHZtX3BhZGRyXwog
fQogCiAvKgotICogTW92ZSB0aGUga2VybmVsIHZpcnR1YWwgZnJlZSBwb2ludGVyIHRvIHRo
ZSBuZXh0Ci0gKiA0TUIuICBUaGlzIGlzIHVzZWQgdG8gaGVscCBpbXByb3ZlIHBlcmZvcm1h
bmNlCi0gKiBieSB1c2luZyBhIGxhcmdlICg0TUIpIHBhZ2UgZm9yIG11Y2ggb2YgdGhlIGtl
cm5lbAotICogKC50ZXh0LCAuZGF0YSwgLmJzcykKLSAqLwotc3RhdGljIHZtX29mZnNldF90
Ci1wbWFwX2ttZW1fY2hvb3NlKHZtX29mZnNldF90IGFkZHIpCi17Ci0Jdm1fb2Zmc2V0X3Qg
bmV3YWRkciA9IGFkZHI7Ci0KLSNpZm5kZWYgRElTQUJMRV9QU0UKLQlpZiAoY3B1X2ZlYXR1
cmUgJiBDUFVJRF9QU0UpCi0JCW5ld2FkZHIgPSAoYWRkciArIFBEUk1BU0spICYgflBEUk1B
U0s7Ci0jZW5kaWYKLQlyZXR1cm4gbmV3YWRkcjsKLX0KLQotLyoKICAqCUJvb3RzdHJhcCB0
aGUgc3lzdGVtIGVub3VnaCB0byBydW4gd2l0aCB2aXJ0dWFsIG1lbW9yeS4KICAqCiAgKglP
biB0aGUgaTM4NiB0aGlzIGlzIGNhbGxlZCBhZnRlciBtYXBwaW5nIGhhcyBhbHJlYWR5IGJl
ZW4gZW5hYmxlZApAQCAtMzk1LDE1ICszNjYsMTMgQEAgcG1hcF9ib290c3RyYXAodm1fcGFk
ZHJfdCBmaXJzdGFkZHIpCiAJaW50IGk7CiAKIAkvKgotCSAqIFhYWCBUaGUgY2FsY3VsYXRp
b24gb2YgdmlydHVhbF9hdmFpbCBpcyB3cm9uZy4gSXQncyBOS1BUKlBBR0VfU0laRSB0b28K
LQkgKiBsYXJnZS4gSXQgc2hvdWxkIGluc3RlYWQgYmUgY29ycmVjdGx5IGNhbGN1bGF0ZWQg
aW4gbG9jb3JlLnMgYW5kCi0JICogbm90IGJhc2VkIG9uICdmaXJzdCcgKHdoaWNoIGlzIGEg
cGh5c2ljYWwgYWRkcmVzcywgbm90IGEgdmlydHVhbAotCSAqIGFkZHJlc3MsIGZvciB0aGUg
c3RhcnQgb2YgdW51c2VkIHBoeXNpY2FsIG1lbW9yeSkuIFRoZSBrZXJuZWwKLQkgKiBwYWdl
IHRhYmxlcyBhcmUgTk9UIGRvdWJsZSBtYXBwZWQgYW5kIHRodXMgc2hvdWxkIG5vdCBiZSBp
bmNsdWRlZAotCSAqIGluIHRoaXMgY2FsY3VsYXRpb24uCisJICogSW5pdGlhbGl6ZSB0aGUg
Zmlyc3QgYXZhaWxhYmxlIGtlcm5lbCB2aXJ0dWFsIGFkZHJlc3MuICBIb3dldmVyLAorCSAq
IHVzaW5nICJmaXJzdGFkZHIiIG1heSB3YXN0ZSBhIGZldyBwYWdlcyBvZiB0aGUga2VybmVs
IHZpcnR1YWwKKwkgKiBhZGRyZXNzIHNwYWNlLCBiZWNhdXNlIGxvY29yZSBtYXkgbm90IGhh
dmUgbWFwcGVkIGV2ZXJ5IHBoeXNpY2FsCisJICogcGFnZSB0aGF0IGl0IGFsbG9jYXRlZC4g
IFByZWZlcmFibHksIGxvY29yZSB3b3VsZCBwcm92aWRlIGEgZmlyc3QKKwkgKiB1bnVzZWQg
dmlydHVhbCBhZGRyZXNzIGluIGFkZGl0aW9uIHRvICJmaXJzdGFkZHIiLgogCSAqLwogCXZp
cnR1YWxfYXZhaWwgPSAodm1fb2Zmc2V0X3QpIEtFUk5CQVNFICsgZmlyc3RhZGRyOwotCXZp
cnR1YWxfYXZhaWwgPSBwbWFwX2ttZW1fY2hvb3NlKHZpcnR1YWxfYXZhaWwpOwogCiAJdmly
dHVhbF9lbmQgPSBWTV9NQVhfS0VSTkVMX0FERFJFU1M7CiAKQEAgLTQ2OCw4ICs0MzcsOCBA
QCBwbWFwX2Jvb3RzdHJhcCh2bV9wYWRkcl90IGZpcnN0YWRkcikKIAkvKgogCSAqIHB0ZW1h
cCBpcyB1c2VkIGZvciBwbWFwX3B0ZV9xdWljawogCSAqLwotCVNZU01BUChwdF9lbnRyeV90
ICosIFBNQVAxLCBQQUREUjEsIDEpOwotCVNZU01BUChwdF9lbnRyeV90ICosIFBNQVAyLCBQ
QUREUjIsIDEpOworCVNZU01BUChwdF9lbnRyeV90ICosIFBNQVAxLCBQQUREUjEsIDEpCisJ
U1lTTUFQKHB0X2VudHJ5X3QgKiwgUE1BUDIsIFBBRERSMiwgMSkKIAogCW10eF9pbml0KCZQ
TUFQMm11dGV4LCAiUE1BUDIiLCBOVUxMLCBNVFhfREVGKTsKIApAQCAtNjUwLDYgKzYxOSwx
OCBAQCBwbWFwX2luaXQodm9pZCkKIH0KIAogCitTWVNDVExfSU5UKF92bV9wbWFwLCBPSURf
QVVUTywgcHZfZW50cnlfbWF4LCBDVExGTEFHX1JELCAmcHZfZW50cnlfbWF4LCAwLAorCSJN
YXggbnVtYmVyIG9mIFBWIGVudHJpZXMiKTsKK1NZU0NUTF9JTlQoX3ZtX3BtYXAsIE9JRF9B
VVRPLCBzaHBncGVycHJvYywgQ1RMRkxBR19SRCwgJnNocGdwZXJwcm9jLCAwLAorCSJQYWdl
IHNoYXJlIGZhY3RvciBwZXIgcHJvYyIpOworCitzdGF0aWMgU1lTQ1RMX05PREUoX3ZtX3Bt
YXAsIE9JRF9BVVRPLCBwZGUsIENUTEZMQUdfUkQsIDAsCisgICAgIjIvNE1CIHBhZ2UgbWFw
cGluZyBjb3VudGVycyIpOworCitzdGF0aWMgdV9sb25nIHBtYXBfcGRlX21hcHBpbmdzOwor
U1lTQ1RMX1VMT05HKF92bV9wbWFwX3BkZSwgT0lEX0FVVE8sIG1hcHBpbmdzLCBDVExGTEFH
X1JELAorICAgICZwbWFwX3BkZV9tYXBwaW5ncywgMCwgIjIvNE1CIHBhZ2UgbWFwcGluZ3Mi
KTsKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgogICogTG93IGxldmVsIGhlbHBlciByb3V0aW5lcy4uLi4uCiAgKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtODk2LDYgKzg3
Nyw4IEBAIHBtYXBfaW52YWxpZGF0ZV9jYWNoZSh2b2lkKQogfQogI2VuZGlmIC8qICFTTVAg
Ki8KIAorI2RlZmluZQlQTUFQX0NMRkxVU0hfVEhSRVNIT0xECSgyICogMTAyNCAqIDEwMjQp
CisKIHZvaWQKIHBtYXBfaW52YWxpZGF0ZV9jYWNoZV9yYW5nZSh2bV9vZmZzZXRfdCBzdmEs
IHZtX29mZnNldF90IGV2YSkKIHsKQEAgLTkwNyw3ICs4OTAsOCBAQCBwbWFwX2ludmFsaWRh
dGVfY2FjaGVfcmFuZ2Uodm1fb2Zmc2V0X3Qgc3ZhLCB2bV9vZgogCiAJaWYgKGNwdV9mZWF0
dXJlICYgQ1BVSURfU1MpCiAJCTsgLyogSWYgIlNlbGYgU25vb3AiIGlzIHN1cHBvcnRlZCwg
ZG8gbm90aGluZy4gKi8KLQllbHNlIGlmIChjcHVfZmVhdHVyZSAmIENQVUlEX0NMRlNIKSB7
CisJZWxzZSBpZiAoKGNwdV9mZWF0dXJlICYgQ1BVSURfQ0xGU0gpICE9IDAgJiYKKwkgICAg
ZXZhIC0gc3ZhIDwgUE1BUF9DTEZMVVNIX1RIUkVTSE9MRCkgewogCiAJCS8qCiAJCSAqIE90
aGVyd2lzZSwgZG8gcGVyLWNhY2hlIGxpbmUgZmx1c2guICBVc2UgdGhlIG1mZW5jZQpAQCAt
OTI0LDEyICs5MDgsMjcgQEAgcG1hcF9pbnZhbGlkYXRlX2NhY2hlX3JhbmdlKHZtX29mZnNl
dF90IHN2YSwgdm1fb2YKIAogCQkvKgogCQkgKiBObyB0YXJnZXRlZCBjYWNoZSBmbHVzaCBt
ZXRob2RzIGFyZSBzdXBwb3J0ZWQgYnkgQ1BVLAotCQkgKiBnbG9iYWxseSBpbnZhbGlkYXRl
IGNhY2hlIGFzIGEgbGFzdCByZXNvcnQuCisJCSAqIG9yIHRoZSBzdXBwbGllZCByYW5nZSBp
cyBiaWdnZXIgdGhhbiAyTUIuCisJCSAqIEdsb2JhbGx5IGludmFsaWRhdGUgY2FjaGUuCiAJ
CSAqLwogCQlwbWFwX2ludmFsaWRhdGVfY2FjaGUoKTsKIAl9CiB9CiAKK3ZvaWQKK3BtYXBf
aW52YWxpZGF0ZV9jYWNoZV9wYWdlcyh2bV9wYWdlX3QgKnBhZ2VzLCBpbnQgY291bnQpCit7
CisJaW50IGk7CisKKwlpZiAoY291bnQgPj0gUE1BUF9DTEZMVVNIX1RIUkVTSE9MRCAvIFBB
R0VfU0laRSB8fAorCSAgICAoY3B1X2ZlYXR1cmUgJiBDUFVJRF9DTEZTSCkgPT0gMCkgewor
CQlwbWFwX2ludmFsaWRhdGVfY2FjaGUoKTsKKwl9IGVsc2UgeworCQlmb3IgKGkgPSAwOyBp
IDwgY291bnQ7IGkrKykKKwkJCXBtYXBfZmx1c2hfcGFnZShwYWdlc1tpXSk7CisJfQorfQor
CiAvKgogICogQXJlIHdlIGN1cnJlbnQgYWRkcmVzcyBzcGFjZSBvciBrZXJuZWw/ICBOLkIu
IFdlIHJldHVybiBGQUxTRSB3aGVuCiAgKiBhIHBtYXAncyBwYWdlIHRhYmxlIGlzIGluIHVz
ZSBiZWNhdXNlIGEga2VybmVsIHRocmVhZCBpcyBib3Jyb3dpbmcKQEAgLTk0Miw3ICs5NDEs
NyBAQCBwbWFwX2lzX2N1cnJlbnQocG1hcF90IHBtYXApCiAKIAlyZXR1cm4gKHBtYXAgPT0g
a2VybmVsX3BtYXAgfHwKIAkgICAgKHBtYXAgPT0gdm1zcGFjZV9wbWFwKGN1cnRocmVhZC0+
dGRfcHJvYy0+cF92bXNwYWNlKSAmJgotCQkocG1hcC0+cG1fcGRpcltQVERQVERJXSAmIFBH
X0ZSQU1FKSA9PSAoUFREcGRlWzBdICYgUEdfRlJBTUUpKSk7CisJICAgIChwbWFwLT5wbV9w
ZGlyW1BURFBUREldICYgUEdfRlJBTUUpID09IChQVERwZGVbMF0gJiBQR19GUkFNRSkpKTsK
IH0KIAogLyoKQEAgLTk3MSwxMCArOTcwLDkgQEAgcG1hcF9wdGUocG1hcF90IHBtYXAsIHZt
X29mZnNldF90IHZhKQogCQkJQ1RSMyhLVFJfUE1BUCwgInBtYXBfcHRlOiBwbWFwPSVwIHZh
PTB4JXggbmV3cHRlPTB4JTA4eCIsCiAJCQkgICAgcG1hcCwgdmEsICgqUE1BUDIgJiAweGZm
ZmZmZmZmKSk7CiAJCX0KLQkJCiAJCXJldHVybiAoUEFERFIyICsgKGkzODZfYnRvcCh2YSkg
JiAoTlBURVBHIC0gMSkpKTsKIAl9Ci0JcmV0dXJuICgwKTsKKwlyZXR1cm4gKE5VTEwpOwog
fQogCiAvKgpAQCAtMTA2NSw3ICsxMDYzLDcgQEAgcG1hcF9leHRyYWN0KHBtYXBfdCBwbWFw
LCB2bV9vZmZzZXRfdCB2YSkKIAlwdF9lbnRyeV90ICpwdGU7CiAJcGRfZW50cnlfdCBwZGU7
CiAJcHRfZW50cnlfdCBwdGV2YWw7Ci0JCisKIAlydHZhbCA9IDA7CiAJUE1BUF9MT0NLKHBt
YXApOwogCXBkZSA9IHBtYXAtPnBtX3BkaXJbdmEgPj4gUERSU0hJRlRdOwpAQCAtMTE3MCwx
MCArMTE2OCwxMyBAQCByZXRyeToKIC8qCiAgKiBBZGQgYSB3aXJlZCBwYWdlIHRvIHRoZSBr
dmEuCiAgKiBOb3RlOiBub3QgU01QIGNvaGVyZW50LgorICoKKyAqIFRoaXMgZnVuY3Rpb24g
bWF5IGJlIHVzZWQgYmVmb3JlIHBtYXBfYm9vdHN0cmFwKCkgaXMgY2FsbGVkLgogICovCiB2
b2lkIAogcG1hcF9rZW50ZXIodm1fb2Zmc2V0X3QgdmEsIHZtX3BhZGRyX3QgcGEpCiB7CisK
IAlQVF9TRVRfTUEodmEsIHhwbWFwX3B0b20ocGEpfCBQR19SVyB8IFBHX1YgfCBwZ2VmbGFn
KTsKIH0KIApAQCAtMTE4NiwxNiArMTE4NywxOCBAQCBwbWFwX2tlbnRlcl9tYSh2bV9vZmZz
ZXRfdCB2YSwgdm1fcGFkZHJfdCBtYSkKIAlwdGVfc3RvcmVfbWEocHRlLCBtYSB8IFBHX1JX
IHwgUEdfViB8IHBnZWZsYWcpOwogfQogCi0KLXN0YXRpYyBfX2lubGluZSB2b2lkIAorc3Rh
dGljIF9faW5saW5lIHZvaWQKIHBtYXBfa2VudGVyX2F0dHIodm1fb2Zmc2V0X3QgdmEsIHZt
X3BhZGRyX3QgcGEsIGludCBtb2RlKQogeworCiAJUFRfU0VUX01BKHZhLCBwYSB8IFBHX1JX
IHwgUEdfViB8IHBnZWZsYWcgfCBwbWFwX2NhY2hlX2JpdHMobW9kZSwgMCkpOwogfQogCiAv
KgogICogUmVtb3ZlIGEgcGFnZSBmcm9tIHRoZSBrZXJuZWwgcGFnZXRhYmxlcy4KICAqIE5v
dGU6IG5vdCBTTVAgY29oZXJlbnQuCisgKgorICogVGhpcyBmdW5jdGlvbiBtYXkgYmUgdXNl
ZCBiZWZvcmUgcG1hcF9ib290c3RyYXAoKSBpcyBjYWxsZWQuCiAgKi8KIFBNQVBfSU5MSU5F
IHZvaWQKIHBtYXBfa3JlbW92ZSh2bV9vZmZzZXRfdCB2YSkKQEAgLTEyOTIsNyArMTI5NSw2
IEBAIHBtYXBfcWVudGVyKHZtX29mZnNldF90IHN2YSwgdm1fcGFnZV90ICptYSwgaW50IGNv
CiAjZW5kaWYJCiB9CiAKLQogLyoKICAqIFRoaXMgcm91dGluZSB0ZWFycyBvdXQgcGFnZSBt
YXBwaW5ncyBmcm9tIHRoZQogICoga2VybmVsIC0tIGl0IGlzIG1lYW50IG9ubHkgZm9yIHRl
bXBvcmFyeSBtYXBwaW5ncy4KQEAgLTEzNDIsOSArMTM0NCw5IEBAIHBtYXBfdW53aXJlX3B0
ZV9ob2xkKHBtYXBfdCBwbWFwLCB2bV9wYWdlX3QgbSwgdm1fCiAKIAktLW0tPndpcmVfY291
bnQ7CiAJaWYgKG0tPndpcmVfY291bnQgPT0gMCkKLQkJcmV0dXJuIF9wbWFwX3Vud2lyZV9w
dGVfaG9sZChwbWFwLCBtLCBmcmVlKTsKKwkJcmV0dXJuIChfcG1hcF91bndpcmVfcHRlX2hv
bGQocG1hcCwgbSwgZnJlZSkpOwogCWVsc2UKLQkJcmV0dXJuIDA7CisJCXJldHVybiAoMCk7
CiB9CiAKIHN0YXRpYyBpbnQgCkBAIC0xMzg1LDcgKzEzODcsNyBAQCBfcG1hcF91bndpcmVf
cHRlX2hvbGQocG1hcF90IHBtYXAsIHZtX3BhZ2VfdCBtLCB2bQogCW0tPnJpZ2h0ID0gKmZy
ZWU7CiAJKmZyZWUgPSBtOwogCi0JcmV0dXJuIDE7CisJcmV0dXJuICgxKTsKIH0KIAogLyoK
QEAgLTEzOTksMTcgKzE0MDEsMjUgQEAgcG1hcF91bnVzZV9wdChwbWFwX3QgcG1hcCwgdm1f
b2Zmc2V0X3QgdmEsIHZtX3BhZ2UKIAl2bV9wYWdlX3QgbXB0ZTsKIAogCWlmICh2YSA+PSBW
TV9NQVhVU0VSX0FERFJFU1MpCi0JCXJldHVybiAwOworCQlyZXR1cm4gKDApOwogCXB0ZXBk
ZSA9IFBUX0dFVChwbWFwX3BkZShwbWFwLCB2YSkpOwogCW1wdGUgPSBQSFlTX1RPX1ZNX1BB
R0UocHRlcGRlICYgUEdfRlJBTUUpOwotCXJldHVybiBwbWFwX3Vud2lyZV9wdGVfaG9sZChw
bWFwLCBtcHRlLCBmcmVlKTsKKwlyZXR1cm4gKHBtYXBfdW53aXJlX3B0ZV9ob2xkKHBtYXAs
IG1wdGUsIGZyZWUpKTsKIH0KIAorLyoKKyAqIEluaXRpYWxpemUgdGhlIHBtYXAgZm9yIHRo
ZSBzd2FwcGVyIHByb2Nlc3MuCisgKi8KIHZvaWQKIHBtYXBfcGluaXQwKHBtYXBfdCBwbWFw
KQogewogCiAJUE1BUF9MT0NLX0lOSVQocG1hcCk7CisJLyoKKwkgKiBTaW5jZSB0aGUgcGFn
ZSB0YWJsZSBkaXJlY3RvcnkgaXMgc2hhcmVkIHdpdGggdGhlIGtlcm5lbCBwbWFwLAorCSAq
IHdoaWNoIGlzIGFscmVhZHkgaW5jbHVkZWQgaW4gdGhlIGxpc3QgImFsbHBtYXBzIiwgdGhp
cyBwbWFwIGRvZXMKKwkgKiBub3QgbmVlZCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoYXQgbGlz
dC4KKwkgKi8KIAlwbWFwLT5wbV9wZGlyID0gKHBkX2VudHJ5X3QgKikoS0VSTkJBU0UgKyAo
dm1fb2Zmc2V0X3QpSWRsZVBURCk7CiAjaWZkZWYgUEFFCiAJcG1hcC0+cG1fcGRwdCA9IChw
ZHB0X2VudHJ5X3QgKikoS0VSTkJBU0UgKyAodm1fb2Zmc2V0X3QpSWRsZVBEUFQpOwpAQCAt
MTQxOCw5ICsxNDI4LDYgQEAgcG1hcF9waW5pdDAocG1hcF90IHBtYXApCiAJUENQVV9TRVQo
Y3VycG1hcCwgcG1hcCk7CiAJVEFJTFFfSU5JVCgmcG1hcC0+cG1fcHZjaHVuayk7CiAJYnpl
cm8oJnBtYXAtPnBtX3N0YXRzLCBzaXplb2YgcG1hcC0+cG1fc3RhdHMpOwotCW10eF9sb2Nr
X3NwaW4oJmFsbHBtYXBzX2xvY2spOwotCUxJU1RfSU5TRVJUX0hFQUQoJmFsbHBtYXBzLCBw
bWFwLCBwbV9saXN0KTsKLQltdHhfdW5sb2NrX3NwaW4oJmFsbHBtYXBzX2xvY2spOwogfQog
CiAvKgpAQCAtMTQ3MSwxOCArMTQ3OCwxOSBAQCBwbWFwX3Bpbml0KHBtYXBfdCBwbWFwKQog
CQkJcHRkcGdbaSsrXSA9IG07CiAJCX0KIAl9CisKIAlwbWFwX3FlbnRlcigodm1fb2Zmc2V0
X3QpcG1hcC0+cG1fcGRpciwgcHRkcGcsIE5QR1BURCk7Ci0JZm9yIChpID0gMDsgaSA8IE5Q
R1BURDsgaSsrKSB7CisKKwlmb3IgKGkgPSAwOyBpIDwgTlBHUFREOyBpKyspCiAJCWlmICgo
cHRkcGdbaV0tPmZsYWdzICYgUEdfWkVSTykgPT0gMCkKLQkJCXBhZ2V6ZXJvKCZwbWFwLT5w
bV9wZGlyW2kqTlBURVBHXSk7Ci0JfQorCQkJcGFnZXplcm8ocG1hcC0+cG1fcGRpciArIChp
ICogTlBERVBHKSk7CiAKIAltdHhfbG9ja19zcGluKCZhbGxwbWFwc19sb2NrKTsKIAlMSVNU
X0lOU0VSVF9IRUFEKCZhbGxwbWFwcywgcG1hcCwgcG1fbGlzdCk7CisJLyogQ29weSB0aGUg
a2VybmVsIHBhZ2UgdGFibGUgZGlyZWN0b3J5IGVudHJpZXMuICovCisJYmNvcHkoUFREICsg
S1BUREksIHBtYXAtPnBtX3BkaXIgKyBLUFRESSwgbmtwdCAqIHNpemVvZihwZF9lbnRyeV90
KSk7CiAJbXR4X3VubG9ja19zcGluKCZhbGxwbWFwc19sb2NrKTsKLQkvKiBXaXJlIGluIGtl
cm5lbCBnbG9iYWwgYWRkcmVzcyBlbnRyaWVzLiAqLwogCi0JYmNvcHkoUFREICsgS1BUREks
IHBtYXAtPnBtX3BkaXIgKyBLUFRESSwgbmtwdCAqIHNpemVvZihwZF9lbnRyeV90KSk7CiAj
aWZkZWYgUEFFCiAJcG1hcF9xZW50ZXIoKHZtX29mZnNldF90KXBtYXAtPnBtX3BkcHQsICZw
dGRwZ1tOUEdQVERdLCAxKTsKIAlpZiAoKHB0ZHBnW05QR1BURF0tPmZsYWdzICYgUEdfWkVS
TykgPT0gMCkKQEAgLTE1MzQsNyArMTU0Miw3IEBAIHBtYXBfcGluaXQocG1hcF90IHBtYXAp
CiAgKiBtYXBwZWQgY29ycmVjdGx5LgogICovCiBzdGF0aWMgdm1fcGFnZV90Ci1fcG1hcF9h
bGxvY3B0ZShwbWFwX3QgcG1hcCwgdW5zaWduZWQgaW50IHB0ZXBpbmRleCwgaW50IGZsYWdz
KQorX3BtYXBfYWxsb2NwdGUocG1hcF90IHBtYXAsIHVfaW50IHB0ZXBpbmRleCwgaW50IGZs
YWdzKQogewogCXZtX3BhZGRyX3QgcHRlbWE7CiAJdm1fcGFnZV90IG07CkBAIC0xNTY5LDYg
KzE1NzcsNyBAQCBzdGF0aWMgdm1fcGFnZV90CiAJICogTWFwIHRoZSBwYWdldGFibGUgcGFn
ZSBpbnRvIHRoZSBwcm9jZXNzIGFkZHJlc3Mgc3BhY2UsIGlmCiAJICogaXQgaXNuJ3QgYWxy
ZWFkeSB0aGVyZS4KIAkgKi8KKwogCXBtYXAtPnBtX3N0YXRzLnJlc2lkZW50X2NvdW50Kys7
CiAKIAlwdGVtYSA9IFZNX1BBR0VfVE9fTUFDSChtKTsKQEAgLTE1ODQsNyArMTU5Myw3IEBA
IHN0YXRpYyB2bV9wYWdlX3QKIHN0YXRpYyB2bV9wYWdlX3QKIHBtYXBfYWxsb2NwdGUocG1h
cF90IHBtYXAsIHZtX29mZnNldF90IHZhLCBpbnQgZmxhZ3MpCiB7Ci0JdW5zaWduZWQgcHRl
cGluZGV4OworCXVfaW50IHB0ZXBpbmRleDsKIAlwZF9lbnRyeV90IHB0ZW1hOwogCXZtX3Bh
Z2VfdCBtOwogCkBAIC0xNzYyLDYgKzE3NzEsNyBAQCBwbWFwX3JlbGVhc2UocG1hcF90IHBt
YXApCiAjZWxzZQogCWludCBucGdwdGQgPSBOUEdQVEQ7CiAjZW5kaWYKKwogCUtBU1NFUlQo
cG1hcC0+cG1fc3RhdHMucmVzaWRlbnRfY291bnQgPT0gMCwKIAkgICAgKCJwbWFwX3JlbGVh
c2U6IHBtYXAgcmVzaWRlbnQgY291bnQgJWxkICE9IDAiLAogCSAgICBwbWFwLT5wbV9zdGF0
cy5yZXNpZGVudF9jb3VudCkpOwpAQCAtMTgxNyw3ICsxODI3LDcgQEAga3ZtX3NpemUoU1lT
Q1RMX0hBTkRMRVJfQVJHUykKIHsKIAl1bnNpZ25lZCBsb25nIGtzaXplID0gVk1fTUFYX0tF
Uk5FTF9BRERSRVNTIC0gS0VSTkJBU0U7CiAKLQlyZXR1cm4gc3lzY3RsX2hhbmRsZV9sb25n
KG9pZHAsICZrc2l6ZSwgMCwgcmVxKTsKKwlyZXR1cm4gKHN5c2N0bF9oYW5kbGVfbG9uZyhv
aWRwLCAma3NpemUsIDAsIHJlcSkpOwogfQogU1lTQ1RMX1BST0MoX3ZtLCBPSURfQVVUTywg
a3ZtX3NpemUsIENUTFRZUEVfTE9OR3xDVExGTEFHX1JELCAKICAgICAwLCAwLCBrdm1fc2l6
ZSwgIklVIiwgIlNpemUgb2YgS1ZNIik7CkBAIC0xODI3LDcgKzE4MzcsNyBAQCBrdm1fZnJl
ZShTWVNDVExfSEFORExFUl9BUkdTKQogewogCXVuc2lnbmVkIGxvbmcga2ZyZWUgPSBWTV9N
QVhfS0VSTkVMX0FERFJFU1MgLSBrZXJuZWxfdm1fZW5kOwogCi0JcmV0dXJuIHN5c2N0bF9o
YW5kbGVfbG9uZyhvaWRwLCAma2ZyZWUsIDAsIHJlcSk7CisJcmV0dXJuIChzeXNjdGxfaGFu
ZGxlX2xvbmcob2lkcCwgJmtmcmVlLCAwLCByZXEpKTsKIH0KIFNZU0NUTF9QUk9DKF92bSwg
T0lEX0FVVE8sIGt2bV9mcmVlLCBDVExUWVBFX0xPTkd8Q1RMRkxBR19SRCwgCiAgICAgMCwg
MCwga3ZtX2ZyZWUsICJJVSIsICJBbW91bnQgb2YgS1ZNIGZyZWUiKTsKQEAgLTE4NTYsMTIg
KzE4NjYsMTIgQEAgcG1hcF9ncm93a2VybmVsKHZtX29mZnNldF90IGFkZHIpCiAJCQl9CiAJ
CX0KIAl9Ci0JYWRkciA9IHJvdW5kdXAyKGFkZHIsIFBBR0VfU0laRSAqIE5QVEVQRyk7CisJ
YWRkciA9IHJvdW5kdXAyKGFkZHIsIE5CUERSKTsKIAlpZiAoYWRkciAtIDEgPj0ga2VybmVs
X21hcC0+bWF4X29mZnNldCkKIAkJYWRkciA9IGtlcm5lbF9tYXAtPm1heF9vZmZzZXQ7CiAJ
d2hpbGUgKGtlcm5lbF92bV9lbmQgPCBhZGRyKSB7CiAJCWlmIChwZGlyX3BkZShQVEQsIGtl
cm5lbF92bV9lbmQpKSB7Ci0JCQlrZXJuZWxfdm1fZW5kID0gKGtlcm5lbF92bV9lbmQgKyBQ
QUdFX1NJWkUgKiBOUFRFUEcpICYgfihQQUdFX1NJWkUgKiBOUFRFUEcgLSAxKTsKKwkJCWtl
cm5lbF92bV9lbmQgPSAoa2VybmVsX3ZtX2VuZCArIE5CUERSKSAmIH5QRFJNQVNLOwogCQkJ
aWYgKGtlcm5lbF92bV9lbmQgLSAxID49IGtlcm5lbF9tYXAtPm1heF9vZmZzZXQpIHsKIAkJ
CQlrZXJuZWxfdm1fZW5kID0ga2VybmVsX21hcC0+bWF4X29mZnNldDsKIAkJCQlicmVhazsK
QEAgLTE4NjksMTcgKzE4NzksMTYgQEAgcG1hcF9ncm93a2VybmVsKHZtX29mZnNldF90IGFk
ZHIpCiAJCQljb250aW51ZTsKIAkJfQogCi0JCS8qCi0JCSAqIFRoaXMgaW5kZXggaXMgYm9n
dXMsIGJ1dCBvdXQgb2YgdGhlIHdheQotCQkgKi8KLQkJbmtwZyA9IHZtX3BhZ2VfYWxsb2Mo
TlVMTCwgbmtwdCwKLQkJICAgIFZNX0FMTE9DX05PT0JKIHwgVk1fQUxMT0NfU1lTVEVNIHwg
Vk1fQUxMT0NfV0lSRUQpOwotCQlpZiAoIW5rcGcpCisJCW5rcGcgPSB2bV9wYWdlX2FsbG9j
KE5VTEwsIGtlcm5lbF92bV9lbmQgPj4gUERSU0hJRlQsCisJCSAgICBWTV9BTExPQ19JTlRF
UlJVUFQgfCBWTV9BTExPQ19OT09CSiB8IFZNX0FMTE9DX1dJUkVEIHwKKwkJICAgIFZNX0FM
TE9DX1pFUk8pOworCQlpZiAobmtwZyA9PSBOVUxMKQogCQkJcGFuaWMoInBtYXBfZ3Jvd2tl
cm5lbDogbm8gbWVtb3J5IHRvIGdyb3cga2VybmVsIik7CiAKIAkJbmtwdCsrOwogCi0JCXBt
YXBfemVyb19wYWdlKG5rcGcpOworCQlpZiAoKG5rcGctPmZsYWdzICYgUEdfWkVSTykgPT0g
MCkKKwkJCXBtYXBfemVyb19wYWdlKG5rcGcpOwogCQlwdHBwYWRkciA9IFZNX1BBR0VfVE9f
UEhZUyhua3BnKTsKIAkJbmV3cGRpciA9IChwZF9lbnRyeV90KSAocHRwcGFkZHIgfCBQR19W
IHwgUEdfUlcgfCBQR19BIHwgUEdfTSk7CiAJCXZtX3BhZ2VfbG9ja19xdWV1ZXMoKTsKQEAg
LTE4OTEsNyArMTkwMCw3IEBAIHBtYXBfZ3Jvd2tlcm5lbCh2bV9vZmZzZXRfdCBhZGRyKQog
CQltdHhfdW5sb2NrX3NwaW4oJmFsbHBtYXBzX2xvY2spOwogCQl2bV9wYWdlX3VubG9ja19x
dWV1ZXMoKTsKIAotCQlrZXJuZWxfdm1fZW5kID0gKGtlcm5lbF92bV9lbmQgKyBQQUdFX1NJ
WkUgKiBOUFRFUEcpICYgfihQQUdFX1NJWkUgKiBOUFRFUEcgLSAxKTsKKwkJa2VybmVsX3Zt
X2VuZCA9IChrZXJuZWxfdm1fZW5kICsgTkJQRFIpICYgflBEUk1BU0s7CiAJCWlmIChrZXJu
ZWxfdm1fZW5kIC0gMSA+PSBrZXJuZWxfbWFwLT5tYXhfb2Zmc2V0KSB7CiAJCQlrZXJuZWxf
dm1fZW5kID0ga2VybmVsX21hcC0+bWF4X29mZnNldDsKIAkJCWJyZWFrOwpAQCAtMTkxMSw3
ICsxOTIwLDcgQEAgc3RhdGljIF9faW5saW5lIHN0cnVjdCBwdl9jaHVuayAqCiBwdl90b19j
aHVuayhwdl9lbnRyeV90IHB2KQogewogCi0JcmV0dXJuIChzdHJ1Y3QgcHZfY2h1bmsgKiko
KHVpbnRwdHJfdClwdiAmIH4odWludHB0cl90KVBBR0VfTUFTSyk7CisJcmV0dXJuICgoc3Ry
dWN0IHB2X2NodW5rICopKCh1aW50cHRyX3QpcHYgJiB+KHVpbnRwdHJfdClQQUdFX01BU0sp
KTsKIH0KIAogI2RlZmluZSBQVl9QTUFQKHB2KSAocHZfdG9fY2h1bmsocHYpLT5wY19wbWFw
KQpAQCAtMjAzMywxNSArMjA0MiwxNSBAQCBmcmVlX3B2X2VudHJ5KHBtYXBfdCBwbWFwLCBw
dl9lbnRyeV90IHB2KQogCXBjLT5wY19tYXBbZmllbGRdIHw9IDF1bCA8PCBiaXQ7CiAJLyog
bW92ZSB0byBoZWFkIG9mIGxpc3QgKi8KIAlUQUlMUV9SRU1PVkUoJnBtYXAtPnBtX3B2Y2h1
bmssIHBjLCBwY19saXN0KTsKLQlUQUlMUV9JTlNFUlRfSEVBRCgmcG1hcC0+cG1fcHZjaHVu
aywgcGMsIHBjX2xpc3QpOwogCWZvciAoaWR4ID0gMDsgaWR4IDwgX05QQ007IGlkeCsrKQot
CQlpZiAocGMtPnBjX21hcFtpZHhdICE9IHBjX2ZyZWVtYXNrW2lkeF0pCisJCWlmIChwYy0+
cGNfbWFwW2lkeF0gIT0gcGNfZnJlZW1hc2tbaWR4XSkgeworCQkJVEFJTFFfSU5TRVJUX0hF
QUQoJnBtYXAtPnBtX3B2Y2h1bmssIHBjLCBwY19saXN0KTsKIAkJCXJldHVybjsKKwkJfQog
CVBWX1NUQVQocHZfZW50cnlfc3BhcmUgLT0gX05QQ1BWKTsKIAlQVl9TVEFUKHBjX2NodW5r
X2NvdW50LS0pOwogCVBWX1NUQVQocGNfY2h1bmtfZnJlZXMrKyk7CiAJLyogZW50aXJlIGNo
dW5rIGlzIGZyZWUsIHJldHVybiBpdCAqLwotCVRBSUxRX1JFTU9WRSgmcG1hcC0+cG1fcHZj
aHVuaywgcGMsIHBjX2xpc3QpOwogCW0gPSBQSFlTX1RPX1ZNX1BBR0UocG1hcF9rZXh0cmFj
dCgodm1fb2Zmc2V0X3QpcGMpKTsKIAlwbWFwX3FyZW1vdmUoKHZtX29mZnNldF90KXBjLCAx
KTsKIAl2bV9wYWdlX3Vud2lyZShtLCAwKTsKQEAgLTIyNzAsMTAgKzIyNzksMTAgQEAgcG1h
cF9yZW1vdmUocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHN2YSwgdm1fb2Zmc2UKIAlwdF9l
bnRyeV90ICpwdGU7CiAJdm1fcGFnZV90IGZyZWUgPSBOVUxMOwogCWludCBhbnl2YWxpZDsK
LQkKKwogCUNUUjMoS1RSX1BNQVAsICJwbWFwX3JlbW92ZTogcG1hcD0lcCBzdmE9MHgleCBl
dmE9MHgleCIsCiAJICAgIHBtYXAsIHN2YSwgZXZhKTsKLQkKKwogCS8qCiAJICogUGVyZm9y
bSBhbiB1bnN5bmNocm9uaXplZCByZWFkLiAgVGhpcyBpcywgaG93ZXZlciwgc2FmZS4KIAkg
Ki8KQEAgLTIyOTgsNyArMjMwNyw3IEBAIHBtYXBfcmVtb3ZlKHBtYXBfdCBwbWFwLCB2bV9v
ZmZzZXRfdCBzdmEsIHZtX29mZnNlCiAJfQogCiAJZm9yICg7IHN2YSA8IGV2YTsgc3ZhID0g
cGRueHQpIHsKLQkJdW5zaWduZWQgcGRpcmluZGV4OworCQl1X2ludCBwZGlyaW5kZXg7CiAK
IAkJLyoKIAkJICogQ2FsY3VsYXRlIGluZGV4IGZvciBuZXh0IHBhZ2UgdGFibGUuCkBAIC0y
MzkzLDcgKzI0MDIsNiBAQCBwbWFwX3JlbW92ZV9hbGwodm1fcGFnZV90IG0pCiAJCVBNQVBf
TE9DSyhwbWFwKTsKIAkJcG1hcC0+cG1fc3RhdHMucmVzaWRlbnRfY291bnQtLTsKIAkJcHRl
ID0gcG1hcF9wdGVfcXVpY2socG1hcCwgcHYtPnB2X3ZhKTsKLQogCQl0cHRlID0gKnB0ZTsK
IAkJUFRfU0VUX1ZBX01BKHB0ZSwgMCwgVFJVRSk7CiAJCWlmICh0cHRlICYgUEdfVykKQEAg
LTI0NTcsNyArMjQ2NSw3IEBAIHBtYXBfcHJvdGVjdChwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0
X3Qgc3ZhLCB2bV9vZmZzCiAJUE1BUF9MT0NLKHBtYXApOwogCWZvciAoOyBzdmEgPCBldmE7
IHN2YSA9IHBkbnh0KSB7CiAJCXB0X2VudHJ5X3Qgb2JpdHMsIHBiaXRzOwotCQl1bnNpZ25l
ZCBwZGlyaW5kZXg7CisJCXVfaW50IHBkaXJpbmRleDsKIAogCQlwZG54dCA9IChzdmEgKyBO
QlBEUikgJiB+UERSTUFTSzsKIApAQCAtMjU2OSw3ICsyNTc3LDggQEAgcG1hcF9lbnRlcihw
bWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmEsIHZtX3Byb3RfdAogCUtBU1NFUlQodmEgPCBV
UFRfTUlOX0FERFJFU1MgfHwgdmEgPj0gVVBUX01BWF9BRERSRVNTLAogCSAgICAoInBtYXBf
ZW50ZXI6IGludmFsaWQgdG8gcG1hcF9lbnRlciBwYWdlIHRhYmxlIHBhZ2VzICh2YTogMHgl
eCkiLAogCSAgICB2YSkpOwotCUtBU1NFUlQoKG0tPm9mbGFncyAmIChWUE9fVU5NQU5BR0VE
IHwgVlBPX0JVU1kpKSAhPSAwLAorCUtBU1NFUlQoKG0tPm9mbGFncyAmIChWUE9fVU5NQU5B
R0VEIHwgVlBPX0JVU1kpKSAhPSAwIHx8CisJICAgIFZNX09CSkVDVF9MT0NLRUQobS0+b2Jq
ZWN0KSwKIAkgICAgKCJwbWFwX2VudGVyOiBwYWdlICVwIGlzIG5vdCBidXN5IiwgbSkpOwog
CiAJbXB0ZSA9IE5VTEw7CkBAIC0yNzcyLDEwICsyNzgxLDkgQEAgcG1hcF9lbnRlcl9vYmpl
Y3QocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHN0YXJ0LAogCW11bHRpY2FsbF9lbnRyeV90
IG1jbFsxNl07CiAJbXVsdGljYWxsX2VudHJ5X3QgKm1jbHAgPSBtY2w7CiAJaW50IGVycm9y
LCBjb3VudCA9IDA7Ci0JCisKIAlWTV9PQkpFQ1RfTE9DS19BU1NFUlQobV9zdGFydC0+b2Jq
ZWN0LCBNQV9PV05FRCk7CiAJcHNpemUgPSBhdG9wKGVuZCAtIHN0YXJ0KTsKLQkgICAgCiAJ
bXB0ZSA9IE5VTEw7CiAJbSA9IG1fc3RhcnQ7CiAJdm1fcGFnZV9sb2NrX3F1ZXVlcygpOwpA
QCAtMjgxNCw3ICsyODIyLDcgQEAgcG1hcF9lbnRlcl9xdWljayhwbWFwX3QgcG1hcCwgdm1f
b2Zmc2V0X3QgdmEsIHZtX3AKIAltdWx0aWNhbGxfZW50cnlfdCBtY2wsICptY2xwOwogCWlu
dCBjb3VudCA9IDA7CiAJbWNscCA9ICZtY2w7Ci0JCisKIAlDVFI0KEtUUl9QTUFQLCAicG1h
cF9lbnRlcl9xdWljazogcG1hcD0lcCB2YT0weCV4IG09JXAgcHJvdD0weCV4IiwKIAkgICAg
cG1hcCwgdmEsIG0sIHByb3QpOwogCQpAQCAtMjg2NSw3ICsyODczLDcgQEAgcG1hcF9lbnRl
cl9xdWlja19sb2NrZWQobXVsdGljYWxsX2VudHJ5X3QgKiptY2xwcCwKIAl2bV9wYWRkcl90
IHBhOwogCXZtX3BhZ2VfdCBmcmVlOwogCW11bHRpY2FsbF9lbnRyeV90ICptY2wgPSAqbWNs
cHA7Ci0JCisKIAlLQVNTRVJUKHZhIDwga21pLmNsZWFuX3N2YSB8fCB2YSA+PSBrbWkuY2xl
YW5fZXZhIHx8CiAJICAgIChtLT5vZmxhZ3MgJiBWUE9fVU5NQU5BR0VEKSAhPSAwLAogCSAg
ICAoInBtYXBfZW50ZXJfcXVpY2tfbG9ja2VkOiBtYW5hZ2VkIG1hcHBpbmcgd2l0aGluIHRo
ZSBjbGVhbiBzdWJtYXAiKSk7CkBAIC0yODc3LDcgKzI4ODUsNyBAQCBwbWFwX2VudGVyX3F1
aWNrX2xvY2tlZChtdWx0aWNhbGxfZW50cnlfdCAqKm1jbHBwLAogCSAqIHJlc2lkZW50LCB3
ZSBhcmUgY3JlYXRpbmcgaXQgaGVyZS4KIAkgKi8KIAlpZiAodmEgPCBWTV9NQVhVU0VSX0FE
RFJFU1MpIHsKLQkJdW5zaWduZWQgcHRlcGluZGV4OworCQl1X2ludCBwdGVwaW5kZXg7CiAJ
CXBkX2VudHJ5X3QgcHRlbWE7CiAKIAkJLyoKQEAgLTI5ODEsNyArMjk4OSw3IEBAIHBtYXBf
ZW50ZXJfcXVpY2tfbG9ja2VkKG11bHRpY2FsbF9lbnRyeV90ICoqbWNscHAsCiAJKm1jbHBw
ID0gbWNsICsgMTsKIAkqY291bnQgPSAqY291bnQgKyAxOwogI2VuZGlmCQotCXJldHVybiBt
cHRlOworCXJldHVybiAobXB0ZSk7CiB9CiAKIC8qCkBAIC0zMDA2LDkgKzMwMTQsOCBAQCBw
bWFwX2tlbnRlcl90ZW1wb3Jhcnkodm1fcGFkZHJfdCBwYSwgaW50IGkpCiAgKiBhcmUgdGFr
ZW4sIGJ1dCB0aGUgY29kZSB3b3Jrcy4KICAqLwogdm9pZAotcG1hcF9vYmplY3RfaW5pdF9w
dChwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3QgYWRkciwKLQkJICAgIHZtX29iamVjdF90IG9i
amVjdCwgdm1fcGluZGV4X3QgcGluZGV4LAotCQkgICAgdm1fc2l6ZV90IHNpemUpCitwbWFw
X29iamVjdF9pbml0X3B0KHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCBhZGRyLCB2bV9vYmpl
Y3RfdCBvYmplY3QsCisgICAgdm1fcGluZGV4X3QgcGluZGV4LCB2bV9zaXplX3Qgc2l6ZSkK
IHsKIAlwZF9lbnRyeV90ICpwZGU7CiAJdm1fcGFkZHJfdCBwYSwgcHRlcGE7CkBAIC0zMDI2
LDYgKzMwMzMsNyBAQCB2b2lkCiAJCUtBU1NFUlQocC0+dmFsaWQgPT0gVk1fUEFHRV9CSVRT
X0FMTCwKIAkJICAgICgicG1hcF9vYmplY3RfaW5pdF9wdDogaW52YWxpZCBwYWdlICVwIiwg
cCkpOwogCQlwYXRfbW9kZSA9IHAtPm1kLnBhdF9tb2RlOworCiAJCS8qCiAJCSAqIEFib3J0
IHRoZSBtYXBwaW5nIGlmIHRoZSBmaXJzdCBwYWdlIGlzIG5vdCBwaHlzaWNhbGx5CiAJCSAq
IGFsaWduZWQgdG8gYSAyLzRNQiBwYWdlIGJvdW5kYXJ5LgpAQCAtMzAzMyw2ICszMDQxLDcg
QEAgdm9pZAogCQlwdGVwYSA9IFZNX1BBR0VfVE9fUEhZUyhwKTsKIAkJaWYgKHB0ZXBhICYg
KE5CUERSIC0gMSkpCiAJCQlyZXR1cm47CisKIAkJLyoKIAkJICogU2tpcCB0aGUgZmlyc3Qg
cGFnZS4gIEFib3J0IHRoZSBtYXBwaW5nIGlmIHRoZSByZXN0IG9mCiAJCSAqIHRoZSBwYWdl
cyBhcmUgbm90IHBoeXNpY2FsbHkgY29udGlndW91cyBvciBoYXZlIGRpZmZlcmluZwpAQCAt
MzA0OCw3ICszMDU3LDEyIEBAIHZvaWQKIAkJCQlyZXR1cm47CiAJCQlwID0gVEFJTFFfTkVY
VChwLCBsaXN0cSk7CiAJCX0KLQkJLyogTWFwIHVzaW5nIDIvNE1CIHBhZ2VzLiAqLworCisJ
CS8qCisJCSAqIE1hcCB1c2luZyAyLzRNQiBwYWdlcy4gIFNpbmNlICJwdGVwYSIgaXMgMi80
TSBhbGlnbmVkIGFuZAorCQkgKiAic2l6ZSIgaXMgYSBtdWx0aXBsZSBvZiAyLzRNLCBhZGRp
bmcgdGhlIFBBVCBzZXR0aW5nIHRvCisJCSAqICJwYSIgd2lsbCBub3QgYWZmZWN0IHRoZSB0
ZXJtaW5hdGlvbiBvZiB0aGlzIGxvb3AuCisJCSAqLwogCQlQTUFQX0xPQ0socG1hcCk7CiAJ
CWZvciAocGEgPSBwdGVwYSB8IHBtYXBfY2FjaGVfYml0cyhwYXRfbW9kZSwgMSk7IHBhIDwg
cHRlcGEgKwogCQkgICAgc2l6ZTsgcGEgKz0gTkJQRFIpIHsKQEAgLTMxMTIsNyArMzEyNiw3
IEBAIHBtYXBfY2hhbmdlX3dpcmluZyhwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmEsIGJv
CiAKIHZvaWQKIHBtYXBfY29weShwbWFwX3QgZHN0X3BtYXAsIHBtYXBfdCBzcmNfcG1hcCwg
dm1fb2Zmc2V0X3QgZHN0X2FkZHIsIHZtX3NpemVfdCBsZW4sCi0JICB2bV9vZmZzZXRfdCBz
cmNfYWRkcikKKyAgICB2bV9vZmZzZXRfdCBzcmNfYWRkcikKIHsKIAl2bV9wYWdlX3QgICBm
cmVlOwogCXZtX29mZnNldF90IGFkZHI7CkBAIC0zMTQ5LDcgKzMxNjMsNyBAQCBwbWFwX2Nv
cHkocG1hcF90IGRzdF9wbWFwLCBwbWFwX3Qgc3JjX3BtYXAsIHZtX29mZgogCQlwdF9lbnRy
eV90ICpzcmNfcHRlLCAqZHN0X3B0ZTsKIAkJdm1fcGFnZV90IGRzdG1wdGUsIHNyY21wdGU7
CiAJCXBkX2VudHJ5X3Qgc3JjcHRlcGFkZHI7Ci0JCXVuc2lnbmVkIHB0ZXBpbmRleDsKKwkJ
dV9pbnQgcHRlcGluZGV4OwogCiAJCUtBU1NFUlQoYWRkciA8IFVQVF9NSU5fQUREUkVTUywK
IAkJICAgICgicG1hcF9jb3B5OiBpbnZhbGlkIHRvIHBtYXBfY29weSBwYWdlIHRhYmxlcyIp
KTsKQEAgLTMxODgsNyArMzIwMiw3IEBAIHBtYXBfY29weShwbWFwX3QgZHN0X3BtYXAsIHBt
YXBfdCBzcmNfcG1hcCwgdm1fb2ZmCiAJCQkJZHN0bXB0ZSA9IHBtYXBfYWxsb2NwdGUoZHN0
X3BtYXAsIGFkZHIsCiAJCQkJICAgIE1fTk9XQUlUKTsKIAkJCQlpZiAoZHN0bXB0ZSA9PSBO
VUxMKQotCQkJCQlicmVhazsKKwkJCQkJZ290byBvdXQ7CiAJCQkJZHN0X3B0ZSA9IHBtYXBf
cHRlX3F1aWNrKGRzdF9wbWFwLCBhZGRyKTsKIAkJCQlpZiAoKmRzdF9wdGUgPT0gMCAmJgog
CQkJCSAgICBwbWFwX3RyeV9pbnNlcnRfcHZfZW50cnkoZHN0X3BtYXAsIGFkZHIsCkBAIC0z
MjEyLDYgKzMyMjYsNyBAQCBwbWFwX2NvcHkocG1hcF90IGRzdF9wbWFwLCBwbWFwX3Qgc3Jj
X3BtYXAsIHZtX29mZgogCQkJCQkJICAgIGFkZHIpOwogCQkJCQkJcG1hcF9mcmVlX3plcm9f
cGFnZXMoZnJlZSk7CiAJCQkJCX0KKwkJCQkJZ290byBvdXQ7CiAJCQkJfQogCQkJCWlmIChk
c3RtcHRlLT53aXJlX2NvdW50ID49IHNyY21wdGUtPndpcmVfY291bnQpCiAJCQkJCWJyZWFr
OwpAQCAtMzIyMCw2ICszMjM1LDcgQEAgcG1hcF9jb3B5KHBtYXBfdCBkc3RfcG1hcCwgcG1h
cF90IHNyY19wbWFwLCB2bV9vZmYKIAkJCXNyY19wdGUrKzsKIAkJfQogCX0KK291dDoKIAlQ
VF9VUERBVEVTX0ZMVVNIKCk7CiAJc2NoZWRfdW5waW4oKTsKIAl2bV9wYWdlX3VubG9ja19x
dWV1ZXMoKTsKQEAgLTMyODIsNyArMzI5OCw3IEBAIHBtYXBfemVyb19wYWdlX2FyZWEodm1f
cGFnZV90IG0sIGludCBvZmYsIGludCBzaXplCiAJc3lzbWFwcyA9ICZzeXNtYXBzX3BjcHVb
UENQVV9HRVQoY3B1aWQpXTsKIAltdHhfbG9jaygmc3lzbWFwcy0+bG9jayk7CiAJaWYgKCpz
eXNtYXBzLT5DTUFQMikKLQkJcGFuaWMoInBtYXBfemVyb19wYWdlOiBDTUFQMiBidXN5Iik7
CisJCXBhbmljKCJwbWFwX3plcm9fcGFnZV9hcmVhOiBDTUFQMiBidXN5Iik7CiAJc2NoZWRf
cGluKCk7CiAJUFRfU0VUX01BKHN5c21hcHMtPkNBRERSMiwgUEdfViB8IFBHX1JXIHwgVk1f
UEFHRV9UT19NQUNIKG0pIHwgUEdfQSB8IFBHX00pOwogCkBAIC0zMzA2LDcgKzMzMjIsNyBA
QCBwbWFwX3plcm9fcGFnZV9pZGxlKHZtX3BhZ2VfdCBtKQogewogCiAJaWYgKCpDTUFQMykK
LQkJcGFuaWMoInBtYXBfemVyb19wYWdlOiBDTUFQMyBidXN5Iik7CisJCXBhbmljKCJwbWFw
X3plcm9fcGFnZV9pZGxlOiBDTUFQMyBidXN5Iik7CiAJc2NoZWRfcGluKCk7CiAJUFRfU0VU
X01BKENBRERSMywgUEdfViB8IFBHX1JXIHwgVk1fUEFHRV9UT19NQUNIKG0pIHwgUEdfQSB8
IFBHX00pOwogCXBhZ2V6ZXJvKENBRERSMyk7CkBAIC0zNzcwLDcgKzM3ODYsNiBAQCBwbWFw
X3RzX3JlZmVyZW5jZWQodm1fcGFnZV90IG0pCiAJUFRfVVBEQVRFU19GTFVTSCgpOwogCWlm
ICgqUE1BUDEpCiAJCVBUX1NFVF9NQShQQUREUjEsIDApOwotCiAJc2NoZWRfdW5waW4oKTsK
IAl2bV9wYWdlX3VubG9ja19xdWV1ZXMoKTsKIAlyZXR1cm4gKHJ0dmFsKTsKQEAgLTM4MDUs
NyArMzgyMCw3IEBAIHBtYXBfY2xlYXJfbW9kaWZ5KHZtX3BhZ2VfdCBtKQogCQlwbWFwID0g
UFZfUE1BUChwdik7CiAJCVBNQVBfTE9DSyhwbWFwKTsKIAkJcHRlID0gcG1hcF9wdGVfcXVp
Y2socG1hcCwgcHYtPnB2X3ZhKTsKLQkJaWYgKCgqcHRlICYgUEdfTSkgIT0gMCkgeworCQlp
ZiAoKCpwdGUgJiAoUEdfTSB8IFBHX1JXKSkgPT0gKFBHX00gfCBQR19SVykpIHsKIAkJCS8q
CiAJCQkgKiBSZWdhcmRsZXNzIG9mIHdoZXRoZXIgYSBwdGUgaXMgMzIgb3IgNjQgYml0cwog
CQkJICogaW4gc2l6ZSwgUEdfTSBpcyBhbW9uZyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQKQEAg
LTM5MjcsOCArMzk0Miw2IEBAIHBtYXBfdW5tYXBkZXYodm1fb2Zmc2V0X3QgdmEsIHZtX3Np
emVfdCBzaXplKQogdm9pZAogcG1hcF9wYWdlX3NldF9tZW1hdHRyKHZtX3BhZ2VfdCBtLCB2
bV9tZW1hdHRyX3QgbWEpCiB7Ci0Jc3RydWN0IHN5c21hcHMgKnN5c21hcHM7Ci0Jdm1fb2Zm
c2V0X3Qgc3ZhLCBldmE7CiAKIAltLT5tZC5wYXRfbW9kZSA9IG1hOwogCWlmICgobS0+Zmxh
Z3MgJiBQR19GSUNUSVRJT1VTKSAhPSAwKQpAQCAtMzk1MSwxMSArMzk2NCwyMSBAQCBwbWFw
X3BhZ2Vfc2V0X21lbWF0dHIodm1fcGFnZV90IG0sIHZtX21lbWF0dHJfdCBtYQogCSAqIGlu
dmFsaWRhdGlvbi4gSW4gdGhlIHdvcnN0IGNhc2UsIHdob2xlIGNhY2hlIGlzIGZsdXNoZWQg
YnkKIAkgKiBwbWFwX2ludmFsaWRhdGVfY2FjaGVfcmFuZ2UoKS4KIAkgKi8KLQlpZiAoKGNw
dV9mZWF0dXJlICYgKENQVUlEX1NTfENQVUlEX0NMRlNIKSkgPT0gQ1BVSURfQ0xGU0gpIHsK
KwlpZiAoKGNwdV9mZWF0dXJlICYgQ1BVSURfU1MpID09IDApCisJCXBtYXBfZmx1c2hfcGFn
ZShtKTsKK30KKworc3RhdGljIHZvaWQKK3BtYXBfZmx1c2hfcGFnZSh2bV9wYWdlX3QgbSkK
K3sKKwlzdHJ1Y3Qgc3lzbWFwcyAqc3lzbWFwczsKKwl2bV9vZmZzZXRfdCBzdmEsIGV2YTsK
KworCWlmICgoY3B1X2ZlYXR1cmUgJiBDUFVJRF9DTEZTSCkgIT0gMCkgewogCQlzeXNtYXBz
ID0gJnN5c21hcHNfcGNwdVtQQ1BVX0dFVChjcHVpZCldOwogCQltdHhfbG9jaygmc3lzbWFw
cy0+bG9jayk7CiAJCWlmICgqc3lzbWFwcy0+Q01BUDIpCi0JCQlwYW5pYygicG1hcF9wYWdl
X3NldF9tZW1hdHRyOiBDTUFQMiBidXN5Iik7CisJCQlwYW5pYygicG1hcF9mbHVzaF9wYWdl
OiBDTUFQMiBidXN5Iik7CiAJCXNjaGVkX3BpbigpOwogCQlQVF9TRVRfTUEoc3lzbWFwcy0+
Q0FERFIyLCBQR19WIHwgUEdfUlcgfAogCQkgICAgVk1fUEFHRV9UT19NQUNIKG0pIHwgUEdf
QSB8IFBHX00gfApAQCAtMzk2MywyMSArMzk4NiwzNSBAQCBwbWFwX3BhZ2Vfc2V0X21lbWF0
dHIodm1fcGFnZV90IG0sIHZtX21lbWF0dHJfdCBtYQogCQlpbnZsY2FkZHIoc3lzbWFwcy0+
Q0FERFIyKTsKIAkJc3ZhID0gKHZtX29mZnNldF90KXN5c21hcHMtPkNBRERSMjsKIAkJZXZh
ID0gc3ZhICsgUEFHRV9TSVpFOwotCX0gZWxzZQotCQlzdmEgPSBldmEgPSAwOyAvKiBnY2Mg
Ki8KLQlwbWFwX2ludmFsaWRhdGVfY2FjaGVfcmFuZ2Uoc3ZhLCBldmEpOwotCWlmIChzdmEg
IT0gMCkgeworCisJCS8qCisJCSAqIFVzZSBtZmVuY2UgZGVzcGl0ZSB0aGUgb3JkZXJpbmcg
aW1wbGllZCBieQorCQkgKiBtdHhfe3VuLH1sb2NrKCkgYmVjYXVzZSBjbGZsdXNoIGlzIG5v
dCBndWFyYW50ZWVkCisJCSAqIHRvIGJlIG9yZGVyZWQgYnkgYW55IG90aGVyIGluc3RydWN0
aW9uLgorCQkgKi8KKwkJbWZlbmNlKCk7CisJCWZvciAoOyBzdmEgPCBldmE7IHN2YSArPSBj
cHVfY2xmbHVzaF9saW5lX3NpemUpCisJCQljbGZsdXNoKHN2YSk7CisJCW1mZW5jZSgpOwog
CQlQVF9TRVRfTUEoc3lzbWFwcy0+Q0FERFIyLCAwKTsKIAkJc2NoZWRfdW5waW4oKTsKIAkJ
bXR4X3VubG9jaygmc3lzbWFwcy0+bG9jayk7Ci0JfQorCX0gZWxzZQorCQlwbWFwX2ludmFs
aWRhdGVfY2FjaGUoKTsKIH0KIAorLyoKKyAqIENoYW5nZXMgdGhlIHNwZWNpZmllZCB2aXJ0
dWFsIGFkZHJlc3MgcmFuZ2UncyBtZW1vcnkgdHlwZSB0byB0aGF0IGdpdmVuIGJ5CisgKiB0
aGUgcGFyYW1ldGVyICJtb2RlIi4gIFRoZSBzcGVjaWZpZWQgdmlydHVhbCBhZGRyZXNzIHJh
bmdlIG11c3QgYmUKKyAqIGNvbXBsZXRlbHkgY29udGFpbmVkIHdpdGhpbiBlaXRoZXIgdGhl
IGtlcm5lbCBtYXAuCisgKgorICogUmV0dXJucyB6ZXJvIGlmIHRoZSBjaGFuZ2UgY29tcGxl
dGVkIHN1Y2Nlc3NmdWxseSwgYW5kIGVpdGhlciBFSU5WQUwgb3IKKyAqIEVOT01FTSBpZiB0
aGUgY2hhbmdlIGZhaWxlZC4gIFNwZWNpZmljYWxseSwgRUlOVkFMIGlzIHJldHVybmVkIGlm
IHNvbWUgcGFydAorICogb2YgdGhlIHZpcnR1YWwgYWRkcmVzcyByYW5nZSB3YXMgbm90IG1h
cHBlZCwgYW5kIEVOT01FTSBpcyByZXR1cm5lZCBpZgorICogdGhlcmUgd2FzIGluc3VmZmlj
aWVudCBtZW1vcnkgYXZhaWxhYmxlIHRvIGNvbXBsZXRlIHRoZSBjaGFuZ2UuCisgKi8KIGlu
dAotcG1hcF9jaGFuZ2VfYXR0cih2YSwgc2l6ZSwgbW9kZSkKLQl2bV9vZmZzZXRfdCB2YTsK
LQl2bV9zaXplX3Qgc2l6ZTsKLQlpbnQgbW9kZTsKK3BtYXBfY2hhbmdlX2F0dHIodm1fb2Zm
c2V0X3QgdmEsIHZtX3NpemVfdCBzaXplLCBpbnQgbW9kZSkKIHsKIAl2bV9vZmZzZXRfdCBi
YXNlLCBvZmZzZXQsIHRtcHZhOwogCXB0X2VudHJ5X3QgKnB0ZTsKQEAgLTQwMzEsOCArNDA2
OCw4IEBAIGludAogCX0KIAogCS8qCi0JICogRmx1c2ggQ1BVIGNhY2hlcyB0byBtYWtlIHN1
cmUgYW55IGRhdGEgaXNuJ3QgY2FjaGVkIHRoYXQgc2hvdWxkbid0Ci0JICogYmUsIGV0Yy4K
KwkgKiBGbHVzaCBDUFUgY2FjaGVzIHRvIG1ha2Ugc3VyZSBhbnkgZGF0YSBpc24ndCBjYWNo
ZWQgdGhhdAorCSAqIHNob3VsZG4ndCBiZSwgZXRjLgogCSAqLwogCWlmIChjaGFuZ2VkKSB7
CiAJCXBtYXBfaW52YWxpZGF0ZV9yYW5nZShrZXJuZWxfcG1hcCwgYmFzZSwgdG1wdmEpOwpA
QCAtNDA1MCw3ICs0MDg3LDcgQEAgcG1hcF9taW5jb3JlKHBtYXBfdCBwbWFwLCB2bV9vZmZz
ZXRfdCBhZGRyLCB2bV9wYWQKIAlwdF9lbnRyeV90ICpwdGVwLCBwdGU7CiAJdm1fcGFkZHJf
dCBwYTsKIAlpbnQgdmFsOwotCQorCiAJUE1BUF9MT0NLKHBtYXApOwogcmV0cnk6CiAJcHRl
cCA9IHBtYXBfcHRlKHBtYXAsIGFkZHIpOwpAQCAtNDIzMyw3ICs0MjcwLDcgQEAgcG1hcF9w
aWRfZHVtcChpbnQgcGlkKQogCQkJCQkJCQlwcmludGYoIlxuIik7CiAJCQkJCQkJfQogCQkJ
CQkJCXN4X3N1bmxvY2soJmFsbHByb2NfbG9jayk7Ci0JCQkJCQkJcmV0dXJuIG5wdGU7CisJ
CQkJCQkJcmV0dXJuIChucHRlKTsKIAkJCQkJCX0KIAkJCQkJCXB0ZSA9IHBtYXBfcHRlKHBt
YXAsIHZhKTsKIAkJCQkJCWlmIChwdGUgJiYgcG1hcF9wdGVfdihwdGUpKSB7CkBAIC00MjU4
LDcgKzQyOTUsNyBAQCBwbWFwX3BpZF9kdW1wKGludCBwaWQpCiAJCX0KIAl9CiAJc3hfc3Vu
bG9jaygmYWxscHJvY19sb2NrKTsKLQlyZXR1cm4gbnB0ZTsKKwlyZXR1cm4gKG5wdGUpOwog
fQogI2VuZGlmCiAK
--------------060709010809090804020504--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4EFA0313.6030105>