Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Jan 2012 09:39:35 +0100
From:      Monthadar Al Jaberi <monthadar@gmail.com>
To:        Bernhard Schmidt <bschmidt@freebsd.org>
Cc:        freebsd-wireless@freebsd.org
Subject:   Re: 11s mesh path setup problem
Message-ID:  <CA%2BsBSo%2BuYa-6w8VFBMTyhWFHCNezMH5HBHJONCRvWRy6QuaCbQ@mail.gmail.com>
In-Reply-To: <201201112003.44891.bschmidt@freebsd.org>
References:  <CA%2BsBSoJWXD5S-zvxHR_=iwh26G0bd00trR=E-jCUBD03uMrU%2BQ@mail.gmail.com> <CAJ-VmomX2NK6p%2BckB6Gc40sz0PTx7cf7NznVLH1tTPvnhmHH6A@mail.gmail.com> <201201112003.44891.bschmidt@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--14dae934053783400c04b6a127c5
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

On Wed, Jan 11, 2012 at 8:03 PM, Bernhard Schmidt <bschmidt@freebsd.org> wr=
ote:
> On Wednesday 11 January 2012 18:23:29 Adrian Chadd wrote:
>> Hi!
>>
>> I've just done a bit of a code review. Here are my comments:

sorry for late answer here is a a better formated patch.

>>
>> * ether_sprintf() can't be implemented the way you've implemented it -
>> it just won't work at all in a multithreaded, concurrent environment.
>> We'll have to find an alternative way.
>>
>> Maybe something like:
>>
>> char *
>> ether_sprintf2(const u_char *ap, char *buf, int len)
>> {
>> =A0 =A0 .. do things to buf, rather than the static buf.
>> }
>>
>> Then maybe this'd work:
>>
>> char a[32], b[32];
>> IEEE80211_NOTE(..., ether_sprintf2(addr1, a, 32), ether_sprintf2(addr2, =
a, 32));
>>
>> does that make sense?
>
> Isn't there an example in net80211 with %D?
> printf("%6D %6D", addr1, ":", addr2, ":");
>
> The saner alternative is to call printf() multiple times, see ieee80211_d=
ump_pkt() as an example.

But that means we have to modify for example ieee80211_note_mac function?

>
> --
> Bernhard



--=20
Monthadar Al Jaberi

--14dae934053783400c04b6a127c5
Content-Type: text/x-patch; charset=US-ASCII; 
	name="patch_11s_4_nodes_in_line_goodformated.patch"
Content-Disposition: attachment; 
	filename="patch_11s_4_nodes_in_line_goodformated.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gxh8r69p0

ZGlmZiAtLWdpdCBhL3N5cy9uZXQvaWZfZXRoZXJzdWJyLmMgYi9zeXMvbmV0L2lmX2V0aGVyc3Vi
ci5jCmluZGV4IDllYWU2ODMuLjk3OWViZmQgMTAwNjQ0Ci0tLSBhL3N5cy9uZXQvaWZfZXRoZXJz
dWJyLmMKKysrIGIvc3lzL25ldC9pZl9ldGhlcnN1YnIuYwpAQCAtOTY4LDkgKzk2OCwxMyBAQCBk
aXNjYXJkOgogY2hhciAqCiBldGhlcl9zcHJpbnRmKGNvbnN0IHVfY2hhciAqYXApCiB7Ci0Jc3Rh
dGljIGNoYXIgZXRoZXJidWZbMThdOwotCXNucHJpbnRmKGV0aGVyYnVmLCBzaXplb2YgKGV0aGVy
YnVmKSwgIiU2RCIsIGFwLCAiOiIpOwotCXJldHVybiAoZXRoZXJidWYpOworCXN0YXRpYyBjaGFy
IGV0aGVyYnVmWzJdWzE4XTsKKwlzdGF0aWMgaW50IGkgPSAwOworCWNoYXIgKmJ1ZjsKKwlzbnBy
aW50ZihldGhlcmJ1ZltpXSwgc2l6ZW9mIChldGhlcmJ1ZlswXSksICIlNkQiLCBhcCwgIjoiKTsK
KwlidWYgPSBldGhlcmJ1ZltpXTsKKwlpID0gKGkrMSklMjsKKwlyZXR1cm4gKGJ1Zik7CiB9CiAK
IC8qCmRpZmYgLS1naXQgYS9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX2h3bXAuYyBiL3N5cy9uZXQ4
MDIxMS9pZWVlODAyMTFfaHdtcC5jCmluZGV4IDkzYTllNTUuLmRmYjc5NmQgMTAwNjQ0Ci0tLSBh
L3N5cy9uZXQ4MDIxMS9pZWVlODAyMTFfaHdtcC5jCisrKyBiL3N5cy9uZXQ4MDIxMS9pZWVlODAy
MTFfaHdtcC5jCkBAIC0zMywxNSArMzMsMTUgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogCiAv
KgogICogSUVFRSA4MDIuMTFzIEh5YnJpZCBXaXJlbGVzcyBNZXNoIFByb3RvY29sLCBIV01QLgot
ICogCisgKgogICogQmFzZWQgb24gTWFyY2ggMjAwOSwgRDMuMCA4MDIuMTFzIGRyYWZ0IHNwZWMu
CiAgKi8KICNpbmNsdWRlICJvcHRfaW5ldC5oIgogI2luY2x1ZGUgIm9wdF93bGFuLmgiCiAKICNp
bmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNpbmNsdWRlIDxzeXMvc3lzdG0uaD4gCi0jaW5jbHVkZSA8
c3lzL21idWYuaD4gICAKKyNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KKyNpbmNsdWRlIDxzeXMvbWJ1
Zi5oPgogI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4KICNpbmNsdWRlIDxzeXMva2VybmVsLmg+CiAK
QEAgLTEzOSw5ICsxMzksMTMgQEAgc3RhdGljIGNvbnN0IHVpbnQ4X3QJYnJvYWRjYXN0YWRkcltJ
RUVFODAyMTFfQUREUl9MRU5dID0KIHR5cGVkZWYgdWludDMyX3QgaWVlZTgwMjExX2h3bXBfc2Vx
OwogI2RlZmluZQlIV01QX1NFUV9MVChhLCBiKQkoKGludDMyX3QpKChhKS0oYikpIDwgMCkKICNk
ZWZpbmUJSFdNUF9TRVFfTEVRKGEsIGIpCSgoaW50MzJfdCkoKGEpLShiKSkgPD0gMCkKKyNkZWZp
bmUJSFdNUF9TRVFfRVEoYSwgYikJKChpbnQzMl90KSgoYSktKGIpKSA9PSAwKQogI2RlZmluZQlI
V01QX1NFUV9HVChhLCBiKQkoKGludDMyX3QpKChhKS0oYikpID4gMCkKICNkZWZpbmUJSFdNUF9T
RVFfR0VRKGEsIGIpCSgoaW50MzJfdCkoKGEpLShiKSkgPj0gMCkKIAorLyogVGhlIGxvbmdlciBv
bmUgb2YgdGhlIGxpZmV0aW1lIHNob3VsZCBiZSBzdG9yZWQgYXMgbmV3IGxpZmV0aW1lICovCisj
ZGVmaW5lIE1FU0hfUk9VVEVfTElGRVRJTUVfTUFYKGEsIGIpCShhID4gYiA/IGEgOiBiKQorCiAv
KgogICogUHJpdmF0ZSBleHRlbnNpb24gb2YgaWVlZTgwMjExX21lc2hfcm91dGUuCiAgKi8KQEAg
LTY3Nyw3ICs2ODEsOSBAQCBod21wX3JlY3ZfcHJlcShzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAs
IHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJc3RydWN0IGllZWU4MDIxMV9tZXNoX3N0YXRl
ICptcyA9IHZhcC0+aXZfbWVzaDsKIAlzdHJ1Y3QgaWVlZTgwMjExX21lc2hfcm91dGUgKnJ0ID0g
TlVMTDsKIAlzdHJ1Y3QgaWVlZTgwMjExX21lc2hfcm91dGUgKnJ0b3JpZyA9IE5VTEw7Ci0Jc3Ry
dWN0IGllZWU4MDIxMV9od21wX3JvdXRlICpocm9yaWc7CisJc3RydWN0IGllZWU4MDIxMV9tZXNo
X3JvdXRlICpydHRhcmcgPSBOVUxMOworCXN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0ZSAqaHJv
cmlnID0gTlVMTDsKKwlzdHJ1Y3QgaWVlZTgwMjExX2h3bXBfcm91dGUgKmhydGFyZyA9IE5VTEw7
CiAJc3RydWN0IGllZWU4MDIxMV9od21wX3N0YXRlICpocyA9IHZhcC0+aXZfaHdtcDsKIAlzdHJ1
Y3QgaWVlZTgwMjExX21lc2hwcmVwX2llIHByZXA7CiAKQEAgLTY5Miw0NiArNjk4LDk1IEBAIGh3
bXBfcmVjdl9wcmVxKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9u
b2RlICpuaSwKIAkJcmV0dXJuOwogCiAJSUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNH
X0hXTVAsIG5pLAotCSAgICAicmVjZWl2ZWQgUFJFUSwgc291cmNlICVzIiwgZXRoZXJfc3ByaW50
ZihwcmVxLT5wcmVxX29yaWdhZGRyKSk7CisJICAgICJyZWNlaXZlZCBQUkVRLCBvcmlnaW5hdG9y
ICVzLCB0YXJnZXQgJXMiLAorCSAgICBldGhlcl9zcHJpbnRmKHByZXEtPnByZXFfb3JpZ2FkZHIp
LCBldGhlcl9zcHJpbnRmKFBSRVFfVEFERFIoMCkpKTsKIAogCS8qCi0JICogQWNjZXB0YW5jZSBj
cml0ZXJpYTogaWYgdGhlIFBSRVEgaXMgbm90IGZvciB1cyBhbmQKLQkgKiBmb3J3YXJkaW5nIGlz
IGRpc2FibGVkLCBkaXNjYXJkIHRoaXMgUFJFUS4KKwkgKiBBY2NlcHRhbmNlIGNyaXRlcmlhOiBp
ZiB0aGUgUFJFUSBpcyBub3QgZm9yIHVzIG9yIG5vdCBicm9hZGNhc3QKKwkgKiBBTkQgZm9yd2Fy
ZGluZyBpcyBkaXNhYmxlZCwgZGlzY2FyZCB0aGlzIFBSRVEuCisJICogWFhYOiBuZWVkIHRvIGNo
ZWNrIFBST1hZCiAJICovCi0JaWYgKCFJRUVFODAyMTFfQUREUl9FUSh2YXAtPml2X215YWRkciwg
UFJFUV9UQUREUigwKSkgJiYKKwlpZiAoKCFJRUVFODAyMTFfQUREUl9FUSh2YXAtPml2X215YWRk
ciwgUFJFUV9UQUREUigwKSkgfHwKKwkgICAgIUlFRUU4MDIxMV9JU19NVUxUSUNBU1QoUFJFUV9U
QUREUigwKSkpICYmCiAJICAgICEobXMtPm1zX2ZsYWdzICYgSUVFRTgwMjExX01FU0hGTEFHU19G
V0QpKSB7CiAJCUlFRUU4MDIxMV9ESVNDQVJEX01BQyh2YXAsIElFRUU4MDIxMV9NU0dfSFdNUCwK
IAkJICAgIHByZXEtPnByZXFfb3JpZ2FkZHIsIE5VTEwsICIlcyIsICJub3QgYWNjZXB0aW5nIFBS
RVEiKTsKIAkJcmV0dXJuOwogCX0KKwkvKgorCSAqIEFjY2VwdGFuY2UgY3JpdGVyaWE6IGlmIHVu
aWNhc3QgYWRkcmVzc2VkIAorCSAqIEFORCBubyB2YWxpZCBmb3J3YXJkaW5nIGZvciBUYXJnZXQg
b2YgUFJFUSwgZGlzY2FyZCB0aGlzIFBSRVEuCisJICovCisJcnR0YXJnID0gaWVlZTgwMjExX21l
c2hfcnRfZmluZCh2YXAsIFBSRVFfVEFERFIoMCkpOworCWlmKHJ0dGFyZyAhPSBOVUxMKQorCQlo
cnRhcmcgPSBJRUVFODAyMTFfTUVTSF9ST1VURV9QUklWKHJ0dGFyZywKKwkJICAgIHN0cnVjdCBp
ZWVlODAyMTFfaHdtcF9yb3V0ZSk7CisJLyogQWRkcmVzcyBtb2RlOiB1Y2FzdCAqLworCWlmKChw
cmVxLT5wcmVxX2ZsYWdzICYgSUVFRTgwMjExX01FU0hQUkVRX0ZMQUdTX0FNKSA9PSAwICYmCisJ
ICAgIHJ0dGFyZyA9PSBOVUxMICYmCisJICAgICFJRUVFODAyMTFfQUREUl9FUSh2YXAtPml2X215
YWRkciwgUFJFUV9UQUREUigwKSkpIHsKKwkJSUVFRTgwMjExX0RJU0NBUkRfTUFDKHZhcCwgSUVF
RTgwMjExX01TR19IV01QLAorCQkgICAgcHJlcS0+cHJlcV9vcmlnYWRkciwgTlVMTCwKKwkJICAg
ICJ1bmljYXN0IGFkZHJlc3NlZCBQUkVRIG9mIHVua25vd24gdGFyZ2V0ICVzIiwKKwkJICAgIGV0
aGVyX3NwcmludGYoUFJFUV9UQUREUigwKSkpOworCQlyZXR1cm47CisJfQorCisJLyogUFJFUSBB
Q0NFUFRFRCAqLworCiAJcnRvcmlnID0gaWVlZTgwMjExX21lc2hfcnRfZmluZCh2YXAsIHByZXEt
PnByZXFfb3JpZ2FkZHIpOwotCWlmIChydG9yaWcgPT0gTlVMTCkKKwlpZiAocnRvcmlnID09IE5V
TEwpIHsKIAkJcnRvcmlnID0gaWVlZTgwMjExX21lc2hfcnRfYWRkKHZhcCwgcHJlcS0+cHJlcV9v
cmlnYWRkcik7CisJCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBuaSwK
KwkJICAgICJhZGRpbmcgb3JpZ2luYXRvciAlcyIsCisJCSAgICBldGhlcl9zcHJpbnRmKHByZXEt
PnByZXFfb3JpZ2FkZHIpKTsKKwl9CiAJaWYgKHJ0b3JpZyA9PSBOVUxMKSB7CiAJCS8qIFhYWCBz
dGF0ICovCiAJCXJldHVybjsKIAl9CiAJaHJvcmlnID0gSUVFRTgwMjExX01FU0hfUk9VVEVfUFJJ
VihydG9yaWcsIHN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0ZSk7Ci0JLyoKLQkgKiBTZXF1ZW5j
ZSBudW1iZXIgdmFsaWRhdGlvbi4KKworCS8qIERhdGEgY3JlYXRpb24gYW5kIHVwZGF0ZSBvZiBm
b3J3YXJkaW5nIGluZm9ybWF0aW9uCisJICogYWNjb3JkaW5nIHRvIFRhYmxlIDExQy04IGZvciBv
cmlnaW5hdG9yIG1lc2ggU1RBLgogCSAqLwotCWlmIChIV01QX1NFUV9MRVEocHJlcS0+cHJlcV9p
ZCwgaHJvcmlnLT5ocl9wcmVxaWQpICYmCi0JICAgIEhXTVBfU0VRX0xFUShwcmVxLT5wcmVxX29y
aWdzZXEsIGhyb3JpZy0+aHJfc2VxKSkgeworCWlmKEhXTVBfU0VRX0dUKHByZXEtPnByZXFfb3Jp
Z3NlcSwgaHJvcmlnLT5ocl9zZXEpIHx8CisJICAgIChIV01QX1NFUV9FUShwcmVxLT5wcmVxX29y
aWdzZXEsIGhyb3JpZy0+aHJfc2VxKSAmJgorCSAgICBwcmVxLT5wcmVxX21ldHJpYyA8IHJ0b3Jp
Zy0+cnRfbWV0cmljKSkgeworCQlocm9yaWctPmhyX3NlcSA9IHByZXEtPnByZXFfb3JpZ3NlcTsK
KwkJSUVFRTgwMjExX0FERFJfQ09QWShydG9yaWctPnJ0X25leHRob3AsIHdoLT5pX2FkZHIyKTsK
KwkJcnRvcmlnLT5ydF9tZXRyaWMgPSBwcmVxLT5wcmVxX21ldHJpYyArCisJCQltcy0+bXNfcG1l
dHJpYy0+bXBtX21ldHJpYyhuaSk7CisJCXJ0b3JpZy0+cnRfbmhvcHMgID0gcHJlcS0+cHJlcV9o
b3Bjb3VudCArIDE7CisJCXJ0b3JpZy0+cnRfbGlmZXRpbWUgID0gTUVTSF9ST1VURV9MSUZFVElN
RV9NQVgoCisJCSAgICBwcmVxLT5wcmVxX2xpZmV0aW1lLCBydG9yaWctPnJ0X2xpZmV0aW1lKTsK
KwkJLyogcGF0aCB0byBvcmlnIGlzIHZhbGlkIG5vdyAqLworCQlydG9yaWctPnJ0X2ZsYWdzIHw9
IElFRUU4MDIxMV9NRVNIUlRfRkxBR1NfVkFMSUQ7CisJfWVsc2UgaWYoaHJ0YXJnICE9IE5VTEwg
JiYKKwkJSFdNUF9TRVFfRVEoaHJ0YXJnLT5ocl9zZXEsIFBSRVFfVFNFUSgwKSkgJiYKKwkJKHJ0
b3JpZy0+cnRfZmxhZ3MgJiBJRUVFODAyMTFfTUVTSFJUX0ZMQUdTX1ZBTElEKSA9PSAwKSB7CiAJ
CUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBuaSwKLQkJICAgICJkaXNj
YXJkIFBSRVEgZnJvbSAlcywgb2xkIHNlcSBubyAldSA8PSAldSIsCi0JCSAgICBldGhlcl9zcHJp
bnRmKHByZXEtPnByZXFfb3JpZ2FkZHIpLAotCQkgICAgcHJlcS0+cHJlcV9vcmlnc2VxLCBocm9y
aWctPmhyX3NlcSk7CisJCSAgICAicmVjZWl2ZWQgUFJFUSwgb3JpZ2luYXRvciAlcyIsICJ1bmtu
b3duIik7CisJfWVsc2UgeworCQlJRUVFODAyMTFfRElTQ0FSRF9NQUModmFwLCBJRUVFODAyMTFf
TVNHX0hXTVAsCisJCSAgICBwcmVxLT5wcmVxX29yaWdhZGRyLCBOVUxMLAorCQkgICAgIiVzLCBs
YXN0IHNlZW4gb3JpZy5zZXEgJWQsIHByZXEgb3JpZy5zZXEgJWQiLAorCQkgICAgImRpc2NhcmRp
bmcgUFJFUSIsIGhyb3JpZy0+aHJfc2VxLCBwcmVxLT5wcmVxX29yaWdzZXEpOwogCQlyZXR1cm47
CiAJfQotCWhyb3JpZy0+aHJfcHJlcWlkID0gcHJlcS0+cHJlcV9pZDsKLQlocm9yaWctPmhyX3Nl
cSA9IHByZXEtPnByZXFfb3JpZ3NlcTsKKworCS8qCisJICogRm9yd2FyZGluZyBpbmZvcm1hdGlv
biBmb3IgdHJhbnNtaXR0ZXIgbWVzaCBTVEEgCisJICogW09QVElPTkFMOiBpZiBtZXRyaWMgaW1w
cm92ZWRdCisJICovCiAKIAkvKgogCSAqIENoZWNrIGlmIHRoZSBQUkVRIGlzIGFkZHJlc3NlZCB0
byB1cy4KIAkgKi8KIAlpZiAoSUVFRTgwMjExX0FERFJfRVEodmFwLT5pdl9teWFkZHIsIFBSRVFf
VEFERFIoMCkpKSB7CiAJCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBu
aSwKLQkJICAgICJyZXBseSB0byAlcyIsIGV0aGVyX3NwcmludGYocHJlcS0+cHJlcV9vcmlnYWRk
cikpOworCQkgICAgInJlcGx5IFBSRVAsIG9yaWdpbmF0b3IgJXMiLAorCQkgICAgZXRoZXJfc3By
aW50ZihwcmVxLT5wcmVxX29yaWdhZGRyKSk7CiAJCS8qCiAJCSAqIEJ1aWxkIGFuZCBzZW5kIGEg
UFJFUCBmcmFtZS4KIAkJICovCkBAIC04MTksMjUgKzg3NCwyOSBAQCBod21wX3JlY3ZfcHJlcShz
dHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJCQlp
ZiAocHJlcS0+cHJlcV90dGwgPiAxICYmCiAJCQkgICAgcHJlcS0+cHJlcV9ob3Bjb3VudCA8IGhz
LT5oc19tYXhob3BzKSB7CiAJCQkJSUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hX
TVAsIG5pLAotCQkJCSAgICAiZm9yd2FyZCBQUkVRIGZyb20gJXMiLAotCQkJCSAgICBldGhlcl9z
cHJpbnRmKHByZXEtPnByZXFfb3JpZ2FkZHIpKTsKKwkJCQkgICAgImZvcndhcmQgUFJFUSwgb3Jp
Z2luYXRvciAlcywgdG8gJXMiLAorCQkJCSAgICBldGhlcl9zcHJpbnRmKHByZXEtPnByZXFfb3Jp
Z2FkZHIpLAorCQkJCSAgICBldGhlcl9zcHJpbnRmKHJ0LT5ydF9uZXh0aG9wKSk7CiAJCQkJLyoK
IAkJCQkgKiBQcm9wYWdhdGUgdGhlIG9yaWdpbmFsIFBSRVEuCisJCQkJICogUFJFUSBpcyB1bmlj
YXN0IG5vdyB0byBydC0+cnRfbmV4dGhvcAogCQkJCSAqLworCQkJCXBwcmVxLnByZXFfZmxhZ3Mg
Jj0KKwkJCQkgICAgfklFRUU4MDIxMV9NRVNIUFJFUV9GTEFHU19BTTsKIAkJCQlwcHJlcS5wcmVx
X2hvcGNvdW50ICs9IDE7CiAJCQkJcHByZXEucHJlcV90dGwgLT0gMTsKIAkJCQlwcHJlcS5wcmVx
X21ldHJpYyArPQogCQkJCSAgICBtcy0+bXNfcG1ldHJpYy0+bXBtX21ldHJpYyhuaSk7CiAJCQkJ
LyoKLQkJCQkgKiBTZXQgVE8gYW5kIHVuc2V0IFJGIGJpdHMgYmVjYXVzZSB3ZSBhcmUgZ29pbmcK
LQkJCQkgKiB0byBzZW5kIGEgUFJFUCBuZXh0LgorCQkJCSAqIFNldCBUTyBhbmQgdW5zZXQgUkYg
Yml0cyBiZWNhdXNlIHdlIGFyZQorCQkJCSAqIGdvaW5nIHRvIHNlbmQgYSBQUkVQIG5leHQuCiAJ
CQkJICovCiAJCQkJcHByZXEucHJlcV90YXJnZXRzWzBdLnRhcmdldF9mbGFncyB8PQogCQkJCSAg
ICBJRUVFODAyMTFfTUVTSFBSRVFfVEZMQUdTX1RPOwogCQkJCXBwcmVxLnByZXFfdGFyZ2V0c1sw
XS50YXJnZXRfZmxhZ3MgJj0KIAkJCQkgICAgfklFRUU4MDIxMV9NRVNIUFJFUV9URkxBR1NfUkY7
CiAJCQkJaHdtcF9zZW5kX3ByZXEobmksIHZhcC0+aXZfbXlhZGRyLAotCQkJCSAgICBicm9hZGNh
c3RhZGRyLCAmcHByZXEpOworCQkJCSAgICBydC0+cnRfbmV4dGhvcCwgJnBwcmVxKTsKIAkJCX0K
IAkJCS8qCiAJCQkgKiBDaGVjayBpZiB3ZSBjYW4gc2VuZCBhbiBpbnRlcm1lZGlhdGUgUGF0aCBS
ZXBseSwKQEAgLTg3MCwyNiArOTI5LDExIEBAIGh3bXBfcmVjdl9wcmVxKHN0cnVjdCBpZWVlODAy
MTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAkJICovCiAJCX0gZWxzZSBp
ZiAocHJlcS0+cHJlcV90dGwgPiAxICYmCiAJCSAgICBwcmVxLT5wcmVxX2hvcGNvdW50IDwgaHMt
PmhzX21heGhvcHMpIHsKLQkJCWlmIChydCA9PSBOVUxMKSB7Ci0JCQkJcnQgPSBpZWVlODAyMTFf
bWVzaF9ydF9hZGQodmFwLCBQUkVRX1RBRERSKDApKTsKLQkJCQlpZiAocnQgPT0gTlVMTCkgewot
CQkJCQlJRUVFODAyMTFfTk9URSh2YXAsIElFRUU4MDIxMV9NU0dfSFdNUCwKLQkJCQkJICAgIG5p
LCAidW5hYmxlIHRvIGFkZCBQUkVRIHBhdGggdG8gJXMiLAotCQkJCQkgICAgZXRoZXJfc3ByaW50
ZihQUkVRX1RBRERSKDApKSk7Ci0JCQkJCXZhcC0+aXZfc3RhdHMuaXNfbWVzaF9ydGFkZGZhaWxl
ZCsrOwotCQkJCQlyZXR1cm47Ci0JCQkJfQotCQkJfQotCQkJcnQtPnJ0X21ldHJpYyA9IHByZXEt
PnByZXFfbWV0cmljOwotCQkJcnQtPnJ0X2xpZmV0aW1lID0gcHJlcS0+cHJlcV9saWZldGltZTsK
LQkJCWhyb3JpZyA9IElFRUU4MDIxMV9NRVNIX1JPVVRFX1BSSVYocnQsCi0JCQkgICAgc3RydWN0
IGllZWU4MDIxMV9od21wX3JvdXRlKTsKLQkJCWhyb3JpZy0+aHJfc2VxID0gcHJlcS0+cHJlcV9v
cmlnc2VxOwotCQkJaHJvcmlnLT5ocl9wcmVxaWQgPSBwcmVxLT5wcmVxX2lkOwotCiAJCQlJRUVF
ODAyMTFfTk9URSh2YXAsIElFRUU4MDIxMV9NU0dfSFdNUCwgbmksCi0JCQkgICAgImZvcndhcmQg
UFJFUSBmcm9tICVzIiwKLQkJCSAgICBldGhlcl9zcHJpbnRmKHByZXEtPnByZXFfb3JpZ2FkZHIp
KTsKKwkJCSAgICAiYnJvYWRjYXN0IFBSRVEsIG9yaWdpbmF0b3IgJXMsIHRhcmdldCAlcyIsCisJ
CQkgICAgZXRoZXJfc3ByaW50ZihwcmVxLT5wcmVxX29yaWdhZGRyKSwKKwkJCSAgICBldGhlcl9z
cHJpbnRmKFBSRVFfVEFERFIoMCkpKTsKKwkJCXBwcmVxLnByZXFfZmxhZ3MgfD0gSUVFRTgwMjEx
X01FU0hQUkVRX0ZMQUdTX0FNOwogCQkJcHByZXEucHJlcV9ob3Bjb3VudCArPSAxOwogCQkJcHBy
ZXEucHJlcV90dGwgLT0gMTsKIAkJCXBwcmVxLnByZXFfbWV0cmljICs9IG1zLT5tc19wbWV0cmlj
LT5tcG1fbWV0cmljKG5pKTsKQEAgLTg5Nyw3ICs5NDEsNiBAQCBod21wX3JlY3ZfcHJlcShzdHJ1
Y3QgaWVlZTgwMjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJCQkgICAg
JnBwcmVxKTsKIAkJfQogCX0KLQogfQogI3VuZGVmCVBSRVFfVEZMQUdTCiAjdW5kZWYJUFJFUV9U
QUREUgpAQCAtOTIxLDcgKzk2NCw3IEBAIGh3bXBfc2VuZF9wcmVxKHN0cnVjdCBpZWVlODAyMTFf
bm9kZSAqbmksCiAJLyoKIAkgKiBtZXNoIHByZXEgYWN0aW9uIGZyYW1lIGZvcm1hdAogCSAqICAg
ICBbNl0gZGEKLQkgKiAgICAgWzZdIHNhIAorCSAqICAgICBbNl0gc2EKIAkgKiAgICAgWzZdIGFk
ZHIzID0gc2EKIAkgKiAgICAgWzFdIGFjdGlvbgogCSAqICAgICBbMV0gY2F0ZWdvcnkKQEAgLTk0
Myw2ICs5ODYsNyBAQCBod21wX3JlY3ZfcHJlcChzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAsIHN0
cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSB2YXAt
Pml2X2ljOwogCXN0cnVjdCBpZm5ldCAqaWZwID0gdmFwLT5pdl9pZnA7CiAJc3RydWN0IG1idWYg
Km0sICpuZXh0OworCXVpbnQzMl90IG1ldHJpYyA9IDA7CiAKIAkvKgogCSAqIEFjY2VwdGFuY2Ug
Y3JpdGVyaWE6IGlmIHRoZSBjb3JyZXNwb25kaW5nIFBSRVEgd2FzIG5vdCBnZW5lcmF0ZWQKQEAg
LTk1NiwxMiArMTAwMCwxNiBAQCBod21wX3JlY3ZfcHJlcChzdHJ1Y3QgaWVlZTgwMjExdmFwICp2
YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJCXJldHVybjsKIAogCUlFRUU4MDIxMV9O
T1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBuaSwKLQkgICAgInJlY2VpdmVkIFBSRVAgZnJv
bSAlcyIsIGV0aGVyX3NwcmludGYocHJlcC0+cHJlcF90YXJnZXRhZGRyKSk7CisJICAgICJyZWNl
aXZlZCBQUkVQLCBvcmlnaW5hdG9yICVzLCB0YXJnZXQgJXMiLAorCSAgICBldGhlcl9zcHJpbnRm
KHByZXAtPnByZXBfb3JpZ2FkZHIpLAorCSAgICBldGhlcl9zcHJpbnRmKHByZXAtPnByZXBfdGFy
Z2V0YWRkcikpOwogCiAJcnQgPSBpZWVlODAyMTFfbWVzaF9ydF9maW5kKHZhcCwgcHJlcC0+cHJl
cF90YXJnZXRhZGRyKTsKIAlpZiAocnQgPT0gTlVMTCkgewogCQkvKgogCQkgKiBJZiB3ZSBoYXZl
IG5vIGVudHJ5IHRoaXMgY291bGQgYmUgYSByZXBseSB0byBhIHJvb3QgUFJFUS4KKwkJICogWFhY
OiBub3QgdHJ1ZSBhbnltb3JlIGNhdXNlIHdlIGRvbnQgY3JlYXRlIGVudHJ5IGZvciB0YXJnZXQK
KwkJICogIHdoZW4gcHJvcGFnYXRpbmcgUFJFUXMgbGlrZSB0aGUgb2xkIGNvZGUgZGlkLgogCQkg
Ki8KIAkJaWYgKGhzLT5oc19yb290bW9kZSAhPSBJRUVFODAyMTFfSFdNUF9ST09UTU9ERV9ESVNB
QkxFRCkgewogCQkJcnQgPSBpZWVlODAyMTFfbWVzaF9ydF9hZGQodmFwLCBwcmVwLT5wcmVwX3Rh
cmdldGFkZHIpOwpAQCAtOTc4LDI0ICsxMDI2LDM2IEBAIGh3bXBfcmVjdl9wcmVwKHN0cnVjdCBp
ZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAkJCXJ0LT5ydF9t
ZXRyaWMgPSBwcmVwLT5wcmVwX21ldHJpYzsKIAkJCXJ0LT5ydF9mbGFncyB8PSBJRUVFODAyMTFf
TUVTSFJUX0ZMQUdTX1ZBTElEOwogCQkJSUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNH
X0hXTVAsIG5pLAotCQkJICAgICJhZGQgcm9vdCBwYXRoIHRvICVzIG5ob3BzICVkIG1ldHJpYyAl
ZCAoUFJFUCkiLAorCQkJICAgICJhZGQgcm9vdCBwYXRoIHRvICVzIG5ob3BzICVkIG1ldHJpYyAl
bHUgKFBSRVApIiwKIAkJCSAgICBldGhlcl9zcHJpbnRmKHByZXAtPnByZXBfdGFyZ2V0YWRkciks
CiAJCQkgICAgcnQtPnJ0X25ob3BzLCBydC0+cnRfbWV0cmljKTsKIAkJCXJldHVybjsKLQkJfSAK
KwkJfQogCQlyZXR1cm47CiAJfQogCS8qCiAJICogU2VxdWVuY2UgbnVtYmVyIHZhbGlkYXRpb24u
CiAJICovCiAJaHIgPSBJRUVFODAyMTFfTUVTSF9ST1VURV9QUklWKHJ0LCBzdHJ1Y3QgaWVlZTgw
MjExX2h3bXBfcm91dGUpOwotCWlmIChIV01QX1NFUV9MRVEocHJlcC0+cHJlcF90YXJnZXRzZXEs
IGhyLT5ocl9zZXEpKSB7Ci0JCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01Q
LCBuaSwKLQkJICAgICJkaXNjYXJkIFBSRVAgZnJvbSAlcywgb2xkIHNlcSBubyAldSA8PSAldSIs
Ci0JCSAgICBldGhlcl9zcHJpbnRmKHByZXAtPnByZXBfdGFyZ2V0YWRkciksCi0JCSAgICBwcmVw
LT5wcmVwX3RhcmdldHNlcSwgaHItPmhyX3NlcSk7Ci0JCXJldHVybjsKKwkvKiBBY2NlcHQgaWYg
cm91dGUgaXMgbm90IHZhbGlkICovCisJaWYoKHJ0LT5ydF9mbGFncyAmIElFRUU4MDIxMV9NRVNI
UlRfRkxBR1NfVkFMSUQpKSB7CisJCWlmIChIV01QX1NFUV9MVChwcmVwLT5wcmVwX3RhcmdldHNl
cSwgaHItPmhyX3NlcSkpIHsKKwkJCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19I
V01QLCBuaSwKKwkJCSAgICAiZGlzY2FyZCBQUkVQIGZyb20gJXMsIG9sZCBzZXEgbm8gJXUgPCAl
dSIsCisJCQkgICAgZXRoZXJfc3ByaW50ZihwcmVwLT5wcmVwX3RhcmdldGFkZHIpLAorCQkJICAg
IHByZXAtPnByZXBfdGFyZ2V0c2VxLCBoci0+aHJfc2VxKTsKKwkJCXJldHVybjsKKwkJLyogSWYg
c2FtZSBzZXFubyBjb21wYXJlIG1ldHJpYyAqLworCQl9ZWxzZSBpZihIV01QX1NFUV9MRVEocHJl
cC0+cHJlcF90YXJnZXRzZXEsIGhyLT5ocl9zZXEpICYmCisJCSAgICBwcmVwLT5wcmVwX21ldHJp
YyA+IHJ0LT5ydF9tZXRyaWMpIHsKKwkJCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01T
R19IV01QLCBuaSwKKwkJCSAgICAiZGlzY2FyZCBQUkVQIGZyb20gJXMsIG5ldyBtZXRyaWMgJXUg
PiAldSIsCisJCQkgICAgZXRoZXJfc3ByaW50ZihwcmVwLT5wcmVwX3RhcmdldGFkZHIpLAorCQkJ
ICAgIHByZXAtPnByZXBfbWV0cmljLCBydC0+cnRfbWV0cmljKTsKKwkJCXJldHVybjsKKwkJfQog
CX0KKwogCWhyLT5ocl9zZXEgPSBwcmVwLT5wcmVwX3RhcmdldHNlcTsKIAkvKgogCSAqIElmIGl0
J3MgTk9UIGZvciB1cywgcHJvcGFnYXRlIHRoZSBQUkVQLgpAQCAtMTAwMywxNiArMTA2MywxMyBA
QCBod21wX3JlY3ZfcHJlcChzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAy
MTFfbm9kZSAqbmksCiAJaWYgKCFJRUVFODAyMTFfQUREUl9FUSh2YXAtPml2X215YWRkciwgcHJl
cC0+cHJlcF9vcmlnYWRkcikgJiYKIAkgICAgcHJlcC0+cHJlcF90dGwgPiAxICYmIHByZXAtPnBy
ZXBfaG9wY291bnQgPCBocy0+aHNfbWF4aG9wcykgewogCQlzdHJ1Y3QgaWVlZTgwMjExX21lc2hw
cmVwX2llIHBwcmVwOyAvKiBwcm9wYWdhdGVkIFBSRVAgKi8KLQogCQlJRUVFODAyMTFfTk9URSh2
YXAsIElFRUU4MDIxMV9NU0dfSFdNUCwgbmksCiAJCSAgICAicHJvcGFnYXRlIFBSRVAgZnJvbSAl
cyIsCiAJCSAgICBldGhlcl9zcHJpbnRmKHByZXAtPnByZXBfdGFyZ2V0YWRkcikpOwotCiAJCW1l
bWNweSgmcHByZXAsIHByZXAsIHNpemVvZihwcHJlcCkpOwogCQlwcHJlcC5wcmVwX2hvcGNvdW50
ICs9IDE7CiAJCXBwcmVwLnByZXBfdHRsIC09IDE7CiAJCXBwcmVwLnByZXBfbWV0cmljICs9IG1z
LT5tc19wbWV0cmljLT5tcG1fbWV0cmljKG5pKTsKLQkJSUVFRTgwMjExX0FERFJfQ09QWShwcHJl
cC5wcmVwX3RhcmdldGFkZHIsIHZhcC0+aXZfbXlhZGRyKTsKIAkJaHdtcF9zZW5kX3ByZXAobmks
IHZhcC0+aXZfbXlhZGRyLCBicm9hZGNhc3RhZGRyLCAmcHByZXApOwogCX0KIAlociA9IElFRUU4
MDIxMV9NRVNIX1JPVVRFX1BSSVYocnQsIHN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0ZSk7CkBA
IC0xMDIyLDcgKzEwNzksOSBAQCBod21wX3JlY3ZfcHJlcChzdHJ1Y3QgaWVlZTgwMjExdmFwICp2
YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJCSAgICAiZGlzY2FyZCBQUkVQIGZvciAl
cywgcm91dGUgaXMgbWFya2VkIFBST1hZIiwKIAkJICAgIGV0aGVyX3NwcmludGYocHJlcC0+cHJl
cF90YXJnZXRhZGRyKSk7CiAJCXZhcC0+aXZfc3RhdHMuaXNfaHdtcF9wcm94eSsrOwotCX0gZWxz
ZSBpZiAocHJlcC0+cHJlcF9vcmlnc2VxID09IGhyLT5ocl9vcmlnc2VxKSB7CisJLyogTkI6IGZp
cnN0IHBhdGggZGlzY292ZXJ5IGFsd2F5cyBmYWlscyAqLworCX0gZWxzZSBpZiAoaHItPmhyX29y
aWdzZXEgPT0gMCB8fAorCSAgICBwcmVwLT5wcmVwX29yaWdzZXEgPT0gaHItPmhyX29yaWdzZXEp
IHsKIAkJLyoKIAkJICogQ2hlY2sgaWYgd2UgYWxyZWFkeSBoYXZlIGEgcGF0aCB0byB0aGlzIG5v
ZGUuCiAJCSAqIElmIHdlIGRvLCBjaGVjayBpZiB0aGlzIHBhdGggcmVwbHkgY29udGFpbnMgYQpA
QCAtMTAzMSwzMiArMTA5MCwzNSBAQCBod21wX3JlY3ZfcHJlcChzdHJ1Y3QgaWVlZTgwMjExdmFw
ICp2YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJCWlmICgocnQtPnJ0X2ZsYWdzICYg
SUVFRTgwMjExX01FU0hSVF9GTEFHU19WQUxJRCkgPT0gMCB8fAogCQkgICAgKHByZXAtPnByZXBf
aG9wY291bnQgPCBydC0+cnRfbmhvcHMgfHwKIAkJICAgICBwcmVwLT5wcmVwX21ldHJpYyA8IHJ0
LT5ydF9tZXRyaWMpKSB7CisJCQloci0+aHJfb3JpZ3NlcSA9IHByZXAtPnByZXBfb3JpZ3NlcTsK
KwkJCW1ldHJpYyA9IHByZXAtPnByZXBfbWV0cmljICsKKwkJCSAgICBtcy0+bXNfcG1ldHJpYy0+
bXBtX21ldHJpYyhuaSk7CiAJCQlJRUVFODAyMTFfTk9URSh2YXAsIElFRUU4MDIxMV9NU0dfSFdN
UCwgbmksCi0JCQkgICAgIiVzIHBhdGggdG8gJXMsIGhvcGNvdW50ICVkOiVkIG1ldHJpYyAlZDol
ZCIsCisJCQkgICAgIiVzIHBhdGggdG8gJXMsIGhvcGNvdW50ICVkOiVkIG1ldHJpYyAlbHU6JWx1
IiwKIAkJCSAgICBydC0+cnRfZmxhZ3MgJiBJRUVFODAyMTFfTUVTSFJUX0ZMQUdTX1ZBTElEID8K
LQkJCQkicHJlZmVyIiA6ICJ1cGRhdGUiLAotCQkJICAgIGV0aGVyX3NwcmludGYocHJlcC0+cHJl
cF9vcmlnYWRkciksCi0JCQkgICAgcnQtPnJ0X25ob3BzLCBwcmVwLT5wcmVwX2hvcGNvdW50LAot
CQkJICAgIHJ0LT5ydF9tZXRyaWMsIHByZXAtPnByZXBfbWV0cmljKTsKKwkJCSAgICAicHJlZmVy
IiA6ICJ1cGRhdGUiLAorCQkJICAgIGV0aGVyX3NwcmludGYocHJlcC0+cHJlcF90YXJnZXRhZGRy
KSwKKwkJCSAgICBydC0+cnRfbmhvcHMsIHByZXAtPnByZXBfaG9wY291bnQgKyAxLAorCQkJICAg
IHJ0LT5ydF9tZXRyaWMsIG1ldHJpYyk7CiAJCQlJRUVFODAyMTFfQUREUl9DT1BZKHJ0LT5ydF9u
ZXh0aG9wLCB3aC0+aV9hZGRyMik7Ci0JCQlydC0+cnRfbmhvcHMgPSBwcmVwLT5wcmVwX2hvcGNv
dW50OworCQkJcnQtPnJ0X25ob3BzID0gcHJlcC0+cHJlcF9ob3Bjb3VudCArIDE7CiAJCQlydC0+
cnRfbGlmZXRpbWUgPSBwcmVwLT5wcmVwX2xpZmV0aW1lOwotCQkJcnQtPnJ0X21ldHJpYyA9IHBy
ZXAtPnByZXBfbWV0cmljOworCQkJcnQtPnJ0X21ldHJpYyA9IG1ldHJpYzsKIAkJCXJ0LT5ydF9m
bGFncyB8PSBJRUVFODAyMTFfTUVTSFJUX0ZMQUdTX1ZBTElEOwogCQl9IGVsc2UgewogCQkJSUVF
RTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsIG5pLAotCQkJICAgICJpZ25vcmUg
UFJFUCBmb3IgJXMsIGhvcGNvdW50ICVkOiVkIG1ldHJpYyAlZDolZCIsCisJCQkgICAgImlnbm9y
ZSBQUkVQIGZvciAlcywgaG9wY291bnQgJWQ6JWQgbWV0cmljICVsdTolbHUiLAogCQkJICAgIGV0
aGVyX3NwcmludGYocHJlcC0+cHJlcF90YXJnZXRhZGRyKSwKIAkJCSAgICBydC0+cnRfbmhvcHMs
IHByZXAtPnByZXBfaG9wY291bnQsCiAJCQkgICAgcnQtPnJ0X21ldHJpYywgcHJlcC0+cHJlcF9t
ZXRyaWMpOwogCQl9CiAJfSBlbHNlIHsKIAkJSUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFf
TVNHX0hXTVAsIG5pLAotCQkgICAgImRpc2NhcmQgUFJFUCBmb3IgJXMsIHdyb25nIHNlcW5vICV1
ICE9ICV1IiwKKwkJICAgICJkaXNjYXJkIFBSRVAgZm9yICVzLCB3cm9uZyBvcmlnIHNlcW5vICV1
ICE9ICV1IiwKIAkJICAgIGV0aGVyX3NwcmludGYocHJlcC0+cHJlcF90YXJnZXRhZGRyKSwgcHJl
cC0+cHJlcF9vcmlnc2VxLAotCQkgICAgaHItPmhyX3NlcSk7CisJCSAgICBoci0+aHJfb3JpZ3Nl
cSk7CiAJCXZhcC0+aXZfc3RhdHMuaXNfaHdtcF93cm9uZ3NlcSsrOwotCX0gCisJfQogCS8qCiAJ
ICogQ2hlY2sgZm9yIGZyYW1lcyBxdWV1ZWQgYXdhaXRpbmcgcGF0aCBkaXNjb3ZlcnkuCiAJICog
WFhYIHByb2JhYmx5IGNhbiB0ZWxsIGV4YWN0bHkgYW5kIGF2b2lkIHJlbW92ZSBjYWxsCkBAIC0x
MDY0LDkgKzExMjYsOSBAQCBod21wX3JlY3ZfcHJlcChzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAs
IHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJICogICAgIHN0dWNrIGJhY2sgb24gdGhlIHN0
YWdlcSBiZWNhdXNlIHRoZXJlIHdvbid0IGJlCiAJICogICAgIGEgcGF0aC4KIAkgKi8KLQltID0g
aWVlZTgwMjExX2FnZXFfcmVtb3ZlKCZpYy0+aWNfc3RhZ2VxLCAKKwltID0gaWVlZTgwMjExX2Fn
ZXFfcmVtb3ZlKCZpYy0+aWNfc3RhZ2VxLAogCSAgICAoc3RydWN0IGllZWU4MDIxMV9ub2RlICop
KHVpbnRwdHJfdCkKLQkJaWVlZTgwMjExX21hY19oYXNoKGljLCBydC0+cnRfZGVzdCkpOworCSAg
ICBpZWVlODAyMTFfbWFjX2hhc2goaWMsIHJ0LT5ydF9kZXN0KSk7CiAJZm9yICg7IG0gIT0gTlVM
TDsgbSA9IG5leHQpIHsKIAkJbmV4dCA9IG0tPm1fbmV4dHBrdDsKIAkJbS0+bV9uZXh0cGt0ID0g
TlVMTDsKQEAgLTEwODcsNyArMTE0OSw3IEBAIGh3bXBfc2VuZF9wcmVwKHN0cnVjdCBpZWVlODAy
MTFfbm9kZSAqbmksCiAJLyoKIAkgKiBtZXNoIHByZXAgYWN0aW9uIGZyYW1lIGZvcm1hdAogCSAq
ICAgICBbNl0gZGEKLQkgKiAgICAgWzZdIHNhIAorCSAqICAgICBbNl0gc2EKIAkgKiAgICAgWzZd
IGFkZHIzID0gc2EKIAkgKiAgICAgWzFdIGFjdGlvbgogCSAqICAgICBbMV0gY2F0ZWdvcnkKQEAg
LTExNDYsNyArMTIwOCw3IEBAIGh3bXBfcmVjdl9wZXJyKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZh
cCwgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAlzdHJ1Y3QgaWVlZTgwMjExX21lc2hfc3Rh
dGUgKm1zID0gdmFwLT5pdl9tZXNoOwogCXN0cnVjdCBpZWVlODAyMTFfbWVzaF9yb3V0ZSAqcnQg
PSBOVUxMOwogCXN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0ZSAqaHI7Ci0gCXN0cnVjdCBpZWVl
ODAyMTFfbWVzaHBlcnJfaWUgcHBlcnI7CisJc3RydWN0IGllZWU4MDIxMV9tZXNocGVycl9pZSBw
cGVycjsKIAlpbnQgaSwgZm9yd2FyZCA9IDA7CiAKIAkvKgpAQCAtMTE2NSw3ICsxMjI3LDcgQEAg
aHdtcF9yZWN2X3BlcnIoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBzdHJ1Y3QgaWVlZTgwMjEx
X25vZGUgKm5pLAogCQlpZiAocnQgPT0gTlVMTCkKIAkJCWNvbnRpbnVlOwogCQlociA9IElFRUU4
MDIxMV9NRVNIX1JPVVRFX1BSSVYocnQsIHN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0ZSk7Ci0J
CWlmICghKFBFUlJfREZMQUdTKDApICYgSUVFRTgwMjExX01FU0hQRVJSX0RGTEFHU19VU04pICYm
IAorCQlpZiAoIShQRVJSX0RGTEFHUygwKSAmIElFRUU4MDIxMV9NRVNIUEVSUl9ERkxBR1NfVVNO
KSAmJgogCQkgICAgSFdNUF9TRVFfR0VRKFBFUlJfRFNFUShpKSwgaHItPmhyX3NlcSkpIHsKIAkJ
CWllZWU4MDIxMV9tZXNoX3J0X2RlbCh2YXAsIHJ0LT5ydF9kZXN0KTsKIAkJCWllZWU4MDIxMV9t
ZXNoX3J0X2ZsdXNoX3BlZXIodmFwLCBydC0+cnRfZGVzdCk7CkBAIC0xMjY3LDcgKzEzMjksNyBA
QCBod21wX3NlbmRfcmFubihzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLAogCS8qCiAJICogbWVz
aCByYW5uIGFjdGlvbiBmcmFtZSBmb3JtYXQKIAkgKiAgICAgWzZdIGRhCi0JICogICAgIFs2XSBz
YSAKKwkgKiAgICAgWzZdIHNhCiAJICogICAgIFs2XSBhZGRyMyA9IHNhCiAJICogICAgIFsxXSBh
Y3Rpb24KIAkgKiAgICAgWzFdIGNhdGVnb3J5CkBAIC0xMzIzLDEzICsxMzg1LDE1IEBAIGh3bXBf
ZGlzY292ZXIoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLAogCQkJLyogWFhYIGNoZWNrIHByZXEg
cmV0cmllcyAqLwogCQkJc2VuZHByZXEgPSAxOwogCQkJSUVFRTgwMjExX05PVEVfTUFDKHZhcCwg
SUVFRTgwMjExX01TR19IV01QLCBkZXN0LAotCQkJICAgICJzdGFydCBwYXRoIGRpc2NvdmVyeSAo
c3JjICVzKSIsCisJCQkgICAgInN0YXJ0IHBhdGggZGlzY292ZXJ5IChzcmMgJXMpLCB0YXJnZXQg
c2VxICV1IiwKIAkJCSAgICBtID09IE5VTEwgPyAiPG5vbmU+IiA6IGV0aGVyX3NwcmludGYoCi0J
CQkJbXRvZChtLCBzdHJ1Y3QgZXRoZXJfaGVhZGVyICopLT5ldGhlcl9zaG9zdCkpOworCQkJICAg
IG10b2QobSwgc3RydWN0IGV0aGVyX2hlYWRlciAqKS0+ZXRoZXJfc2hvc3QpLAorCQkJICAgIGhy
LT5ocl9zZXEpOwogCQkJLyoKIAkJCSAqIFRyeSB0byBkaXNjb3ZlciB0aGUgcGF0aCBmb3IgdGhp
cyBub2RlLgorCQkJICogR3JvdXAgYWRkcmVzc2VkIFBSRVEgQ2FzZSBBCiAJCQkgKi8KLQkJCXBy
ZXEucHJlcV9mbGFncyA9IDA7CisJCQlwcmVxLnByZXFfZmxhZ3MgPSBJRUVFODAyMTFfTUVTSFBS
RVFfRkxBR1NfQU07CiAJCQlwcmVxLnByZXFfaG9wY291bnQgPSAwOwogCQkJcHJlcS5wcmVxX3R0
bCA9IG1zLT5tc190dGw7CiAJCQlwcmVxLnByZXFfaWQgPSArK2hzLT5oc19wcmVxaWQ7CkBAIC0x
MzQ1LDcgKzE0MDksNyBAQCBod21wX2Rpc2NvdmVyKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwK
IAkJCWlmIChpZWVlODAyMTFfaHdtcF9yZXBseWZvcndhcmQpCiAJCQkJUFJFUV9URkxBR1MoMCkg
fD0gSUVFRTgwMjExX01FU0hQUkVRX1RGTEFHU19SRjsKIAkJCVBSRVFfVEZMQUdTKDApIHw9IElF
RUU4MDIxMV9NRVNIUFJFUV9URkxBR1NfVVNOOwotCQkJUFJFUV9UU0VRKDApID0gMDsKKwkJCVBS
RVFfVFNFUSgwKSA9IGhyLT5ocl9zZXE7CiAJCQkvKiBYWFggY2hlY2sgcmV0dXJuIHZhbHVlICov
CiAJCQlod21wX3NlbmRfcHJlcSh2YXAtPml2X2JzcywgdmFwLT5pdl9teWFkZHIsCiAJCQkgICAg
YnJvYWRjYXN0YWRkciwgJnByZXEpOwpAQCAtMTM5MSw3ICsxNDU1LDcgQEAgaHdtcF9pb2N0bF9n
ZXQ4MDIxMShzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAyMTFyZXEgKmly
ZXEpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9od21wX3N0YXRlICpocyA9IHZhcC0+aXZfaHdtcDsK
IAlpbnQgZXJyb3I7Ci0gCisKIAlpZiAodmFwLT5pdl9vcG1vZGUgIT0gSUVFRTgwMjExX01fTUJT
UykKIAkJcmV0dXJuIEVOT1NZUzsKIAllcnJvciA9IDA7CmRpZmYgLS1naXQgYS9zeXMvbmV0ODAy
MTEvaWVlZTgwMjExX2lvY3RsLmMgYi9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX2lvY3RsLmMKaW5k
ZXggMmUzODhhZS4uZGY3YTcwNCAxMDA2NDQKLS0tIGEvc3lzL25ldDgwMjExL2llZWU4MDIxMV9p
b2N0bC5jCisrKyBiL3N5cy9uZXQ4MDIxMS9pZWVlODAyMTFfaW9jdGwuYwpAQCAtMTM5Nyw2ICsx
Mzk3LDE3IEBAIHNldG1sbWVfY29tbW9uKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgaW50IG9w
LAogCQkJICAgIElFRUU4MDIxMV9GQzBfU1VCVFlQRV9ERUFVVEgsIHJlYXNvbik7CiAJCQlpZWVl
ODAyMTFfZnJlZV9ub2RlKG5pKTsKIAkJCWJyZWFrOworCQljYXNlIElFRUU4MDIxMV9NX01CU1M6
CisJCQlJRUVFODAyMTFfTk9ERV9MT0NLKG50KTsKKwkJCW5pID0gaWVlZTgwMjExX2ZpbmRfbm9k
ZV9sb2NrZWQobnQsIG1hYyk7CisJCQlpZiAobmkgIT0gTlVMTCkgeworCQkJCWllZWU4MDIxMV9u
b2RlX2xlYXZlKG5pKTsKKwkJCQlpZWVlODAyMTFfZnJlZV9ub2RlKG5pKTsKKwkJCX1lbHNlewor
CQkJCWVycm9yID0gRU5PRU5UOworCQkJfQorCQkJSUVFRTgwMjExX05PREVfVU5MT0NLKG50KTsK
KwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZXJyb3IgPSBFSU5WQUw7CiAJCQlicmVhazsKZGlm
ZiAtLWdpdCBhL3N5cy9uZXQ4MDIxMS9pZWVlODAyMTFfbWVzaC5jIGIvc3lzL25ldDgwMjExL2ll
ZWU4MDIxMV9tZXNoLmMKaW5kZXggY2ZmZmQ4Ny4uNmFkYzQ1YSAxMDA2NDQKLS0tIGEvc3lzL25l
dDgwMjExL2llZWU4MDIxMV9tZXNoLmMKKysrIGIvc3lzL25ldDgwMjExL2llZWU4MDIxMV9tZXNo
LmMKQEAgLTMzNiw2ICszMzYsMTQgQEAgbWVzaF9ydF9mbHVzaF9pbnZhbGlkKHN0cnVjdCBpZWVl
ODAyMTF2YXAgKnZhcCkKIAkJaWYgKChydC0+cnRfZmxhZ3MgJiBJRUVFODAyMTFfTUVTSFJUX0ZM
QUdTX1ZBTElEKSA9PSAwICYmCiAJCSAgICB0aWNrcyAtIHJ0LT5ydF9jcnRpbWUgPj0gbXMtPm1z
X3BwYXRoLT5tcHBfaW5hY3QpCiAJCQltZXNoX3J0X2RlbChtcywgcnQpOworCQllbHNlIHsKKwkJ
CXJ0LT5ydF9saWZldGltZSAtPSAxMDA7IC8qIGRlY3JlYXNlIGxpZmV0aW1lICovCisJCQlpZihy
dC0+cnRfbGlmZXRpbWUgPD0gMCl7CisJCQkJcnQtPnJ0X2ZsYWdzICY9CisJCQkJICAgIH5JRUVF
ODAyMTFfTUVTSFJUX0ZMQUdTX1ZBTElEOyAvKiBpbnZhbGlkYXRlICovCisJCQkJbWVzaF9ydF9k
ZWwobXMsIHJ0KTsKKwkJCX0KKwkJfQogCX0KIAlNRVNIX1JUX1VOTE9DSyhtcyk7CiB9CmRpZmYg
LS1naXQgYS9zeXMvbmV0L2lmX2V0aGVyc3Vici5jIGIvc3lzL25ldC9pZl9ldGhlcnN1YnIuYwpp
bmRleCA5ZWFlNjgzLi45NzllYmZkIDEwMDY0NAotLS0gYS9zeXMvbmV0L2lmX2V0aGVyc3Vici5j
CisrKyBiL3N5cy9uZXQvaWZfZXRoZXJzdWJyLmMKQEAgLTk2OCw5ICs5NjgsMTMgQEAgZGlzY2Fy
ZDoKIGNoYXIgKgogZXRoZXJfc3ByaW50Zihjb25zdCB1X2NoYXIgKmFwKQogewotCXN0YXRpYyBj
aGFyIGV0aGVyYnVmWzE4XTsKLQlzbnByaW50ZihldGhlcmJ1Ziwgc2l6ZW9mIChldGhlcmJ1Ziks
ICIlNkQiLCBhcCwgIjoiKTsKLQlyZXR1cm4gKGV0aGVyYnVmKTsKKwlzdGF0aWMgY2hhciBldGhl
cmJ1ZlsyXVsxOF07CisJc3RhdGljIGludCBpID0gMDsKKwljaGFyICpidWY7CisJc25wcmludGYo
ZXRoZXJidWZbaV0sIHNpemVvZiAoZXRoZXJidWZbMF0pLCAiJTZEIiwgYXAsICI6Iik7CisJYnVm
ID0gZXRoZXJidWZbaV07CisJaSA9IChpKzEpJTI7CisJcmV0dXJuIChidWYpOwogfQogCiAvKgpk
aWZmIC0tZ2l0IGEvc3lzL25ldDgwMjExL2llZWU4MDIxMV9od21wLmMgYi9zeXMvbmV0ODAyMTEv
aWVlZTgwMjExX2h3bXAuYwppbmRleCA5M2E5ZTU1Li41OGI0YWZmIDEwMDY0NAotLS0gYS9zeXMv
bmV0ODAyMTEvaWVlZTgwMjExX2h3bXAuYworKysgYi9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX2h3
bXAuYwpAQCAtMzMsMTUgKzMzLDE1IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKIAogLyoKICAq
IElFRUUgODAyLjExcyBIeWJyaWQgV2lyZWxlc3MgTWVzaCBQcm90b2NvbCwgSFdNUC4KLSAqIAor
ICoKICAqIEJhc2VkIG9uIE1hcmNoIDIwMDksIEQzLjAgODAyLjExcyBkcmFmdCBzcGVjLgogICov
CiAjaW5jbHVkZSAib3B0X2luZXQuaCIKICNpbmNsdWRlICJvcHRfd2xhbi5oIgogCiAjaW5jbHVk
ZSA8c3lzL3BhcmFtLmg+Ci0jaW5jbHVkZSA8c3lzL3N5c3RtLmg+IAotI2luY2x1ZGUgPHN5cy9t
YnVmLmg+ICAgCisjaW5jbHVkZSA8c3lzL3N5c3RtLmg+CisjaW5jbHVkZSA8c3lzL21idWYuaD4K
ICNpbmNsdWRlIDxzeXMvbWFsbG9jLmg+CiAjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgogCkBAIC0x
MzksOSArMTM5LDEzIEBAIHN0YXRpYyBjb25zdCB1aW50OF90CWJyb2FkY2FzdGFkZHJbSUVFRTgw
MjExX0FERFJfTEVOXSA9CiB0eXBlZGVmIHVpbnQzMl90IGllZWU4MDIxMV9od21wX3NlcTsKICNk
ZWZpbmUJSFdNUF9TRVFfTFQoYSwgYikJKChpbnQzMl90KSgoYSktKGIpKSA8IDApCiAjZGVmaW5l
CUhXTVBfU0VRX0xFUShhLCBiKQkoKGludDMyX3QpKChhKS0oYikpIDw9IDApCisjZGVmaW5lCUhX
TVBfU0VRX0VRKGEsIGIpCSgoaW50MzJfdCkoKGEpLShiKSkgPT0gMCkKICNkZWZpbmUJSFdNUF9T
RVFfR1QoYSwgYikJKChpbnQzMl90KSgoYSktKGIpKSA+IDApCiAjZGVmaW5lCUhXTVBfU0VRX0dF
UShhLCBiKQkoKGludDMyX3QpKChhKS0oYikpID49IDApCiAKKy8qIFRoZSBsb25nZXIgb25lIG9m
IHRoZSBsaWZldGltZSBzaG91bGQgYmUgc3RvcmVkIGFzIG5ldyBsaWZldGltZSAqLworI2RlZmlu
ZSBNRVNIX1JPVVRFX0xJRkVUSU1FX01BWChhLCBiKQkoYSA+IGIgPyBhIDogYikKKwogLyoKICAq
IFByaXZhdGUgZXh0ZW5zaW9uIG9mIGllZWU4MDIxMV9tZXNoX3JvdXRlLgogICovCkBAIC0yNTYs
NyArMjYwLDcgQEAgaHdtcF92ZGV0YWNoKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCkKIAljYWxs
b3V0X2RyYWluKCZocy0+aHNfcm9vdHRpbWVyKTsKIAlmcmVlKHZhcC0+aXZfaHdtcCwgTV84MDIx
MV9WQVApOwogCXZhcC0+aXZfaHdtcCA9IE5VTEw7Ci19IAorfQogCiBpbnQKIGh3bXBfbmV3c3Rh
dGUoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBlbnVtIGllZWU4MDIxMV9zdGF0ZSBvc3RhdGUs
IGludCBhcmcpCkBAIC0zMTMsNyArMzE3LDcgQEAgaHdtcF9yZWN2X2FjdGlvbl9tZXNocGF0aChz
dHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLAogCQkJICAgIExFX1JFQURfNCgmbXByZXEtPnByZXFf
dGFyZ2V0c1swXS50YXJnZXRfc2VxKTsKIAkJCWh3bXBfcmVjdl9wcmVxKHZhcCwgbmksIHdoLCAm
cHJlcSk7CiAJCQlmb3VuZCsrOwotCQkJYnJlYWs7CQorCQkJYnJlYWs7CiAJCX0KIAkJY2FzZSBJ
RUVFODAyMTFfRUxFTUlEX01FU0hQUkVQOgogCQl7CkBAIC02NzcsNyArNjgxLDkgQEAgaHdtcF9y
ZWN2X3ByZXEoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUg
Km5pLAogCXN0cnVjdCBpZWVlODAyMTFfbWVzaF9zdGF0ZSAqbXMgPSB2YXAtPml2X21lc2g7CiAJ
c3RydWN0IGllZWU4MDIxMV9tZXNoX3JvdXRlICpydCA9IE5VTEw7CiAJc3RydWN0IGllZWU4MDIx
MV9tZXNoX3JvdXRlICpydG9yaWcgPSBOVUxMOwotCXN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0
ZSAqaHJvcmlnOworCXN0cnVjdCBpZWVlODAyMTFfbWVzaF9yb3V0ZSAqcnR0YXJnID0gTlVMTDsK
KwlzdHJ1Y3QgaWVlZTgwMjExX2h3bXBfcm91dGUgKmhyb3JpZyA9IE5VTEw7CisJc3RydWN0IGll
ZWU4MDIxMV9od21wX3JvdXRlICpocnRhcmcgPSBOVUxMOwogCXN0cnVjdCBpZWVlODAyMTFfaHdt
cF9zdGF0ZSAqaHMgPSB2YXAtPml2X2h3bXA7CiAJc3RydWN0IGllZWU4MDIxMV9tZXNocHJlcF9p
ZSBwcmVwOwogCkBAIC02OTIsNDYgKzY5OCw5NSBAQCBod21wX3JlY3ZfcHJlcShzdHJ1Y3QgaWVl
ZTgwMjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJCXJldHVybjsKIAog
CUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBuaSwKLQkgICAgInJlY2Vp
dmVkIFBSRVEsIHNvdXJjZSAlcyIsIGV0aGVyX3NwcmludGYocHJlcS0+cHJlcV9vcmlnYWRkcikp
OworCSAgICAicmVjZWl2ZWQgUFJFUSwgb3JpZ2luYXRvciAlcywgdGFyZ2V0ICVzIiwKKwkgICAg
ZXRoZXJfc3ByaW50ZihwcmVxLT5wcmVxX29yaWdhZGRyKSwgZXRoZXJfc3ByaW50ZihQUkVRX1RB
RERSKDApKSk7CiAKIAkvKgotCSAqIEFjY2VwdGFuY2UgY3JpdGVyaWE6IGlmIHRoZSBQUkVRIGlz
IG5vdCBmb3IgdXMgYW5kCi0JICogZm9yd2FyZGluZyBpcyBkaXNhYmxlZCwgZGlzY2FyZCB0aGlz
IFBSRVEuCisJICogQWNjZXB0YW5jZSBjcml0ZXJpYTogaWYgdGhlIFBSRVEgaXMgbm90IGZvciB1
cyBvciBub3QgYnJvYWRjYXN0CisJICogQU5EIGZvcndhcmRpbmcgaXMgZGlzYWJsZWQsIGRpc2Nh
cmQgdGhpcyBQUkVRLgorCSAqIFhYWDogbmVlZCB0byBjaGVjayBQUk9YWQogCSAqLwotCWlmICgh
SUVFRTgwMjExX0FERFJfRVEodmFwLT5pdl9teWFkZHIsIFBSRVFfVEFERFIoMCkpICYmCisJaWYg
KCghSUVFRTgwMjExX0FERFJfRVEodmFwLT5pdl9teWFkZHIsIFBSRVFfVEFERFIoMCkpIHx8CisJ
ICAgICFJRUVFODAyMTFfSVNfTVVMVElDQVNUKFBSRVFfVEFERFIoMCkpKSAmJgogCSAgICAhKG1z
LT5tc19mbGFncyAmIElFRUU4MDIxMV9NRVNIRkxBR1NfRldEKSkgewogCQlJRUVFODAyMTFfRElT
Q0FSRF9NQUModmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsCiAJCSAgICBwcmVxLT5wcmVxX29yaWdh
ZGRyLCBOVUxMLCAiJXMiLCAibm90IGFjY2VwdGluZyBQUkVRIik7CiAJCXJldHVybjsKIAl9CisJ
LyoKKwkgKiBBY2NlcHRhbmNlIGNyaXRlcmlhOiBpZiB1bmljYXN0IGFkZHJlc3NlZAorCSAqIEFO
RCBubyB2YWxpZCBmb3J3YXJkaW5nIGZvciBUYXJnZXQgb2YgUFJFUSwgZGlzY2FyZCB0aGlzIFBS
RVEuCisJICovCisJcnR0YXJnID0gaWVlZTgwMjExX21lc2hfcnRfZmluZCh2YXAsIFBSRVFfVEFE
RFIoMCkpOworCWlmKHJ0dGFyZyAhPSBOVUxMKQorCQlocnRhcmcgPSBJRUVFODAyMTFfTUVTSF9S
T1VURV9QUklWKHJ0dGFyZywKKwkJICAgIHN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0ZSk7CisJ
LyogQWRkcmVzcyBtb2RlOiB1Y2FzdCAqLworCWlmKChwcmVxLT5wcmVxX2ZsYWdzICYgSUVFRTgw
MjExX01FU0hQUkVRX0ZMQUdTX0FNKSA9PSAwICYmCisJICAgIHJ0dGFyZyA9PSBOVUxMICYmCisJ
ICAgICFJRUVFODAyMTFfQUREUl9FUSh2YXAtPml2X215YWRkciwgUFJFUV9UQUREUigwKSkpIHsK
KwkJSUVFRTgwMjExX0RJU0NBUkRfTUFDKHZhcCwgSUVFRTgwMjExX01TR19IV01QLAorCQkgICAg
cHJlcS0+cHJlcV9vcmlnYWRkciwgTlVMTCwKKwkJICAgICJ1bmljYXN0IGFkZHJlc3NlZCBQUkVR
IG9mIHVua25vd24gdGFyZ2V0ICVzIiwKKwkJICAgIGV0aGVyX3NwcmludGYoUFJFUV9UQUREUigw
KSkpOworCQlyZXR1cm47CisJfQorCisJLyogUFJFUSBBQ0NFUFRFRCAqLworCiAJcnRvcmlnID0g
aWVlZTgwMjExX21lc2hfcnRfZmluZCh2YXAsIHByZXEtPnByZXFfb3JpZ2FkZHIpOwotCWlmIChy
dG9yaWcgPT0gTlVMTCkKKwlpZiAocnRvcmlnID09IE5VTEwpIHsKIAkJcnRvcmlnID0gaWVlZTgw
MjExX21lc2hfcnRfYWRkKHZhcCwgcHJlcS0+cHJlcV9vcmlnYWRkcik7CisJCUlFRUU4MDIxMV9O
T1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBuaSwKKwkJICAgICJhZGRpbmcgb3JpZ2luYXRv
ciAlcyIsCisJCSAgICBldGhlcl9zcHJpbnRmKHByZXEtPnByZXFfb3JpZ2FkZHIpKTsKKwl9CiAJ
aWYgKHJ0b3JpZyA9PSBOVUxMKSB7CiAJCS8qIFhYWCBzdGF0ICovCiAJCXJldHVybjsKIAl9CiAJ
aHJvcmlnID0gSUVFRTgwMjExX01FU0hfUk9VVEVfUFJJVihydG9yaWcsIHN0cnVjdCBpZWVlODAy
MTFfaHdtcF9yb3V0ZSk7Ci0JLyoKLQkgKiBTZXF1ZW5jZSBudW1iZXIgdmFsaWRhdGlvbi4KKwor
CS8qIERhdGEgY3JlYXRpb24gYW5kIHVwZGF0ZSBvZiBmb3J3YXJkaW5nIGluZm9ybWF0aW9uCisJ
ICogYWNjb3JkaW5nIHRvIFRhYmxlIDExQy04IGZvciBvcmlnaW5hdG9yIG1lc2ggU1RBLgogCSAq
LwotCWlmIChIV01QX1NFUV9MRVEocHJlcS0+cHJlcV9pZCwgaHJvcmlnLT5ocl9wcmVxaWQpICYm
Ci0JICAgIEhXTVBfU0VRX0xFUShwcmVxLT5wcmVxX29yaWdzZXEsIGhyb3JpZy0+aHJfc2VxKSkg
eworCWlmKEhXTVBfU0VRX0dUKHByZXEtPnByZXFfb3JpZ3NlcSwgaHJvcmlnLT5ocl9zZXEpIHx8
CisJICAgIChIV01QX1NFUV9FUShwcmVxLT5wcmVxX29yaWdzZXEsIGhyb3JpZy0+aHJfc2VxKSAm
JgorCSAgICBwcmVxLT5wcmVxX21ldHJpYyA8IHJ0b3JpZy0+cnRfbWV0cmljKSkgeworCQlocm9y
aWctPmhyX3NlcSA9IHByZXEtPnByZXFfb3JpZ3NlcTsKKwkJSUVFRTgwMjExX0FERFJfQ09QWShy
dG9yaWctPnJ0X25leHRob3AsIHdoLT5pX2FkZHIyKTsKKwkJcnRvcmlnLT5ydF9tZXRyaWMgPSBw
cmVxLT5wcmVxX21ldHJpYyArCisJCQltcy0+bXNfcG1ldHJpYy0+bXBtX21ldHJpYyhuaSk7CisJ
CXJ0b3JpZy0+cnRfbmhvcHMgID0gcHJlcS0+cHJlcV9ob3Bjb3VudCArIDE7CisJCXJ0b3JpZy0+
cnRfbGlmZXRpbWUgID0gTUVTSF9ST1VURV9MSUZFVElNRV9NQVgoCisJCSAgICBwcmVxLT5wcmVx
X2xpZmV0aW1lLCBydG9yaWctPnJ0X2xpZmV0aW1lKTsKKwkJLyogcGF0aCB0byBvcmlnIGlzIHZh
bGlkIG5vdyAqLworCQlydG9yaWctPnJ0X2ZsYWdzIHw9IElFRUU4MDIxMV9NRVNIUlRfRkxBR1Nf
VkFMSUQ7CisJfWVsc2UgaWYoaHJ0YXJnICE9IE5VTEwgJiYKKwkJSFdNUF9TRVFfRVEoaHJ0YXJn
LT5ocl9zZXEsIFBSRVFfVFNFUSgwKSkgJiYKKwkJKHJ0b3JpZy0+cnRfZmxhZ3MgJiBJRUVFODAy
MTFfTUVTSFJUX0ZMQUdTX1ZBTElEKSA9PSAwKSB7CiAJCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVF
RTgwMjExX01TR19IV01QLCBuaSwKLQkJICAgICJkaXNjYXJkIFBSRVEgZnJvbSAlcywgb2xkIHNl
cSBubyAldSA8PSAldSIsCi0JCSAgICBldGhlcl9zcHJpbnRmKHByZXEtPnByZXFfb3JpZ2FkZHIp
LAotCQkgICAgcHJlcS0+cHJlcV9vcmlnc2VxLCBocm9yaWctPmhyX3NlcSk7CisJCSAgICAicmVj
ZWl2ZWQgUFJFUSwgb3JpZ2luYXRvciAlcyIsICJ1bmtub3duIik7CisJfWVsc2UgeworCQlJRUVF
ODAyMTFfRElTQ0FSRF9NQUModmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsCisJCSAgICBwcmVxLT5w
cmVxX29yaWdhZGRyLCBOVUxMLAorCQkgICAgIiVzLCBsYXN0IHNlZW4gb3JpZy5zZXEgJWQsIHBy
ZXEgb3JpZy5zZXEgJWQiLAorCQkgICAgImRpc2NhcmRpbmcgUFJFUSIsIGhyb3JpZy0+aHJfc2Vx
LCBwcmVxLT5wcmVxX29yaWdzZXEpOwogCQlyZXR1cm47CiAJfQotCWhyb3JpZy0+aHJfcHJlcWlk
ID0gcHJlcS0+cHJlcV9pZDsKLQlocm9yaWctPmhyX3NlcSA9IHByZXEtPnByZXFfb3JpZ3NlcTsK
KworCS8qCisJICogRm9yd2FyZGluZyBpbmZvcm1hdGlvbiBmb3IgdHJhbnNtaXR0ZXIgbWVzaCBT
VEEKKwkgKiBbT1BUSU9OQUw6IGlmIG1ldHJpYyBpbXByb3ZlZF0KKwkgKi8KIAogCS8qCiAJICog
Q2hlY2sgaWYgdGhlIFBSRVEgaXMgYWRkcmVzc2VkIHRvIHVzLgogCSAqLwogCWlmIChJRUVFODAy
MTFfQUREUl9FUSh2YXAtPml2X215YWRkciwgUFJFUV9UQUREUigwKSkpIHsKIAkJSUVFRTgwMjEx
X05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsIG5pLAotCQkgICAgInJlcGx5IHRvICVzIiwg
ZXRoZXJfc3ByaW50ZihwcmVxLT5wcmVxX29yaWdhZGRyKSk7CisJCSAgICAicmVwbHkgUFJFUCwg
b3JpZ2luYXRvciAlcyIsCisJCSAgICBldGhlcl9zcHJpbnRmKHByZXEtPnByZXFfb3JpZ2FkZHIp
KTsKIAkJLyoKIAkJICogQnVpbGQgYW5kIHNlbmQgYSBQUkVQIGZyYW1lLgogCQkgKi8KQEAgLTgx
OSwyNSArODc0LDI5IEBAIGh3bXBfcmVjdl9wcmVxKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwg
c3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAkJCWlmIChwcmVxLT5wcmVxX3R0bCA+IDEgJiYK
IAkJCSAgICBwcmVxLT5wcmVxX2hvcGNvdW50IDwgaHMtPmhzX21heGhvcHMpIHsKIAkJCQlJRUVF
ODAyMTFfTk9URSh2YXAsIElFRUU4MDIxMV9NU0dfSFdNUCwgbmksCi0JCQkJICAgICJmb3J3YXJk
IFBSRVEgZnJvbSAlcyIsCi0JCQkJICAgIGV0aGVyX3NwcmludGYocHJlcS0+cHJlcV9vcmlnYWRk
cikpOworCQkJCSAgICAiZm9yd2FyZCBQUkVRLCBvcmlnaW5hdG9yICVzLCB0byAlcyIsCisJCQkJ
ICAgIGV0aGVyX3NwcmludGYocHJlcS0+cHJlcV9vcmlnYWRkciksCisJCQkJICAgIGV0aGVyX3Nw
cmludGYocnQtPnJ0X25leHRob3ApKTsKIAkJCQkvKgogCQkJCSAqIFByb3BhZ2F0ZSB0aGUgb3Jp
Z2luYWwgUFJFUS4KKwkJCQkgKiBQUkVRIGlzIHVuaWNhc3Qgbm93IHRvIHJ0LT5ydF9uZXh0aG9w
CiAJCQkJICovCisJCQkJcHByZXEucHJlcV9mbGFncyAmPQorCQkJCSAgICB+SUVFRTgwMjExX01F
U0hQUkVRX0ZMQUdTX0FNOwogCQkJCXBwcmVxLnByZXFfaG9wY291bnQgKz0gMTsKIAkJCQlwcHJl
cS5wcmVxX3R0bCAtPSAxOwogCQkJCXBwcmVxLnByZXFfbWV0cmljICs9CiAJCQkJICAgIG1zLT5t
c19wbWV0cmljLT5tcG1fbWV0cmljKG5pKTsKIAkJCQkvKgotCQkJCSAqIFNldCBUTyBhbmQgdW5z
ZXQgUkYgYml0cyBiZWNhdXNlIHdlIGFyZSBnb2luZwotCQkJCSAqIHRvIHNlbmQgYSBQUkVQIG5l
eHQuCisJCQkJICogU2V0IFRPIGFuZCB1bnNldCBSRiBiaXRzIGJlY2F1c2Ugd2UgYXJlCisJCQkJ
ICogZ29pbmcgdG8gc2VuZCBhIFBSRVAgbmV4dC4KIAkJCQkgKi8KIAkJCQlwcHJlcS5wcmVxX3Rh
cmdldHNbMF0udGFyZ2V0X2ZsYWdzIHw9CiAJCQkJICAgIElFRUU4MDIxMV9NRVNIUFJFUV9URkxB
R1NfVE87CiAJCQkJcHByZXEucHJlcV90YXJnZXRzWzBdLnRhcmdldF9mbGFncyAmPQogCQkJCSAg
ICB+SUVFRTgwMjExX01FU0hQUkVRX1RGTEFHU19SRjsKIAkJCQlod21wX3NlbmRfcHJlcShuaSwg
dmFwLT5pdl9teWFkZHIsCi0JCQkJICAgIGJyb2FkY2FzdGFkZHIsICZwcHJlcSk7CisJCQkJICAg
IHJ0LT5ydF9uZXh0aG9wLCAmcHByZXEpOwogCQkJfQogCQkJLyoKIAkJCSAqIENoZWNrIGlmIHdl
IGNhbiBzZW5kIGFuIGludGVybWVkaWF0ZSBQYXRoIFJlcGx5LApAQCAtODcwLDI2ICs5MjksMTEg
QEAgaHdtcF9yZWN2X3ByZXEoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBzdHJ1Y3QgaWVlZTgw
MjExX25vZGUgKm5pLAogCQkgKi8KIAkJfSBlbHNlIGlmIChwcmVxLT5wcmVxX3R0bCA+IDEgJiYK
IAkJICAgIHByZXEtPnByZXFfaG9wY291bnQgPCBocy0+aHNfbWF4aG9wcykgewotCQkJaWYgKHJ0
ID09IE5VTEwpIHsKLQkJCQlydCA9IGllZWU4MDIxMV9tZXNoX3J0X2FkZCh2YXAsIFBSRVFfVEFE
RFIoMCkpOwotCQkJCWlmIChydCA9PSBOVUxMKSB7Ci0JCQkJCUlFRUU4MDIxMV9OT1RFKHZhcCwg
SUVFRTgwMjExX01TR19IV01QLAotCQkJCQkgICAgbmksICJ1bmFibGUgdG8gYWRkIFBSRVEgcGF0
aCB0byAlcyIsCi0JCQkJCSAgICBldGhlcl9zcHJpbnRmKFBSRVFfVEFERFIoMCkpKTsKLQkJCQkJ
dmFwLT5pdl9zdGF0cy5pc19tZXNoX3J0YWRkZmFpbGVkKys7Ci0JCQkJCXJldHVybjsKLQkJCQl9
Ci0JCQl9Ci0JCQlydC0+cnRfbWV0cmljID0gcHJlcS0+cHJlcV9tZXRyaWM7Ci0JCQlydC0+cnRf
bGlmZXRpbWUgPSBwcmVxLT5wcmVxX2xpZmV0aW1lOwotCQkJaHJvcmlnID0gSUVFRTgwMjExX01F
U0hfUk9VVEVfUFJJVihydCwKLQkJCSAgICBzdHJ1Y3QgaWVlZTgwMjExX2h3bXBfcm91dGUpOwot
CQkJaHJvcmlnLT5ocl9zZXEgPSBwcmVxLT5wcmVxX29yaWdzZXE7Ci0JCQlocm9yaWctPmhyX3By
ZXFpZCA9IHByZXEtPnByZXFfaWQ7Ci0KIAkJCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjEx
X01TR19IV01QLCBuaSwKLQkJCSAgICAiZm9yd2FyZCBQUkVRIGZyb20gJXMiLAotCQkJICAgIGV0
aGVyX3NwcmludGYocHJlcS0+cHJlcV9vcmlnYWRkcikpOworCQkJICAgICJicm9hZGNhc3QgUFJF
USwgb3JpZ2luYXRvciAlcywgdGFyZ2V0ICVzIiwKKwkJCSAgICBldGhlcl9zcHJpbnRmKHByZXEt
PnByZXFfb3JpZ2FkZHIpLAorCQkJICAgIGV0aGVyX3NwcmludGYoUFJFUV9UQUREUigwKSkpOwor
CQkJcHByZXEucHJlcV9mbGFncyB8PSBJRUVFODAyMTFfTUVTSFBSRVFfRkxBR1NfQU07CiAJCQlw
cHJlcS5wcmVxX2hvcGNvdW50ICs9IDE7CiAJCQlwcHJlcS5wcmVxX3R0bCAtPSAxOwogCQkJcHBy
ZXEucHJlcV9tZXRyaWMgKz0gbXMtPm1zX3BtZXRyaWMtPm1wbV9tZXRyaWMobmkpOwpAQCAtODk3
LDcgKzk0MSw2IEBAIGh3bXBfcmVjdl9wcmVxKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgc3Ry
dWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAkJCSAgICAmcHByZXEpOwogCQl9CiAJfQotCiB9CiAj
dW5kZWYJUFJFUV9URkxBR1MKICN1bmRlZglQUkVRX1RBRERSCkBAIC05MjEsNyArOTY0LDcgQEAg
aHdtcF9zZW5kX3ByZXEoc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAkvKgogCSAqIG1lc2gg
cHJlcSBhY3Rpb24gZnJhbWUgZm9ybWF0CiAJICogICAgIFs2XSBkYQotCSAqICAgICBbNl0gc2Eg
CisJICogICAgIFs2XSBzYQogCSAqICAgICBbNl0gYWRkcjMgPSBzYQogCSAqICAgICBbMV0gYWN0
aW9uCiAJICogICAgIFsxXSBjYXRlZ29yeQpAQCAtOTQzLDYgKzk4Niw3IEBAIGh3bXBfcmVjdl9w
cmVwKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwK
IAlzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9IHZhcC0+aXZfaWM7CiAJc3RydWN0IGlmbmV0ICpp
ZnAgPSB2YXAtPml2X2lmcDsKIAlzdHJ1Y3QgbWJ1ZiAqbSwgKm5leHQ7CisJdWludDMyX3QgbWV0
cmljID0gMDsKIAogCS8qCiAJICogQWNjZXB0YW5jZSBjcml0ZXJpYTogaWYgdGhlIGNvcnJlc3Bv
bmRpbmcgUFJFUSB3YXMgbm90IGdlbmVyYXRlZApAQCAtOTU2LDEyICsxMDAwLDE2IEBAIGh3bXBf
cmVjdl9wcmVwKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2Rl
ICpuaSwKIAkJcmV0dXJuOwogCiAJSUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hX
TVAsIG5pLAotCSAgICAicmVjZWl2ZWQgUFJFUCBmcm9tICVzIiwgZXRoZXJfc3ByaW50ZihwcmVw
LT5wcmVwX3RhcmdldGFkZHIpKTsKKwkgICAgInJlY2VpdmVkIFBSRVAsIG9yaWdpbmF0b3IgJXMs
IHRhcmdldCAlcyIsCisJICAgIGV0aGVyX3NwcmludGYocHJlcC0+cHJlcF9vcmlnYWRkciksCisJ
ICAgIGV0aGVyX3NwcmludGYocHJlcC0+cHJlcF90YXJnZXRhZGRyKSk7CiAKIAlydCA9IGllZWU4
MDIxMV9tZXNoX3J0X2ZpbmQodmFwLCBwcmVwLT5wcmVwX3RhcmdldGFkZHIpOwogCWlmIChydCA9
PSBOVUxMKSB7CiAJCS8qCiAJCSAqIElmIHdlIGhhdmUgbm8gZW50cnkgdGhpcyBjb3VsZCBiZSBh
IHJlcGx5IHRvIGEgcm9vdCBQUkVRLgorCQkgKiBYWFg6IG5vdCB0cnVlIGFueW1vcmUgY2F1c2Ug
d2UgZG9udCBjcmVhdGUgZW50cnkgZm9yIHRhcmdldAorCQkgKiAgd2hlbiBwcm9wYWdhdGluZyBQ
UkVRcyBsaWtlIHRoZSBvbGQgY29kZSBkaWQuCiAJCSAqLwogCQlpZiAoaHMtPmhzX3Jvb3Rtb2Rl
ICE9IElFRUU4MDIxMV9IV01QX1JPT1RNT0RFX0RJU0FCTEVEKSB7CiAJCQlydCA9IGllZWU4MDIx
MV9tZXNoX3J0X2FkZCh2YXAsIHByZXAtPnByZXBfdGFyZ2V0YWRkcik7CkBAIC05NzgsMjQgKzEw
MjYsMzYgQEAgaHdtcF9yZWN2X3ByZXAoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBzdHJ1Y3Qg
aWVlZTgwMjExX25vZGUgKm5pLAogCQkJcnQtPnJ0X21ldHJpYyA9IHByZXAtPnByZXBfbWV0cmlj
OwogCQkJcnQtPnJ0X2ZsYWdzIHw9IElFRUU4MDIxMV9NRVNIUlRfRkxBR1NfVkFMSUQ7CiAJCQlJ
RUVFODAyMTFfTk9URSh2YXAsIElFRUU4MDIxMV9NU0dfSFdNUCwgbmksCi0JCQkgICAgImFkZCBy
b290IHBhdGggdG8gJXMgbmhvcHMgJWQgbWV0cmljICVkIChQUkVQKSIsCisJCQkgICAgImFkZCBy
b290IHBhdGggdG8gJXMgbmhvcHMgJWQgbWV0cmljICVsdSAoUFJFUCkiLAogCQkJICAgIGV0aGVy
X3NwcmludGYocHJlcC0+cHJlcF90YXJnZXRhZGRyKSwKIAkJCSAgICBydC0+cnRfbmhvcHMsIHJ0
LT5ydF9tZXRyaWMpOwogCQkJcmV0dXJuOwotCQl9IAorCQl9CiAJCXJldHVybjsKIAl9CiAJLyoK
IAkgKiBTZXF1ZW5jZSBudW1iZXIgdmFsaWRhdGlvbi4KIAkgKi8KIAlociA9IElFRUU4MDIxMV9N
RVNIX1JPVVRFX1BSSVYocnQsIHN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0ZSk7Ci0JaWYgKEhX
TVBfU0VRX0xFUShwcmVwLT5wcmVwX3RhcmdldHNlcSwgaHItPmhyX3NlcSkpIHsKLQkJSUVFRTgw
MjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsIG5pLAotCQkgICAgImRpc2NhcmQgUFJF
UCBmcm9tICVzLCBvbGQgc2VxIG5vICV1IDw9ICV1IiwKLQkJICAgIGV0aGVyX3NwcmludGYocHJl
cC0+cHJlcF90YXJnZXRhZGRyKSwKLQkJICAgIHByZXAtPnByZXBfdGFyZ2V0c2VxLCBoci0+aHJf
c2VxKTsKLQkJcmV0dXJuOworCS8qIEFjY2VwdCBpZiByb3V0ZSBpcyBub3QgdmFsaWQgKi8KKwlp
ZigocnQtPnJ0X2ZsYWdzICYgSUVFRTgwMjExX01FU0hSVF9GTEFHU19WQUxJRCkpIHsKKwkJaWYg
KEhXTVBfU0VRX0xUKHByZXAtPnByZXBfdGFyZ2V0c2VxLCBoci0+aHJfc2VxKSkgeworCQkJSUVF
RTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsIG5pLAorCQkJICAgICJkaXNjYXJk
IFBSRVAgZnJvbSAlcywgb2xkIHNlcSBubyAldSA8ICV1IiwKKwkJCSAgICBldGhlcl9zcHJpbnRm
KHByZXAtPnByZXBfdGFyZ2V0YWRkciksCisJCQkgICAgcHJlcC0+cHJlcF90YXJnZXRzZXEsIGhy
LT5ocl9zZXEpOworCQkJcmV0dXJuOworCQkvKiBJZiBzYW1lIHNlcW5vIGNvbXBhcmUgbWV0cmlj
ICovCisJCX1lbHNlIGlmKEhXTVBfU0VRX0xFUShwcmVwLT5wcmVwX3RhcmdldHNlcSwgaHItPmhy
X3NlcSkgJiYKKwkJICAgIHByZXAtPnByZXBfbWV0cmljID4gcnQtPnJ0X21ldHJpYykgeworCQkJ
SUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsIG5pLAorCQkJICAgICJkaXNj
YXJkIFBSRVAgZnJvbSAlcywgbmV3IG1ldHJpYyAldSA+ICV1IiwKKwkJCSAgICBldGhlcl9zcHJp
bnRmKHByZXAtPnByZXBfdGFyZ2V0YWRkciksCisJCQkgICAgcHJlcC0+cHJlcF9tZXRyaWMsIHJ0
LT5ydF9tZXRyaWMpOworCQkJcmV0dXJuOworCQl9CiAJfQorCiAJaHItPmhyX3NlcSA9IHByZXAt
PnByZXBfdGFyZ2V0c2VxOwogCS8qCiAJICogSWYgaXQncyBOT1QgZm9yIHVzLCBwcm9wYWdhdGUg
dGhlIFBSRVAuCkBAIC0xMDAzLDE2ICsxMDYzLDEzIEBAIGh3bXBfcmVjdl9wcmVwKHN0cnVjdCBp
ZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAlpZiAoIUlFRUU4
MDIxMV9BRERSX0VRKHZhcC0+aXZfbXlhZGRyLCBwcmVwLT5wcmVwX29yaWdhZGRyKSAmJgogCSAg
ICBwcmVwLT5wcmVwX3R0bCA+IDEgJiYgcHJlcC0+cHJlcF9ob3Bjb3VudCA8IGhzLT5oc19tYXho
b3BzKSB7CiAJCXN0cnVjdCBpZWVlODAyMTFfbWVzaHByZXBfaWUgcHByZXA7IC8qIHByb3BhZ2F0
ZWQgUFJFUCAqLwotCiAJCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBu
aSwKIAkJICAgICJwcm9wYWdhdGUgUFJFUCBmcm9tICVzIiwKIAkJICAgIGV0aGVyX3NwcmludGYo
cHJlcC0+cHJlcF90YXJnZXRhZGRyKSk7Ci0KIAkJbWVtY3B5KCZwcHJlcCwgcHJlcCwgc2l6ZW9m
KHBwcmVwKSk7CiAJCXBwcmVwLnByZXBfaG9wY291bnQgKz0gMTsKIAkJcHByZXAucHJlcF90dGwg
LT0gMTsKIAkJcHByZXAucHJlcF9tZXRyaWMgKz0gbXMtPm1zX3BtZXRyaWMtPm1wbV9tZXRyaWMo
bmkpOwotCQlJRUVFODAyMTFfQUREUl9DT1BZKHBwcmVwLnByZXBfdGFyZ2V0YWRkciwgdmFwLT5p
dl9teWFkZHIpOwogCQlod21wX3NlbmRfcHJlcChuaSwgdmFwLT5pdl9teWFkZHIsIGJyb2FkY2Fz
dGFkZHIsICZwcHJlcCk7CiAJfQogCWhyID0gSUVFRTgwMjExX01FU0hfUk9VVEVfUFJJVihydCwg
c3RydWN0IGllZWU4MDIxMV9od21wX3JvdXRlKTsKQEAgLTEwMjIsNyArMTA3OSw5IEBAIGh3bXBf
cmVjdl9wcmVwKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2Rl
ICpuaSwKIAkJICAgICJkaXNjYXJkIFBSRVAgZm9yICVzLCByb3V0ZSBpcyBtYXJrZWQgUFJPWFki
LAogCQkgICAgZXRoZXJfc3ByaW50ZihwcmVwLT5wcmVwX3RhcmdldGFkZHIpKTsKIAkJdmFwLT5p
dl9zdGF0cy5pc19od21wX3Byb3h5Kys7Ci0JfSBlbHNlIGlmIChwcmVwLT5wcmVwX29yaWdzZXEg
PT0gaHItPmhyX29yaWdzZXEpIHsKKwkvKiBOQjogZmlyc3QgcGF0aCBkaXNjb3ZlcnkgYWx3YXlz
IGZhaWxzICovCisJfSBlbHNlIGlmIChoci0+aHJfb3JpZ3NlcSA9PSAwIHx8CisJICAgIHByZXAt
PnByZXBfb3JpZ3NlcSA9PSBoci0+aHJfb3JpZ3NlcSkgewogCQkvKgogCQkgKiBDaGVjayBpZiB3
ZSBhbHJlYWR5IGhhdmUgYSBwYXRoIHRvIHRoaXMgbm9kZS4KIAkJICogSWYgd2UgZG8sIGNoZWNr
IGlmIHRoaXMgcGF0aCByZXBseSBjb250YWlucyBhCkBAIC0xMDMxLDMyICsxMDkwLDM1IEBAIGh3
bXBfcmVjdl9wcmVwKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9u
b2RlICpuaSwKIAkJaWYgKChydC0+cnRfZmxhZ3MgJiBJRUVFODAyMTFfTUVTSFJUX0ZMQUdTX1ZB
TElEKSA9PSAwIHx8CiAJCSAgICAocHJlcC0+cHJlcF9ob3Bjb3VudCA8IHJ0LT5ydF9uaG9wcyB8
fAogCQkgICAgIHByZXAtPnByZXBfbWV0cmljIDwgcnQtPnJ0X21ldHJpYykpIHsKKwkJCWhyLT5o
cl9vcmlnc2VxID0gcHJlcC0+cHJlcF9vcmlnc2VxOworCQkJbWV0cmljID0gcHJlcC0+cHJlcF9t
ZXRyaWMgKworCQkJICAgIG1zLT5tc19wbWV0cmljLT5tcG1fbWV0cmljKG5pKTsKIAkJCUlFRUU4
MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBuaSwKLQkJCSAgICAiJXMgcGF0aCB0
byAlcywgaG9wY291bnQgJWQ6JWQgbWV0cmljICVkOiVkIiwKKwkJCSAgICAiJXMgcGF0aCB0byAl
cywgaG9wY291bnQgJWQ6JWQgbWV0cmljICVsdTolbHUiLAogCQkJICAgIHJ0LT5ydF9mbGFncyAm
IElFRUU4MDIxMV9NRVNIUlRfRkxBR1NfVkFMSUQgPwotCQkJCSJwcmVmZXIiIDogInVwZGF0ZSIs
Ci0JCQkgICAgZXRoZXJfc3ByaW50ZihwcmVwLT5wcmVwX29yaWdhZGRyKSwKLQkJCSAgICBydC0+
cnRfbmhvcHMsIHByZXAtPnByZXBfaG9wY291bnQsCi0JCQkgICAgcnQtPnJ0X21ldHJpYywgcHJl
cC0+cHJlcF9tZXRyaWMpOworCQkJICAgICJwcmVmZXIiIDogInVwZGF0ZSIsCisJCQkgICAgZXRo
ZXJfc3ByaW50ZihwcmVwLT5wcmVwX3RhcmdldGFkZHIpLAorCQkJICAgIHJ0LT5ydF9uaG9wcywg
cHJlcC0+cHJlcF9ob3Bjb3VudCArIDEsCisJCQkgICAgcnQtPnJ0X21ldHJpYywgbWV0cmljKTsK
IAkJCUlFRUU4MDIxMV9BRERSX0NPUFkocnQtPnJ0X25leHRob3AsIHdoLT5pX2FkZHIyKTsKLQkJ
CXJ0LT5ydF9uaG9wcyA9IHByZXAtPnByZXBfaG9wY291bnQ7CisJCQlydC0+cnRfbmhvcHMgPSBw
cmVwLT5wcmVwX2hvcGNvdW50ICsgMTsKIAkJCXJ0LT5ydF9saWZldGltZSA9IHByZXAtPnByZXBf
bGlmZXRpbWU7Ci0JCQlydC0+cnRfbWV0cmljID0gcHJlcC0+cHJlcF9tZXRyaWM7CisJCQlydC0+
cnRfbWV0cmljID0gbWV0cmljOwogCQkJcnQtPnJ0X2ZsYWdzIHw9IElFRUU4MDIxMV9NRVNIUlRf
RkxBR1NfVkFMSUQ7CiAJCX0gZWxzZSB7CiAJCQlJRUVFODAyMTFfTk9URSh2YXAsIElFRUU4MDIx
MV9NU0dfSFdNUCwgbmksCi0JCQkgICAgImlnbm9yZSBQUkVQIGZvciAlcywgaG9wY291bnQgJWQ6
JWQgbWV0cmljICVkOiVkIiwKKwkJCSAgICAiaWdub3JlIFBSRVAgZm9yICVzLCBob3Bjb3VudCAl
ZDolZCBtZXRyaWMgJWx1OiVsdSIsCiAJCQkgICAgZXRoZXJfc3ByaW50ZihwcmVwLT5wcmVwX3Rh
cmdldGFkZHIpLAogCQkJICAgIHJ0LT5ydF9uaG9wcywgcHJlcC0+cHJlcF9ob3Bjb3VudCwKIAkJ
CSAgICBydC0+cnRfbWV0cmljLCBwcmVwLT5wcmVwX21ldHJpYyk7CiAJCX0KIAl9IGVsc2Ugewog
CQlJRUVFODAyMTFfTk9URSh2YXAsIElFRUU4MDIxMV9NU0dfSFdNUCwgbmksCi0JCSAgICAiZGlz
Y2FyZCBQUkVQIGZvciAlcywgd3Jvbmcgc2Vxbm8gJXUgIT0gJXUiLAorCQkgICAgImRpc2NhcmQg
UFJFUCBmb3IgJXMsIHdyb25nIG9yaWcgc2Vxbm8gJXUgIT0gJXUiLAogCQkgICAgZXRoZXJfc3By
aW50ZihwcmVwLT5wcmVwX3RhcmdldGFkZHIpLCBwcmVwLT5wcmVwX29yaWdzZXEsCi0JCSAgICBo
ci0+aHJfc2VxKTsKKwkJICAgIGhyLT5ocl9vcmlnc2VxKTsKIAkJdmFwLT5pdl9zdGF0cy5pc19o
d21wX3dyb25nc2VxKys7Ci0JfSAKKwl9CiAJLyoKIAkgKiBDaGVjayBmb3IgZnJhbWVzIHF1ZXVl
ZCBhd2FpdGluZyBwYXRoIGRpc2NvdmVyeS4KIAkgKiBYWFggcHJvYmFibHkgY2FuIHRlbGwgZXhh
Y3RseSBhbmQgYXZvaWQgcmVtb3ZlIGNhbGwKQEAgLTEwNjQsOSArMTEyNiw5IEBAIGh3bXBfcmVj
dl9wcmVwKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2RlICpu
aSwKIAkgKiAgICAgc3R1Y2sgYmFjayBvbiB0aGUgc3RhZ2VxIGJlY2F1c2UgdGhlcmUgd29uJ3Qg
YmUKIAkgKiAgICAgYSBwYXRoLgogCSAqLwotCW0gPSBpZWVlODAyMTFfYWdlcV9yZW1vdmUoJmlj
LT5pY19zdGFnZXEsIAorCW0gPSBpZWVlODAyMTFfYWdlcV9yZW1vdmUoJmljLT5pY19zdGFnZXEs
CiAJICAgIChzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKikodWludHB0cl90KQotCQlpZWVlODAyMTFf
bWFjX2hhc2goaWMsIHJ0LT5ydF9kZXN0KSk7CisJICAgIGllZWU4MDIxMV9tYWNfaGFzaChpYywg
cnQtPnJ0X2Rlc3QpKTsKIAlmb3IgKDsgbSAhPSBOVUxMOyBtID0gbmV4dCkgewogCQluZXh0ID0g
bS0+bV9uZXh0cGt0OwogCQltLT5tX25leHRwa3QgPSBOVUxMOwpAQCAtMTA4Nyw3ICsxMTQ5LDcg
QEAgaHdtcF9zZW5kX3ByZXAoc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAkvKgogCSAqIG1l
c2ggcHJlcCBhY3Rpb24gZnJhbWUgZm9ybWF0CiAJICogICAgIFs2XSBkYQotCSAqICAgICBbNl0g
c2EgCisJICogICAgIFs2XSBzYQogCSAqICAgICBbNl0gYWRkcjMgPSBzYQogCSAqICAgICBbMV0g
YWN0aW9uCiAJICogICAgIFsxXSBjYXRlZ29yeQpAQCAtMTE0Niw3ICsxMjA4LDcgQEAgaHdtcF9y
ZWN2X3BlcnIoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUg
Km5pLAogCXN0cnVjdCBpZWVlODAyMTFfbWVzaF9zdGF0ZSAqbXMgPSB2YXAtPml2X21lc2g7CiAJ
c3RydWN0IGllZWU4MDIxMV9tZXNoX3JvdXRlICpydCA9IE5VTEw7CiAJc3RydWN0IGllZWU4MDIx
MV9od21wX3JvdXRlICpocjsKLSAJc3RydWN0IGllZWU4MDIxMV9tZXNocGVycl9pZSBwcGVycjsK
KwlzdHJ1Y3QgaWVlZTgwMjExX21lc2hwZXJyX2llIHBwZXJyOwogCWludCBpLCBmb3J3YXJkID0g
MDsKIAogCS8qCkBAIC0xMTY1LDcgKzEyMjcsNyBAQCBod21wX3JlY3ZfcGVycihzdHJ1Y3QgaWVl
ZTgwMjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJCWlmIChydCA9PSBO
VUxMKQogCQkJY29udGludWU7CiAJCWhyID0gSUVFRTgwMjExX01FU0hfUk9VVEVfUFJJVihydCwg
c3RydWN0IGllZWU4MDIxMV9od21wX3JvdXRlKTsKLQkJaWYgKCEoUEVSUl9ERkxBR1MoMCkgJiBJ
RUVFODAyMTFfTUVTSFBFUlJfREZMQUdTX1VTTikgJiYgCisJCWlmICghKFBFUlJfREZMQUdTKDAp
ICYgSUVFRTgwMjExX01FU0hQRVJSX0RGTEFHU19VU04pICYmCiAJCSAgICBIV01QX1NFUV9HRVEo
UEVSUl9EU0VRKGkpLCBoci0+aHJfc2VxKSkgewogCQkJaWVlZTgwMjExX21lc2hfcnRfZGVsKHZh
cCwgcnQtPnJ0X2Rlc3QpOwogCQkJaWVlZTgwMjExX21lc2hfcnRfZmx1c2hfcGVlcih2YXAsIHJ0
LT5ydF9kZXN0KTsKQEAgLTEyNjcsNyArMTMyOSw3IEBAIGh3bXBfc2VuZF9yYW5uKHN0cnVjdCBp
ZWVlODAyMTFfbm9kZSAqbmksCiAJLyoKIAkgKiBtZXNoIHJhbm4gYWN0aW9uIGZyYW1lIGZvcm1h
dAogCSAqICAgICBbNl0gZGEKLQkgKiAgICAgWzZdIHNhIAorCSAqICAgICBbNl0gc2EKIAkgKiAg
ICAgWzZdIGFkZHIzID0gc2EKIAkgKiAgICAgWzFdIGFjdGlvbgogCSAqICAgICBbMV0gY2F0ZWdv
cnkKQEAgLTEzMjMsMTMgKzEzODUsMTUgQEAgaHdtcF9kaXNjb3ZlcihzdHJ1Y3QgaWVlZTgwMjEx
dmFwICp2YXAsCiAJCQkvKiBYWFggY2hlY2sgcHJlcSByZXRyaWVzICovCiAJCQlzZW5kcHJlcSA9
IDE7CiAJCQlJRUVFODAyMTFfTk9URV9NQUModmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsIGRlc3Qs
Ci0JCQkgICAgInN0YXJ0IHBhdGggZGlzY292ZXJ5IChzcmMgJXMpIiwKKwkJCSAgICAic3RhcnQg
cGF0aCBkaXNjb3ZlcnkgKHNyYyAlcyksIHRhcmdldCBzZXEgJXUiLAogCQkJICAgIG0gPT0gTlVM
TCA/ICI8bm9uZT4iIDogZXRoZXJfc3ByaW50ZigKLQkJCQltdG9kKG0sIHN0cnVjdCBldGhlcl9o
ZWFkZXIgKiktPmV0aGVyX3Nob3N0KSk7CisJCQkgICAgbXRvZChtLCBzdHJ1Y3QgZXRoZXJfaGVh
ZGVyICopLT5ldGhlcl9zaG9zdCksCisJCQkgICAgaHItPmhyX3NlcSk7CiAJCQkvKgogCQkJICog
VHJ5IHRvIGRpc2NvdmVyIHRoZSBwYXRoIGZvciB0aGlzIG5vZGUuCisJCQkgKiBHcm91cCBhZGRy
ZXNzZWQgUFJFUSBDYXNlIEEKIAkJCSAqLwotCQkJcHJlcS5wcmVxX2ZsYWdzID0gMDsKKwkJCXBy
ZXEucHJlcV9mbGFncyA9IElFRUU4MDIxMV9NRVNIUFJFUV9GTEFHU19BTTsKIAkJCXByZXEucHJl
cV9ob3Bjb3VudCA9IDA7CiAJCQlwcmVxLnByZXFfdHRsID0gbXMtPm1zX3R0bDsKIAkJCXByZXEu
cHJlcV9pZCA9ICsraHMtPmhzX3ByZXFpZDsKQEAgLTEzNDUsNyArMTQwOSw3IEBAIGh3bXBfZGlz
Y292ZXIoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLAogCQkJaWYgKGllZWU4MDIxMV9od21wX3Jl
cGx5Zm9yd2FyZCkKIAkJCQlQUkVRX1RGTEFHUygwKSB8PSBJRUVFODAyMTFfTUVTSFBSRVFfVEZM
QUdTX1JGOwogCQkJUFJFUV9URkxBR1MoMCkgfD0gSUVFRTgwMjExX01FU0hQUkVRX1RGTEFHU19V
U047Ci0JCQlQUkVRX1RTRVEoMCkgPSAwOworCQkJUFJFUV9UU0VRKDApID0gaHItPmhyX3NlcTsK
IAkJCS8qIFhYWCBjaGVjayByZXR1cm4gdmFsdWUgKi8KIAkJCWh3bXBfc2VuZF9wcmVxKHZhcC0+
aXZfYnNzLCB2YXAtPml2X215YWRkciwKIAkJCSAgICBicm9hZGNhc3RhZGRyLCAmcHJlcSk7CkBA
IC0xMzkxLDcgKzE0NTUsNyBAQCBod21wX2lvY3RsX2dldDgwMjExKHN0cnVjdCBpZWVlODAyMTF2
YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMXJlcSAqaXJlcSkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjEx
X2h3bXBfc3RhdGUgKmhzID0gdmFwLT5pdl9od21wOwogCWludCBlcnJvcjsKLSAKKwogCWlmICh2
YXAtPml2X29wbW9kZSAhPSBJRUVFODAyMTFfTV9NQlNTKQogCQlyZXR1cm4gRU5PU1lTOwogCWVy
cm9yID0gMDsKZGlmZiAtLWdpdCBhL3N5cy9uZXQ4MDIxMS9pZWVlODAyMTFfaW9jdGwuYyBiL3N5
cy9uZXQ4MDIxMS9pZWVlODAyMTFfaW9jdGwuYwppbmRleCAyZTM4OGFlLi5kZjdhNzA0IDEwMDY0
NAotLS0gYS9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX2lvY3RsLmMKKysrIGIvc3lzL25ldDgwMjEx
L2llZWU4MDIxMV9pb2N0bC5jCkBAIC0xMzk3LDYgKzEzOTcsMTcgQEAgc2V0bWxtZV9jb21tb24o
c3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBpbnQgb3AsCiAJCQkgICAgSUVFRTgwMjExX0ZDMF9T
VUJUWVBFX0RFQVVUSCwgcmVhc29uKTsKIAkJCWllZWU4MDIxMV9mcmVlX25vZGUobmkpOwogCQkJ
YnJlYWs7CisJCWNhc2UgSUVFRTgwMjExX01fTUJTUzoKKwkJCUlFRUU4MDIxMV9OT0RFX0xPQ0so
bnQpOworCQkJbmkgPSBpZWVlODAyMTFfZmluZF9ub2RlX2xvY2tlZChudCwgbWFjKTsKKwkJCWlm
IChuaSAhPSBOVUxMKSB7CisJCQkJaWVlZTgwMjExX25vZGVfbGVhdmUobmkpOworCQkJCWllZWU4
MDIxMV9mcmVlX25vZGUobmkpOworCQkJfWVsc2V7CisJCQkJZXJyb3IgPSBFTk9FTlQ7CisJCQl9
CisJCQlJRUVFODAyMTFfTk9ERV9VTkxPQ0sobnQpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJ
CQllcnJvciA9IEVJTlZBTDsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3lzL25ldDgwMjExL2ll
ZWU4MDIxMV9tZXNoLmMgYi9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX21lc2guYwppbmRleCBjZmZm
ZDg3Li42YWRjNDVhIDEwMDY0NAotLS0gYS9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX21lc2guYwor
KysgYi9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX21lc2guYwpAQCAtMzM2LDYgKzMzNiwxNCBAQCBt
ZXNoX3J0X2ZsdXNoX2ludmFsaWQoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwKQogCQlpZiAoKHJ0
LT5ydF9mbGFncyAmIElFRUU4MDIxMV9NRVNIUlRfRkxBR1NfVkFMSUQpID09IDAgJiYKIAkJICAg
IHRpY2tzIC0gcnQtPnJ0X2NydGltZSA+PSBtcy0+bXNfcHBhdGgtPm1wcF9pbmFjdCkKIAkJCW1l
c2hfcnRfZGVsKG1zLCBydCk7CisJCWVsc2UgeworCQkJcnQtPnJ0X2xpZmV0aW1lIC09IDEwMDsg
LyogZGVjcmVhc2UgbGlmZXRpbWUgKi8KKwkJCWlmKHJ0LT5ydF9saWZldGltZSA8PSAwKXsKKwkJ
CQlydC0+cnRfZmxhZ3MgJj0KKwkJCQkgICAgfklFRUU4MDIxMV9NRVNIUlRfRkxBR1NfVkFMSUQ7
IC8qIGludmFsaWRhdGUgKi8KKwkJCQltZXNoX3J0X2RlbChtcywgcnQpOworCQkJfQorCQl9CiAJ
fQogCU1FU0hfUlRfVU5MT0NLKG1zKTsKIH0K
--14dae934053783400c04b6a127c5--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2BsBSo%2BuYa-6w8VFBMTyhWFHCNezMH5HBHJONCRvWRy6QuaCbQ>