Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Mar 2014 02:07:41 -0400
From:      Joe Nosay <superbisquit@gmail.com>
To:        Adrian Chadd <adrian@freebsd.org>, FreeBSD Hackers <freebsd-hackers@freebsd.org>
Subject:   Re: Definition struct and int
Message-ID:  <CA%2BWntOvLHYAxp5_s%2BCrWnQSy5H=G_p07WMRZn-=77Dx2kecr0g@mail.gmail.com>
In-Reply-To: <CA%2BWntOtsBu=1n134r6Te2kVQ4B=o%2BBzmTcKodxHdGEOwSChi9w@mail.gmail.com>
References:  <CA%2BWntOtT_SfQ4KRLyaWSQ8g-kkq3P7-YkJR7siqUZYAb-WtYTQ@mail.gmail.com> <CAJ-Vmok5RTi8SSm3PMXSYDpWonO3O%2BLetvH8ZaPzb66OD61S1A@mail.gmail.com> <CA%2BWntOufKY=7ikh2rNfXbxSKHW=WWKiW9iNXJOwZ%2Bar5GzXa9A@mail.gmail.com> <CA%2BWntOtsBu=1n134r6Te2kVQ4B=o%2BBzmTcKodxHdGEOwSChi9w@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--047d7b5d58b4c09aa004f4c73c6e
Content-Type: text/plain; charset=ISO-8859-1

On Sun, Mar 16, 2014 at 1:07 AM, Joe Nosay <superbisquit@gmail.com> wrote:

>
>
>
> On Fri, Mar 14, 2014 at 5:43 PM, Joe Nosay <superbisquit@gmail.com> wrote:
>
>>
>>
>>
>> On Thu, Mar 13, 2014 at 9:26 PM, Adrian Chadd <adrian@freebsd.org> wrote:
>>
>>> Is this -HEAD, or?
>>>
>>>
>>> -a
>>>
>>>
>>> On 13 March 2014 18:13, Joe Nosay <superbisquit@gmail.com> wrote:
>>> > Testing of a patch for using UDP Lite on FreeBSD caused no compilation
>>> > errors; however, after adding the options of "VIMAGE" and "MROUTING" to
>>> > conf/kern?GENERIC, make buildkernel stops with:
>>> > /usr/src/sys/netinet/udp_usrreq.c:1701:18: error: too few arguments to
>>> > function
>>> >       call, expected 2, have 1
>>> >         udp_discardcb(up);
>>> >         ~~~~~~~~~~~~~   ^
>>> > /usr/src/sys/netinet/udp_usrreq.c:274:1: note: 'udp_discardcb'
>>> declared here
>>> > void
>>> > ^
>>> > 1 error generated.
>>> > *** Error code 1
>>> >
>>> > The file in question of
>>> > /usr/src/sys/netinet/udp_usrreq.c
>>> >
>>> > has the value of
>>> > udp_discardcb(struct udpcb *up, int isudp)
>>> >
>>> > that is causing the problem.
>>> >
>>> >
>>> >
>>> > I believe that the compiler is looking for a value to int isudp but
>>> that
>>> > value does not exist.
>>> > _______________________________________________
>>> > freebsd-hackers@freebsd.org mailing list
>>> > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>>> > To unsubscribe, send any mail to "
>>> freebsd-hackers-unsubscribe@freebsd.org"
>>>
>>
>>
>> No, it is 10.0 RELEASE #0 r262601
>>
>> Last time, I had entered too many files. Here are the relative files.
>>
>>
>>  There was no problem in compiling as listed earlier. I have not studied
>> C enough to solve this problem; however, I can see that int isudp happens
>> once while the next closest account is int isudplite.
>>
>>
>
> I've just upgraded source to head. I have three patches for UDP Lite. The
> question is which one(s) should I use.
>
> The udp-v.diff only has a reference to udp_discardcb up, while patch
> udplite and udplite.diff have the struct and int references.
>
>

Could someone possibly point me towards some online documentation that
would allow me to learn of a solution to this problem? This would be much
better because I would be solving and learning.

Included are the three patches mentioned earlier.

Yes, I will be looking at them again.

Apologies for any noise and if I am coming off the wrong way.

--047d7b5d58b4c09aa004f4c73c6e
Content-Type: text/plain; charset=US-ASCII; name="udp-v.diff"
Content-Disposition: attachment; filename="udp-v.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hsvl791s1

SW5kZXg6IHN5cy9uZXRpbmV0L3VkcF91c3JyZXEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0aW5l
dC91ZHBfdXNycmVxLmMJKHJldmlzaW9uIDI0OTc4NSkKKysrIHN5cy9uZXRpbmV0L3VkcF91c3Jy
ZXEuYwkod29ya2luZyBjb3B5KQpAQCAtOTQ5LDYgKzk0OSw3IEBAIHVkcF9vdXRwdXQoc3RydWN0
IGlucGNiICppbnAsIHN0cnVjdCBtYnVmICptLCBzdHJ1CiAJaW50IGxlbiA9IG0tPm1fcGt0aGRy
LmxlbjsKIAlzdHJ1Y3QgaW5fYWRkciBmYWRkciwgbGFkZHI7CiAJc3RydWN0IGNtc2doZHIgKmNt
OworCXN0cnVjdCBpbnBjYmluZm8gKnBjYmluZm87CiAJc3RydWN0IHNvY2thZGRyX2luICpzaW4s
IHNyYzsKIAlpbnQgZXJyb3IgPSAwOwogCWludCBpcGZsYWdzOwpAQCAtMTA0OSwxMiArMTA1MCwx
MyBAQCB1ZHBfb3V0cHV0KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydQog
CSAqCiAJICogWFhYUlc6IENoZWNrIHRoYXQgaGFzaCBsb2NraW5nIHVwZGF0ZSBoZXJlIGlzIGNv
cnJlY3QuCiAJICovCisJcGNiaW5mbyA9IGlucC0+aW5wX3BjYmluZm87CiAJc2luID0gKHN0cnVj
dCBzb2NrYWRkcl9pbiAqKWFkZHI7CiAJaWYgKHNpbiAhPSBOVUxMICYmCiAJICAgIChpbnAtPmlu
cF9sYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSAmJiBpbnAtPmlucF9scG9ydCA9PSAwKSkgewog
CQlJTlBfUlVOTE9DSyhpbnApOwogCQlJTlBfV0xPQ0soaW5wKTsKLQkJSU5QX0hBU0hfV0xPQ0so
JlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX1dMT0NLKHBjYmluZm8pOwogCQl1bmxvY2tfdWRiaW5m
byA9IFVIX1dMT0NLRUQ7CiAJfSBlbHNlIGlmICgoc2luICE9IE5VTEwgJiYgKAogCSAgICAoc2lu
LT5zaW5fYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSkgfHwKQEAgLTEwNjIsNyArMTA2NCw3IEBA
IHVkcF9vdXRwdXQoc3RydWN0IGlucGNiICppbnAsIHN0cnVjdCBtYnVmICptLCBzdHJ1CiAJICAg
IChpbnAtPmlucF9sYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSkgfHwKIAkgICAgKGlucC0+aW5w
X2xwb3J0ID09IDApKSkgfHwKIAkgICAgKHNyYy5zaW5fZmFtaWx5ID09IEFGX0lORVQpKSB7Ci0J
CUlOUF9IQVNIX1JMT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFTSF9STE9DSyhwY2JpbmZvKTsK
IAkJdW5sb2NrX3VkYmluZm8gPSBVSF9STE9DS0VEOwogCX0gZWxzZQogCQl1bmxvY2tfdWRiaW5m
byA9IFVIX1VOTE9DS0VEOwpAQCAtMTA3NSw3ICsxMDc3LDcgQEAgdWRwX291dHB1dChzdHJ1Y3Qg
aW5wY2IgKmlucCwgc3RydWN0IG1idWYgKm0sIHN0cnUKIAlsYWRkciA9IGlucC0+aW5wX2xhZGRy
OwogCWxwb3J0ID0gaW5wLT5pbnBfbHBvcnQ7CiAJaWYgKHNyYy5zaW5fZmFtaWx5ID09IEFGX0lO
RVQpIHsKLQkJSU5QX0hBU0hfTE9DS19BU1NFUlQoJlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX0xP
Q0tfQVNTRVJUKHBjYmluZm8pOwogCQlpZiAoKGxwb3J0ID09IDApIHx8CiAJCSAgICAobGFkZHIu
c19hZGRyID09IElOQUREUl9BTlkgJiYKIAkJICAgICBzcmMuc2luX2FkZHIuc19hZGRyID09IElO
QUREUl9BTlkpKSB7CkBAIC0xMTI2LDcgKzExMjgsNyBAQCB1ZHBfb3V0cHV0KHN0cnVjdCBpbnBj
YiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydQogCQkgICAgaW5wLT5pbnBfbHBvcnQgPT0gMCB8
fAogCQkgICAgc2luLT5zaW5fYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSB8fAogCQkgICAgc2lu
LT5zaW5fYWRkci5zX2FkZHIgPT0gSU5BRERSX0JST0FEQ0FTVCkgewotCQkJSU5QX0hBU0hfTE9D
S19BU1NFUlQoJlZfdWRiaW5mbyk7CisJCQlJTlBfSEFTSF9MT0NLX0FTU0VSVChwY2JpbmZvKTsK
IAkJCWVycm9yID0gaW5fcGNiY29ubmVjdF9zZXR1cChpbnAsIGFkZHIsICZsYWRkci5zX2FkZHIs
CiAJCQkgICAgJmxwb3J0LCAmZmFkZHIuc19hZGRyLCAmZnBvcnQsIE5VTEwsCiAJCQkgICAgdGQt
PnRkX3VjcmVkKTsKQEAgLTExNDEsNyArMTE0Myw3IEBAIHVkcF9vdXRwdXQoc3RydWN0IGlucGNi
ICppbnAsIHN0cnVjdCBtYnVmICptLCBzdHJ1CiAJCQlpZiAoaW5wLT5pbnBfbGFkZHIuc19hZGRy
ID09IElOQUREUl9BTlkgJiYKIAkJCSAgICBpbnAtPmlucF9scG9ydCA9PSAwKSB7CiAJCQkJSU5Q
X1dMT0NLX0FTU0VSVChpbnApOwotCQkJCUlOUF9IQVNIX1dMT0NLX0FTU0VSVCgmVl91ZGJpbmZv
KTsKKwkJCQlJTlBfSEFTSF9XTE9DS19BU1NFUlQocGNiaW5mbyk7CiAJCQkJLyoKIAkJCQkgKiBS
ZW1lbWJlciBhZGRyIGlmIGphaWxlZCwgdG8gcHJldmVudAogCQkJCSAqIHJlYmluZGluZy4KQEAg
LTEyMzcsOSArMTIzOSw5IEBAIHVkcF9vdXRwdXQoc3RydWN0IGlucGNiICppbnAsIHN0cnVjdCBt
YnVmICptLCBzdHJ1CiAJVURQU1RBVF9JTkModWRwc19vcGFja2V0cyk7CiAKIAlpZiAodW5sb2Nr
X3VkYmluZm8gPT0gVUhfV0xPQ0tFRCkKLQkJSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsK
KwkJSU5QX0hBU0hfV1VOTE9DSyhwY2JpbmZvKTsKIAllbHNlIGlmICh1bmxvY2tfdWRiaW5mbyA9
PSBVSF9STE9DS0VEKQotCQlJTlBfSEFTSF9SVU5MT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFT
SF9SVU5MT0NLKHBjYmluZm8pOwogCWVycm9yID0gaXBfb3V0cHV0KG0sIGlucC0+aW5wX29wdGlv
bnMsIE5VTEwsIGlwZmxhZ3MsCiAJICAgIGlucC0+aW5wX21vcHRpb25zLCBpbnApOwogCWlmICh1
bmxvY2tfdWRiaW5mbyA9PSBVSF9XTE9DS0VEKQpAQCAtMTI1MCwxMCArMTI1MiwxMCBAQCB1ZHBf
b3V0cHV0KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydQogCiByZWxlYXNl
OgogCWlmICh1bmxvY2tfdWRiaW5mbyA9PSBVSF9XTE9DS0VEKSB7Ci0JCUlOUF9IQVNIX1dVTkxP
Q0soJlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX1dVTkxPQ0socGNiaW5mbyk7CiAJCUlOUF9XVU5M
T0NLKGlucCk7CiAJfSBlbHNlIGlmICh1bmxvY2tfdWRiaW5mbyA9PSBVSF9STE9DS0VEKSB7Ci0J
CUlOUF9IQVNIX1JVTkxPQ0soJlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX1JVTkxPQ0socGNiaW5m
byk7CiAJCUlOUF9SVU5MT0NLKGlucCk7CiAJfSBlbHNlCiAJCUlOUF9SVU5MT0NLKGlucCk7CkBA
IC0xNDA1LDEwICsxNDA3LDEwIEBAIHVkcF9hYm9ydChzdHJ1Y3Qgc29ja2V0ICpzbykKIAlLQVNT
RVJUKGlucCAhPSBOVUxMLCAoInVkcF9hYm9ydDogaW5wID09IE5VTEwiKSk7CiAJSU5QX1dMT0NL
KGlucCk7CiAJaWYgKGlucC0+aW5wX2ZhZGRyLnNfYWRkciAhPSBJTkFERFJfQU5ZKSB7Ci0JCUlO
UF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFTSF9XTE9DSyhpbnAtPmlucF9wY2Jp
bmZvKTsKIAkJaW5fcGNiZGlzY29ubmVjdChpbnApOwogCQlpbnAtPmlucF9sYWRkci5zX2FkZHIg
PSBJTkFERFJfQU5ZOwotCQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFT
SF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQlzb2lzZGlzY29ubmVjdGVkKHNvKTsKIAl9
CiAJSU5QX1dVTkxPQ0soaW5wKTsKQEAgLTE0ODEsOSArMTQ4Myw5IEBAIHVkcF9iaW5kKHN0cnVj
dCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbSwKIAlpbnAgPSBzb3RvaW5wY2Ioc28p
OwogCUtBU1NFUlQoaW5wICE9IE5VTEwsICgidWRwX2JpbmQ6IGlucCA9PSBOVUxMIikpOwogCUlO
UF9XTE9DSyhpbnApOwotCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCUlOUF9IQVNIX1dM
T0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWVycm9yID0gaW5fcGNiYmluZChpbnAsIG5hbSwgdGQt
PnRkX3VjcmVkKTsKLQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOworCUlOUF9IQVNIX1dV
TkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJSU5QX1dVTkxPQ0soaW5wKTsKIAlyZXR1cm4gKGVy
cm9yKTsKIH0KQEAgLTE0OTcsMTAgKzE0OTksMTAgQEAgdWRwX2Nsb3NlKHN0cnVjdCBzb2NrZXQg
KnNvKQogCUtBU1NFUlQoaW5wICE9IE5VTEwsICgidWRwX2Nsb3NlOiBpbnAgPT0gTlVMTCIpKTsK
IAlJTlBfV0xPQ0soaW5wKTsKIAlpZiAoaW5wLT5pbnBfZmFkZHIuc19hZGRyICE9IElOQUREUl9B
TlkpIHsKLQkJSU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX1dMT0NLKGlu
cC0+aW5wX3BjYmluZm8pOwogCQlpbl9wY2JkaXNjb25uZWN0KGlucCk7CiAJCWlucC0+aW5wX2xh
ZGRyLnNfYWRkciA9IElOQUREUl9BTlk7Ci0JCUlOUF9IQVNIX1dVTkxPQ0soJlZfdWRiaW5mbyk7
CisJCUlOUF9IQVNIX1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJCXNvaXNkaXNjb25uZWN0
ZWQoc28pOwogCX0KIAlJTlBfV1VOTE9DSyhpbnApOwpAQCAtMTUyNiw5ICsxNTI4LDkgQEAgdWRw
X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqbmEKIAkJSU5QX1dV
TkxPQ0soaW5wKTsKIAkJcmV0dXJuIChlcnJvcik7CiAJfQotCUlOUF9IQVNIX1dMT0NLKCZWX3Vk
YmluZm8pOworCUlOUF9IQVNIX1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWVycm9yID0gaW5f
cGNiY29ubmVjdChpbnAsIG5hbSwgdGQtPnRkX3VjcmVkKTsKLQlJTlBfSEFTSF9XVU5MT0NLKCZW
X3VkYmluZm8pOworCUlOUF9IQVNIX1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJaWYgKGVy
cm9yID09IDApCiAJCXNvaXNjb25uZWN0ZWQoc28pOwogCUlOUF9XVU5MT0NLKGlucCk7CkBAIC0x
NTQ1LDE0ICsxNTQ3LDE0IEBAIHVkcF9kZXRhY2goc3RydWN0IHNvY2tldCAqc28pCiAJS0FTU0VS
VChpbnAgIT0gTlVMTCwgKCJ1ZHBfZGV0YWNoOiBpbnAgPT0gTlVMTCIpKTsKIAlLQVNTRVJUKGlu
cC0+aW5wX2ZhZGRyLnNfYWRkciA9PSBJTkFERFJfQU5ZLAogCSAgICAoInVkcF9kZXRhY2g6IG5v
dCBkaXNjb25uZWN0ZWQiKSk7Ci0JSU5QX0lORk9fV0xPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0lO
Rk9fV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJSU5QX1dMT0NLKGlucCk7CiAJdXAgPSBpbnRv
dWRwY2IoaW5wKTsKIAlLQVNTRVJUKHVwICE9IE5VTEwsICgiJXM6IHVwID09IE5VTEwiLCBfX2Z1
bmNfXykpOwogCWlucC0+aW5wX3BwY2IgPSBOVUxMOwogCWluX3BjYmRldGFjaChpbnApOwogCWlu
X3BjYmZyZWUoaW5wKTsKLQlJTlBfSU5GT19XVU5MT0NLKCZWX3VkYmluZm8pOworCUlOUF9JTkZP
X1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJdWRwX2Rpc2NhcmRjYih1cCk7CiB9CiAKQEAg
LTE1NjgsMTAgKzE1NzAsMTAgQEAgdWRwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28pCiAJ
CUlOUF9XVU5MT0NLKGlucCk7CiAJCXJldHVybiAoRU5PVENPTk4pOwogCX0KLQlJTlBfSEFTSF9X
TE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSEFTSF9XTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAlp
bl9wY2JkaXNjb25uZWN0KGlucCk7CiAJaW5wLT5pbnBfbGFkZHIuc19hZGRyID0gSU5BRERSX0FO
WTsKLQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOworCUlOUF9IQVNIX1dVTkxPQ0soaW5w
LT5pbnBfcGNiaW5mbyk7CiAJU09DS19MT0NLKHNvKTsKIAlzby0+c29fc3RhdGUgJj0gflNTX0lT
Q09OTkVDVEVEOwkJLyogWFhYICovCiAJU09DS19VTkxPQ0soc28pOwpJbmRleDogc3lzL25ldGlu
ZXQ2L3VkcDZfdXNycmVxLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldGluZXQ2L3VkcDZfdXNycmVx
LmMJKHJldmlzaW9uIDI0OTc4NSkKKysrIHN5cy9uZXRpbmV0Ni91ZHA2X3VzcnJlcS5jCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MjYsMTAgKzgyNiwxMCBAQCB1ZHA2X2Fib3J0KHN0cnVjdCBzb2NrZXQg
KnNvKQogCiAJSU5QX1dMT0NLKGlucCk7CiAJaWYgKCFJTjZfSVNfQUREUl9VTlNQRUNJRklFRCgm
aW5wLT5pbjZwX2ZhZGRyKSkgewotCQlJTlBfSEFTSF9XTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5Q
X0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJCWluNl9wY2JkaXNjb25uZWN0KGlucCk7
CiAJCWlucC0+aW42cF9sYWRkciA9IGluNmFkZHJfYW55OwotCQlJTlBfSEFTSF9XVU5MT0NLKCZW
X3VkYmluZm8pOworCQlJTlBfSEFTSF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQlzb2lz
ZGlzY29ubmVjdGVkKHNvKTsKIAl9CiAJSU5QX1dVTkxPQ0soaW5wKTsKQEAgLTg5MSw3ICs4OTEs
NyBAQCB1ZHA2X2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqbmFtLAog
CUtBU1NFUlQoaW5wICE9IE5VTEwsICgidWRwNl9iaW5kOiBpbnAgPT0gTlVMTCIpKTsKIAogCUlO
UF9XTE9DSyhpbnApOwotCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCUlOUF9IQVNIX1dM
T0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWlucC0+aW5wX3ZmbGFnICY9IH5JTlBfSVBWNDsKIAlp
bnAtPmlucF92ZmxhZyB8PSBJTlBfSVBWNjsKIAlpZiAoKGlucC0+aW5wX2ZsYWdzICYgSU42UF9J
UFY2X1Y2T05MWSkgPT0gMCkgewpAQCAtOTE5LDcgKzkxOSw3IEBAIHVkcDZfYmluZChzdHJ1Y3Qg
c29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICpuYW0sCiAjaWZkZWYgSU5FVAogb3V0OgogI2Vu
ZGlmCi0JSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSEFTSF9XVU5MT0NLKGlu
cC0+aW5wX3BjYmluZm8pOwogCUlOUF9XVU5MT0NLKGlucCk7CiAJcmV0dXJuIChlcnJvcik7CiB9
CkBAIC05NDMsMTAgKzk0MywxMCBAQCB1ZHA2X2Nsb3NlKHN0cnVjdCBzb2NrZXQgKnNvKQogI2Vu
ZGlmCiAJSU5QX1dMT0NLKGlucCk7CiAJaWYgKCFJTjZfSVNfQUREUl9VTlNQRUNJRklFRCgmaW5w
LT5pbjZwX2ZhZGRyKSkgewotCQlJTlBfSEFTSF9XTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0hB
U0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJCWluNl9wY2JkaXNjb25uZWN0KGlucCk7CiAJ
CWlucC0+aW42cF9sYWRkciA9IGluNmFkZHJfYW55OwotCQlJTlBfSEFTSF9XVU5MT0NLKCZWX3Vk
YmluZm8pOworCQlJTlBfSEFTSF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQlzb2lzZGlz
Y29ubmVjdGVkKHNvKTsKIAl9CiAJSU5QX1dVTkxPQ0soaW5wKTsKQEAgLTk4NSwxMCArOTg1LDEw
IEBAIHVkcDZfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICpuCiAJ
CWVycm9yID0gcHJpc29uX3JlbW90ZV9pcDQodGQtPnRkX3VjcmVkLCAmc2luLnNpbl9hZGRyKTsK
IAkJaWYgKGVycm9yICE9IDApCiAJCQlnb3RvIG91dDsKLQkJSU5QX0hBU0hfV0xPQ0soJlZfdWRi
aW5mbyk7CisJCUlOUF9IQVNIX1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQllcnJvciA9IGlu
X3BjYmNvbm5lY3QoaW5wLCAoc3RydWN0IHNvY2thZGRyICopJnNpbiwKIAkJICAgIHRkLT50ZF91
Y3JlZCk7Ci0JCUlOUF9IQVNIX1dVTkxPQ0soJlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX1dVTkxP
Q0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJCWlmIChlcnJvciA9PSAwKQogCQkJc29pc2Nvbm5lY3Rl
ZChzbyk7CiAJCWdvdG8gb3V0OwpAQCAtMTAwMyw5ICsxMDAzLDkgQEAgdWRwNl9jb25uZWN0KHN0
cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKm4KIAllcnJvciA9IHByaXNvbl9yZW1v
dGVfaXA2KHRkLT50ZF91Y3JlZCwgJnNpbjYtPnNpbjZfYWRkcik7CiAJaWYgKGVycm9yICE9IDAp
CiAJCWdvdG8gb3V0OwotCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCUlOUF9IQVNIX1dM
T0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWVycm9yID0gaW42X3BjYmNvbm5lY3QoaW5wLCBuYW0s
IHRkLT50ZF91Y3JlZCk7Ci0JSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSEFT
SF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWlmIChlcnJvciA9PSAwKQogCQlzb2lzY29u
bmVjdGVkKHNvKTsKIG91dDoKQEAgLTEwMjIsMTMgKzEwMjIsMTMgQEAgdWRwNl9kZXRhY2goc3Ry
dWN0IHNvY2tldCAqc28pCiAJaW5wID0gc290b2lucGNiKHNvKTsKIAlLQVNTRVJUKGlucCAhPSBO
VUxMLCAoInVkcDZfZGV0YWNoOiBpbnAgPT0gTlVMTCIpKTsKIAotCUlOUF9JTkZPX1dMT0NLKCZW
X3VkYmluZm8pOworCUlOUF9JTkZPX1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCUlOUF9XTE9D
SyhpbnApOwogCXVwID0gaW50b3VkcGNiKGlucCk7CiAJS0FTU0VSVCh1cCAhPSBOVUxMLCAoIiVz
OiB1cCA9PSBOVUxMIiwgX19mdW5jX18pKTsKIAlpbl9wY2JkZXRhY2goaW5wKTsKIAlpbl9wY2Jm
cmVlKGlucCk7Ci0JSU5QX0lORk9fV1VOTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSU5GT19XVU5M
T0NLKGlucC0+aW5wX3BjYmluZm8pOwogCXVkcF9kaXNjYXJkY2IodXApOwogfQogCkBAIC0xMDU4
LDEwICsxMDU4LDEwIEBAIHVkcDZfZGlzY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJZ290
byBvdXQ7CiAJfQogCi0JSU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0hBU0hfV0xP
Q0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJaW42X3BjYmRpc2Nvbm5lY3QoaW5wKTsKIAlpbnAtPmlu
NnBfbGFkZHIgPSBpbjZhZGRyX2FueTsKLQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOwor
CUlOUF9IQVNIX1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJU09DS19MT0NLKHNvKTsKIAlz
by0+c29fc3RhdGUgJj0gflNTX0lTQ09OTkVDVEVEOwkJLyogWFhYICovCiAJU09DS19VTkxPQ0so
c28pOwpAQCAtMTEyOCw5ICsxMTI4LDkgQEAgdWRwNl9zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBp
bnQgZmxhZ3MsIHN0cnVjdCBtYnUKICNpZmRlZiBNQUMKIAltYWNfaW5wY2JfY3JlYXRlX21idWYo
aW5wLCBtKTsKICNlbmRpZgotCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCUlOUF9IQVNI
X1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWVycm9yID0gdWRwNl9vdXRwdXQoaW5wLCBtLCBh
ZGRyLCBjb250cm9sLCB0ZCk7Ci0JSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBf
SEFTSF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogI2lmZGVmIElORVQKICNlbmRpZgkKIAlJ
TlBfV1VOTE9DSyhpbnApOwo=
--047d7b5d58b4c09aa004f4c73c6e
Content-Type: application/octet-stream; name=patch-udplite
Content-Disposition: attachment; filename=patch-udplite
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hsvl74610

SW5kZXg6IGxpYi9saWJjL25ldC9nZXRhZGRyaW5mby5jCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYi9saWJj
L25ldC9nZXRhZGRyaW5mby5jCShyZXZpc2lvbiAyNDg4MTEpCisrKyBsaWIvbGliYy9uZXQvZ2V0
YWRkcmluZm8uYwkod29ya2luZyBjb3B5KQpAQCAtMTcwLDEyICsxNzAsMTQgQEAgc3RhdGljIGNv
bnN0IHN0cnVjdCBleHBsb3JlIGV4cGxvcmVbXSA9IHsKIAl7IFBGX0lORVQ2LCBTT0NLX1NUUkVB
TSwgSVBQUk9UT19UQ1AsIDB4MDcgfSwKIAl7IFBGX0lORVQ2LCBTT0NLX1NUUkVBTSwgSVBQUk9U
T19TQ1RQLCAweDAzIH0sCiAJeyBQRl9JTkVUNiwgU09DS19TRVFQQUNLRVQsIElQUFJPVE9fU0NU
UCwgMHgwNyB9LAorCXsgUEZfSU5FVDYsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQTElURSwgMHgw
MyB9LAogCXsgUEZfSU5FVDYsIFNPQ0tfUkFXLCBBTlksIDB4MDUgfSwKICNlbmRpZgogCXsgUEZf
SU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFAsIDB4MDcgfSwKIAl7IFBGX0lORVQsIFNPQ0tf
U1RSRUFNLCBJUFBST1RPX1RDUCwgMHgwNyB9LAogCXsgUEZfSU5FVCwgU09DS19TVFJFQU0sIElQ
UFJPVE9fU0NUUCwgMHgwMyB9LAogCXsgUEZfSU5FVCwgU09DS19TRVFQQUNLRVQsIElQUFJPVE9f
U0NUUCwgMHgwNyB9LAorCXsgUEZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFBMSVRFLCAw
eDAzIH0sCiAJeyBQRl9JTkVULCBTT0NLX1JBVywgQU5ZLCAweDA1IH0sCiAJeyAtMSwgMCwgMCwg
MCB9LAogfTsKQEAgLTE0NzYsNiArMTQ3OCw5IEBAIGdldF9wb3J0KHN0cnVjdCBhZGRyaW5mbyAq
YWksIGNvbnN0IGNoYXIgKnNlcnZuYW1lCiAJCWNhc2UgSVBQUk9UT19TQ1RQOgogCQkJcHJvdG8g
PSAic2N0cCI7CiAJCQlicmVhazsKKwkJY2FzZSBJUFBST1RPX1VEUExJVEU6CisJCQlwcm90byA9
ICJ1ZHBsaXRlIjsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJcHJvdG8gPSBOVUxMOwogCQkJ
YnJlYWs7CkluZGV4OiBzeXMvbmV0aW5ldC9pbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9uZXRpbmV0
L2luLmMJKHJldmlzaW9uIDI0ODgxMSkKKysrIHN5cy9uZXRpbmV0L2luLmMJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMDUsNiArMTIwNSw3IEBAIGluX2lmZGV0YWNoKHN0cnVjdCBpZm5ldCAqaWZwKQog
CiAJaW5fcGNicHVyZ2VpZjAoJlZfcmlwY2JpbmZvLCBpZnApOwogCWluX3BjYnB1cmdlaWYwKCZW
X3VkYmluZm8sIGlmcCk7CisJaW5fcGNicHVyZ2VpZjAoJlZfdWxpdGVjYmluZm8sIGlmcCk7CiAJ
aW5fcHVyZ2VtYWRkcnMoaWZwKTsKIH0KIApJbmRleDogc3lzL25ldGluZXQvaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBzeXMvbmV0aW5ldC9pbi5oCShyZXZpc2lvbiAyNDg4MTEpCisrKyBzeXMvbmV0aW5l
dC9pbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNiArMjM3LDcgQEAgX19FTkRfREVDTFMKICNk
ZWZpbmUJSVBQUk9UT19JUENPTVAJCTEwOAkJLyogcGF5bG9hZCBjb21wcmVzc2lvbiAoSVBDb21w
KSAqLwogI2RlZmluZQlJUFBST1RPX1NDVFAJCTEzMgkJLyogU0NUUCAqLwogI2RlZmluZQlJUFBS
T1RPX01ICQkxMzUJCS8qIElQdjYgTW9iaWxpdHkgSGVhZGVyICovCisjZGVmaW5lCUlQUFJPVE9f
VURQTElURQkJMTM2CQkvKiBVRFBMaXRlICovCiAvKiAxMDEtMjU0OiBQYXJ0bHkgVW5hc3NpZ25l
ZCAqLwogI2RlZmluZQlJUFBST1RPX1BJTQkJMTAzCQkvKiBQcm90b2NvbCBJbmRlcGVuZGVudCBN
Y2FzdCAqLwogI2RlZmluZQlJUFBST1RPX0NBUlAJCTExMgkJLyogQ0FSUCAqLwpJbmRleDogc3lz
L25ldGluZXQvaW5fcGNiLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldGluZXQvaW5fcGNiLmMJKHJl
dmlzaW9uIDI0ODgxMSkKKysrIHN5cy9uZXRpbmV0L2luX3BjYi5jCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTAsMTMgKzM5MCwxNCBAQCBpbl9wY2JfbHBvcnQoc3RydWN0IGlucGNiICppbnAsIHN0cnVj
dCBpbl9hZGRyICpsYQogCQlsYXN0cG9ydCA9ICZwY2JpbmZvLT5pcGlfbGFzdHBvcnQ7CiAJfQog
CS8qCi0JICogRm9yIFVEUCwgdXNlIHJhbmRvbSBwb3J0IGFsbG9jYXRpb24gYXMgbG9uZyBhcyB0
aGUgdXNlcgorCSAqIEZvciBVRFAoLUxpdGUpLCB1c2UgcmFuZG9tIHBvcnQgYWxsb2NhdGlvbiBh
cyBsb25nIGFzIHRoZSB1c2VyCiAJICogYWxsb3dzIGl0LiAgRm9yIFRDUCAoYW5kIGFzIG9mIHll
dCB1bmtub3duKSBjb25uZWN0aW9ucywKIAkgKiB1c2UgcmFuZG9tIHBvcnQgYWxsb2NhdGlvbiBv
bmx5IGlmIHRoZSB1c2VyIGFsbG93cyBpdCBBTkQKIAkgKiBpcHBvcnRfdGljaygpIGFsbG93cyBp
dC4KIAkgKi8KIAlpZiAoVl9pcHBvcnRfcmFuZG9taXplZCAmJgotCQkoIVZfaXBwb3J0X3N0b3By
YW5kb20gfHwgcGNiaW5mbyA9PSAmVl91ZGJpbmZvKSkKKwkJKCFWX2lwcG9ydF9zdG9wcmFuZG9t
IHx8IHBjYmluZm8gPT0gJlZfdWRiaW5mbyB8fAorCQlwY2JpbmZvID09ICZWX3VsaXRlY2JpbmZv
KSkKIAkJZG9yYW5kb20gPSAxOwogCWVsc2UKIAkJZG9yYW5kb20gPSAwOwpAQCAtNDA2LDggKzQw
Nyw4IEBAIGluX3BjYl9scG9ydChzdHJ1Y3QgaW5wY2IgKmlucCwgc3RydWN0IGluX2FkZHIgKmxh
CiAJICovCiAJaWYgKGZpcnN0ID09IGxhc3QpCiAJCWRvcmFuZG9tID0gMDsKLQkvKiBNYWtlIHN1
cmUgdG8gbm90IGluY2x1ZGUgVURQIHBhY2tldHMgaW4gdGhlIGNvdW50LiAqLwotCWlmIChwY2Jp
bmZvICE9ICZWX3VkYmluZm8pCisJLyogTWFrZSBzdXJlIHRvIG5vdCBpbmNsdWRlIFVEUCgtTGl0
ZSkgcGFja2V0cyBpbiB0aGUgY291bnQuICovCisJaWYgKHBjYmluZm8gIT0gJlZfdWRiaW5mbyB8
fCBwY2JpbmZvICE9ICZWX3VsaXRlY2JpbmZvKQogCQlWX2lwcG9ydF90Y3BhbGxvY3MrKzsKIAkv
KgogCSAqIEluc3RlYWQgb2YgaGF2aW5nIHR3byBsb29wcyBmdXJ0aGVyIGRvd24gY291bnRpbmcg
dXAgb3IgZG93bgpJbmRleDogc3lzL25ldGluZXQvaW5fcHJvdG8uYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBz
eXMvbmV0aW5ldC9pbl9wcm90by5jCShyZXZpc2lvbiAyNDg4MTEpCisrKyBzeXMvbmV0aW5ldC9p
bl9wcm90by5jCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNiArMTg0LDIwIEBAIHN0cnVjdCBwcm90
b3N3IGluZXRzd1tdID0gewogfSwKICNlbmRpZiAvKiBTQ1RQICovCiB7CisJLnByX3R5cGUgPQkJ
U09DS19ER1JBTSwKKwkucHJfZG9tYWluID0JCSZpbmV0ZG9tYWluLAorCS5wcl9wcm90b2NvbCA9
CQlJUFBST1RPX1VEUExJVEUsCisJLnByX2ZsYWdzID0JCVBSX0FUT01JQ3xQUl9BRERSLAorCS5w
cl9pbnB1dCA9CQl1ZHBfaW5wdXQsCisJLnByX2N0bGlucHV0ID0JCXVkcGxpdGVfY3RsaW5wdXQs
CisJLnByX2N0bG91dHB1dCA9CQl1ZHBfY3Rsb3V0cHV0LAorCS5wcl9pbml0ID0JCXVkcGxpdGVf
aW5pdCwKKyNpZmRlZiBWSU1BR0UKKwkucHJfZGVzdHJveSA9CQl1ZHBsaXRlX2Rlc3Ryb3ksCisj
ZW5kaWYKKwkucHJfdXNycmVxcyA9CQkmdWRwX3VzcnJlcXMKK30sCit7CiAJLnByX3R5cGUgPQkJ
U09DS19SQVcsCiAJLnByX2RvbWFpbiA9CQkmaW5ldGRvbWFpbiwKIAkucHJfcHJvdG9jb2wgPQkJ
SVBQUk9UT19SQVcsCkBAIC0zNzAsNiArMzg0LDcgQEAgU1lTQ1RMX05PREUoX25ldF9pbmV0LCBJ
UFBST1RPX1RDUCwJdGNwLAlDVExGTEFHX1IKICNpZmRlZiBTQ1RQCiBTWVNDVExfTk9ERShfbmV0
X2luZXQsIElQUFJPVE9fU0NUUCwJc2N0cCwJQ1RMRkxBR19SVywgMCwJIlNDVFAiKTsKICNlbmRp
ZgorU1lTQ1RMX05PREUoX25ldF9pbmV0LCBJUFBST1RPX1VEUExJVEUsCXVkcGxpdGUsQ1RMRkxB
R19SVywgMCwJIlVEUExpdGUiKTsKIFNZU0NUTF9OT0RFKF9uZXRfaW5ldCwgSVBQUk9UT19JR01Q
LAlpZ21wLAlDVExGTEFHX1JXLCAwLAkiSUdNUCIpOwogI2lmZGVmIElQU0VDCiAvKiBYWFggbm8g
cHJvdG9jb2wgIyB0byB1c2UsIHBpY2sgc29tZXRoaW5nICJyZXNlcnZlZCIgKi8KSW5kZXg6IHN5
cy9uZXRpbmV0L3VkcF91c3JyZXEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0aW5ldC91ZHBfdXNy
cmVxLmMJKHJldmlzaW9uIDI0ODgxMSkKKysrIHN5cy9uZXRpbmV0L3VkcF91c3JyZXEuYwkod29y
a2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjZW5k
aWYKICNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPgogI2luY2x1ZGUgPG5ldGluZXQvdWRwX3Zhci5o
PgorI2luY2x1ZGUgPG5ldGluZXQvdWRwbGl0ZS5oPgogCiAjaWZkZWYgSVBTRUMKICNpbmNsdWRl
IDxuZXRpcHNlYy9pcHNlYy5oPgpAQCAtMTMxLDEzICsxMzIsMTggQEAgdV9sb25nCXVkcF9yZWN2
c3BhY2UgPSA0MCAqICgxMDI0ICsKICNlbmRpZgogCQkJCSAgICAgICk7CiAKKwogU1lTQ1RMX1VM
T05HKF9uZXRfaW5ldF91ZHAsIFVEUENUTF9SRUNWU1BBQ0UsIHJlY3ZzcGFjZSwgQ1RMRkxBR19S
VywKICAgICAmdWRwX3JlY3ZzcGFjZSwgMCwgIk1heGltdW0gc3BhY2UgZm9yIGluY29taW5nIFVE
UCBkYXRhZ3JhbXMiKTsKIAogVk5FVF9ERUZJTkUoc3RydWN0IGlucGNiaGVhZCwgdWRiKTsJCS8q
IGZyb20gdWRwX3Zhci5oICovCiBWTkVUX0RFRklORShzdHJ1Y3QgaW5wY2JpbmZvLCB1ZGJpbmZv
KTsKK1ZORVRfREVGSU5FKHN0cnVjdCBpbnBjYmhlYWQsIHVsaXRlY2IpOworVk5FVF9ERUZJTkUo
c3RydWN0IGlucGNiaW5mbywgdWxpdGVjYmluZm8pOwogc3RhdGljIFZORVRfREVGSU5FKHVtYV96
b25lX3QsIHVkcGNiX3pvbmUpOwotI2RlZmluZQlWX3VkcGNiX3pvbmUJCQlWTkVUKHVkcGNiX3pv
bmUpCitzdGF0aWMgVk5FVF9ERUZJTkUodW1hX3pvbmVfdCwgdWRwbGl0ZWNiX3pvbmUpOworI2Rl
ZmluZQlWX3VkcGNiX3pvbmUJCVZORVQodWRwY2Jfem9uZSkKKyNkZWZpbmUJVl91ZHBsaXRlY2Jf
em9uZQlWTkVUKHVkcGxpdGVjYl96b25lKQogCiAjaWZuZGVmIFVEQkhBU0hTSVpFCiAjZGVmaW5l
CVVEQkhBU0hTSVpFCTEyOApAQCAtMTY3LDEwICsxNzMsMTYgQEAgc3RhdGljIHZvaWQKIHVkcF96
b25lX2NoYW5nZSh2b2lkICp0YWcpCiB7CiAKLQl1bWFfem9uZV9zZXRfbWF4KFZfdWRiaW5mby5p
cGlfem9uZSwgbWF4c29ja2V0cyk7Ci0JdW1hX3pvbmVfc2V0X21heChWX3VkcGNiX3pvbmUsIG1h
eHNvY2tldHMpOworCXVkcF9jb21tb25fem9uZV9jaGFuZ2UoVl91ZGJpbmZvLCBWX3VkcGNiX3pv
bmUpOwogfQogCitzdGF0aWMgdm9pZAordWRwbGl0ZV96b25lX2NoYW5nZSh2b2lkICp0YWcpCit7
CisKKwl1ZHBfY29tbW9uX3pvbmVfY2hhbmdlKFZfdWxpdGVjYmluZm8sIFZfdWRwbGl0ZWNiX3pv
bmUpOworfQorCiBzdGF0aWMgaW50CiB1ZHBfaW5wY2JfaW5pdCh2b2lkICptZW0sIGludCBzaXpl
LCBpbnQgZmxhZ3MpCiB7CkBAIC0xODEsMjEgKzE5MywzNCBAQCB1ZHBfaW5wY2JfaW5pdCh2b2lk
ICptZW0sIGludCBzaXplLCBpbnQgZmxhZ3MpCiAJcmV0dXJuICgwKTsKIH0KIAorc3RhdGljIGlu
dAordWRwbGl0ZV9pbnBjYl9pbml0KHZvaWQgKm1lbSwgaW50IHNpemUsIGludCBmbGFncykKK3sK
KwlzdHJ1Y3QgaW5wY2IgKmlucDsKKworCWlucCA9IG1lbTsKKwlJTlBfTE9DS19JTklUKGlucCwg
ImlucCIsICJ1ZHBsaXRlaW5wIik7CisJcmV0dXJuICgwKTsKK30KKwogdm9pZAogdWRwX2luaXQo
dm9pZCkKIHsKLQotCWluX3BjYmluZm9faW5pdCgmVl91ZGJpbmZvLCAidWRwIiwgJlZfdWRiLCBV
REJIQVNIU0laRSwgVURCSEFTSFNJWkUsCi0JICAgICJ1ZHBfaW5wY2IiLCB1ZHBfaW5wY2JfaW5p
dCwgTlVMTCwgVU1BX1pPTkVfTk9GUkVFLAotCSAgICBJUElfSEFTSEZJRUxEU18yVFVQTEUpOwot
CVZfdWRwY2Jfem9uZSA9IHVtYV96Y3JlYXRlKCJ1ZHBjYiIsIHNpemVvZihzdHJ1Y3QgdWRwY2Ip
LAotCSAgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBVTUFfQUxJR05fUFRSLCBVTUFfWk9ORV9O
T0ZSRUUpOwotCXVtYV96b25lX3NldF9tYXgoVl91ZHBjYl96b25lLCBtYXhzb2NrZXRzKTsKLQl1
bWFfem9uZV9zZXRfd2FybmluZyhWX3VkcGNiX3pvbmUsICJrZXJuLmlwYy5tYXhzb2NrZXRzIGxp
bWl0IHJlYWNoZWQiKTsKKwl1ZHBfY29tbW9uX2luaXQoJlZfdWRiaW5mbywgInVkcCIsICZWX3Vk
YiwgInVkcF9pbnBjYiIsIHVkcF9pbnBjYl9pbml0LAorCSAgICBWX3VkcGNiX3pvbmUsICJ1ZHBj
YiIpOwogCUVWRU5USEFORExFUl9SRUdJU1RFUihtYXhzb2NrZXRzX2NoYW5nZSwgdWRwX3pvbmVf
Y2hhbmdlLCBOVUxMLAogCSAgICBFVkVOVEhBTkRMRVJfUFJJX0FOWSk7CiB9CiAKK3ZvaWQKK3Vk
cGxpdGVfaW5pdCh2b2lkKQoreworCXVkcF9jb21tb25faW5pdCgmVl91bGl0ZWNiaW5mbywgInVk
cGxpdGUiLCAmVl91bGl0ZWNiLCAidWRwbGl0ZV9pbnBjYiIsCisJICAgIHVkcGxpdGVfaW5wY2Jf
aW5pdCwgVl91ZHBsaXRlY2Jfem9uZSwgInVkcGxpdGVjYiIpOworCUVWRU5USEFORExFUl9SRUdJ
U1RFUihtYXhzb2NrZXRzX2NoYW5nZSwgdWRwbGl0ZV96b25lX2NoYW5nZSwgTlVMTCwKKwkgICAg
RVZFTlRIQU5ETEVSX1BSSV9BTlkpOworfQorCiAvKgogICogS2VybmVsIG1vZHVsZSBpbnRlcmZh
Y2UgZm9yIHVwZGF0aW5nIHVkcHN0YXQuICBUaGUgYXJndW1lbnQgaXMgYW4gaW5kZXgKICAqIGlu
dG8gdWRwc3RhdCB0cmVhdGVkIGFzIGFuIGFycmF5IG9mIHVfbG9uZy4gIFdoaWxlIHRoaXMgZW5j
b2RlcyB0aGUKQEAgLTIxNSw3ICsyNDAsMTAgQEAgdWRwX25ld3VkcGNiKHN0cnVjdCBpbnBjYiAq
aW5wKQogewogCXN0cnVjdCB1ZHBjYiAqdXA7CiAKLQl1cCA9IHVtYV96YWxsb2MoVl91ZHBjYl96
b25lLCBNX05PV0FJVCB8IE1fWkVSTyk7CisJaWYgKGlucC0+aW5wX3NvY2tldC0+c29fcHJvdG8t
PnByX3Byb3RvY29sID09IElQUFJPVE9fVURQKQorCQl1cCA9IHVtYV96YWxsb2MoVl91ZHBjYl96
b25lLCBNX05PV0FJVCB8IE1fWkVSTyk7CisJZWxzZQorCQl1cCA9IHVtYV96YWxsb2MoVl91ZHBs
aXRlY2Jfem9uZSwgTV9OT1dBSVQgfCBNX1pFUk8pOwogCWlmICh1cCA9PSBOVUxMKQogCQlyZXR1
cm4gKEVOT0JVRlMpOwogCWlucC0+aW5wX3BwY2IgPSB1cDsKQEAgLTIyMywxMCArMjUxLDEyIEBA
IHVkcF9uZXd1ZHBjYihzdHJ1Y3QgaW5wY2IgKmlucCkKIH0KIAogdm9pZAotdWRwX2Rpc2NhcmRj
YihzdHJ1Y3QgdWRwY2IgKnVwKQordWRwX2Rpc2NhcmRjYihzdHJ1Y3QgdWRwY2IgKnVwLCBpbnQg
aXN1ZHApCiB7Ci0KLQl1bWFfemZyZWUoVl91ZHBjYl96b25lLCB1cCk7CisJaWYgKGlzdWRwKQor
CQl1bWFfemZyZWUoVl91ZHBjYl96b25lLCB1cCk7CisJZWxzZQorCQl1bWFfemZyZWUoVl91ZHBs
aXRlY2Jfem9uZSwgdXApOwogfQogCiAjaWZkZWYgVklNQUdFCkBAIC0yMzQsOSArMjY0LDE1IEBA
IHZvaWQKIHVkcF9kZXN0cm95KHZvaWQpCiB7CiAKLQlpbl9wY2JpbmZvX2Rlc3Ryb3koJlZfdWRi
aW5mbyk7Ci0JdW1hX3pkZXN0cm95KFZfdWRwY2Jfem9uZSk7CisJdWRwX2NvbW1vbl9kZXN0cm95
KCZWX3VkYmluZm8sIFZfdWRwY2Jfem9uZSk7CiB9CisKK3ZvaWQKK3VkcGxpdGVfZGVzdHJveSh2
b2lkKQoreworCisJdWRwX2NvbW1vbl9kZXN0cm95KCZWX3VsaXRlY2JpbmZvLCBWX3VkcGxpdGVj
Yl96b25lKTsKK30KICNlbmRpZgogCiAjaWZkZWYgSU5FVApAQCAtMzM5LDEwICszNzUsMTMgQEAg
dWRwX2lucHV0KHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogCXN0cnVjdCB1ZHBoZHIgKnVoOwog
CXN0cnVjdCBpZm5ldCAqaWZwOwogCXN0cnVjdCBpbnBjYiAqaW5wOworCXN0cnVjdCBpbnBjYmlu
Zm8gKnBjYmluZm87CiAJdWludDE2X3QgbGVuLCBpcF9sZW47CiAJc3RydWN0IGlwIHNhdmVfaXA7
CiAJc3RydWN0IHNvY2thZGRyX2luIHVkcF9pbjsKIAlzdHJ1Y3QgbV90YWcgKmZ3ZF90YWc7CisJ
aW50IGNzY292X3BhcnRpYWw7CisJdWludDhfdCBwcjsKIAogCWlmcCA9IG0tPm1fcGt0aGRyLnJj
dmlmOwogCVVEUFNUQVRfSU5DKHVkcHNfaXBhY2tldHMpOwpAQCAtMzYyLDE0ICs0MDEsMTUgQEAg
dWRwX2lucHV0KHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogCSAqLwogCWlwID0gbXRvZChtLCBz
dHJ1Y3QgaXAgKik7CiAJaWYgKG0tPm1fbGVuIDwgaXBobGVuICsgc2l6ZW9mKHN0cnVjdCB1ZHBo
ZHIpKSB7Ci0JCWlmICgobSA9IG1fcHVsbHVwKG0sIGlwaGxlbiArIHNpemVvZihzdHJ1Y3QgdWRw
aGRyKSkpID09IDApIHsKKwkJaWYgKChtID0gbV9wdWxsdXAobSwgaXBobGVuICsgc2l6ZW9mKHN0
cnVjdCB1ZHBoZHIpKSkgPT0gTlVMTCkgewogCQkJVURQU1RBVF9JTkModWRwc19oZHJvcHMpOwog
CQkJcmV0dXJuOwogCQl9CiAJCWlwID0gbXRvZChtLCBzdHJ1Y3QgaXAgKik7CiAJfQogCXVoID0g
KHN0cnVjdCB1ZHBoZHIgKikoKGNhZGRyX3QpaXAgKyBpcGhsZW4pOwotCisJcHIgPSBpcC0+aXBf
cDsKKwljc2Nvdl9wYXJ0aWFsID0gKHByID09IElQUFJPVE9fVURQTElURSkgPyAxIDogMDsKIAkv
KgogCSAqIERlc3RpbmF0aW9uIHBvcnQgb2YgMCBpcyBpbGxlZ2FsLCBiYXNlZCBvbiBSRkM3Njgu
CiAJICovCkBAIC0zOTIsMTIgKzQzMiwxOSBAQCB1ZHBfaW5wdXQoc3RydWN0IG1idWYgKm0sIGlu
dCBvZmYpCiAJICovCiAJbGVuID0gbnRvaHMoKHVfc2hvcnQpdWgtPnVoX3VsZW4pOwogCWlwX2xl
biA9IG50b2hzKGlwLT5pcF9sZW4pIC0gaXBobGVuOworCWlmIChwciA9PSBJUFBST1RPX1VEUExJ
VEUgJiYgbGVuID09IDApIHsKKwkJLyogWmVybyBtZWFucyBjaGVja3N1bSBvdmVyIHRoZSBjb21w
bGV0ZSBwYWNrZXQuICovCisJCWxlbiA9IGlwX2xlbjsKKwkJY3Njb3ZfcGFydGlhbCA9IDA7CisJ
fQorCiAJaWYgKGlwX2xlbiAhPSBsZW4pIHsKIAkJaWYgKGxlbiA+IGlwX2xlbiB8fCBsZW4gPCBz
aXplb2Yoc3RydWN0IHVkcGhkcikpIHsKIAkJCVVEUFNUQVRfSU5DKHVkcHNfYmFkbGVuKTsKIAkJ
CWdvdG8gYmFkdW5sb2NrZWQ7CiAJCX0KLQkJbV9hZGoobSwgbGVuIC0gaXBfbGVuKTsKKwkJaWYg
KHByID09IElQUFJPVE9fVURQKQorCQkJbV9hZGoobSwgbGVuIC0gaXBfbGVuKTsKIAl9CiAKIAkv
KgpAQCAtNDE1LDIwICs0NjIsMjQgQEAgdWRwX2lucHV0KHN0cnVjdCBtYnVmICptLCBpbnQgb2Zm
KQogCWlmICh1aC0+dWhfc3VtKSB7CiAJCXVfc2hvcnQgdWhfc3VtOwogCi0JCWlmIChtLT5tX3Br
dGhkci5jc3VtX2ZsYWdzICYgQ1NVTV9EQVRBX1ZBTElEKSB7CisJCWlmICgobS0+bV9wa3RoZHIu
Y3N1bV9mbGFncyAmIENTVU1fREFUQV9WQUxJRCkgJiYKKwkJICAgICFjc2Nvdl9wYXJ0aWFsKSB7
CiAJCQlpZiAobS0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIENTVU1fUFNFVURPX0hEUikKIAkJCQl1
aF9zdW0gPSBtLT5tX3BrdGhkci5jc3VtX2RhdGE7CiAJCQllbHNlCiAJCQkJdWhfc3VtID0gaW5f
cHNldWRvKGlwLT5pcF9zcmMuc19hZGRyLAogCQkJCSAgICBpcC0+aXBfZHN0LnNfYWRkciwgaHRv
bmwoKHVfc2hvcnQpbGVuICsKLQkJCQkgICAgbS0+bV9wa3RoZHIuY3N1bV9kYXRhICsgSVBQUk9U
T19VRFApKTsKKwkJCQkgICAgbS0+bV9wa3RoZHIuY3N1bV9kYXRhICsgcHIpKTsKIAkJCXVoX3N1
bSBePSAweGZmZmY7CiAJCX0gZWxzZSB7CiAJCQljaGFyIGJbOV07CiAKIAkJCWJjb3B5KCgoc3Ry
dWN0IGlwb3ZseSAqKWlwKS0+aWhfeDEsIGIsIDkpOwogCQkJYnplcm8oKChzdHJ1Y3QgaXBvdmx5
ICopaXApLT5paF94MSwgOSk7Ci0JCQkoKHN0cnVjdCBpcG92bHkgKilpcCktPmloX2xlbiA9IHVo
LT51aF91bGVuOworCQkJaWYgKHByID09IElQUFJPVE9fVURQKQorCQkJCSgoc3RydWN0IGlwb3Zs
eSAqKWlwKS0+aWhfbGVuID0gdWgtPnVoX3VsZW47CisJCQllbHNlCisJCQkJKChzdHJ1Y3QgaXBv
dmx5ICopaXApLT5paF9sZW4gPSBodG9ucyhpcF9sZW4pOwogCQkJdWhfc3VtID0gaW5fY2tzdW0o
bSwgbGVuICsgc2l6ZW9mIChzdHJ1Y3QgaXApKTsKIAkJCWJjb3B5KGIsICgoc3RydWN0IGlwb3Zs
eSAqKWlwKS0+aWhfeDEsIDkpOwogCQl9CkBAIC00NDAsMTQgKzQ5MSwxOCBAQCB1ZHBfaW5wdXQo
c3RydWN0IG1idWYgKm0sIGludCBvZmYpCiAJfSBlbHNlCiAJCVVEUFNUQVRfSU5DKHVkcHNfbm9z
dW0pOwogCisJcGNiaW5mbyA9IChwciA9PSBJUFBST1RPX1VEUCkgPyAmVl91ZGJpbmZvIDogJlZf
dWxpdGVjYmluZm87CisKIAlpZiAoSU5fTVVMVElDQVNUKG50b2hsKGlwLT5pcF9kc3Quc19hZGRy
KSkgfHwKIAkgICAgaW5fYnJvYWRjYXN0KGlwLT5pcF9kc3QsIGlmcCkpIHsKIAkJc3RydWN0IGlu
cGNiICpsYXN0OworCQlzdHJ1Y3QgaW5wY2JoZWFkICpwY2JsaXN0OwogCQlzdHJ1Y3QgaXBfbW9w
dGlvbnMgKmltbzsKIAotCQlJTlBfSU5GT19STE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0lORk9f
UkxPQ0socGNiaW5mbyk7CisJCXBjYmxpc3QgPSAocHIgPT0gSVBQUk9UT19VRFApID8gJlZfdWRi
IDogJlZfdWxpdGVjYjsKIAkJbGFzdCA9IE5VTEw7Ci0JCUxJU1RfRk9SRUFDSChpbnAsICZWX3Vk
YiwgaW5wX2xpc3QpIHsKKwkJTElTVF9GT1JFQUNIKGlucCwgcGNibGlzdCwgaW5wX2xpc3QpIHsK
IAkJCWlmIChpbnAtPmlucF9scG9ydCAhPSB1aC0+dWhfZHBvcnQpCiAJCQkJY29udGludWU7CiAj
aWZkZWYgSU5FVDYKQEAgLTUzMywxMiArNTg4LDEyIEBAIHVkcF9pbnB1dChzdHJ1Y3QgbWJ1ZiAq
bSwgaW50IG9mZikKIAkJCVVEUFNUQVRfSU5DKHVkcHNfbm9wb3J0YmNhc3QpOwogCQkJaWYgKGlu
cCkKIAkJCQlJTlBfUlVOTE9DSyhpbnApOwotCQkJSU5QX0lORk9fUlVOTE9DSygmVl91ZGJpbmZv
KTsKKwkJCUlOUF9JTkZPX1JVTkxPQ0socGNiaW5mbyk7CiAJCQlnb3RvIGJhZHVubG9ja2VkOwog
CQl9CiAJCXVkcF9hcHBlbmQobGFzdCwgaXAsIG0sIGlwaGxlbiwgJnVkcF9pbik7CiAJCUlOUF9S
VU5MT0NLKGxhc3QpOwotCQlJTlBfSU5GT19SVU5MT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSU5G
T19SVU5MT0NLKHBjYmluZm8pOwogCQlyZXR1cm47CiAJfQogCkBAIC01NTksNyArNjE0LDcgQEAg
dWRwX2lucHV0KHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogCQkgKiBUcmFuc3BhcmVudGx5IGZv
cndhcmRlZC4gUHJldGVuZCB0byBiZSB0aGUgZGVzdGluYXRpb24uCiAJCSAqIEFscmVhZHkgZ290
IG9uZSBsaWtlIHRoaXM/CiAJCSAqLwotCQlpbnAgPSBpbl9wY2Jsb29rdXBfbWJ1ZigmVl91ZGJp
bmZvLCBpcC0+aXBfc3JjLCB1aC0+dWhfc3BvcnQsCisJCWlucCA9IGluX3BjYmxvb2t1cF9tYnVm
KHBjYmluZm8sIGlwLT5pcF9zcmMsIHVoLT51aF9zcG9ydCwKIAkJICAgIGlwLT5pcF9kc3QsIHVo
LT51aF9kcG9ydCwgSU5QTE9PS1VQX1JMT0NLUENCLCBpZnAsIG0pOwogCQlpZiAoIWlucCkgewog
CQkJLyoKQEAgLTU2Nyw3ICs2MjIsNyBAQCB1ZHBfaW5wdXQoc3RydWN0IG1idWYgKm0sIGludCBv
ZmYpCiAJCQkgKiBCZWNhdXNlIHdlJ3ZlIHJld3JpdHRlbiB0aGUgZGVzdGluYXRpb24gYWRkcmVz
cywKIAkJCSAqIGFueSBoYXJkd2FyZS1nZW5lcmF0ZWQgaGFzaCBpcyBpZ25vcmVkLgogCQkJICov
Ci0JCQlpbnAgPSBpbl9wY2Jsb29rdXAoJlZfdWRiaW5mbywgaXAtPmlwX3NyYywKKwkJCWlucCA9
IGluX3BjYmxvb2t1cChwY2JpbmZvLCBpcC0+aXBfc3JjLAogCQkJICAgIHVoLT51aF9zcG9ydCwg
bmV4dF9ob3AtPnNpbl9hZGRyLAogCQkJICAgIG5leHRfaG9wLT5zaW5fcG9ydCA/IGh0b25zKG5l
eHRfaG9wLT5zaW5fcG9ydCkgOgogCQkJICAgIHVoLT51aF9kcG9ydCwgSU5QTE9PS1VQX1dJTERD
QVJEIHwKQEAgLTU3Nyw3ICs2MzIsNyBAQCB1ZHBfaW5wdXQoc3RydWN0IG1idWYgKm0sIGludCBv
ZmYpCiAJCW1fdGFnX2RlbGV0ZShtLCBmd2RfdGFnKTsKIAkJbS0+bV9mbGFncyAmPSB+TV9JUF9O
RVhUSE9QOwogCX0gZWxzZQotCQlpbnAgPSBpbl9wY2Jsb29rdXBfbWJ1ZigmVl91ZGJpbmZvLCBp
cC0+aXBfc3JjLCB1aC0+dWhfc3BvcnQsCisJCWlucCA9IGluX3BjYmxvb2t1cF9tYnVmKHBjYmlu
Zm8sIGlwLT5pcF9zcmMsIHVoLT51aF9zcG9ydCwKIAkJICAgIGlwLT5pcF9kc3QsIHVoLT51aF9k
cG9ydCwgSU5QTE9PS1VQX1dJTERDQVJEIHwKIAkJICAgIElOUExPT0tVUF9STE9DS1BDQiwgaWZw
LCBtKTsKIAlpZiAoaW5wID09IE5VTEwpIHsKQEAgLTYxMyw2ICs2NjgsMTYgQEAgdWRwX2lucHV0
KHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogCQltX2ZyZWVtKG0pOwogCQlyZXR1cm47CiAJfQor
CWlmIChjc2Nvdl9wYXJ0aWFsKSB7CisJCXN0cnVjdCB1ZHBjYiAqdXA7CisKKwkJdXAgPSBpbnRv
dWRwY2IoaW5wKTsKKwkJaWYgKHVwLT51X3J4Y3NsZW4gPiBsZW4pIHsKKwkJCUlOUF9SVU5MT0NL
KGlucCk7CisJCQltX2ZyZWVtKG0pOworCQkJcmV0dXJuOworCQl9CisJfQogCXVkcF9hcHBlbmQo
aW5wLCBpcCwgbSwgaXBobGVuLCAmdWRwX2luKTsKIAlJTlBfUlVOTE9DSyhpbnApOwogCXJldHVy
bjsKQEAgLTY0NCw5ICs3MDksOSBAQCB1ZHBfbm90aWZ5KHN0cnVjdCBpbnBjYiAqaW5wLCBpbnQg
ZXJybm8pCiAJcmV0dXJuIChpbnApOwogfQogCi0jaWZkZWYgSU5FVAotdm9pZAotdWRwX2N0bGlu
cHV0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqc2EsIHZvaWQgKnZpcCkKK3N0YXRpYyB2b2lk
Cit1ZHBfY29tbW9uX2N0bGlucHV0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqc2EsIHZvaWQg
KnZpcCwKKyAgICBzdHJ1Y3QgaW5wY2JpbmZvICpwY2JpbmZvKQogewogCXN0cnVjdCBpcCAqaXAg
PSB2aXA7CiAJc3RydWN0IHVkcGhkciAqdWg7CkBAIC02NzUsNyArNzQwLDcgQEAgdWRwX25vdGlm
eShzdHJ1Y3QgaW5wY2IgKmlucCwgaW50IGVycm5vKQogCQlyZXR1cm47CiAJaWYgKGlwICE9IE5V
TEwpIHsKIAkJdWggPSAoc3RydWN0IHVkcGhkciAqKSgoY2FkZHJfdClpcCArIChpcC0+aXBfaGwg
PDwgMikpOwotCQlpbnAgPSBpbl9wY2Jsb29rdXAoJlZfdWRiaW5mbywgZmFkZHIsIHVoLT51aF9k
cG9ydCwKKwkJaW5wID0gaW5fcGNibG9va3VwKHBjYmluZm8sIGZhZGRyLCB1aC0+dWhfZHBvcnQs
CiAJCSAgICBpcC0+aXBfc3JjLCB1aC0+dWhfc3BvcnQsIElOUExPT0tVUF9STE9DS1BDQiwgTlVM
TCk7CiAJCWlmIChpbnAgIT0gTlVMTCkgewogCQkJSU5QX1JMT0NLX0FTU0VSVChpbnApOwpAQCAt
Njg1LDkgKzc1MCwyMyBAQCB1ZHBfbm90aWZ5KHN0cnVjdCBpbnBjYiAqaW5wLCBpbnQgZXJybm8p
CiAJCQlJTlBfUlVOTE9DSyhpbnApOwogCQl9CiAJfSBlbHNlCi0JCWluX3BjYm5vdGlmeWFsbCgm
Vl91ZGJpbmZvLCBmYWRkciwgaW5ldGN0bGVycm1hcFtjbWRdLAorCQlpbl9wY2Jub3RpZnlhbGwo
cGNiaW5mbywgZmFkZHIsIGluZXRjdGxlcnJtYXBbY21kXSwKIAkJICAgIHVkcF9ub3RpZnkpOwor
CXJldHVybjsKIH0KKworI2lmZGVmIElORVQKK3ZvaWQKK3VkcF9jdGxpbnB1dChpbnQgY21kLCBz
dHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICp2aXApCit7CisJcmV0dXJuICh1ZHBfY29tbW9uX2N0
bGlucHV0KGNtZCwgc2EsIHZpcCwgJlZfdWRiaW5mbykpOworfQorCit2b2lkCit1ZHBsaXRlX2N0
bGlucHV0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqc2EsIHZvaWQgKnZpcCkKK3sKKwlyZXR1
cm4gKHVkcF9jb21tb25fY3RsaW5wdXQoY21kLCBzYSwgdmlwLCAmVl91bGl0ZWNiaW5mbykpOwor
fQogI2VuZGlmIC8qIElORVQgKi8KIAogc3RhdGljIGludApAQCAtODQzLDE2ICs5MjIsMTYgQEAg
U1lTQ1RMX1BST0MoX25ldF9pbmV0X3VkcCwgT0lEX0FVVE8sIGdldGNyZWQsCiBpbnQKIHVkcF9j
dGxvdXRwdXQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nrb3B0ICpzb3B0KQogewotCWlu
dCBlcnJvciA9IDAsIG9wdHZhbDsKKwlpbnQgaXN1ZHBsaXRlLCBlcnJvciwgb3B0dmFsOwogCXN0
cnVjdCBpbnBjYiAqaW5wOwotI2lmZGVmIElQU0VDX05BVF9UCiAJc3RydWN0IHVkcGNiICp1cDsK
LSNlbmRpZgogCisJZXJyb3IgPSAwOworCWlzdWRwbGl0ZSA9IChzby0+c29fcHJvdG8tPnByX3By
b3RvY29sID09IElQUFJPVE9fVURQTElURSkgPyAxIDogMDsKIAlpbnAgPSBzb3RvaW5wY2Ioc28p
OwogCUtBU1NFUlQoaW5wICE9IE5VTEwsICgiJXM6IGlucCA9PSBOVUxMIiwgX19mdW5jX18pKTsK
IAlJTlBfV0xPQ0soaW5wKTsKLQlpZiAoc29wdC0+c29wdF9sZXZlbCAhPSBJUFBST1RPX1VEUCkg
eworCWlmIChzb3B0LT5zb3B0X2xldmVsICE9IHNvLT5zb19wcm90by0+cHJfcHJvdG9jb2wpIHsK
ICNpZmRlZiBJTkVUNgogCQlpZiAoSU5QX0NIRUNLX1NPQ0tBRihzbywgQUZfSU5FVDYpKSB7CiAJ
CQlJTlBfV1VOTE9DSyhpbnApOwpAQCAtOTEwLDcgKzk4OSwzMyBAQCB1ZHBfY3Rsb3V0cHV0KHN0
cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja29wdCAqcwogCQkJfQogCQkJSU5QX1dVTkxPQ0so
aW5wKTsKIAkJCWJyZWFrOworCQljYXNlIFVEUExJVEVfU0VORF9DU0NPVjoKKwkJY2FzZSBVRFBM
SVRFX1JFQ1ZfQ1NDT1Y6CisJCQlpZiAoIWlzdWRwbGl0ZSkKKwkJCQlnb3RvIGJhZF9zZXRvcHRu
YW1lOworCQkJSU5QX1dVTkxPQ0soaW5wKTsKKwkJCWVycm9yID0gc29vcHRjb3B5aW4oc29wdCwg
Jm9wdHZhbCwgc2l6ZW9mKG9wdHZhbCksCisJCQkgICAgc2l6ZW9mKG9wdHZhbCkpOworCQkJaWYg
KGVycm9yKQorCQkJCWJyZWFrOworCQkJaW5wID0gc290b2lucGNiKHNvKTsKKwkJCUtBU1NFUlQo
aW5wICE9IE5VTEwsICgiJXM6IGlucCA9PSBOVUxMIiwgX19mdW5jX18pKTsKKwkJCUlOUF9XTE9D
SyhpbnApOworCQkJdXAgPSBpbnRvdWRwY2IoaW5wKTsKKwkJCUtBU1NFUlQodXAgIT0gTlVMTCwg
KCIlczogdXAgPT0gTlVMTCIsIF9fZnVuY19fKSk7CisJCQlpZiAob3B0dmFsICE9IDAgJiYgb3B0
dmFsIDwgOCkgeworCQkJCWVycm9yID0gRUlOVkFMOworCQkJCUlOUF9XVU5MT0NLKGlucCk7CisJ
CQkJYnJlYWs7CisJCQl9CisJCQlpZiAoc29wdC0+c29wdF9uYW1lID09IFVEUExJVEVfU0VORF9D
U0NPVikKKwkJCQl1cC0+dV90eGNzbGVuID0gb3B0dmFsOworCQkJZWxzZQorCQkJCXVwLT51X3J4
Y3NsZW4gPSBvcHR2YWw7CisJCQlJTlBfV1VOTE9DSyhpbnApOworCQkJYnJlYWs7CiAJCWRlZmF1
bHQ6CitiYWRfc2V0b3B0bmFtZToKIAkJCUlOUF9XVU5MT0NLKGlucCk7CiAJCQllcnJvciA9IEVO
T1BST1RPT1BUOwogCQkJYnJlYWs7CkBAIC05MjcsNyArMTAzMiwyMSBAQCB1ZHBfY3Rsb3V0cHV0
KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja29wdCAqcwogCQkJZXJyb3IgPSBzb29wdGNv
cHlvdXQoc29wdCwgJm9wdHZhbCwgc2l6ZW9mIG9wdHZhbCk7CiAJCQlicmVhazsKICNlbmRpZgor
CQljYXNlIFVEUExJVEVfU0VORF9DU0NPVjoKKwkJY2FzZSBVRFBMSVRFX1JFQ1ZfQ1NDT1Y6CisJ
CQlpZiAoIWlzdWRwbGl0ZSkKKwkJCQlnb3RvIGJhZF9nZXRvcHRuYW1lOworCQkJdXAgPSBpbnRv
dWRwY2IoaW5wKTsKKwkJCUtBU1NFUlQodXAgIT0gTlVMTCwgKCIlczogdXAgPT0gTlVMTCIsIF9f
ZnVuY19fKSk7CisJCQlpZiAoc29wdC0+c29wdF9uYW1lID09IFVEUExJVEVfU0VORF9DU0NPVikK
KwkJCQlvcHR2YWwgPSB1cC0+dV90eGNzbGVuOworCQkJZWxzZQorCQkJCW9wdHZhbCA9IHVwLT51
X3J4Y3NsZW47CisJCQlJTlBfV1VOTE9DSyhpbnApOworCQkJZXJyb3IgPSBzb29wdGNvcHlvdXQo
c29wdCwgJm9wdHZhbCwgc2l6ZW9mKG9wdHZhbCkpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Citi
YWRfZ2V0b3B0bmFtZToKIAkJCUlOUF9XVU5MT0NLKGlucCk7CiAJCQllcnJvciA9IEVOT1BST1RP
T1BUOwogCQkJYnJlYWs7CkBAIC05NDksMTIgKzEwNjgsMTYgQEAgdWRwX291dHB1dChzdHJ1Y3Qg
aW5wY2IgKmlucCwgc3RydWN0IG1idWYgKm0sIHN0cnUKIAlpbnQgbGVuID0gbS0+bV9wa3RoZHIu
bGVuOwogCXN0cnVjdCBpbl9hZGRyIGZhZGRyLCBsYWRkcjsKIAlzdHJ1Y3QgY21zZ2hkciAqY207
CisJc3RydWN0IGlucGNiaW5mbyAqcGNiaW5mbzsKIAlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbiwg
c3JjOworCWludCBjc2Nvdl9wYXJ0aWFsID0gMDsKIAlpbnQgZXJyb3IgPSAwOwogCWludCBpcGZs
YWdzOwogCXVfc2hvcnQgZnBvcnQsIGxwb3J0OwogCWludCB1bmxvY2tfdWRiaW5mbzsKIAl1X2No
YXIgdG9zOworCXVpbnQ4X3QgcHI7CisJdWludDE2X3QgY3Njb3YgPSAwOwogCiAJLyoKIAkgKiB1
ZHBfb3V0cHV0KCkgbWF5IG5lZWQgdG8gdGVtcG9yYXJpbHkgYmluZCBvciBjb25uZWN0IHRoZSBj
dXJyZW50CkBAIC0xMDQ5LDEyICsxMTcyLDEzIEBAIHVkcF9vdXRwdXQoc3RydWN0IGlucGNiICpp
bnAsIHN0cnVjdCBtYnVmICptLCBzdHJ1CiAJICoKIAkgKiBYWFhSVzogQ2hlY2sgdGhhdCBoYXNo
IGxvY2tpbmcgdXBkYXRlIGhlcmUgaXMgY29ycmVjdC4KIAkgKi8KKwlwY2JpbmZvID0gaW5wLT5p
bnBfcGNiaW5mbzsKIAlzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopYWRkcjsKIAlpZiAoc2lu
ICE9IE5VTEwgJiYKIAkgICAgKGlucC0+aW5wX2xhZGRyLnNfYWRkciA9PSBJTkFERFJfQU5ZICYm
IGlucC0+aW5wX2xwb3J0ID09IDApKSB7CiAJCUlOUF9SVU5MT0NLKGlucCk7CiAJCUlOUF9XTE9D
SyhpbnApOwotCQlJTlBfSEFTSF9XTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV0xPQ0so
cGNiaW5mbyk7CiAJCXVubG9ja191ZGJpbmZvID0gVUhfV0xPQ0tFRDsKIAl9IGVsc2UgaWYgKChz
aW4gIT0gTlVMTCAmJiAoCiAJICAgIChzaW4tPnNpbl9hZGRyLnNfYWRkciA9PSBJTkFERFJfQU5Z
KSB8fApAQCAtMTA2Miw3ICsxMTg2LDcgQEAgdWRwX291dHB1dChzdHJ1Y3QgaW5wY2IgKmlucCwg
c3RydWN0IG1idWYgKm0sIHN0cnUKIAkgICAgKGlucC0+aW5wX2xhZGRyLnNfYWRkciA9PSBJTkFE
RFJfQU5ZKSB8fAogCSAgICAoaW5wLT5pbnBfbHBvcnQgPT0gMCkpKSB8fAogCSAgICAoc3JjLnNp
bl9mYW1pbHkgPT0gQUZfSU5FVCkpIHsKLQkJSU5QX0hBU0hfUkxPQ0soJlZfdWRiaW5mbyk7CisJ
CUlOUF9IQVNIX1JMT0NLKHBjYmluZm8pOwogCQl1bmxvY2tfdWRiaW5mbyA9IFVIX1JMT0NLRUQ7
CiAJfSBlbHNlCiAJCXVubG9ja191ZGJpbmZvID0gVUhfVU5MT0NLRUQ7CkBAIC0xMDc1LDcgKzEx
OTksNyBAQCB1ZHBfb3V0cHV0KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3Ry
dQogCWxhZGRyID0gaW5wLT5pbnBfbGFkZHI7CiAJbHBvcnQgPSBpbnAtPmlucF9scG9ydDsKIAlp
ZiAoc3JjLnNpbl9mYW1pbHkgPT0gQUZfSU5FVCkgewotCQlJTlBfSEFTSF9MT0NLX0FTU0VSVCgm
Vl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfTE9DS19BU1NFUlQocGNiaW5mbyk7CiAJCWlmICgobHBv
cnQgPT0gMCkgfHwKIAkJICAgIChsYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSAmJgogCQkgICAg
IHNyYy5zaW5fYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSkpIHsKQEAgLTExMjYsNyArMTI1MCw3
IEBAIHVkcF9vdXRwdXQoc3RydWN0IGlucGNiICppbnAsIHN0cnVjdCBtYnVmICptLCBzdHJ1CiAJ
CSAgICBpbnAtPmlucF9scG9ydCA9PSAwIHx8CiAJCSAgICBzaW4tPnNpbl9hZGRyLnNfYWRkciA9
PSBJTkFERFJfQU5ZIHx8CiAJCSAgICBzaW4tPnNpbl9hZGRyLnNfYWRkciA9PSBJTkFERFJfQlJP
QURDQVNUKSB7Ci0JCQlJTlBfSEFTSF9MT0NLX0FTU0VSVCgmVl91ZGJpbmZvKTsKKwkJCUlOUF9I
QVNIX0xPQ0tfQVNTRVJUKHBjYmluZm8pOwogCQkJZXJyb3IgPSBpbl9wY2Jjb25uZWN0X3NldHVw
KGlucCwgYWRkciwgJmxhZGRyLnNfYWRkciwKIAkJCSAgICAmbHBvcnQsICZmYWRkci5zX2FkZHIs
ICZmcG9ydCwgTlVMTCwKIAkJCSAgICB0ZC0+dGRfdWNyZWQpOwpAQCAtMTE0MSw3ICsxMjY1LDcg
QEAgdWRwX291dHB1dChzdHJ1Y3QgaW5wY2IgKmlucCwgc3RydWN0IG1idWYgKm0sIHN0cnUKIAkJ
CWlmIChpbnAtPmlucF9sYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSAmJgogCQkJICAgIGlucC0+
aW5wX2xwb3J0ID09IDApIHsKIAkJCQlJTlBfV0xPQ0tfQVNTRVJUKGlucCk7Ci0JCQkJSU5QX0hB
U0hfV0xPQ0tfQVNTRVJUKCZWX3VkYmluZm8pOworCQkJCUlOUF9IQVNIX1dMT0NLX0FTU0VSVChw
Y2JpbmZvKTsKIAkJCQkvKgogCQkJCSAqIFJlbWVtYmVyIGFkZHIgaWYgamFpbGVkLCB0byBwcmV2
ZW50CiAJCQkJICogcmViaW5kaW5nLgpAQCAtMTE4OCwxNSArMTMxMiwzNSBAQCB1ZHBfb3V0cHV0
KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydQogCSAqIEZpbGwgaW4gbWJ1
ZiB3aXRoIGV4dGVuZGVkIFVEUCBoZWFkZXIgYW5kIGFkZHJlc3NlcyBhbmQgbGVuZ3RoIHB1dAog
CSAqIGludG8gbmV0d29yayBmb3JtYXQuCiAJICovCisJcHIgPSBJUFBST1RPX1VEUDsKIAl1aSA9
IG10b2QobSwgc3RydWN0IHVkcGlwaGRyICopOwogCWJ6ZXJvKHVpLT51aV94MSwgc2l6ZW9mKHVp
LT51aV94MSkpOwkvKiBYWFggc3RpbGwgbmVlZGVkPyAqLwotCXVpLT51aV9wciA9IElQUFJPVE9f
VURQOwogCXVpLT51aV9zcmMgPSBsYWRkcjsKIAl1aS0+dWlfZHN0ID0gZmFkZHI7CiAJdWktPnVp
X3Nwb3J0ID0gbHBvcnQ7CiAJdWktPnVpX2Rwb3J0ID0gZnBvcnQ7CiAJdWktPnVpX3VsZW4gPSBo
dG9ucygodV9zaG9ydClsZW4gKyBzaXplb2Yoc3RydWN0IHVkcGhkcikpOwogCisJaWYgKGlucC0+
aW5wX3NvY2tldC0+c29fcHJvdG8tPnByX3Byb3RvY29sID09IElQUFJPVE9fVURQTElURSkgewor
CQlzdHJ1Y3QgdWRwY2IgKnVwOworCQl1aW50MTZfdCBwbGVuOworCisJCXByID0gSVBQUk9UT19V
RFBMSVRFOworCQl1cCA9IGludG91ZHBjYihpbnApOworCQljc2NvdiA9IHVwLT51X3R4Y3NsZW47
CisJCXBsZW4gPSAodV9zaG9ydClsZW4gKyBzaXplb2Yoc3RydWN0IHVkcGhkcik7CisJCWlmIChj
c2NvdiA+PSBwbGVuKQorCQkJY3Njb3YgPSAwOworCQl1aS0+dWlfbGVuID0gaHRvbnMocGxlbik7
CisJCXVpLT51aV91bGVuID0gaHRvbnMoY3Njb3YpOworCisJCS8qIEZvciBVRFBMaXRlLCBjaGVj
a3N1bSBjb3ZlcmFnZSBsZW5ndGggb2YgemVybyBtZWFucworCQkgKiB0aGUgZW50aXJlIFVEUExp
dGUgcGFja2V0IGlzIGNvdmVyZWQgYnkgdGhlIGNoZWNrc3VtLgorCQkgKi8KKwkJY3Njb3ZfcGFy
dGlhbCA9IChjc2NvdiA9PSAwKSA/IDAgOiAxOworCX0KKwl1aS0+dWlfcHIgPSBwcjsKKwogCS8q
CiAJICogU2V0IHRoZSBEb24ndCBGcmFnbWVudCBiaXQgaW4gdGhlIElQIGhlYWRlci4KIAkgKi8K
QEAgLTEyMjIsMjQgKzEzNjYsMjkgQEAgdWRwX291dHB1dChzdHJ1Y3QgaW5wY2IgKmlucCwgc3Ry
dWN0IG1idWYgKm0sIHN0cnUKIAkvKgogCSAqIFNldCB1cCBjaGVja3N1bSBhbmQgb3V0cHV0IGRh
dGFncmFtLgogCSAqLwotCWlmIChWX3VkcF9ja3N1bSkgeworCXVpLT51aV9zdW0gPSAwOworCWlm
IChjc2Nvdl9wYXJ0aWFsKSB7CiAJCWlmIChpbnAtPmlucF9mbGFncyAmIElOUF9PTkVTQkNBU1Qp
CiAJCQlmYWRkci5zX2FkZHIgPSBJTkFERFJfQlJPQURDQVNUOworCQlpZiAoKHVpLT51aV9zdW0g
PSBpbl9ja3N1bShtLCBzaXplb2Yoc3RydWN0IGlwKSArIGNzY292KSkgPT0gMCkKKwkJCXVpLT51
aV9zdW0gPSAweGZmZmY7CisJfSBlbHNlIGlmIChWX3VkcF9ja3N1bSB8fCAhY3Njb3ZfcGFydGlh
bCkgeworCQlpZiAoaW5wLT5pbnBfZmxhZ3MgJiBJTlBfT05FU0JDQVNUKQorCQkJZmFkZHIuc19h
ZGRyID0gSU5BRERSX0JST0FEQ0FTVDsKIAkJdWktPnVpX3N1bSA9IGluX3BzZXVkbyh1aS0+dWlf
c3JjLnNfYWRkciwgZmFkZHIuc19hZGRyLAotCQkgICAgaHRvbnMoKHVfc2hvcnQpbGVuICsgc2l6
ZW9mKHN0cnVjdCB1ZHBoZHIpICsgSVBQUk9UT19VRFApKTsKKwkJICAgIGh0b25zKCh1X3Nob3J0
KWxlbiArIHNpemVvZihzdHJ1Y3QgdWRwaGRyKSArIHByKSk7CiAJCW0tPm1fcGt0aGRyLmNzdW1f
ZmxhZ3MgPSBDU1VNX1VEUDsKIAkJbS0+bV9wa3RoZHIuY3N1bV9kYXRhID0gb2Zmc2V0b2Yoc3Ry
dWN0IHVkcGhkciwgdWhfc3VtKTsKLQl9IGVsc2UKLQkJdWktPnVpX3N1bSA9IDA7CisJfQogCSgo
c3RydWN0IGlwICopdWkpLT5pcF9sZW4gPSBodG9ucyhzaXplb2Yoc3RydWN0IHVkcGlwaGRyKSAr
IGxlbik7CiAJKChzdHJ1Y3QgaXAgKil1aSktPmlwX3R0bCA9IGlucC0+aW5wX2lwX3R0bDsJLyog
WFhYICovCiAJKChzdHJ1Y3QgaXAgKil1aSktPmlwX3RvcyA9IHRvczsJCS8qIFhYWCAqLwogCVVE
UFNUQVRfSU5DKHVkcHNfb3BhY2tldHMpOwogCiAJaWYgKHVubG9ja191ZGJpbmZvID09IFVIX1dM
T0NLRUQpCi0JCUlOUF9IQVNIX1dVTkxPQ0soJlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX1dVTkxP
Q0socGNiaW5mbyk7CiAJZWxzZSBpZiAodW5sb2NrX3VkYmluZm8gPT0gVUhfUkxPQ0tFRCkKLQkJ
SU5QX0hBU0hfUlVOTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfUlVOTE9DSyhwY2JpbmZv
KTsKIAllcnJvciA9IGlwX291dHB1dChtLCBpbnAtPmlucF9vcHRpb25zLCBOVUxMLCBpcGZsYWdz
LAogCSAgICBpbnAtPmlucF9tb3B0aW9ucywgaW5wKTsKIAlpZiAodW5sb2NrX3VkYmluZm8gPT0g
VUhfV0xPQ0tFRCkKQEAgLTEyNTAsMTAgKzEzOTksMTAgQEAgdWRwX291dHB1dChzdHJ1Y3QgaW5w
Y2IgKmlucCwgc3RydWN0IG1idWYgKm0sIHN0cnUKIAogcmVsZWFzZToKIAlpZiAodW5sb2NrX3Vk
YmluZm8gPT0gVUhfV0xPQ0tFRCkgewotCQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOwor
CQlJTlBfSEFTSF9XVU5MT0NLKHBjYmluZm8pOwogCQlJTlBfV1VOTE9DSyhpbnApOwogCX0gZWxz
ZSBpZiAodW5sb2NrX3VkYmluZm8gPT0gVUhfUkxPQ0tFRCkgewotCQlJTlBfSEFTSF9SVU5MT0NL
KCZWX3VkYmluZm8pOworCQlJTlBfSEFTSF9SVU5MT0NLKHBjYmluZm8pOwogCQlJTlBfUlVOTE9D
SyhpbnApOwogCX0gZWxzZQogCQlJTlBfUlVOTE9DSyhpbnApOwpAQCAtMTQwNSwxMCArMTU1NCwx
MCBAQCB1ZHBfYWJvcnQoc3RydWN0IHNvY2tldCAqc28pCiAJS0FTU0VSVChpbnAgIT0gTlVMTCwg
KCJ1ZHBfYWJvcnQ6IGlucCA9PSBOVUxMIikpOwogCUlOUF9XTE9DSyhpbnApOwogCWlmIChpbnAt
PmlucF9mYWRkci5zX2FkZHIgIT0gSU5BRERSX0FOWSkgewotCQlJTlBfSEFTSF9XTE9DSygmVl91
ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJCWluX3BjYmRp
c2Nvbm5lY3QoaW5wKTsKIAkJaW5wLT5pbnBfbGFkZHIuc19hZGRyID0gSU5BRERSX0FOWTsKLQkJ
SU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV1VOTE9DSyhpbnAtPmlu
cF9wY2JpbmZvKTsKIAkJc29pc2Rpc2Nvbm5lY3RlZChzbyk7CiAJfQogCUlOUF9XVU5MT0NLKGlu
cCk7CkBAIC0xNDE4LDE3ICsxNTY3LDIzIEBAIHN0YXRpYyBpbnQKIHVkcF9hdHRhY2goc3RydWN0
IHNvY2tldCAqc28sIGludCBwcm90bywgc3RydWN0IHRocmVhZCAqdGQpCiB7CiAJc3RydWN0IGlu
cGNiICppbnA7CisgICAgICAgIHN0cnVjdCBpbnBjYmluZm8gKnBjYmluZm87CiAJaW50IGVycm9y
OwogCisJaWYgKHNvLT5zb19wcm90by0+cHJfcHJvdG9jb2wgPT0gSVBQUk9UT19VRFApCisJCXBj
YmluZm8gPSAmVl91ZGJpbmZvOworCWVsc2UKKwkJcGNiaW5mbyA9ICZWX3VsaXRlY2JpbmZvOwor
CiAJaW5wID0gc290b2lucGNiKHNvKTsKIAlLQVNTRVJUKGlucCA9PSBOVUxMLCAoInVkcF9hdHRh
Y2g6IGlucCAhPSBOVUxMIikpOwogCWVycm9yID0gc29yZXNlcnZlKHNvLCB1ZHBfc2VuZHNwYWNl
LCB1ZHBfcmVjdnNwYWNlKTsKIAlpZiAoZXJyb3IpCiAJCXJldHVybiAoZXJyb3IpOwotCUlOUF9J
TkZPX1dMT0NLKCZWX3VkYmluZm8pOwotCWVycm9yID0gaW5fcGNiYWxsb2Moc28sICZWX3VkYmlu
Zm8pOworCUlOUF9JTkZPX1dMT0NLKHBjYmluZm8pOworCWVycm9yID0gaW5fcGNiYWxsb2Moc28s
IHBjYmluZm8pOwogCWlmIChlcnJvcikgewotCQlJTlBfSU5GT19XVU5MT0NLKCZWX3VkYmluZm8p
OworCQlJTlBfSU5GT19XVU5MT0NLKHBjYmluZm8pOwogCQlyZXR1cm4gKGVycm9yKTsKIAl9CiAK
QEAgLTE0NDAsMTMgKzE1OTUsMTQgQEAgdWRwX2F0dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50
IHByb3RvLCBzdHJ1Y3QgdGgKIAlpZiAoZXJyb3IpIHsKIAkJaW5fcGNiZGV0YWNoKGlucCk7CiAJ
CWluX3BjYmZyZWUoaW5wKTsKLQkJSU5QX0lORk9fV1VOTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5Q
X0lORk9fV1VOTE9DSyhwY2JpbmZvKTsKIAkJcmV0dXJuIChlcnJvcik7CiAJfQogCiAJSU5QX1dV
TkxPQ0soaW5wKTsKLQlJTlBfSU5GT19XVU5MT0NLKCZWX3VkYmluZm8pOworCUlOUF9JTkZPX1dV
TkxPQ0socGNiaW5mbyk7CiAJcmV0dXJuICgwKTsKKwogfQogI2VuZGlmIC8qIElORVQgKi8KIApA
QCAtMTQ4MSw5ICsxNjM3LDkgQEAgdWRwX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBz
b2NrYWRkciAqbmFtLAogCWlucCA9IHNvdG9pbnBjYihzbyk7CiAJS0FTU0VSVChpbnAgIT0gTlVM
TCwgKCJ1ZHBfYmluZDogaW5wID09IE5VTEwiKSk7CiAJSU5QX1dMT0NLKGlucCk7Ci0JSU5QX0hB
U0hfV0xPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7
CiAJZXJyb3IgPSBpbl9wY2JiaW5kKGlucCwgbmFtLCB0ZC0+dGRfdWNyZWQpOwotCUlOUF9IQVNI
X1dVTkxPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0hBU0hfV1VOTE9DSyhpbnAtPmlucF9wY2JpbmZv
KTsKIAlJTlBfV1VOTE9DSyhpbnApOwogCXJldHVybiAoZXJyb3IpOwogfQpAQCAtMTQ5NywxMCAr
MTY1MywxMCBAQCB1ZHBfY2xvc2Uoc3RydWN0IHNvY2tldCAqc28pCiAJS0FTU0VSVChpbnAgIT0g
TlVMTCwgKCJ1ZHBfY2xvc2U6IGlucCA9PSBOVUxMIikpOwogCUlOUF9XTE9DSyhpbnApOwogCWlm
IChpbnAtPmlucF9mYWRkci5zX2FkZHIgIT0gSU5BRERSX0FOWSkgewotCQlJTlBfSEFTSF9XTE9D
SygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJCWlu
X3BjYmRpc2Nvbm5lY3QoaW5wKTsKIAkJaW5wLT5pbnBfbGFkZHIuc19hZGRyID0gSU5BRERSX0FO
WTsKLQkJSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV1VOTE9DSyhp
bnAtPmlucF9wY2JpbmZvKTsKIAkJc29pc2Rpc2Nvbm5lY3RlZChzbyk7CiAJfQogCUlOUF9XVU5M
T0NLKGlucCk7CkBAIC0xNTI2LDkgKzE2ODIsOSBAQCB1ZHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0
ICpzbywgc3RydWN0IHNvY2thZGRyICpuYQogCQlJTlBfV1VOTE9DSyhpbnApOwogCQlyZXR1cm4g
KGVycm9yKTsKIAl9Ci0JSU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0hBU0hfV0xP
Q0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJZXJyb3IgPSBpbl9wY2Jjb25uZWN0KGlucCwgbmFtLCB0
ZC0+dGRfdWNyZWQpOwotCUlOUF9IQVNIX1dVTkxPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0hBU0hf
V1VOTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAlpZiAoZXJyb3IgPT0gMCkKIAkJc29pc2Nvbm5l
Y3RlZChzbyk7CiAJSU5QX1dVTkxPQ0soaW5wKTsKQEAgLTE1NDAsMjAgKzE2OTYsMjMgQEAgdWRw
X2RldGFjaChzdHJ1Y3Qgc29ja2V0ICpzbykKIHsKIAlzdHJ1Y3QgaW5wY2IgKmlucDsKIAlzdHJ1
Y3QgdWRwY2IgKnVwOworCWludCBpc3VkcDsKIAorCWlzdWRwID0gKHNvLT5zb19wcm90by0+cHJf
cHJvdG9jb2wgPT0gSVBQUk9UT19VRFApID8gMSA6IDA7CisKIAlpbnAgPSBzb3RvaW5wY2Ioc28p
OwogCUtBU1NFUlQoaW5wICE9IE5VTEwsICgidWRwX2RldGFjaDogaW5wID09IE5VTEwiKSk7CiAJ
S0FTU0VSVChpbnAtPmlucF9mYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSwKIAkgICAgKCJ1ZHBf
ZGV0YWNoOiBub3QgZGlzY29ubmVjdGVkIikpOwotCUlOUF9JTkZPX1dMT0NLKCZWX3VkYmluZm8p
OworCUlOUF9JTkZPX1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCUlOUF9XTE9DSyhpbnApOwog
CXVwID0gaW50b3VkcGNiKGlucCk7CiAJS0FTU0VSVCh1cCAhPSBOVUxMLCAoIiVzOiB1cCA9PSBO
VUxMIiwgX19mdW5jX18pKTsKIAlpbnAtPmlucF9wcGNiID0gTlVMTDsKIAlpbl9wY2JkZXRhY2go
aW5wKTsKIAlpbl9wY2JmcmVlKGlucCk7Ci0JSU5QX0lORk9fV1VOTE9DSygmVl91ZGJpbmZvKTsK
LQl1ZHBfZGlzY2FyZGNiKHVwKTsKKwlJTlBfSU5GT19XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8p
OworCXVkcF9kaXNjYXJkY2IodXAsIGlzdWRwKTsKIH0KIAogc3RhdGljIGludApAQCAtMTU2OCwx
MCArMTcyNywxMCBAQCB1ZHBfZGlzY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJSU5QX1dV
TkxPQ0soaW5wKTsKIAkJcmV0dXJuIChFTk9UQ09OTik7CiAJfQotCUlOUF9IQVNIX1dMT0NLKCZW
X3VkYmluZm8pOworCUlOUF9IQVNIX1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWluX3BjYmRp
c2Nvbm5lY3QoaW5wKTsKIAlpbnAtPmlucF9sYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOwotCUlO
UF9IQVNIX1dVTkxPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0hBU0hfV1VOTE9DSyhpbnAtPmlucF9w
Y2JpbmZvKTsKIAlTT0NLX0xPQ0soc28pOwogCXNvLT5zb19zdGF0ZSAmPSB+U1NfSVNDT05ORUNU
RUQ7CQkvKiBYWFggKi8KIAlTT0NLX1VOTE9DSyhzbyk7CkBAIC0xNjIyLDQgKzE3ODEsNSBAQCBz
dHJ1Y3QgcHJfdXNycmVxcyB1ZHBfdXNycmVxcyA9IHsKIAkucHJ1X3Nvc2V0bGFiZWwgPQlpbl9w
Y2Jzb3NldGxhYmVsLAogCS5wcnVfY2xvc2UgPQkJdWRwX2Nsb3NlLAogfTsKKwogI2VuZGlmIC8q
IElORVQgKi8KSW5kZXg6IHN5cy9uZXRpbmV0L3VkcF92YXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv
bmV0aW5ldC91ZHBfdmFyLmgJKHJldmlzaW9uIDI0ODgxMSkKKysrIHN5cy9uZXRpbmV0L3VkcF92
YXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTAgKzYyLDEyIEBAIHR5cGVkZWYgdm9pZCgqdWRw
X3R1bl9mdW5jX3QpKHN0cnVjdCBtYnVmICosIGludCBvCiBzdHJ1Y3QgdWRwY2IgewogCXVkcF90
dW5fZnVuY190CXVfdHVuX2Z1bmM7CS8qIFVEUCBrZXJuZWwgdHVubmVsaW5nIGNhbGxiYWNrLiAq
LwogCXVfaW50CQl1X2ZsYWdzOwkvKiBHZW5lcmljIFVEUCBmbGFncy4gKi8KKwl1aW50MTZfdAl1
X3J4Y3NsZW47CS8qIENvdmVyYWdlIGZvciBpbmNvbWluZyBkYXRhZ3JhbXMuICovCisJdWludDE2
X3QJdV90eGNzbGVuOwkvKiBDb3ZlcmFnZSBmb3Igb3V0Z29pbmcgZGF0YWdyYW1zLiAqLwogfTsK
IAotI2RlZmluZQlpbnRvdWRwY2IoaXApCSgoc3RydWN0IHVkcGNiICopKGlwKS0+aW5wX3BwY2Ip
Ci0jZGVmaW5lCXNvdG91ZHBjYihzbykJKGludG91ZHBjYihzb3RvaW5wY2Ioc28pKSkKKyNkZWZp
bmUJaW50b3VkcGNiKGlwKQkJKChzdHJ1Y3QgdWRwY2IgKikoaXApLT5pbnBfcHBjYikKKyNkZWZp
bmUJc290b3VkcGNiKHNvKQkJKGludG91ZHBjYihzb3RvaW5wY2Ioc28pKSkKIAogCQkJCS8qIElQ
c2VjOiBFU1AgaW4gVURQIHR1bm5lbGluZzogKi8KICNkZWZpbmUJVUZfRVNQSU5VRFBfTk9OX0lL
RQkweDAwMDAwMDAxCS8qIHcvIG5vbi1JS0UgbWFya2VyIC4uICovCkBAIC05Myw2ICs5NSwzMyBA
QCBzdHJ1Y3QgdWRwc3RhdCB7CiAJdV9sb25nCXVkcHNfZmlsdGVybWNhc3Q7CS8qIGJsb2NrZWQg
YnkgbXVsdGljYXN0IGZpbHRlciAqLwogfTsKIAorLyogCisgKiBQcm90b2NvbCBjb250cm9sIGJs
b2NrcyBtYW5hZ2VtZW50IGZ1bmN0aW9ucy4KKyAqLworI2RlZmluZSBVRFBfUENCSU5GT19JTklU
KHBjYmluZm8sIHBjYm5hbWUsIGxpc3RoZWFkLCBpbnBjYnpvbmVfbmFtZSxcCisJaW5wY2J6b25l
X2luaXQpIHsgXAorCWluX3BjYmluZm9faW5pdChwY2JpbmZvLCBwY2JuYW1lLCBsaXN0aGVhZCwg
VURCSEFTSFNJWkUsIFVEQkhBU0hTSVpFLFwKKwkgICAgaW5wY2J6b25lX25hbWUsIGlucGNiem9u
ZV9pbml0LCBOVUxMLCBVTUFfWk9ORV9OT0ZSRUUsXAorCSAgICBJUElfSEFTSEZJRUxEU18yVFVQ
TEUpOyBcCit9CisKKyNkZWZpbmUJVURQX1BDQklORk9fREVTVFJPWShwY2JpbmZvKSB7IFwKKwlp
bl9wY2JpbmZvX2Rlc3Ryb3kocGNiaW5mbyk7IFwKK30KKworLyoKKyAqIFpvbmUgYWxsb2NhdGlv
biBmdW5jdGlvbnMuCisgKi8KKyNkZWZpbmUJVURQX1pPTkVfSU5JVCh6b25lLCB6b25lX25hbWUp
IHsgXAorCXpvbmUgPSB1bWFfemNyZWF0ZSh6b25lX25hbWUsIHNpemVvZihzdHJ1Y3QgdWRwY2Ip
LCBOVUxMLCBOVUxMLCBOVUxMLFwKKwkgICAgTlVMTCwgVU1BX0FMSUdOX1BUUiwgVU1BX1pPTkVf
Tk9GUkVFKTsgXAorCXVtYV96b25lX3NldF9tYXgoem9uZSwgbWF4c29ja2V0cyk7IFwKKwl1bWFf
em9uZV9zZXRfd2FybmluZyh6b25lLCAia2Vybi5pcGMubWF4c29ja2V0cyBsaW1pdCByZWFjaGVk
Iik7IFwKK30KKworI2RlZmluZQlVRFBfWk9ORV9ERVNUUk9ZKHpvbmUpCXVtYV96ZGVzdHJveSh6
b25lKQorCisKICNpZmRlZiBfS0VSTkVMCiAvKgogICogSW4ta2VybmVsIGNvbnN1bWVycyBjYW4g
dXNlIHRoZXNlIGFjY2Vzc29yIG1hY3JvcyBkaXJlY3RseSB0byB1cGRhdGUKQEAgLTEzNCw4ICsx
NjMsMTIgQEAgU1lTQ1RMX0RFQ0woX25ldF9pbmV0X3VkcCk7CiBleHRlcm4gc3RydWN0IHByX3Vz
cnJlcXMJdWRwX3VzcnJlcXM7CiBWTkVUX0RFQ0xBUkUoc3RydWN0IGlucGNiaGVhZCwgdWRiKTsK
IFZORVRfREVDTEFSRShzdHJ1Y3QgaW5wY2JpbmZvLCB1ZGJpbmZvKTsKK1ZORVRfREVDTEFSRShz
dHJ1Y3QgaW5wY2JoZWFkLCB1bGl0ZWNiKTsKK1ZORVRfREVDTEFSRShzdHJ1Y3QgaW5wY2JpbmZv
LCB1bGl0ZWNiaW5mbyk7CiAjZGVmaW5lCVZfdWRiCQkJVk5FVCh1ZGIpCiAjZGVmaW5lCVZfdWRi
aW5mbwkJVk5FVCh1ZGJpbmZvKQorI2RlZmluZQlWX3VsaXRlY2IJCVZORVQodWxpdGVjYikKKyNk
ZWZpbmUJVl91bGl0ZWNiaW5mbwkJVk5FVCh1bGl0ZWNiaW5mbykKIAogZXh0ZXJuIHVfbG9uZwkJ
CXVkcF9zZW5kc3BhY2U7CiBleHRlcm4gdV9sb25nCQkJdWRwX3JlY3ZzcGFjZTsKQEAgLTE0Nywy
MCArMTgwLDQxIEBAIFZORVRfREVDTEFSRShpbnQsIHVkcF9ibGFja2hvbGUpOwogI2RlZmluZQlW
X3VkcF9ibGFja2hvbGUJCVZORVQodWRwX2JsYWNraG9sZSkKIGV4dGVybiBpbnQJCQl1ZHBfbG9n
X2luX3ZhaW47CiAKLWludAkJIHVkcF9uZXd1ZHBjYihzdHJ1Y3QgaW5wY2IgKik7Ci12b2lkCQkg
dWRwX2Rpc2NhcmRjYihzdHJ1Y3QgdWRwY2IgKik7CitpbnQJCXVkcF9uZXd1ZHBjYihzdHJ1Y3Qg
aW5wY2IgKik7Cit2b2lkCQl1ZHBfZGlzY2FyZGNiKHN0cnVjdCB1ZHBjYiAqLCBpbnQpOwogCi12
b2lkCQkgdWRwX2N0bGlucHV0KGludCwgc3RydWN0IHNvY2thZGRyICosIHZvaWQgKik7Ci1pbnQJ
CSB1ZHBfY3Rsb3V0cHV0KHN0cnVjdCBzb2NrZXQgKiwgc3RydWN0IHNvY2tvcHQgKik7Ci12b2lk
CQkgdWRwX2luaXQodm9pZCk7Cit2b2lkCQl1ZHBfY3RsaW5wdXQoaW50LCBzdHJ1Y3Qgc29ja2Fk
ZHIgKiwgdm9pZCAqKTsKK3ZvaWQJCXVkcGxpdGVfY3RsaW5wdXQoaW50LCBzdHJ1Y3Qgc29ja2Fk
ZHIgKiwgdm9pZCAqKTsKK2ludAkJdWRwX2N0bG91dHB1dChzdHJ1Y3Qgc29ja2V0ICosIHN0cnVj
dCBzb2Nrb3B0ICopOwordm9pZAkJdWRwX2luaXQodm9pZCk7Cit2b2lkCQl1ZHBsaXRlX2luaXQo
dm9pZCk7CiAjaWZkZWYgVklNQUdFCi12b2lkCQkgdWRwX2Rlc3Ryb3kodm9pZCk7Cit2b2lkCQl1
ZHBfZGVzdHJveSh2b2lkKTsKK3ZvaWQJCXVkcGxpdGVfZGVzdHJveSh2b2lkKTsKICNlbmRpZgot
dm9pZAkJIHVkcF9pbnB1dChzdHJ1Y3QgbWJ1ZiAqLCBpbnQpOwordm9pZAkJdWRwX2lucHV0KHN0
cnVjdCBtYnVmICosIGludCk7Cit2b2lkCQl1ZHBsaXRlX2lucHV0KHN0cnVjdCBtYnVmICosIGlu
dCk7CiBzdHJ1Y3QgaW5wY2IJKnVkcF9ub3RpZnkoc3RydWN0IGlucGNiICppbnAsIGludCBlcnJu
byk7Ci1pbnQJCSB1ZHBfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc28pOworaW50CQl1ZHBfc2h1
dGRvd24oc3RydWN0IHNvY2tldCAqc28pOwogCiBpbnQgdWRwX3NldF9rZXJuZWxfdHVubmVsaW5n
KHN0cnVjdCBzb2NrZXQgKnNvLCB1ZHBfdHVuX2Z1bmNfdCBmKTsKLSNlbmRpZgogCi0jZW5kaWYK
KyNkZWZpbmUJdWRwX2NvbW1vbl9pbml0KHBjYmluZm8sIHBjYm5hbWUsIGxpc3RoZWFkLCBpbnBj
YnpvbmVfbmFtZSxcCisJaW5wY2J6b25lX2luaXQsIHpvbmUsIHpvbmVfbmFtZSkgeyBcCisJVURQ
X1BDQklORk9fSU5JVChwY2JpbmZvLCBwY2JuYW1lLCBsaXN0aGVhZCwgaW5wY2J6b25lX25hbWUs
XAorCSAgICBpbnBjYnpvbmVfaW5pdCk7IFwKKwlVRFBfWk9ORV9JTklUKHpvbmUsIHpvbmVfbmFt
ZSk7IFwKK30KKworI2RlZmluZQl1ZHBfY29tbW9uX2Rlc3Ryb3kocGNiaW5mbywgem9uZSkgeyBc
CisJVURQX1BDQklORk9fREVTVFJPWShwY2JpbmZvKTsgXAorCVVEUF9aT05FX0RFU1RST1koem9u
ZSk7IFwKK30KKworI2RlZmluZQl1ZHBfY29tbW9uX3pvbmVfY2hhbmdlKF9wY2JpbmZvLCBfem9u
ZSkgeyBcCisgICAgICAgIHVtYV96b25lX3NldF9tYXgoKF9wY2JpbmZvKS5pcGlfem9uZSwgbWF4
c29ja2V0cyk7IFwKKyAgICAgICAgdW1hX3pvbmVfc2V0X21heCgoX3pvbmUpLCBtYXhzb2NrZXRz
KTsgXAorfQorI2VuZGlmIC8qIF9LRVJORUwgKi8KKworI2VuZGlmIC8qIF9ORVRJTkVUX1VEUF9W
QVJfSF8gKi8KSW5kZXg6IHN5cy9uZXRpbmV0L3VkcGxpdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv
bmV0aW5ldC91ZHBsaXRlLmgJKHJldmlzaW9uIDApCisrKyBzeXMvbmV0aW5ldC91ZHBsaXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTMsIEtldmluIExvCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwor
ICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKgorICogJEZyZWVCU0QkCisg
Ki8KKworI2lmbmRlZiBfTkVUSU5FVF9VRFBMSVRFX0hfCisjZGVmaW5lCV9ORVRJTkVUX1VEUExJ
VEVfSF8KKworLyogCisgKiBVc2VyLXNldHRhYmxlIG9wdGlvbnMgKHVzZWQgd2l0aCBzZXRzb2Nr
b3B0KS4KKyAqLworI2RlZmluZQlVRFBMSVRFX1NFTkRfQ1NDT1YJMgkvKiBTZW5kZXIgY2hlY2tz
dW0gY292ZXJhZ2UuICovCisjZGVmaW5lCVVEUExJVEVfUkVDVl9DU0NPVgk0CS8qIFJlY2VpdmVy
IGNoZWNrc3VtIGNvdmVyYWdlLiAqLworCisjZW5kaWYJLyogIV9ORVRJTkVUX1VEUExJVEVfSF8g
Ki8KSW5kZXg6IHN5cy9uZXRpbmV0Ni9pbjZfaWZhdHRhY2guYwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv
bmV0aW5ldDYvaW42X2lmYXR0YWNoLmMJKHJldmlzaW9uIDI0ODgxMSkKKysrIHN5cy9uZXRpbmV0
Ni9pbjZfaWZhdHRhY2guYwkod29ya2luZyBjb3B5KQpAQCAtODM3LDYgKzgzNyw3IEBAIGluNl9p
ZmRldGFjaChzdHJ1Y3QgaWZuZXQgKmlmcCkKIAl9CiAKIAlpbjZfcGNicHVyZ2VpZjAoJlZfdWRi
aW5mbywgaWZwKTsKKwlpbjZfcGNicHVyZ2VpZjAoJlZfdWxpdGVjYmluZm8sIGlmcCk7CiAJaW42
X3BjYnB1cmdlaWYwKCZWX3JpcGNiaW5mbywgaWZwKTsKIAkvKiBsZWF2ZSBmcm9tIGFsbCBtdWx0
aWNhc3QgZ3JvdXBzIGpvaW5lZCAqLwogCWluNl9wdXJnZW1hZGRycyhpZnApOwpJbmRleDogc3lz
L25ldGluZXQ2L2luNl9wcm90by5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9uZXRpbmV0Ni9pbjZfcHJv
dG8uYwkocmV2aXNpb24gMjQ4ODExKQorKysgc3lzL25ldGluZXQ2L2luNl9wcm90by5jCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTgsNiArMjE4LDE5IEBAIHN0cnVjdCBpcDZwcm90b3N3IGluZXQ2c3db
XSA9IHsKIH0sCiAjZW5kaWYgLyogU0NUUCAqLwogeworCS5wcl90eXBlID0JCVNPQ0tfREdSQU0s
CisJLnByX2RvbWFpbiA9CQkmaW5ldDZkb21haW4sCisJLnByX3Byb3RvY29sID0JCUlQUFJPVE9f
VURQTElURSwKKwkucHJfZmxhZ3MgPQkJUFJfQVRPTUlDfFBSX0FERFIsCisJLnByX2lucHV0ID0J
CXVkcDZfaW5wdXQsCisJLnByX2N0bGlucHV0ID0JCXVkcGxpdGU2X2N0bGlucHV0LAorCS5wcl9j
dGxvdXRwdXQgPQkJdWRwX2N0bG91dHB1dCwKKyNpZm5kZWYgSU5FVAkvKiBEbyBub3QgY2FsbCBp
bml0aWFsaXphdGlvbiB0d2ljZS4gKi8KKwkucHJfaW5pdCA9CQl1ZHBsaXRlX2luaXQsCisjZW5k
aWYKKwkucHJfdXNycmVxcyA9CQkmdWRwNl91c3JyZXFzLAorfSwKK3sKIAkucHJfdHlwZSA9CQlT
T0NLX1JBVywKIAkucHJfZG9tYWluID0JCSZpbmV0NmRvbWFpbiwKIAkucHJfcHJvdG9jb2wgPQkJ
SVBQUk9UT19SQVcsCkBAIC00NTMsNiArNDY2LDcgQEAgU1lTQ1RMX05PREUoX25ldF9pbmV0NiwJ
SVBQUk9UT19UQ1AsCXRjcDYsCUNUTEZMQUcKICNpZmRlZiBTQ1RQCiBTWVNDVExfTk9ERShfbmV0
X2luZXQ2LAlJUFBST1RPX1NDVFAsCXNjdHA2LAlDVExGTEFHX1JXLCAwLAkiU0NUUDYiKTsKICNl
bmRpZgorU1lTQ1RMX05PREUoX25ldF9pbmV0NiwJSVBQUk9UT19VRFBMSVRFLHVkcGxpdGU2LENU
TEZMQUdfUlcsIDAsCSJVRFBMSVRFNiIpOwogI2lmZGVmIElQU0VDCiBTWVNDVExfTk9ERShfbmV0
X2luZXQ2LAlJUFBST1RPX0VTUCwJaXBzZWM2LAlDVExGTEFHX1JXLCAwLAkiSVBTRUM2Iik7CiAj
ZW5kaWYgLyogSVBTRUMgKi8KSW5kZXg6IHN5cy9uZXRpbmV0Ni91ZHA2X3VzcnJlcS5jCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHN5cy9uZXRpbmV0Ni91ZHA2X3VzcnJlcS5jCShyZXZpc2lvbiAyNDg4MTEpCisr
KyBzeXMvbmV0aW5ldDYvdWRwNl91c3JyZXEuYwkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEw
Niw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5o
PgogI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC91ZHBfdmFyLmg+
CisjaW5jbHVkZSA8bmV0aW5ldC91ZHBsaXRlLmg+CiAKICNpbmNsdWRlIDxuZXRpbmV0Ni9pcDZw
cm90b3N3Lmg+CiAjaW5jbHVkZSA8bmV0aW5ldDYvaXA2X3Zhci5oPgpAQCAtMTc4LDExICsxNzks
MTQgQEAgdWRwNl9pbnB1dChzdHJ1Y3QgbWJ1ZiAqKm1wLCBpbnQgKm9mZnAsIGludCBwcm90bykK
IAlzdHJ1Y3QgaXA2X2hkciAqaXA2OwogCXN0cnVjdCB1ZHBoZHIgKnVoOwogCXN0cnVjdCBpbnBj
YiAqaW5wOwotCXN0cnVjdCB1ZHBjYiAqdXA7CisJc3RydWN0IGlucGNiaW5mbyAqcGNiaW5mbzsK
KwlzdHJ1Y3QgdWRwY2IgKnVwID0gTlVMTDsKIAlpbnQgb2ZmID0gKm9mZnA7CisJaW50IGNzY292
X3BhcnRpYWw7CiAJaW50IHBsZW4sIHVsZW47CiAJc3RydWN0IHNvY2thZGRyX2luNiBmcm9tc2E7
CiAJc3RydWN0IG1fdGFnICpmd2RfdGFnOworCXVpbnQ4X3Qgbnh0OwogCXVpbnQxNl90IHVoX3N1
bTsKIAogCWlmcCA9IG0tPm1fcGt0aGRyLnJjdmlmOwpAQCAtMjE1LDkgKzIxOSwxOSBAQCB1ZHA2
X2lucHV0KHN0cnVjdCBtYnVmICoqbXAsIGludCAqb2ZmcCwgaW50IHByb3RvKQogCXBsZW4gPSBu
dG9ocyhpcDYtPmlwNl9wbGVuKSAtIG9mZiArIHNpemVvZigqaXA2KTsKIAl1bGVuID0gbnRvaHMo
KHVfc2hvcnQpdWgtPnVoX3VsZW4pOwogCisJbnh0ID0gaXA2LT5pcDZfbnh0OworCWNzY292X3Bh
cnRpYWwgPSAobnh0ID09IElQUFJPVE9fVURQTElURSkgPyAxIDogMDsKKwlpZiAobnh0ID09IElQ
UFJPVE9fVURQTElURSAmJiB1bGVuID09IDApIHsKKwkJLyogWmVybyBtZWFucyBjaGVja3N1bSBv
dmVyIHRoZSBjb21wbGV0ZSBwYWNrZXQuICovCisJCXVsZW4gPSBwbGVuOworCQljc2Nvdl9wYXJ0
aWFsID0gMDsKKwl9CisKIAlpZiAocGxlbiAhPSB1bGVuKSB7Ci0JCVVEUFNUQVRfSU5DKHVkcHNf
YmFkbGVuKTsKLQkJZ290byBiYWR1bmxvY2tlZDsKKwkJaWYgKHVsZW4gPiBwbGVuIHx8IHVsZW4g
PCBzaXplb2Yoc3RydWN0IHVkcGhkcikpIHsKKwkJCVVEUFNUQVRfSU5DKHVkcHNfYmFkbGVuKTsK
KwkJCWdvdG8gYmFkdW5sb2NrZWQ7CisJCX0KIAl9CiAKIAkvKgpAQCAtMjI4LDE1ICsyNDIsMTYg
QEAgdWRwNl9pbnB1dChzdHJ1Y3QgbWJ1ZiAqKm1wLCBpbnQgKm9mZnAsIGludCBwcm90bykKIAkJ
Z290byBiYWR1bmxvY2tlZDsKIAl9CiAKLQlpZiAobS0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIENT
VU1fREFUQV9WQUxJRF9JUFY2KSB7CisJaWYgKChtLT5tX3BrdGhkci5jc3VtX2ZsYWdzICYgQ1NV
TV9EQVRBX1ZBTElEX0lQVjYpICYmCisJICAgICFjc2Nvdl9wYXJ0aWFsKSB7CiAJCWlmIChtLT5t
X3BrdGhkci5jc3VtX2ZsYWdzICYgQ1NVTV9QU0VVRE9fSERSKQogCQkJdWhfc3VtID0gbS0+bV9w
a3RoZHIuY3N1bV9kYXRhOwogCQllbHNlCi0JCQl1aF9zdW0gPSBpbjZfY2tzdW1fcHNldWRvKGlw
NiwgdWxlbiwKLQkJCSAgICBJUFBST1RPX1VEUCwgbS0+bV9wa3RoZHIuY3N1bV9kYXRhKTsKKwkJ
CXVoX3N1bSA9IGluNl9ja3N1bV9wc2V1ZG8oaXA2LCB1bGVuLCBueHQsCisJCQkgICAgbS0+bV9w
a3RoZHIuY3N1bV9kYXRhKTsKIAkJdWhfc3VtIF49IDB4ZmZmZjsKIAl9IGVsc2UKLQkJdWhfc3Vt
ID0gaW42X2Nrc3VtKG0sIElQUFJPVE9fVURQLCBvZmYsIHVsZW4pOworCQl1aF9zdW0gPSBpbjZf
Y2tzdW0obSwgbnh0LCBvZmYsIHVsZW4pOwogCiAJaWYgKHVoX3N1bSAhPSAwKSB7CiAJCVVEUFNU
QVRfSU5DKHVkcHNfYmFkc3VtKTsKQEAgLTI0OSwxMSArMjY0LDEzIEBAIHVkcDZfaW5wdXQoc3Ry
dWN0IG1idWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJaW5pdF9zaW42KCZmcm9tc2Es
IG0pOwogCWZyb21zYS5zaW42X3BvcnQgPSB1aC0+dWhfc3BvcnQ7CiAKKwlwY2JpbmZvID0gKG54
dCA9PSBJUFBST1RPX1VEUCkgPyAmVl91ZGJpbmZvIDogJlZfdWxpdGVjYmluZm87CiAJaWYgKElO
Nl9JU19BRERSX01VTFRJQ0FTVCgmaXA2LT5pcDZfZHN0KSkgewogCQlzdHJ1Y3QgaW5wY2IgKmxh
c3Q7CisJCXN0cnVjdCBpbnBjYmhlYWQgKnBjYmxpc3Q7CiAJCXN0cnVjdCBpcDZfbW9wdGlvbnMg
KmltbzsKIAotCQlJTlBfSU5GT19STE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0lORk9fUkxPQ0so
cGNiaW5mbyk7CiAJCS8qCiAJCSAqIEluIHRoZSBldmVudCB0aGF0IGxhZGRyIHNob3VsZCBiZSBz
ZXQgdG8gdGhlIGxpbmstbG9jYWwKIAkJICogYWRkcmVzcyAodGhpcyBoYXBwZW5zIGluIFJJUG5n
KSwgdGhlIG11bHRpY2FzdCBhZGRyZXNzCkBAIC0yNjksOCArMjg2LDkgQEAgdWRwNl9pbnB1dChz
dHJ1Y3QgbWJ1ZiAqKm1wLCBpbnQgKm9mZnAsIGludCBwcm90bykKIAkJICogaGVyZS4gIFdlIG5l
ZWQgdWRwaGRyIGZvciBJUHNlYyBwcm9jZXNzaW5nIHNvIHdlIGRvIHRoYXQKIAkJICogbGF0ZXIu
CiAJCSAqLworCQlwY2JsaXN0ID0gKG54dCA9PSBJUFBST1RPX1VEUCkgPyAmVl91ZGIgOiAmVl91
bGl0ZWNiOwogCQlsYXN0ID0gTlVMTDsKLQkJTElTVF9GT1JFQUNIKGlucCwgJlZfdWRiLCBpbnBf
bGlzdCkgeworCQlMSVNUX0ZPUkVBQ0goaW5wLCBwY2JsaXN0LCBpbnBfbGlzdCkgewogCQkJaWYg
KChpbnAtPmlucF92ZmxhZyAmIElOUF9JUFY2KSA9PSAwKQogCQkJCWNvbnRpbnVlOwogCQkJaWYg
KGlucC0+aW5wX2xwb3J0ICE9IHVoLT51aF9kcG9ydCkKQEAgLTM3NSw3ICszOTMsNyBAQCB1ZHA2
X2lucHV0KHN0cnVjdCBtYnVmICoqbXAsIGludCAqb2ZmcCwgaW50IHByb3RvKQogCQkJZ290byBi
YWRoZWFkbG9ja2VkOwogCQl9CiAJCUlOUF9STE9DSyhsYXN0KTsKLQkJSU5QX0lORk9fUlVOTE9D
SygmVl91ZGJpbmZvKTsKKwkJSU5QX0lORk9fUlVOTE9DSyhwY2JpbmZvKTsKIAkJdXAgPSBpbnRv
dWRwY2IobGFzdCk7CiAJCWlmICh1cC0+dV90dW5fZnVuYyA9PSBOVUxMKSB7CiAJCQl1ZHA2X2Fw
cGVuZChsYXN0LCBtLCBvZmYsICZmcm9tc2EpOwpAQCAtNDA1LDggKzQyMyw4IEBAIHVkcDZfaW5w
dXQoc3RydWN0IG1idWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJCSAqIFRyYW5zcGFy
ZW50bHkgZm9yd2FyZGVkLiBQcmV0ZW5kIHRvIGJlIHRoZSBkZXN0aW5hdGlvbi4KIAkJICogQWxy
ZWFkeSBnb3Qgb25lIGxpa2UgdGhpcz8KIAkJICovCi0JCWlucCA9IGluNl9wY2Jsb29rdXBfbWJ1
ZigmVl91ZGJpbmZvLAotCQkgICAgJmlwNi0+aXA2X3NyYywgdWgtPnVoX3Nwb3J0LCAmaXA2LT5p
cDZfZHN0LCB1aC0+dWhfZHBvcnQsCisJCWlucCA9IGluNl9wY2Jsb29rdXBfbWJ1ZihwY2JpbmZv
LCAmaXA2LT5pcDZfc3JjLAorCQkgICAgdWgtPnVoX3Nwb3J0LCAmaXA2LT5pcDZfZHN0LCB1aC0+
dWhfZHBvcnQsCiAJCSAgICBJTlBMT09LVVBfUkxPQ0tQQ0IsIG0tPm1fcGt0aGRyLnJjdmlmLCBt
KTsKIAkJaWYgKCFpbnApIHsKIAkJCS8qCkBAIC00MTQsNyArNDMyLDcgQEAgdWRwNl9pbnB1dChz
dHJ1Y3QgbWJ1ZiAqKm1wLCBpbnQgKm9mZnAsIGludCBwcm90bykKIAkJCSAqIEJlY2F1c2Ugd2Un
dmUgcmV3cml0dGVuIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzLAogCQkJICogYW55IGhhcmR3YXJl
LWdlbmVyYXRlZCBoYXNoIGlzIGlnbm9yZWQuCiAJCQkgKi8KLQkJCWlucCA9IGluNl9wY2Jsb29r
dXAoJlZfdWRiaW5mbywgJmlwNi0+aXA2X3NyYywKKwkJCWlucCA9IGluNl9wY2Jsb29rdXAocGNi
aW5mbywgJmlwNi0+aXA2X3NyYywKIAkJCSAgICB1aC0+dWhfc3BvcnQsICZuZXh0X2hvcDYtPnNp
bjZfYWRkciwKIAkJCSAgICBuZXh0X2hvcDYtPnNpbjZfcG9ydCA/IGh0b25zKG5leHRfaG9wNi0+
c2luNl9wb3J0KSA6CiAJCQkgICAgdWgtPnVoX2Rwb3J0LCBJTlBMT09LVVBfV0lMRENBUkQgfApA
QCAtNDI0LDcgKzQ0Miw3IEBAIHVkcDZfaW5wdXQoc3RydWN0IG1idWYgKiptcCwgaW50ICpvZmZw
LCBpbnQgcHJvdG8pCiAJCW1fdGFnX2RlbGV0ZShtLCBmd2RfdGFnKTsKIAkJbS0+bV9mbGFncyAm
PSB+TV9JUDZfTkVYVEhPUDsKIAl9IGVsc2UKLQkJaW5wID0gaW42X3BjYmxvb2t1cF9tYnVmKCZW
X3VkYmluZm8sICZpcDYtPmlwNl9zcmMsCisJCWlucCA9IGluNl9wY2Jsb29rdXBfbWJ1ZihwY2Jp
bmZvLCAmaXA2LT5pcDZfc3JjLAogCQkgICAgdWgtPnVoX3Nwb3J0LCAmaXA2LT5pcDZfZHN0LCB1
aC0+dWhfZHBvcnQsCiAJCSAgICBJTlBMT09LVVBfV0lMRENBUkQgfCBJTlBMT09LVVBfUkxPQ0tQ
Q0IsCiAJCSAgICBtLT5tX3BrdGhkci5yY3ZpZiwgbSk7CkBAIC00NTQsNyArNDcyLDE0IEBAIHVk
cDZfaW5wdXQoc3RydWN0IG1idWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJCXJldHVy
biAoSVBQUk9UT19ET05FKTsKIAl9CiAJSU5QX1JMT0NLX0FTU0VSVChpbnApOwotCXVwID0gaW50
b3VkcGNiKGlucCk7CisJaWYgKGNzY292X3BhcnRpYWwpIHsKKwkJdXAgPSBpbnRvdWRwY2IoaW5w
KTsKKwkJaWYgKHVwLT51X3J4Y3NsZW4gPiB1bGVuKSB7CisJCQlJTlBfUlVOTE9DSyhpbnApOwor
CQkJbV9mcmVlbShtKTsKKwkJCXJldHVybiAoSVBQUk9UT19ET05FKTsKKwkJfQorCX0KIAlpZiAo
dXAtPnVfdHVuX2Z1bmMgPT0gTlVMTCkgewogCQl1ZHA2X2FwcGVuZChpbnAsIG0sIG9mZiwgJmZy
b21zYSk7CiAJfSBlbHNlIHsKQEAgLTQ2OCwxNSArNDkzLDE2IEBAIHVkcDZfaW5wdXQoc3RydWN0
IG1idWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJcmV0dXJuIChJUFBST1RPX0RPTkUp
OwogCiBiYWRoZWFkbG9ja2VkOgotCUlOUF9JTkZPX1JVTkxPQ0soJlZfdWRiaW5mbyk7CisJSU5Q
X0lORk9fUlVOTE9DSyhwY2JpbmZvKTsKIGJhZHVubG9ja2VkOgogCWlmIChtKQogCQltX2ZyZWVt
KG0pOwogCXJldHVybiAoSVBQUk9UT19ET05FKTsKIH0KIAotdm9pZAotdWRwNl9jdGxpbnB1dChp
bnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICpkKQorc3RhdGljIHZvaWQKK3VkcDZf
Y29tbW9uX2N0bGlucHV0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqc2EsIHZvaWQgKmQsCisg
ICAgc3RydWN0IGlucGNiaW5mbyAqcGNiaW5mbykKIHsKIAlzdHJ1Y3QgdWRwaGRyIHVoOwogCXN0
cnVjdCBpcDZfaGRyICppcDY7CkBAIC01MzIsMTQgKzU1OCwyNiBAQCBiYWR1bmxvY2tlZDoKIAkJ
Ynplcm8oJnVoLCBzaXplb2YodWgpKTsKIAkJbV9jb3B5ZGF0YShtLCBvZmYsIHNpemVvZigqdWhw
KSwgKGNhZGRyX3QpJnVoKTsKIAotCQkodm9pZCkgaW42X3BjYm5vdGlmeSgmVl91ZGJpbmZvLCBz
YSwgdWgudWhfZHBvcnQsCisJCSh2b2lkKSBpbjZfcGNibm90aWZ5KHBjYmluZm8sIHNhLCB1aC51
aF9kcG9ydCwKIAkJICAgIChzdHJ1Y3Qgc29ja2FkZHIgKilpcDZjcC0+aXA2Y19zcmMsIHVoLnVo
X3Nwb3J0LCBjbWQsCiAJCSAgICBjbWRhcmcsIG5vdGlmeSk7CiAJfSBlbHNlCi0JCSh2b2lkKSBp
bjZfcGNibm90aWZ5KCZWX3VkYmluZm8sIHNhLCAwLAorCQkodm9pZCkgaW42X3BjYm5vdGlmeShw
Y2JpbmZvLCBzYSwgMCwKIAkJICAgIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKilzYTZfc3JjLCAw
LCBjbWQsIGNtZGFyZywgbm90aWZ5KTsKIH0KIAordm9pZAordWRwNl9jdGxpbnB1dChpbnQgY21k
LCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICpkKQoreworCXJldHVybiAodWRwNl9jb21tb25f
Y3RsaW5wdXQoY21kLCBzYSwgZCwgJlZfdWRiaW5mbykpOworfQorCit2b2lkCit1ZHBsaXRlNl9j
dGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICpkKQoreworCXJldHVy
biAodWRwNl9jb21tb25fY3RsaW5wdXQoY21kLCBzYSwgZCwgJlZfdWxpdGVjYmluZm8pKTsKK30K
Kwogc3RhdGljIGludAogdWRwNl9nZXRjcmVkKFNZU0NUTF9IQU5ETEVSX0FSR1MpCiB7CkBAIC01
OTcsOSArNjM1LDEyIEBAIHVkcDZfb3V0cHV0KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1
ZiAqbSwgc3RyCiAJc3RydWN0IGluNl9hZGRyICpsYWRkciwgKmZhZGRyLCBpbjZhOwogCXN0cnVj
dCBzb2NrYWRkcl9pbjYgKnNpbjYgPSBOVUxMOwogCXN0cnVjdCBpZm5ldCAqb2lmcCA9IE5VTEw7
CisJaW50IGNzY292X3BhcnRpYWwgPSAwOwogCWludCBzY29wZV9hbWJpZ3VvdXMgPSAwOwogCXVf
c2hvcnQgZnBvcnQ7CiAJaW50IGVycm9yID0gMDsKKwl1aW50OF90IG54dDsKKwl1aW50MTZfdCBj
c2NvdiA9IDA7CiAJc3RydWN0IGlwNl9wa3RvcHRzICpvcHRwLCBvcHQ7CiAJaW50IGFmID0gQUZf
SU5FVDYsIGhsZW4gPSBzaXplb2Yoc3RydWN0IGlwNl9oZHIpOwogCWludCBmbGFnczsKQEAgLTc1
NiwxMyArNzk3LDI5IEBAIHVkcDZfb3V0cHV0KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1
ZiAqbSwgc3RyCiAJLyoKIAkgKiBTdHVmZiBjaGVja3N1bSBhbmQgb3V0cHV0IGRhdGFncmFtLgog
CSAqLworCW54dCA9IElQUFJPVE9fVURQOwogCXVkcDYgPSAoc3RydWN0IHVkcGhkciAqKShtdG9k
KG0sIGNhZGRyX3QpICsgaGxlbik7CiAJdWRwNi0+dWhfc3BvcnQgPSBpbnAtPmlucF9scG9ydDsg
LyogbHBvcnQgaXMgYWx3YXlzIHNldCBpbiB0aGUgUENCICovCiAJdWRwNi0+dWhfZHBvcnQgPSBm
cG9ydDsKLQlpZiAocGxlbiA8PSAweGZmZmYpCisJaWYgKGlucC0+aW5wX3NvY2tldC0+c29fcHJv
dG8tPnByX3Byb3RvY29sID09IElQUFJPVE9fVURQTElURSkgeworCQlzdHJ1Y3QgdWRwY2IgKnVw
OworCisJCW54dCA9IElQUFJPVE9fVURQTElURTsKKwkJdXAgPSBpbnRvdWRwY2IoaW5wKTsKKwkJ
Y3Njb3YgPSB1cC0+dV90eGNzbGVuOworCQlpZiAoY3Njb3YgPj0gcGxlbikKKwkJCWNzY292ID0g
MDsKKwkJdWRwNi0+dWhfdWxlbiA9IGh0b25zKGNzY292KTsKKworCQkvKiBGb3IgVURQTGl0ZSwg
Y2hlY2tzdW0gY292ZXJhZ2UgbGVuZ3RoIG9mIHplcm8gbWVhbnMKKwkJICogdGhlIGVudGlyZSBV
RFBMaXRlIHBhY2tldCBpcyBjb3ZlcmVkIGJ5IHRoZSBjaGVja3N1bS4KKwkJICovCisJCWNzY292
X3BhcnRpYWwgPSAoY3Njb3YgPT0gMCkgPyAwIDogMTsKKwl9IGVsc2UgaWYgKHBsZW4gPD0gMHhm
ZmZmKQogCQl1ZHA2LT51aF91bGVuID0gaHRvbnMoKHVfc2hvcnQpcGxlbik7CiAJZWxzZQogCQl1
ZHA2LT51aF91bGVuID0gMDsKKwogCXVkcDYtPnVoX3N1bSA9IDA7CiAKIAlzd2l0Y2ggKGFmKSB7
CkBAIC03NzEsMTcgKzgyOCwyMiBAQCB1ZHA2X291dHB1dChzdHJ1Y3QgaW5wY2IgKmlucCwgc3Ry
dWN0IG1idWYgKm0sIHN0cgogCQlpcDYtPmlwNl9mbG93CT0gaW5wLT5pbnBfZmxvdyAmIElQVjZf
RkxPV0lORk9fTUFTSzsKIAkJaXA2LT5pcDZfdmZjCSY9IH5JUFY2X1ZFUlNJT05fTUFTSzsKIAkJ
aXA2LT5pcDZfdmZjCXw9IElQVjZfVkVSU0lPTjsKLSNpZiAwCQkJCS8qIGlwNl9wbGVuIHdpbGwg
YmUgZmlsbGVkIGluIGlwNl9vdXRwdXQuICovCi0JCWlwNi0+aXA2X3BsZW4JPSBodG9ucygodV9z
aG9ydClwbGVuKTsKLSNlbmRpZgotCQlpcDYtPmlwNl9ueHQJPSBJUFBST1RPX1VEUDsKKwkJaWYg
KG54dCA9PSBJUFBST1RPX1VEUExJVEUpCisJCQlpcDYtPmlwNl9wbGVuID0gaHRvbnMoKHVfc2hv
cnQpcGxlbik7CisJCWlwNi0+aXA2X254dAk9IG54dDsKIAkJaXA2LT5pcDZfaGxpbQk9IGluNl9z
ZWxlY3RobGltKGlucCwgTlVMTCk7CiAJCWlwNi0+aXA2X3NyYwk9ICpsYWRkcjsKIAkJaXA2LT5p
cDZfZHN0CT0gKmZhZGRyOwogCi0JCXVkcDYtPnVoX3N1bSA9IGluNl9ja3N1bV9wc2V1ZG8oaXA2
LCBwbGVuLCBJUFBST1RPX1VEUCwgMCk7Ci0JCW0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MgPSBDU1VN
X1VEUF9JUFY2OwotCQltLT5tX3BrdGhkci5jc3VtX2RhdGEgPSBvZmZzZXRvZihzdHJ1Y3QgdWRw
aGRyLCB1aF9zdW0pOworCQlpZiAoY3Njb3ZfcGFydGlhbCkgeworCQkJaWYgKCh1ZHA2LT51aF9z
dW0gPSBpbjZfY2tzdW0obSwgMCwKKwkJCSAgICBzaXplb2Yoc3RydWN0IGlwNl9oZHIpLCBjc2Nv
dikpID09IDApCisJCQkJdWRwNi0+dWhfc3VtID0gMHhmZmZmOworCQl9IGVsc2UgeworCQkJdWRw
Ni0+dWhfc3VtID0gaW42X2Nrc3VtX3BzZXVkbyhpcDYsIHBsZW4sIG54dCwgMCk7CisJCQltLT5t
X3BrdGhkci5jc3VtX2ZsYWdzID0gQ1NVTV9VRFBfSVBWNjsKKwkJCW0tPm1fcGt0aGRyLmNzdW1f
ZGF0YSA9IG9mZnNldG9mKHN0cnVjdCB1ZHBoZHIsIHVoX3N1bSk7CisJCX0KIAogCQlmbGFncyA9
IDA7CiAKQEAgLTgyNiwxMCArODg4LDEwIEBAIHVkcDZfYWJvcnQoc3RydWN0IHNvY2tldCAqc28p
CiAKIAlJTlBfV0xPQ0soaW5wKTsKIAlpZiAoIUlONl9JU19BRERSX1VOU1BFQ0lGSUVEKCZpbnAt
PmluNnBfZmFkZHIpKSB7Ci0JCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFT
SF9XTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAkJaW42X3BjYmRpc2Nvbm5lY3QoaW5wKTsKIAkJ
aW5wLT5pbjZwX2xhZGRyID0gaW42YWRkcl9hbnk7Ci0JCUlOUF9IQVNIX1dVTkxPQ0soJlZfdWRi
aW5mbyk7CisJCUlOUF9IQVNIX1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJCXNvaXNkaXNj
b25uZWN0ZWQoc28pOwogCX0KIAlJTlBfV1VOTE9DSyhpbnApOwpAQCAtODM5LDggKzkwMSwxMyBA
QCBzdGF0aWMgaW50CiB1ZHA2X2F0dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHByb3RvLCBz
dHJ1Y3QgdGhyZWFkICp0ZCkKIHsKIAlzdHJ1Y3QgaW5wY2IgKmlucDsKKwlzdHJ1Y3QgaW5wY2Jp
bmZvICpwY2JpbmZvOwogCWludCBlcnJvcjsKIAorCWlmIChzby0+c29fcHJvdG8tPnByX3Byb3Rv
Y29sID09IElQUFJPVE9fVURQKQorCQlwY2JpbmZvID0gJlZfdWRiaW5mbzsKKwkgZWxzZQorCQlw
Y2JpbmZvID0gJlZfdWxpdGVjYmluZm87CiAJaW5wID0gc290b2lucGNiKHNvKTsKIAlLQVNTRVJU
KGlucCA9PSBOVUxMLCAoInVkcDZfYXR0YWNoOiBpbnAgIT0gTlVMTCIpKTsKIApAQCAtODQ5LDEw
ICs5MTYsMTAgQEAgdWRwNl9hdHRhY2goc3RydWN0IHNvY2tldCAqc28sIGludCBwcm90bywgc3Ry
dWN0IHQKIAkJaWYgKGVycm9yKQogCQkJcmV0dXJuIChlcnJvcik7CiAJfQotCUlOUF9JTkZPX1dM
T0NLKCZWX3VkYmluZm8pOwotCWVycm9yID0gaW5fcGNiYWxsb2Moc28sICZWX3VkYmluZm8pOwor
CUlOUF9JTkZPX1dMT0NLKHBjYmluZm8pOworCWVycm9yID0gaW5fcGNiYWxsb2Moc28sIHBjYmlu
Zm8pOwogCWlmIChlcnJvcikgewotCQlJTlBfSU5GT19XVU5MT0NLKCZWX3VkYmluZm8pOworCQlJ
TlBfSU5GT19XVU5MT0NLKHBjYmluZm8pOwogCQlyZXR1cm4gKGVycm9yKTsKIAl9CiAJaW5wID0g
KHN0cnVjdCBpbnBjYiAqKXNvLT5zb19wY2I7CkBAIC04NzMsMTEgKzk0MCwxMSBAQCB1ZHA2X2F0
dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHByb3RvLCBzdHJ1Y3QgdAogCWlmIChlcnJvcikg
ewogCQlpbl9wY2JkZXRhY2goaW5wKTsKIAkJaW5fcGNiZnJlZShpbnApOwotCQlJTlBfSU5GT19X
VU5MT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSU5GT19XVU5MT0NLKHBjYmluZm8pOwogCQlyZXR1
cm4gKGVycm9yKTsKIAl9CiAJSU5QX1dVTkxPQ0soaW5wKTsKLQlJTlBfSU5GT19XVU5MT0NLKCZW
X3VkYmluZm8pOworCUlOUF9JTkZPX1dVTkxPQ0socGNiaW5mbyk7CiAJcmV0dXJuICgwKTsKIH0K
IApAQCAtODkxLDcgKzk1OCw3IEBAIHVkcDZfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0
IHNvY2thZGRyICpuYW0sCiAJS0FTU0VSVChpbnAgIT0gTlVMTCwgKCJ1ZHA2X2JpbmQ6IGlucCA9
PSBOVUxMIikpOwogCiAJSU5QX1dMT0NLKGlucCk7Ci0JSU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5m
byk7CisJSU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJaW5wLT5pbnBfdmZsYWcg
Jj0gfklOUF9JUFY0OwogCWlucC0+aW5wX3ZmbGFnIHw9IElOUF9JUFY2OwogCWlmICgoaW5wLT5p
bnBfZmxhZ3MgJiBJTjZQX0lQVjZfVjZPTkxZKSA9PSAwKSB7CkBAIC05MTksNyArOTg2LDcgQEAg
dWRwNl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbSwKICNpZmRl
ZiBJTkVUCiBvdXQ6CiAjZW5kaWYKLQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOworCUlO
UF9IQVNIX1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJSU5QX1dVTkxPQ0soaW5wKTsKIAly
ZXR1cm4gKGVycm9yKTsKIH0KQEAgLTk0MywxMCArMTAxMCwxMCBAQCB1ZHA2X2Nsb3NlKHN0cnVj
dCBzb2NrZXQgKnNvKQogI2VuZGlmCiAJSU5QX1dMT0NLKGlucCk7CiAJaWYgKCFJTjZfSVNfQURE
Ul9VTlNQRUNJRklFRCgmaW5wLT5pbjZwX2ZhZGRyKSkgewotCQlJTlBfSEFTSF9XTE9DSygmVl91
ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJCWluNl9wY2Jk
aXNjb25uZWN0KGlucCk7CiAJCWlucC0+aW42cF9sYWRkciA9IGluNmFkZHJfYW55OwotCQlJTlBf
SEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFTSF9XVU5MT0NLKGlucC0+aW5wX3Bj
YmluZm8pOwogCQlzb2lzZGlzY29ubmVjdGVkKHNvKTsKIAl9CiAJSU5QX1dVTkxPQ0soaW5wKTsK
QEAgLTk4NSwxMCArMTA1MiwxMCBAQCB1ZHA2X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0
cnVjdCBzb2NrYWRkciAqbgogCQllcnJvciA9IHByaXNvbl9yZW1vdGVfaXA0KHRkLT50ZF91Y3Jl
ZCwgJnNpbi5zaW5fYWRkcik7CiAJCWlmIChlcnJvciAhPSAwKQogCQkJZ290byBvdXQ7Ci0JCUlO
UF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFTSF9XTE9DSyhpbnAtPmlucF9wY2Jp
bmZvKTsKIAkJZXJyb3IgPSBpbl9wY2Jjb25uZWN0KGlucCwgKHN0cnVjdCBzb2NrYWRkciAqKSZz
aW4sCiAJCSAgICB0ZC0+dGRfdWNyZWQpOwotCQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8p
OworCQlJTlBfSEFTSF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQlpZiAoZXJyb3IgPT0g
MCkKIAkJCXNvaXNjb25uZWN0ZWQoc28pOwogCQlnb3RvIG91dDsKQEAgLTEwMDMsOSArMTA3MCw5
IEBAIHVkcDZfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICpuCiAJ
ZXJyb3IgPSBwcmlzb25fcmVtb3RlX2lwNih0ZC0+dGRfdWNyZWQsICZzaW42LT5zaW42X2FkZHIp
OwogCWlmIChlcnJvciAhPSAwKQogCQlnb3RvIG91dDsKLQlJTlBfSEFTSF9XTE9DSygmVl91ZGJp
bmZvKTsKKwlJTlBfSEFTSF9XTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAllcnJvciA9IGluNl9w
Y2Jjb25uZWN0KGlucCwgbmFtLCB0ZC0+dGRfdWNyZWQpOwotCUlOUF9IQVNIX1dVTkxPQ0soJlZf
dWRiaW5mbyk7CisJSU5QX0hBU0hfV1VOTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAlpZiAoZXJy
b3IgPT0gMCkKIAkJc29pc2Nvbm5lY3RlZChzbyk7CiBvdXQ6CkBAIC0xMDE4LDE4ICsxMDg1LDIx
IEBAIHVkcDZfZGV0YWNoKHN0cnVjdCBzb2NrZXQgKnNvKQogewogCXN0cnVjdCBpbnBjYiAqaW5w
OwogCXN0cnVjdCB1ZHBjYiAqdXA7CisJaW50IGlzdWRwOwogCisJaXN1ZHAgPSAoc28tPnNvX3By
b3RvLT5wcl9wcm90b2NvbCA9PSBJUFBST1RPX1VEUCkgPyAxIDogMDsKKwogCWlucCA9IHNvdG9p
bnBjYihzbyk7CiAJS0FTU0VSVChpbnAgIT0gTlVMTCwgKCJ1ZHA2X2RldGFjaDogaW5wID09IE5V
TEwiKSk7CiAKLQlJTlBfSU5GT19XTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSU5GT19XTE9DSyhp
bnAtPmlucF9wY2JpbmZvKTsKIAlJTlBfV0xPQ0soaW5wKTsKIAl1cCA9IGludG91ZHBjYihpbnAp
OwogCUtBU1NFUlQodXAgIT0gTlVMTCwgKCIlczogdXAgPT0gTlVMTCIsIF9fZnVuY19fKSk7CiAJ
aW5fcGNiZGV0YWNoKGlucCk7CiAJaW5fcGNiZnJlZShpbnApOwotCUlOUF9JTkZPX1dVTkxPQ0so
JlZfdWRiaW5mbyk7Ci0JdWRwX2Rpc2NhcmRjYih1cCk7CisJSU5QX0lORk9fV1VOTE9DSyhpbnAt
PmlucF9wY2JpbmZvKTsKKwl1ZHBfZGlzY2FyZGNiKHVwLCBpc3VkcCk7CiB9CiAKIHN0YXRpYyBp
bnQKQEAgLTEwNTgsMTAgKzExMjgsMTAgQEAgdWRwNl9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQg
KnNvKQogCQlnb3RvIG91dDsKIAl9CiAKLQlJTlBfSEFTSF9XTE9DSygmVl91ZGJpbmZvKTsKKwlJ
TlBfSEFTSF9XTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAlpbjZfcGNiZGlzY29ubmVjdChpbnAp
OwogCWlucC0+aW42cF9sYWRkciA9IGluNmFkZHJfYW55OwotCUlOUF9IQVNIX1dVTkxPQ0soJlZf
dWRiaW5mbyk7CisJSU5QX0hBU0hfV1VOTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAlTT0NLX0xP
Q0soc28pOwogCXNvLT5zb19zdGF0ZSAmPSB+U1NfSVNDT05ORUNURUQ7CQkvKiBYWFggKi8KIAlT
T0NLX1VOTE9DSyhzbyk7CkBAIC0xMTI4LDkgKzExOTgsOSBAQCB1ZHA2X3NlbmQoc3RydWN0IHNv
Y2tldCAqc28sIGludCBmbGFncywgc3RydWN0IG1idQogI2lmZGVmIE1BQwogCW1hY19pbnBjYl9j
cmVhdGVfbWJ1ZihpbnAsIG0pOwogI2VuZGlmCi0JSU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5mbyk7
CisJSU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJZXJyb3IgPSB1ZHA2X291dHB1
dChpbnAsIG0sIGFkZHIsIGNvbnRyb2wsIHRkKTsKLQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmlu
Zm8pOworCUlOUF9IQVNIX1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAjaWZkZWYgSU5FVAog
I2VuZGlmCQogCUlOUF9XVU5MT0NLKGlucCk7CkluZGV4OiBzeXMvbmV0aW5ldDYvdWRwNl92YXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBzeXMvbmV0aW5ldDYvdWRwNl92YXIuaAkocmV2aXNpb24gMjQ4ODEx
KQorKysgc3lzL25ldGluZXQ2L3VkcDZfdmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5
LDcgQEAgU1lTQ1RMX0RFQ0woX25ldF9pbmV0Nl91ZHA2KTsKIGV4dGVybiBzdHJ1Y3QgcHJfdXNy
cmVxcwl1ZHA2X3VzcnJlcXM7CiAKIHZvaWQJdWRwNl9jdGxpbnB1dChpbnQsIHN0cnVjdCBzb2Nr
YWRkciAqLCB2b2lkICopOwordm9pZAl1ZHBsaXRlNl9jdGxpbnB1dChpbnQsIHN0cnVjdCBzb2Nr
YWRkciAqLCB2b2lkICopOwogaW50CXVkcDZfaW5wdXQoc3RydWN0IG1idWYgKiosIGludCAqLCBp
bnQpOwogI2VuZGlmCiAK
--047d7b5d58b4c09aa004f4c73c6e
Content-Type: text/plain; charset=US-ASCII; name="udplite.diff"
Content-Disposition: attachment; filename="udplite.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hsvl7cvo2

SW5kZXg6IGxpYi9saWJjL25ldC9nZXRhZGRyaW5mby5jCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYi9saWJj
L25ldC9nZXRhZGRyaW5mby5jCShyZXZpc2lvbiAyNDg0NTgpCisrKyBsaWIvbGliYy9uZXQvZ2V0
YWRkcmluZm8uYwkod29ya2luZyBjb3B5KQpAQCAtMTcwLDEyICsxNzAsMTQgQEAgc3RhdGljIGNv
bnN0IHN0cnVjdCBleHBsb3JlIGV4cGxvcmVbXSA9IHsKIAl7IFBGX0lORVQ2LCBTT0NLX1NUUkVB
TSwgSVBQUk9UT19UQ1AsIDB4MDcgfSwKIAl7IFBGX0lORVQ2LCBTT0NLX1NUUkVBTSwgSVBQUk9U
T19TQ1RQLCAweDAzIH0sCiAJeyBQRl9JTkVUNiwgU09DS19TRVFQQUNLRVQsIElQUFJPVE9fU0NU
UCwgMHgwNyB9LAorCXsgUEZfSU5FVDYsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQTElURSwgMHgw
MyB9LAogCXsgUEZfSU5FVDYsIFNPQ0tfUkFXLCBBTlksIDB4MDUgfSwKICNlbmRpZgogCXsgUEZf
SU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFAsIDB4MDcgfSwKIAl7IFBGX0lORVQsIFNPQ0tf
U1RSRUFNLCBJUFBST1RPX1RDUCwgMHgwNyB9LAogCXsgUEZfSU5FVCwgU09DS19TVFJFQU0sIElQ
UFJPVE9fU0NUUCwgMHgwMyB9LAogCXsgUEZfSU5FVCwgU09DS19TRVFQQUNLRVQsIElQUFJPVE9f
U0NUUCwgMHgwNyB9LAorCXsgUEZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFBMSVRFLCAw
eDAzIH0sCiAJeyBQRl9JTkVULCBTT0NLX1JBVywgQU5ZLCAweDA1IH0sCiAJeyAtMSwgMCwgMCwg
MCB9LAogfTsKQEAgLTE0NzYsNiArMTQ3OCw5IEBAIGdldF9wb3J0KHN0cnVjdCBhZGRyaW5mbyAq
YWksIGNvbnN0IGNoYXIgKnNlcnZuYW1lCiAJCWNhc2UgSVBQUk9UT19TQ1RQOgogCQkJcHJvdG8g
PSAic2N0cCI7CiAJCQlicmVhazsKKwkJY2FzZSBJUFBST1RPX1VEUExJVEU6CisJCQlwcm90byA9
ICJ1ZHBsaXRlIjsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJcHJvdG8gPSBOVUxMOwogCQkJ
YnJlYWs7CkluZGV4OiBzeXMvbmV0aW5ldC9pbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9uZXRpbmV0
L2luLmMJKHJldmlzaW9uIDI0ODQ1OCkKKysrIHN5cy9uZXRpbmV0L2luLmMJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMDUsNiArMTIwNSw3IEBAIGluX2lmZGV0YWNoKHN0cnVjdCBpZm5ldCAqaWZwKQog
CiAJaW5fcGNicHVyZ2VpZjAoJlZfcmlwY2JpbmZvLCBpZnApOwogCWluX3BjYnB1cmdlaWYwKCZW
X3VkYmluZm8sIGlmcCk7CisJaW5fcGNicHVyZ2VpZjAoJlZfdWxpdGVjYmluZm8sIGlmcCk7CiAJ
aW5fcHVyZ2VtYWRkcnMoaWZwKTsKIH0KIApJbmRleDogc3lzL25ldGluZXQvaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBzeXMvbmV0aW5ldC9pbi5oCShyZXZpc2lvbiAyNDg0NTgpCisrKyBzeXMvbmV0aW5l
dC9pbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNiArMjM3LDcgQEAgX19FTkRfREVDTFMKICNk
ZWZpbmUJSVBQUk9UT19JUENPTVAJCTEwOAkJLyogcGF5bG9hZCBjb21wcmVzc2lvbiAoSVBDb21w
KSAqLwogI2RlZmluZQlJUFBST1RPX1NDVFAJCTEzMgkJLyogU0NUUCAqLwogI2RlZmluZQlJUFBS
T1RPX01ICQkxMzUJCS8qIElQdjYgTW9iaWxpdHkgSGVhZGVyICovCisjZGVmaW5lCUlQUFJPVE9f
VURQTElURQkJMTM2CQkvKiBVRFBMaXRlICovCiAvKiAxMDEtMjU0OiBQYXJ0bHkgVW5hc3NpZ25l
ZCAqLwogI2RlZmluZQlJUFBST1RPX1BJTQkJMTAzCQkvKiBQcm90b2NvbCBJbmRlcGVuZGVudCBN
Y2FzdCAqLwogI2RlZmluZQlJUFBST1RPX0NBUlAJCTExMgkJLyogQ0FSUCAqLwpJbmRleDogc3lz
L25ldGluZXQvaW5fcGNiLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldGluZXQvaW5fcGNiLmMJKHJl
dmlzaW9uIDI0ODQ1OCkKKysrIHN5cy9uZXRpbmV0L2luX3BjYi5jCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTAsMTMgKzM5MCwxNCBAQCBpbl9wY2JfbHBvcnQoc3RydWN0IGlucGNiICppbnAsIHN0cnVj
dCBpbl9hZGRyICpsYQogCQlsYXN0cG9ydCA9ICZwY2JpbmZvLT5pcGlfbGFzdHBvcnQ7CiAJfQog
CS8qCi0JICogRm9yIFVEUCwgdXNlIHJhbmRvbSBwb3J0IGFsbG9jYXRpb24gYXMgbG9uZyBhcyB0
aGUgdXNlcgorCSAqIEZvciBVRFAoLUxpdGUpLCB1c2UgcmFuZG9tIHBvcnQgYWxsb2NhdGlvbiBh
cyBsb25nIGFzIHRoZSB1c2VyCiAJICogYWxsb3dzIGl0LiAgRm9yIFRDUCAoYW5kIGFzIG9mIHll
dCB1bmtub3duKSBjb25uZWN0aW9ucywKIAkgKiB1c2UgcmFuZG9tIHBvcnQgYWxsb2NhdGlvbiBv
bmx5IGlmIHRoZSB1c2VyIGFsbG93cyBpdCBBTkQKIAkgKiBpcHBvcnRfdGljaygpIGFsbG93cyBp
dC4KIAkgKi8KIAlpZiAoVl9pcHBvcnRfcmFuZG9taXplZCAmJgotCQkoIVZfaXBwb3J0X3N0b3By
YW5kb20gfHwgcGNiaW5mbyA9PSAmVl91ZGJpbmZvKSkKKwkJKCFWX2lwcG9ydF9zdG9wcmFuZG9t
IHx8IHBjYmluZm8gPT0gJlZfdWRiaW5mbyB8fAorCQlwY2JpbmZvID09ICZWX3VsaXRlY2JpbmZv
KSkKIAkJZG9yYW5kb20gPSAxOwogCWVsc2UKIAkJZG9yYW5kb20gPSAwOwpAQCAtNDA2LDggKzQw
Nyw4IEBAIGluX3BjYl9scG9ydChzdHJ1Y3QgaW5wY2IgKmlucCwgc3RydWN0IGluX2FkZHIgKmxh
CiAJICovCiAJaWYgKGZpcnN0ID09IGxhc3QpCiAJCWRvcmFuZG9tID0gMDsKLQkvKiBNYWtlIHN1
cmUgdG8gbm90IGluY2x1ZGUgVURQIHBhY2tldHMgaW4gdGhlIGNvdW50LiAqLwotCWlmIChwY2Jp
bmZvICE9ICZWX3VkYmluZm8pCisJLyogTWFrZSBzdXJlIHRvIG5vdCBpbmNsdWRlIFVEUCgtTGl0
ZSkgcGFja2V0cyBpbiB0aGUgY291bnQuICovCisJaWYgKHBjYmluZm8gIT0gJlZfdWRiaW5mbyB8
fCBwY2JpbmZvICE9ICZWX3VsaXRlY2JpbmZvKQogCQlWX2lwcG9ydF90Y3BhbGxvY3MrKzsKIAkv
KgogCSAqIEluc3RlYWQgb2YgaGF2aW5nIHR3byBsb29wcyBmdXJ0aGVyIGRvd24gY291bnRpbmcg
dXAgb3IgZG93bgpJbmRleDogc3lzL25ldGluZXQvaW5fcHJvdG8uYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBz
eXMvbmV0aW5ldC9pbl9wcm90by5jCShyZXZpc2lvbiAyNDg0NTgpCisrKyBzeXMvbmV0aW5ldC9p
bl9wcm90by5jCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNiArMTg0LDIwIEBAIHN0cnVjdCBwcm90
b3N3IGluZXRzd1tdID0gewogfSwKICNlbmRpZiAvKiBTQ1RQICovCiB7CisJLnByX3R5cGUgPQkJ
U09DS19ER1JBTSwKKwkucHJfZG9tYWluID0JCSZpbmV0ZG9tYWluLAorCS5wcl9wcm90b2NvbCA9
CQlJUFBST1RPX1VEUExJVEUsCisJLnByX2ZsYWdzID0JCVBSX0FUT01JQ3xQUl9BRERSLAorCS5w
cl9pbnB1dCA9CQl1ZHBfaW5wdXQsCisJLnByX2N0bGlucHV0ID0JCXVkcGxpdGVfY3RsaW5wdXQs
CisJLnByX2N0bG91dHB1dCA9CQl1ZHBfY3Rsb3V0cHV0LAorCS5wcl9pbml0ID0JCXVkcGxpdGVf
aW5pdCwKKyNpZmRlZiBWSU1BR0UKKwkucHJfZGVzdHJveSA9CQl1ZHBsaXRlX2Rlc3Ryb3ksCisj
ZW5kaWYKKwkucHJfdXNycmVxcyA9CQkmdWRwX3VzcnJlcXMKK30sCit7CiAJLnByX3R5cGUgPQkJ
U09DS19SQVcsCiAJLnByX2RvbWFpbiA9CQkmaW5ldGRvbWFpbiwKIAkucHJfcHJvdG9jb2wgPQkJ
SVBQUk9UT19SQVcsCkBAIC0zNzAsNiArMzg0LDcgQEAgU1lTQ1RMX05PREUoX25ldF9pbmV0LCBJ
UFBST1RPX1RDUCwJdGNwLAlDVExGTEFHX1IKICNpZmRlZiBTQ1RQCiBTWVNDVExfTk9ERShfbmV0
X2luZXQsIElQUFJPVE9fU0NUUCwJc2N0cCwJQ1RMRkxBR19SVywgMCwJIlNDVFAiKTsKICNlbmRp
ZgorU1lTQ1RMX05PREUoX25ldF9pbmV0LCBJUFBST1RPX1VEUExJVEUsCXVkcGxpdGUsQ1RMRkxB
R19SVywgMCwJIlVEUExpdGUiKTsKIFNZU0NUTF9OT0RFKF9uZXRfaW5ldCwgSVBQUk9UT19JR01Q
LAlpZ21wLAlDVExGTEFHX1JXLCAwLAkiSUdNUCIpOwogI2lmZGVmIElQU0VDCiAvKiBYWFggbm8g
cHJvdG9jb2wgIyB0byB1c2UsIHBpY2sgc29tZXRoaW5nICJyZXNlcnZlZCIgKi8KSW5kZXg6IHN5
cy9uZXRpbmV0L3VkcF91c3JyZXEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0aW5ldC91ZHBfdXNy
cmVxLmMJKHJldmlzaW9uIDI0ODQ1OCkKKysrIHN5cy9uZXRpbmV0L3VkcF91c3JyZXEuYwkod29y
a2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjZW5k
aWYKICNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPgogI2luY2x1ZGUgPG5ldGluZXQvdWRwX3Zhci5o
PgorI2luY2x1ZGUgPG5ldGluZXQvdWRwbGl0ZS5oPgogCiAjaWZkZWYgSVBTRUMKICNpbmNsdWRl
IDxuZXRpcHNlYy9pcHNlYy5oPgpAQCAtMTMxLDEzICsxMzIsMTggQEAgdV9sb25nCXVkcF9yZWN2
c3BhY2UgPSA0MCAqICgxMDI0ICsKICNlbmRpZgogCQkJCSAgICAgICk7CiAKKwogU1lTQ1RMX1VM
T05HKF9uZXRfaW5ldF91ZHAsIFVEUENUTF9SRUNWU1BBQ0UsIHJlY3ZzcGFjZSwgQ1RMRkxBR19S
VywKICAgICAmdWRwX3JlY3ZzcGFjZSwgMCwgIk1heGltdW0gc3BhY2UgZm9yIGluY29taW5nIFVE
UCBkYXRhZ3JhbXMiKTsKIAogVk5FVF9ERUZJTkUoc3RydWN0IGlucGNiaGVhZCwgdWRiKTsJCS8q
IGZyb20gdWRwX3Zhci5oICovCiBWTkVUX0RFRklORShzdHJ1Y3QgaW5wY2JpbmZvLCB1ZGJpbmZv
KTsKK1ZORVRfREVGSU5FKHN0cnVjdCBpbnBjYmhlYWQsIHVsaXRlY2IpOworVk5FVF9ERUZJTkUo
c3RydWN0IGlucGNiaW5mbywgdWxpdGVjYmluZm8pOwogc3RhdGljIFZORVRfREVGSU5FKHVtYV96
b25lX3QsIHVkcGNiX3pvbmUpOwotI2RlZmluZQlWX3VkcGNiX3pvbmUJCQlWTkVUKHVkcGNiX3pv
bmUpCitzdGF0aWMgVk5FVF9ERUZJTkUodW1hX3pvbmVfdCwgdWRwbGl0ZWNiX3pvbmUpOworI2Rl
ZmluZQlWX3VkcGNiX3pvbmUJCVZORVQodWRwY2Jfem9uZSkKKyNkZWZpbmUJVl91ZHBsaXRlY2Jf
em9uZQlWTkVUKHVkcGxpdGVjYl96b25lKQogCiAjaWZuZGVmIFVEQkhBU0hTSVpFCiAjZGVmaW5l
CVVEQkhBU0hTSVpFCTEyOApAQCAtMTcxLDYgKzE3NywxNCBAQCB1ZHBfem9uZV9jaGFuZ2Uodm9p
ZCAqdGFnKQogCXVtYV96b25lX3NldF9tYXgoVl91ZHBjYl96b25lLCBtYXhzb2NrZXRzKTsKIH0K
IAorc3RhdGljIHZvaWQKK3VkcGxpdGVfem9uZV9jaGFuZ2Uodm9pZCAqdGFnKQoreworCisJdW1h
X3pvbmVfc2V0X21heChWX3VsaXRlY2JpbmZvLmlwaV96b25lLCBtYXhzb2NrZXRzKTsKKwl1bWFf
em9uZV9zZXRfbWF4KFZfdWRwbGl0ZWNiX3pvbmUsIG1heHNvY2tldHMpOworfQorCiBzdGF0aWMg
aW50CiB1ZHBfaW5wY2JfaW5pdCh2b2lkICptZW0sIGludCBzaXplLCBpbnQgZmxhZ3MpCiB7CkBA
IC0xODEsNiArMTk1LDE2IEBAIHVkcF9pbnBjYl9pbml0KHZvaWQgKm1lbSwgaW50IHNpemUsIGlu
dCBmbGFncykKIAlyZXR1cm4gKDApOwogfQogCitzdGF0aWMgaW50Cit1ZHBsaXRlX2lucGNiX2lu
aXQodm9pZCAqbWVtLCBpbnQgc2l6ZSwgaW50IGZsYWdzKQoreworCXN0cnVjdCBpbnBjYiAqaW5w
OworCisJaW5wID0gbWVtOworCUlOUF9MT0NLX0lOSVQoaW5wLCAiaW5wIiwgInVkcGxpdGVpbnAi
KTsKKwlyZXR1cm4gKDApOworfQorCiB2b2lkCiB1ZHBfaW5pdCh2b2lkKQogewpAQCAtMTk2LDYg
KzIyMCwyMiBAQCB1ZHBfaW5pdCh2b2lkKQogCSAgICBFVkVOVEhBTkRMRVJfUFJJX0FOWSk7CiB9
CiAKK3ZvaWQKK3VkcGxpdGVfaW5pdCh2b2lkKQoreworCisJaW5fcGNiaW5mb19pbml0KCZWX3Vs
aXRlY2JpbmZvLCAidWRwbGl0ZSIsICZWX3VsaXRlY2IsIFVEQkhBU0hTSVpFLAorCSAgICBVREJI
QVNIU0laRSwgInVkcGxpdGVfaW5wY2IiLCB1ZHBsaXRlX2lucGNiX2luaXQsIE5VTEwsCisJICAg
IFVNQV9aT05FX05PRlJFRSwgSVBJX0hBU0hGSUVMRFNfMlRVUExFKTsKKwlWX3VkcGxpdGVjYl96
b25lID0gdW1hX3pjcmVhdGUoInVkcGxpdGVjYiIsIHNpemVvZihzdHJ1Y3QgdWRwY2IpLAorCSAg
ICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBVTUFfQUxJR05fUFRSLCBVTUFfWk9ORV9OT0ZSRUUp
OworCXVtYV96b25lX3NldF9tYXgoVl91ZHBsaXRlY2Jfem9uZSwgbWF4c29ja2V0cyk7CisJdW1h
X3pvbmVfc2V0X3dhcm5pbmcoVl91ZHBsaXRlY2Jfem9uZSwKKwkgICAgImtlcm4uaXBjLm1heHNv
Y2tldHMgbGltaXQgcmVhY2hlZCIpOworCUVWRU5USEFORExFUl9SRUdJU1RFUihtYXhzb2NrZXRz
X2NoYW5nZSwgdWRwbGl0ZV96b25lX2NoYW5nZSwgTlVMTCwKKwkgICAgRVZFTlRIQU5ETEVSX1BS
SV9BTlkpOworfQorCiAvKgogICogS2VybmVsIG1vZHVsZSBpbnRlcmZhY2UgZm9yIHVwZGF0aW5n
IHVkcHN0YXQuICBUaGUgYXJndW1lbnQgaXMgYW4gaW5kZXgKICAqIGludG8gdWRwc3RhdCB0cmVh
dGVkIGFzIGFuIGFycmF5IG9mIHVfbG9uZy4gIFdoaWxlIHRoaXMgZW5jb2RlcyB0aGUKQEAgLTIx
NSw3ICsyNTUsMTAgQEAgdWRwX25ld3VkcGNiKHN0cnVjdCBpbnBjYiAqaW5wKQogewogCXN0cnVj
dCB1ZHBjYiAqdXA7CiAKLQl1cCA9IHVtYV96YWxsb2MoVl91ZHBjYl96b25lLCBNX05PV0FJVCB8
IE1fWkVSTyk7CisJaWYgKGlucC0+aW5wX3NvY2tldC0+c29fcHJvdG8tPnByX3Byb3RvY29sID09
IElQUFJPVE9fVURQKQorCQl1cCA9IHVtYV96YWxsb2MoVl91ZHBjYl96b25lLCBNX05PV0FJVCB8
IE1fWkVSTyk7CisJZWxzZQorCQl1cCA9IHVtYV96YWxsb2MoVl91ZHBsaXRlY2Jfem9uZSwgTV9O
T1dBSVQgfCBNX1pFUk8pOwogCWlmICh1cCA9PSBOVUxMKQogCQlyZXR1cm4gKEVOT0JVRlMpOwog
CWlucC0+aW5wX3BwY2IgPSB1cDsKQEAgLTIyMywxMCArMjY2LDEyIEBAIHVkcF9uZXd1ZHBjYihz
dHJ1Y3QgaW5wY2IgKmlucCkKIH0KIAogdm9pZAotdWRwX2Rpc2NhcmRjYihzdHJ1Y3QgdWRwY2Ig
KnVwKQordWRwX2Rpc2NhcmRjYihzdHJ1Y3QgdWRwY2IgKnVwLCBpbnQgaXN1ZHApCiB7Ci0KLQl1
bWFfemZyZWUoVl91ZHBjYl96b25lLCB1cCk7CisJaWYgKGlzdWRwKQorCQl1bWFfemZyZWUoVl91
ZHBjYl96b25lLCB1cCk7CisJZWxzZQorCQl1bWFfemZyZWUoVl91ZHBsaXRlY2Jfem9uZSwgdXAp
OwogfQogCiAjaWZkZWYgVklNQUdFCkBAIC0yMzcsNiArMjgyLDE0IEBAIHVkcF9kZXN0cm95KHZv
aWQpCiAJaW5fcGNiaW5mb19kZXN0cm95KCZWX3VkYmluZm8pOwogCXVtYV96ZGVzdHJveShWX3Vk
cGNiX3pvbmUpOwogfQorCit2b2lkCit1ZHBsaXRlX2Rlc3Ryb3kodm9pZCkKK3sKKworCWluX3Bj
YmluZm9fZGVzdHJveSgmVl91bGl0ZWNiaW5mbyk7CisJdW1hX3pkZXN0cm95KFZfdWRwbGl0ZWNi
X3pvbmUpOworfQogI2VuZGlmCiAKICNpZmRlZiBJTkVUCkBAIC0zMzksMTAgKzM5MiwxMyBAQCB1
ZHBfaW5wdXQoc3RydWN0IG1idWYgKm0sIGludCBvZmYpCiAJc3RydWN0IHVkcGhkciAqdWg7CiAJ
c3RydWN0IGlmbmV0ICppZnA7CiAJc3RydWN0IGlucGNiICppbnA7CisJc3RydWN0IGlucGNiaW5m
byAqcGNiaW5mbzsKIAl1aW50MTZfdCBsZW4sIGlwX2xlbjsKIAlzdHJ1Y3QgaXAgc2F2ZV9pcDsK
IAlzdHJ1Y3Qgc29ja2FkZHJfaW4gdWRwX2luOwogCXN0cnVjdCBtX3RhZyAqZndkX3RhZzsKKwlp
bnQgY3Njb3ZfcGFydGlhbDsKKwl1aW50OF90IHByOwogCiAJaWZwID0gbS0+bV9wa3RoZHIucmN2
aWY7CiAJVURQU1RBVF9JTkModWRwc19pcGFja2V0cyk7CkBAIC0zNjksNyArNDI1LDggQEAgdWRw
X2lucHV0KHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogCQlpcCA9IG10b2QobSwgc3RydWN0IGlw
ICopOwogCX0KIAl1aCA9IChzdHJ1Y3QgdWRwaGRyICopKChjYWRkcl90KWlwICsgaXBobGVuKTsK
LQorCXByID0gaXAtPmlwX3A7CisJY3Njb3ZfcGFydGlhbCA9IChwciA9PSBJUFBST1RPX1VEUExJ
VEUpID8gMSA6IDA7CiAJLyoKIAkgKiBEZXN0aW5hdGlvbiBwb3J0IG9mIDAgaXMgaWxsZWdhbCwg
YmFzZWQgb24gUkZDNzY4LgogCSAqLwpAQCAtMzkyLDEyICs0NDksMTkgQEAgdWRwX2lucHV0KHN0
cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogCSAqLwogCWxlbiA9IG50b2hzKCh1X3Nob3J0KXVoLT51
aF91bGVuKTsKIAlpcF9sZW4gPSBudG9ocyhpcC0+aXBfbGVuKSAtIGlwaGxlbjsKKwlpZiAocHIg
PT0gSVBQUk9UT19VRFBMSVRFICYmIGxlbiA9PSAwKSB7CisJCS8qIFplcm8gbWVhbnMgY2hlY2tz
dW0gb3ZlciB0aGUgY29tcGxldGUgcGFja2V0LiAqLworCQlsZW4gPSBpcF9sZW47CisJCWNzY292
X3BhcnRpYWwgPSAwOworCX0KKwogCWlmIChpcF9sZW4gIT0gbGVuKSB7CiAJCWlmIChsZW4gPiBp
cF9sZW4gfHwgbGVuIDwgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpKSB7CiAJCQlVRFBTVEFUX0lOQyh1
ZHBzX2JhZGxlbik7CiAJCQlnb3RvIGJhZHVubG9ja2VkOwogCQl9Ci0JCW1fYWRqKG0sIGxlbiAt
IGlwX2xlbik7CisJCWlmIChwciA9PSBJUFBST1RPX1VEUCkKKwkJCW1fYWRqKG0sIGxlbiAtIGlw
X2xlbik7CiAJfQogCiAJLyoKQEAgLTQxNSwyMCArNDc5LDI0IEBAIHVkcF9pbnB1dChzdHJ1Y3Qg
bWJ1ZiAqbSwgaW50IG9mZikKIAlpZiAodWgtPnVoX3N1bSkgewogCQl1X3Nob3J0IHVoX3N1bTsK
IAotCQlpZiAobS0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIENTVU1fREFUQV9WQUxJRCkgeworCQlp
ZiAoKG0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MgJiBDU1VNX0RBVEFfVkFMSUQpICYmCisJCSAgICAh
Y3Njb3ZfcGFydGlhbCkgewogCQkJaWYgKG0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MgJiBDU1VNX1BT
RVVET19IRFIpCiAJCQkJdWhfc3VtID0gbS0+bV9wa3RoZHIuY3N1bV9kYXRhOwogCQkJZWxzZQog
CQkJCXVoX3N1bSA9IGluX3BzZXVkbyhpcC0+aXBfc3JjLnNfYWRkciwKIAkJCQkgICAgaXAtPmlw
X2RzdC5zX2FkZHIsIGh0b25sKCh1X3Nob3J0KWxlbiArCi0JCQkJICAgIG0tPm1fcGt0aGRyLmNz
dW1fZGF0YSArIElQUFJPVE9fVURQKSk7CisJCQkJICAgIG0tPm1fcGt0aGRyLmNzdW1fZGF0YSAr
IHByKSk7CiAJCQl1aF9zdW0gXj0gMHhmZmZmOwogCQl9IGVsc2UgewogCQkJY2hhciBiWzldOwog
CiAJCQliY29weSgoKHN0cnVjdCBpcG92bHkgKilpcCktPmloX3gxLCBiLCA5KTsKIAkJCWJ6ZXJv
KCgoc3RydWN0IGlwb3ZseSAqKWlwKS0+aWhfeDEsIDkpOwotCQkJKChzdHJ1Y3QgaXBvdmx5ICop
aXApLT5paF9sZW4gPSB1aC0+dWhfdWxlbjsKKwkJCWlmIChwciA9PSBJUFBST1RPX1VEUCkKKwkJ
CQkoKHN0cnVjdCBpcG92bHkgKilpcCktPmloX2xlbiA9IHVoLT51aF91bGVuOworCQkJZWxzZQor
CQkJCSgoc3RydWN0IGlwb3ZseSAqKWlwKS0+aWhfbGVuID0gaHRvbnMoaXBfbGVuKTsKIAkJCXVo
X3N1bSA9IGluX2Nrc3VtKG0sIGxlbiArIHNpemVvZiAoc3RydWN0IGlwKSk7CiAJCQliY29weShi
LCAoKHN0cnVjdCBpcG92bHkgKilpcCktPmloX3gxLCA5KTsKIAkJfQpAQCAtNDQwLDE0ICs1MDgs
MTggQEAgdWRwX2lucHV0KHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogCX0gZWxzZQogCQlVRFBT
VEFUX0lOQyh1ZHBzX25vc3VtKTsKIAorCXBjYmluZm8gPSAocHIgPT0gSVBQUk9UT19VRFApID8g
JlZfdWRiaW5mbyA6ICZWX3VsaXRlY2JpbmZvOworCiAJaWYgKElOX01VTFRJQ0FTVChudG9obChp
cC0+aXBfZHN0LnNfYWRkcikpIHx8CiAJICAgIGluX2Jyb2FkY2FzdChpcC0+aXBfZHN0LCBpZnAp
KSB7CiAJCXN0cnVjdCBpbnBjYiAqbGFzdDsKKwkJc3RydWN0IGlucGNiaGVhZCAqcGNibGlzdDsK
IAkJc3RydWN0IGlwX21vcHRpb25zICppbW87CiAKLQkJSU5QX0lORk9fUkxPQ0soJlZfdWRiaW5m
byk7CisJCUlOUF9JTkZPX1JMT0NLKHBjYmluZm8pOworCQlwY2JsaXN0ID0gKHByID09IElQUFJP
VE9fVURQKSA/ICZWX3VkYiA6ICZWX3VsaXRlY2I7CiAJCWxhc3QgPSBOVUxMOwotCQlMSVNUX0ZP
UkVBQ0goaW5wLCAmVl91ZGIsIGlucF9saXN0KSB7CisJCUxJU1RfRk9SRUFDSChpbnAsIHBjYmxp
c3QsIGlucF9saXN0KSB7CiAJCQlpZiAoaW5wLT5pbnBfbHBvcnQgIT0gdWgtPnVoX2Rwb3J0KQog
CQkJCWNvbnRpbnVlOwogI2lmZGVmIElORVQ2CkBAIC01MzMsMTIgKzYwNSwxMiBAQCB1ZHBfaW5w
dXQoc3RydWN0IG1idWYgKm0sIGludCBvZmYpCiAJCQlVRFBTVEFUX0lOQyh1ZHBzX25vcG9ydGJj
YXN0KTsKIAkJCWlmIChpbnApCiAJCQkJSU5QX1JVTkxPQ0soaW5wKTsKLQkJCUlOUF9JTkZPX1JV
TkxPQ0soJlZfdWRiaW5mbyk7CisJCQlJTlBfSU5GT19SVU5MT0NLKHBjYmluZm8pOwogCQkJZ290
byBiYWR1bmxvY2tlZDsKIAkJfQogCQl1ZHBfYXBwZW5kKGxhc3QsIGlwLCBtLCBpcGhsZW4sICZ1
ZHBfaW4pOwogCQlJTlBfUlVOTE9DSyhsYXN0KTsKLQkJSU5QX0lORk9fUlVOTE9DSygmVl91ZGJp
bmZvKTsKKwkJSU5QX0lORk9fUlVOTE9DSyhwY2JpbmZvKTsKIAkJcmV0dXJuOwogCX0KIApAQCAt
NTU5LDcgKzYzMSw3IEBAIHVkcF9pbnB1dChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZikKIAkJICog
VHJhbnNwYXJlbnRseSBmb3J3YXJkZWQuIFByZXRlbmQgdG8gYmUgdGhlIGRlc3RpbmF0aW9uLgog
CQkgKiBBbHJlYWR5IGdvdCBvbmUgbGlrZSB0aGlzPwogCQkgKi8KLQkJaW5wID0gaW5fcGNibG9v
a3VwX21idWYoJlZfdWRiaW5mbywgaXAtPmlwX3NyYywgdWgtPnVoX3Nwb3J0LAorCQlpbnAgPSBp
bl9wY2Jsb29rdXBfbWJ1ZihwY2JpbmZvLCBpcC0+aXBfc3JjLCB1aC0+dWhfc3BvcnQsCiAJCSAg
ICBpcC0+aXBfZHN0LCB1aC0+dWhfZHBvcnQsIElOUExPT0tVUF9STE9DS1BDQiwgaWZwLCBtKTsK
IAkJaWYgKCFpbnApIHsKIAkJCS8qCkBAIC01NjcsNyArNjM5LDcgQEAgdWRwX2lucHV0KHN0cnVj
dCBtYnVmICptLCBpbnQgb2ZmKQogCQkJICogQmVjYXVzZSB3ZSd2ZSByZXdyaXR0ZW4gdGhlIGRl
c3RpbmF0aW9uIGFkZHJlc3MsCiAJCQkgKiBhbnkgaGFyZHdhcmUtZ2VuZXJhdGVkIGhhc2ggaXMg
aWdub3JlZC4KIAkJCSAqLwotCQkJaW5wID0gaW5fcGNibG9va3VwKCZWX3VkYmluZm8sIGlwLT5p
cF9zcmMsCisJCQlpbnAgPSBpbl9wY2Jsb29rdXAocGNiaW5mbywgaXAtPmlwX3NyYywKIAkJCSAg
ICB1aC0+dWhfc3BvcnQsIG5leHRfaG9wLT5zaW5fYWRkciwKIAkJCSAgICBuZXh0X2hvcC0+c2lu
X3BvcnQgPyBodG9ucyhuZXh0X2hvcC0+c2luX3BvcnQpIDoKIAkJCSAgICB1aC0+dWhfZHBvcnQs
IElOUExPT0tVUF9XSUxEQ0FSRCB8CkBAIC01NzcsNyArNjQ5LDcgQEAgdWRwX2lucHV0KHN0cnVj
dCBtYnVmICptLCBpbnQgb2ZmKQogCQltX3RhZ19kZWxldGUobSwgZndkX3RhZyk7CiAJCW0tPm1f
ZmxhZ3MgJj0gfk1fSVBfTkVYVEhPUDsKIAl9IGVsc2UKLQkJaW5wID0gaW5fcGNibG9va3VwX21i
dWYoJlZfdWRiaW5mbywgaXAtPmlwX3NyYywgdWgtPnVoX3Nwb3J0LAorCQlpbnAgPSBpbl9wY2Js
b29rdXBfbWJ1ZihwY2JpbmZvLCBpcC0+aXBfc3JjLCB1aC0+dWhfc3BvcnQsCiAJCSAgICBpcC0+
aXBfZHN0LCB1aC0+dWhfZHBvcnQsIElOUExPT0tVUF9XSUxEQ0FSRCB8CiAJCSAgICBJTlBMT09L
VVBfUkxPQ0tQQ0IsIGlmcCwgbSk7CiAJaWYgKGlucCA9PSBOVUxMKSB7CkBAIC02MTMsNiArNjg1
LDE2IEBAIHVkcF9pbnB1dChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZikKIAkJbV9mcmVlbShtKTsK
IAkJcmV0dXJuOwogCX0KKwlpZiAoY3Njb3ZfcGFydGlhbCkgeworCQlzdHJ1Y3QgdWRwY2IgKnVw
OworCisJCXVwID0gaW50b3VkcGNiKGlucCk7CisJCWlmICh1cC0+dV9yeGNzbGVuID4gbGVuKSB7
CisJCQlJTlBfUlVOTE9DSyhpbnApOworCQkJbV9mcmVlbShtKTsKKwkJCXJldHVybjsKKwkJfQor
CX0KIAl1ZHBfYXBwZW5kKGlucCwgaXAsIG0sIGlwaGxlbiwgJnVkcF9pbik7CiAJSU5QX1JVTkxP
Q0soaW5wKTsKIAlyZXR1cm47CkBAIC02NDQsOSArNzI2LDkgQEAgdWRwX25vdGlmeShzdHJ1Y3Qg
aW5wY2IgKmlucCwgaW50IGVycm5vKQogCXJldHVybiAoaW5wKTsKIH0KIAotI2lmZGVmIElORVQK
LXZvaWQKLXVkcF9jdGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICp2
aXApCitzdGF0aWMgdm9pZAordWRwX2NvbW1vbl9jdGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29j
a2FkZHIgKnNhLCB2b2lkICp2aXAsCisgICAgc3RydWN0IGlucGNiaW5mbyAqcGNiaW5mbykKIHsK
IAlzdHJ1Y3QgaXAgKmlwID0gdmlwOwogCXN0cnVjdCB1ZHBoZHIgKnVoOwpAQCAtNjc1LDcgKzc1
Nyw3IEBAIHVkcF9ub3RpZnkoc3RydWN0IGlucGNiICppbnAsIGludCBlcnJubykKIAkJcmV0dXJu
OwogCWlmIChpcCAhPSBOVUxMKSB7CiAJCXVoID0gKHN0cnVjdCB1ZHBoZHIgKikoKGNhZGRyX3Qp
aXAgKyAoaXAtPmlwX2hsIDw8IDIpKTsKLQkJaW5wID0gaW5fcGNibG9va3VwKCZWX3VkYmluZm8s
IGZhZGRyLCB1aC0+dWhfZHBvcnQsCisJCWlucCA9IGluX3BjYmxvb2t1cChwY2JpbmZvLCBmYWRk
ciwgdWgtPnVoX2Rwb3J0LAogCQkgICAgaXAtPmlwX3NyYywgdWgtPnVoX3Nwb3J0LCBJTlBMT09L
VVBfUkxPQ0tQQ0IsIE5VTEwpOwogCQlpZiAoaW5wICE9IE5VTEwpIHsKIAkJCUlOUF9STE9DS19B
U1NFUlQoaW5wKTsKQEAgLTY4NSw5ICs3NjcsMjMgQEAgdWRwX25vdGlmeShzdHJ1Y3QgaW5wY2Ig
KmlucCwgaW50IGVycm5vKQogCQkJSU5QX1JVTkxPQ0soaW5wKTsKIAkJfQogCX0gZWxzZQotCQlp
bl9wY2Jub3RpZnlhbGwoJlZfdWRiaW5mbywgZmFkZHIsIGluZXRjdGxlcnJtYXBbY21kXSwKKwkJ
aW5fcGNibm90aWZ5YWxsKHBjYmluZm8sIGZhZGRyLCBpbmV0Y3RsZXJybWFwW2NtZF0sCiAJCSAg
ICB1ZHBfbm90aWZ5KTsKKwlyZXR1cm47CiB9CisKKyNpZmRlZiBJTkVUCit2b2lkCit1ZHBfY3Rs
aW5wdXQoaW50IGNtZCwgc3RydWN0IHNvY2thZGRyICpzYSwgdm9pZCAqdmlwKQoreworCXJldHVy
biAodWRwX2NvbW1vbl9jdGxpbnB1dChjbWQsIHNhLCB2aXAsICZWX3VkYmluZm8pKTsKK30KKwor
dm9pZAordWRwbGl0ZV9jdGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lk
ICp2aXApCit7CisJcmV0dXJuICh1ZHBfY29tbW9uX2N0bGlucHV0KGNtZCwgc2EsIHZpcCwgJlZf
dWxpdGVjYmluZm8pKTsKK30KICNlbmRpZiAvKiBJTkVUICovCiAKIHN0YXRpYyBpbnQKQEAgLTg0
MywxNiArOTM5LDE2IEBAIFNZU0NUTF9QUk9DKF9uZXRfaW5ldF91ZHAsIE9JRF9BVVRPLCBnZXRj
cmVkLAogaW50CiB1ZHBfY3Rsb3V0cHV0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja29w
dCAqc29wdCkKIHsKLQlpbnQgZXJyb3IgPSAwLCBvcHR2YWw7CisJaW50IGlzdWRwbGl0ZSwgZXJy
b3IsIG9wdHZhbDsKIAlzdHJ1Y3QgaW5wY2IgKmlucDsKLSNpZmRlZiBJUFNFQ19OQVRfVAogCXN0
cnVjdCB1ZHBjYiAqdXA7Ci0jZW5kaWYKIAorCWVycm9yID0gMDsKKwlpc3VkcGxpdGUgPSAoc28t
PnNvX3Byb3RvLT5wcl9wcm90b2NvbCA9PSBJUFBST1RPX1VEUExJVEUpID8gMSA6IDA7CiAJaW5w
ID0gc290b2lucGNiKHNvKTsKIAlLQVNTRVJUKGlucCAhPSBOVUxMLCAoIiVzOiBpbnAgPT0gTlVM
TCIsIF9fZnVuY19fKSk7CiAJSU5QX1dMT0NLKGlucCk7Ci0JaWYgKHNvcHQtPnNvcHRfbGV2ZWwg
IT0gSVBQUk9UT19VRFApIHsKKwlpZiAoc29wdC0+c29wdF9sZXZlbCAhPSBzby0+c29fcHJvdG8t
PnByX3Byb3RvY29sKSB7CiAjaWZkZWYgSU5FVDYKIAkJaWYgKElOUF9DSEVDS19TT0NLQUYoc28s
IEFGX0lORVQ2KSkgewogCQkJSU5QX1dVTkxPQ0soaW5wKTsKQEAgLTkxMCw3ICsxMDA2LDMzIEBA
IHVkcF9jdGxvdXRwdXQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nrb3B0ICpzCiAJCQl9
CiAJCQlJTlBfV1VOTE9DSyhpbnApOwogCQkJYnJlYWs7CisJCWNhc2UgVURQTElURV9TRU5EX0NT
Q09WOgorCQljYXNlIFVEUExJVEVfUkVDVl9DU0NPVjoKKwkJCWlmICghaXN1ZHBsaXRlKQorCQkJ
CWdvdG8gYmFkX3NldG9wdG5hbWU7CisJCQlJTlBfV1VOTE9DSyhpbnApOworCQkJZXJyb3IgPSBz
b29wdGNvcHlpbihzb3B0LCAmb3B0dmFsLCBzaXplb2Yob3B0dmFsKSwKKwkJCSAgICBzaXplb2Yo
b3B0dmFsKSk7CisJCQlpZiAoZXJyb3IpCisJCQkJYnJlYWs7CisJCQlpbnAgPSBzb3RvaW5wY2Io
c28pOworCQkJS0FTU0VSVChpbnAgIT0gTlVMTCwgKCIlczogaW5wID09IE5VTEwiLCBfX2Z1bmNf
XykpOworCQkJSU5QX1dMT0NLKGlucCk7CisJCQl1cCA9IGludG91ZHBjYihpbnApOworCQkJS0FT
U0VSVCh1cCAhPSBOVUxMLCAoIiVzOiB1cCA9PSBOVUxMIiwgX19mdW5jX18pKTsKKwkJCWlmIChv
cHR2YWwgIT0gMCAmJiBvcHR2YWwgPCA4KSB7CisJCQkJZXJyb3IgPSBFSU5WQUw7CisJCQkJSU5Q
X1dVTkxPQ0soaW5wKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWlmIChzb3B0LT5zb3B0X25hbWUg
PT0gVURQTElURV9TRU5EX0NTQ09WKQorCQkJCXVwLT51X3R4Y3NsZW4gPSBvcHR2YWw7CisJCQll
bHNlCisJCQkJdXAtPnVfcnhjc2xlbiA9IG9wdHZhbDsKKwkJCUlOUF9XVU5MT0NLKGlucCk7CisJ
CQlicmVhazsKIAkJZGVmYXVsdDoKK2JhZF9zZXRvcHRuYW1lOgogCQkJSU5QX1dVTkxPQ0soaW5w
KTsKIAkJCWVycm9yID0gRU5PUFJPVE9PUFQ7CiAJCQlicmVhazsKQEAgLTkyNyw3ICsxMDQ5LDIx
IEBAIHVkcF9jdGxvdXRwdXQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nrb3B0ICpzCiAJ
CQllcnJvciA9IHNvb3B0Y29weW91dChzb3B0LCAmb3B0dmFsLCBzaXplb2Ygb3B0dmFsKTsKIAkJ
CWJyZWFrOwogI2VuZGlmCisJCWNhc2UgVURQTElURV9TRU5EX0NTQ09WOgorCQljYXNlIFVEUExJ
VEVfUkVDVl9DU0NPVjoKKwkJCWlmICghaXN1ZHBsaXRlKQorCQkJCWdvdG8gYmFkX2dldG9wdG5h
bWU7CisJCQl1cCA9IGludG91ZHBjYihpbnApOworCQkJS0FTU0VSVCh1cCAhPSBOVUxMLCAoIiVz
OiB1cCA9PSBOVUxMIiwgX19mdW5jX18pKTsKKwkJCWlmIChzb3B0LT5zb3B0X25hbWUgPT0gVURQ
TElURV9TRU5EX0NTQ09WKQorCQkJCW9wdHZhbCA9IHVwLT51X3R4Y3NsZW47CisJCQllbHNlCisJ
CQkJb3B0dmFsID0gdXAtPnVfcnhjc2xlbjsKKwkJCUlOUF9XVU5MT0NLKGlucCk7CisJCQllcnJv
ciA9IHNvb3B0Y29weW91dChzb3B0LCAmb3B0dmFsLCBzaXplb2Yob3B0dmFsKSk7CisJCQlicmVh
azsKIAkJZGVmYXVsdDoKK2JhZF9nZXRvcHRuYW1lOgogCQkJSU5QX1dVTkxPQ0soaW5wKTsKIAkJ
CWVycm9yID0gRU5PUFJPVE9PUFQ7CiAJCQlicmVhazsKQEAgLTk0OSwxMiArMTA4NSwxNiBAQCB1
ZHBfb3V0cHV0KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydQogCWludCBs
ZW4gPSBtLT5tX3BrdGhkci5sZW47CiAJc3RydWN0IGluX2FkZHIgZmFkZHIsIGxhZGRyOwogCXN0
cnVjdCBjbXNnaGRyICpjbTsKKwlzdHJ1Y3QgaW5wY2JpbmZvICpwY2JpbmZvOwogCXN0cnVjdCBz
b2NrYWRkcl9pbiAqc2luLCBzcmM7CisJaW50IGNzY292X3BhcnRpYWwgPSAwOwogCWludCBlcnJv
ciA9IDA7CiAJaW50IGlwZmxhZ3M7CiAJdV9zaG9ydCBmcG9ydCwgbHBvcnQ7CiAJaW50IHVubG9j
a191ZGJpbmZvOwogCXVfY2hhciB0b3M7CisJdWludDhfdCBwcjsKKwl1aW50MTZfdCBjc2NvdiA9
IDA7CiAKIAkvKgogCSAqIHVkcF9vdXRwdXQoKSBtYXkgbmVlZCB0byB0ZW1wb3JhcmlseSBiaW5k
IG9yIGNvbm5lY3QgdGhlIGN1cnJlbnQKQEAgLTEwNDksMTIgKzExODksMTMgQEAgdWRwX291dHB1
dChzdHJ1Y3QgaW5wY2IgKmlucCwgc3RydWN0IG1idWYgKm0sIHN0cnUKIAkgKgogCSAqIFhYWFJX
OiBDaGVjayB0aGF0IGhhc2ggbG9ja2luZyB1cGRhdGUgaGVyZSBpcyBjb3JyZWN0LgogCSAqLwor
CXBjYmluZm8gPSBpbnAtPmlucF9wY2JpbmZvOwogCXNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4g
KilhZGRyOwogCWlmIChzaW4gIT0gTlVMTCAmJgogCSAgICAoaW5wLT5pbnBfbGFkZHIuc19hZGRy
ID09IElOQUREUl9BTlkgJiYgaW5wLT5pbnBfbHBvcnQgPT0gMCkpIHsKIAkJSU5QX1JVTkxPQ0so
aW5wKTsKIAkJSU5QX1dMT0NLKGlucCk7Ci0JCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOwor
CQlJTlBfSEFTSF9XTE9DSyhwY2JpbmZvKTsKIAkJdW5sb2NrX3VkYmluZm8gPSBVSF9XTE9DS0VE
OwogCX0gZWxzZSBpZiAoKHNpbiAhPSBOVUxMICYmICgKIAkgICAgKHNpbi0+c2luX2FkZHIuc19h
ZGRyID09IElOQUREUl9BTlkpIHx8CkBAIC0xMDYyLDcgKzEyMDMsNyBAQCB1ZHBfb3V0cHV0KHN0
cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydQogCSAgICAoaW5wLT5pbnBfbGFk
ZHIuc19hZGRyID09IElOQUREUl9BTlkpIHx8CiAJICAgIChpbnAtPmlucF9scG9ydCA9PSAwKSkp
IHx8CiAJICAgIChzcmMuc2luX2ZhbWlseSA9PSBBRl9JTkVUKSkgewotCQlJTlBfSEFTSF9STE9D
SygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfUkxPQ0socGNiaW5mbyk7CiAJCXVubG9ja191ZGJp
bmZvID0gVUhfUkxPQ0tFRDsKIAl9IGVsc2UKIAkJdW5sb2NrX3VkYmluZm8gPSBVSF9VTkxPQ0tF
RDsKQEAgLTEwNzUsNyArMTIxNiw3IEBAIHVkcF9vdXRwdXQoc3RydWN0IGlucGNiICppbnAsIHN0
cnVjdCBtYnVmICptLCBzdHJ1CiAJbGFkZHIgPSBpbnAtPmlucF9sYWRkcjsKIAlscG9ydCA9IGlu
cC0+aW5wX2xwb3J0OwogCWlmIChzcmMuc2luX2ZhbWlseSA9PSBBRl9JTkVUKSB7Ci0JCUlOUF9I
QVNIX0xPQ0tfQVNTRVJUKCZWX3VkYmluZm8pOworCQlJTlBfSEFTSF9MT0NLX0FTU0VSVChwY2Jp
bmZvKTsKIAkJaWYgKChscG9ydCA9PSAwKSB8fAogCQkgICAgKGxhZGRyLnNfYWRkciA9PSBJTkFE
RFJfQU5ZICYmCiAJCSAgICAgc3JjLnNpbl9hZGRyLnNfYWRkciA9PSBJTkFERFJfQU5ZKSkgewpA
QCAtMTEyNiw3ICsxMjY3LDcgQEAgdWRwX291dHB1dChzdHJ1Y3QgaW5wY2IgKmlucCwgc3RydWN0
IG1idWYgKm0sIHN0cnUKIAkJICAgIGlucC0+aW5wX2xwb3J0ID09IDAgfHwKIAkJICAgIHNpbi0+
c2luX2FkZHIuc19hZGRyID09IElOQUREUl9BTlkgfHwKIAkJICAgIHNpbi0+c2luX2FkZHIuc19h
ZGRyID09IElOQUREUl9CUk9BRENBU1QpIHsKLQkJCUlOUF9IQVNIX0xPQ0tfQVNTRVJUKCZWX3Vk
YmluZm8pOworCQkJSU5QX0hBU0hfTE9DS19BU1NFUlQocGNiaW5mbyk7CiAJCQllcnJvciA9IGlu
X3BjYmNvbm5lY3Rfc2V0dXAoaW5wLCBhZGRyLCAmbGFkZHIuc19hZGRyLAogCQkJICAgICZscG9y
dCwgJmZhZGRyLnNfYWRkciwgJmZwb3J0LCBOVUxMLAogCQkJICAgIHRkLT50ZF91Y3JlZCk7CkBA
IC0xMTQxLDcgKzEyODIsNyBAQCB1ZHBfb3V0cHV0KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3Qg
bWJ1ZiAqbSwgc3RydQogCQkJaWYgKGlucC0+aW5wX2xhZGRyLnNfYWRkciA9PSBJTkFERFJfQU5Z
ICYmCiAJCQkgICAgaW5wLT5pbnBfbHBvcnQgPT0gMCkgewogCQkJCUlOUF9XTE9DS19BU1NFUlQo
aW5wKTsKLQkJCQlJTlBfSEFTSF9XTE9DS19BU1NFUlQoJlZfdWRiaW5mbyk7CisJCQkJSU5QX0hB
U0hfV0xPQ0tfQVNTRVJUKHBjYmluZm8pOwogCQkJCS8qCiAJCQkJICogUmVtZW1iZXIgYWRkciBp
ZiBqYWlsZWQsIHRvIHByZXZlbnQKIAkJCQkgKiByZWJpbmRpbmcuCkBAIC0xMTg4LDE1ICsxMzI5
LDM1IEBAIHVkcF9vdXRwdXQoc3RydWN0IGlucGNiICppbnAsIHN0cnVjdCBtYnVmICptLCBzdHJ1
CiAJICogRmlsbCBpbiBtYnVmIHdpdGggZXh0ZW5kZWQgVURQIGhlYWRlciBhbmQgYWRkcmVzc2Vz
IGFuZCBsZW5ndGggcHV0CiAJICogaW50byBuZXR3b3JrIGZvcm1hdC4KIAkgKi8KKwlwciA9IElQ
UFJPVE9fVURQOwogCXVpID0gbXRvZChtLCBzdHJ1Y3QgdWRwaXBoZHIgKik7CiAJYnplcm8odWkt
PnVpX3gxLCBzaXplb2YodWktPnVpX3gxKSk7CS8qIFhYWCBzdGlsbCBuZWVkZWQ/ICovCi0JdWkt
PnVpX3ByID0gSVBQUk9UT19VRFA7CiAJdWktPnVpX3NyYyA9IGxhZGRyOwogCXVpLT51aV9kc3Qg
PSBmYWRkcjsKIAl1aS0+dWlfc3BvcnQgPSBscG9ydDsKIAl1aS0+dWlfZHBvcnQgPSBmcG9ydDsK
IAl1aS0+dWlfdWxlbiA9IGh0b25zKCh1X3Nob3J0KWxlbiArIHNpemVvZihzdHJ1Y3QgdWRwaGRy
KSk7CiAKKwlpZiAoaW5wLT5pbnBfc29ja2V0LT5zb19wcm90by0+cHJfcHJvdG9jb2wgPT0gSVBQ
Uk9UT19VRFBMSVRFKSB7CisJCXN0cnVjdCB1ZHBjYiAqdXA7CisJCXVpbnQxNl90IHBsZW47CisK
KwkJcHIgPSBJUFBST1RPX1VEUExJVEU7CisJCXVwID0gaW50b3VkcGNiKGlucCk7CisJCWNzY292
ID0gdXAtPnVfdHhjc2xlbjsKKwkJcGxlbiA9ICh1X3Nob3J0KWxlbiArIHNpemVvZihzdHJ1Y3Qg
dWRwaGRyKTsKKwkJaWYgKGNzY292ID49IHBsZW4pCisJCQljc2NvdiA9IDA7CisJCXVpLT51aV9s
ZW4gPSBodG9ucyhwbGVuKTsKKwkJdWktPnVpX3VsZW4gPSBodG9ucyhjc2Nvdik7CisKKwkJLyog
Rm9yIFVEUExpdGUsIGNoZWNrc3VtIGNvdmVyYWdlIGxlbmd0aCBvZiB6ZXJvIG1lYW5zCisJCSAq
IHRoZSBlbnRpcmUgVURQTGl0ZSBwYWNrZXQgaXMgY292ZXJlZCBieSB0aGUgY2hlY2tzdW0uCisJ
CSAqLworCQljc2Nvdl9wYXJ0aWFsID0gKGNzY292ID09IDApID8gMCA6IDE7CisJfQorCXVpLT51
aV9wciA9IHByOworCiAJLyoKIAkgKiBTZXQgdGhlIERvbid0IEZyYWdtZW50IGJpdCBpbiB0aGUg
SVAgaGVhZGVyLgogCSAqLwpAQCAtMTIyMiwyNCArMTM4MywyOSBAQCB1ZHBfb3V0cHV0KHN0cnVj
dCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydQogCS8qCiAJICogU2V0IHVwIGNoZWNr
c3VtIGFuZCBvdXRwdXQgZGF0YWdyYW0uCiAJICovCi0JaWYgKFZfdWRwX2Nrc3VtKSB7CisJdWkt
PnVpX3N1bSA9IDA7CisJaWYgKGNzY292X3BhcnRpYWwpIHsKIAkJaWYgKGlucC0+aW5wX2ZsYWdz
ICYgSU5QX09ORVNCQ0FTVCkKIAkJCWZhZGRyLnNfYWRkciA9IElOQUREUl9CUk9BRENBU1Q7CisJ
CWlmICgodWktPnVpX3N1bSA9IGluX2Nrc3VtKG0sIHNpemVvZihzdHJ1Y3QgaXApICsgY3Njb3Yp
KSA9PSAwKQorCQkJdWktPnVpX3N1bSA9IDB4ZmZmZjsKKwl9IGVsc2UgaWYgKFZfdWRwX2Nrc3Vt
IHx8ICFjc2Nvdl9wYXJ0aWFsKSB7CisJCWlmIChpbnAtPmlucF9mbGFncyAmIElOUF9PTkVTQkNB
U1QpCisJCQlmYWRkci5zX2FkZHIgPSBJTkFERFJfQlJPQURDQVNUOwogCQl1aS0+dWlfc3VtID0g
aW5fcHNldWRvKHVpLT51aV9zcmMuc19hZGRyLCBmYWRkci5zX2FkZHIsCi0JCSAgICBodG9ucygo
dV9zaG9ydClsZW4gKyBzaXplb2Yoc3RydWN0IHVkcGhkcikgKyBJUFBST1RPX1VEUCkpOworCQkg
ICAgaHRvbnMoKHVfc2hvcnQpbGVuICsgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpICsgcHIpKTsKIAkJ
bS0+bV9wa3RoZHIuY3N1bV9mbGFncyA9IENTVU1fVURQOwogCQltLT5tX3BrdGhkci5jc3VtX2Rh
dGEgPSBvZmZzZXRvZihzdHJ1Y3QgdWRwaGRyLCB1aF9zdW0pOwotCX0gZWxzZQotCQl1aS0+dWlf
c3VtID0gMDsKKwl9CiAJKChzdHJ1Y3QgaXAgKil1aSktPmlwX2xlbiA9IGh0b25zKHNpemVvZihz
dHJ1Y3QgdWRwaXBoZHIpICsgbGVuKTsKIAkoKHN0cnVjdCBpcCAqKXVpKS0+aXBfdHRsID0gaW5w
LT5pbnBfaXBfdHRsOwkvKiBYWFggKi8KIAkoKHN0cnVjdCBpcCAqKXVpKS0+aXBfdG9zID0gdG9z
OwkJLyogWFhYICovCiAJVURQU1RBVF9JTkModWRwc19vcGFja2V0cyk7CiAKIAlpZiAodW5sb2Nr
X3VkYmluZm8gPT0gVUhfV0xPQ0tFRCkKLQkJSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsK
KwkJSU5QX0hBU0hfV1VOTE9DSyhwY2JpbmZvKTsKIAllbHNlIGlmICh1bmxvY2tfdWRiaW5mbyA9
PSBVSF9STE9DS0VEKQotCQlJTlBfSEFTSF9SVU5MT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFT
SF9SVU5MT0NLKHBjYmluZm8pOwogCWVycm9yID0gaXBfb3V0cHV0KG0sIGlucC0+aW5wX29wdGlv
bnMsIE5VTEwsIGlwZmxhZ3MsCiAJICAgIGlucC0+aW5wX21vcHRpb25zLCBpbnApOwogCWlmICh1
bmxvY2tfdWRiaW5mbyA9PSBVSF9XTE9DS0VEKQpAQCAtMTI1MCwxMCArMTQxNiwxMCBAQCB1ZHBf
b3V0cHV0KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydQogCiByZWxlYXNl
OgogCWlmICh1bmxvY2tfdWRiaW5mbyA9PSBVSF9XTE9DS0VEKSB7Ci0JCUlOUF9IQVNIX1dVTkxP
Q0soJlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX1dVTkxPQ0socGNiaW5mbyk7CiAJCUlOUF9XVU5M
T0NLKGlucCk7CiAJfSBlbHNlIGlmICh1bmxvY2tfdWRiaW5mbyA9PSBVSF9STE9DS0VEKSB7Ci0J
CUlOUF9IQVNIX1JVTkxPQ0soJlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX1JVTkxPQ0socGNiaW5m
byk7CiAJCUlOUF9SVU5MT0NLKGlucCk7CiAJfSBlbHNlCiAJCUlOUF9SVU5MT0NLKGlucCk7CkBA
IC0xNDA1LDEwICsxNTcxLDEwIEBAIHVkcF9hYm9ydChzdHJ1Y3Qgc29ja2V0ICpzbykKIAlLQVNT
RVJUKGlucCAhPSBOVUxMLCAoInVkcF9hYm9ydDogaW5wID09IE5VTEwiKSk7CiAJSU5QX1dMT0NL
KGlucCk7CiAJaWYgKGlucC0+aW5wX2ZhZGRyLnNfYWRkciAhPSBJTkFERFJfQU5ZKSB7Ci0JCUlO
UF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFTSF9XTE9DSyhpbnAtPmlucF9wY2Jp
bmZvKTsKIAkJaW5fcGNiZGlzY29ubmVjdChpbnApOwogCQlpbnAtPmlucF9sYWRkci5zX2FkZHIg
PSBJTkFERFJfQU5ZOwotCQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFT
SF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQlzb2lzZGlzY29ubmVjdGVkKHNvKTsKIAl9
CiAJSU5QX1dVTkxPQ0soaW5wKTsKQEAgLTE0MTgsMTcgKzE1ODQsMjMgQEAgc3RhdGljIGludAog
dWRwX2F0dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHByb3RvLCBzdHJ1Y3QgdGhyZWFkICp0
ZCkKIHsKIAlzdHJ1Y3QgaW5wY2IgKmlucDsKKyAgICAgICAgc3RydWN0IGlucGNiaW5mbyAqcGNi
aW5mbzsKIAlpbnQgZXJyb3I7CiAKKwlpZiAoc28tPnNvX3Byb3RvLT5wcl9wcm90b2NvbCA9PSBJ
UFBST1RPX1VEUCkKKwkJcGNiaW5mbyA9ICZWX3VkYmluZm87CisJZWxzZQorCQlwY2JpbmZvID0g
JlZfdWxpdGVjYmluZm87CisKIAlpbnAgPSBzb3RvaW5wY2Ioc28pOwogCUtBU1NFUlQoaW5wID09
IE5VTEwsICgidWRwX2F0dGFjaDogaW5wICE9IE5VTEwiKSk7CiAJZXJyb3IgPSBzb3Jlc2VydmUo
c28sIHVkcF9zZW5kc3BhY2UsIHVkcF9yZWN2c3BhY2UpOwogCWlmIChlcnJvcikKIAkJcmV0dXJu
IChlcnJvcik7Ci0JSU5QX0lORk9fV0xPQ0soJlZfdWRiaW5mbyk7Ci0JZXJyb3IgPSBpbl9wY2Jh
bGxvYyhzbywgJlZfdWRiaW5mbyk7CisJSU5QX0lORk9fV0xPQ0socGNiaW5mbyk7CisJZXJyb3Ig
PSBpbl9wY2JhbGxvYyhzbywgcGNiaW5mbyk7CiAJaWYgKGVycm9yKSB7Ci0JCUlOUF9JTkZPX1dV
TkxPQ0soJlZfdWRiaW5mbyk7CisJCUlOUF9JTkZPX1dVTkxPQ0socGNiaW5mbyk7CiAJCXJldHVy
biAoZXJyb3IpOwogCX0KIApAQCAtMTQ0MCwxMyArMTYxMiwxNCBAQCB1ZHBfYXR0YWNoKHN0cnVj
dCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8sIHN0cnVjdCB0aAogCWlmIChlcnJvcikgewogCQlpbl9w
Y2JkZXRhY2goaW5wKTsKIAkJaW5fcGNiZnJlZShpbnApOwotCQlJTlBfSU5GT19XVU5MT0NLKCZW
X3VkYmluZm8pOworCQlJTlBfSU5GT19XVU5MT0NLKHBjYmluZm8pOwogCQlyZXR1cm4gKGVycm9y
KTsKIAl9CiAKIAlJTlBfV1VOTE9DSyhpbnApOwotCUlOUF9JTkZPX1dVTkxPQ0soJlZfdWRiaW5m
byk7CisJSU5QX0lORk9fV1VOTE9DSyhwY2JpbmZvKTsKIAlyZXR1cm4gKDApOworCiB9CiAjZW5k
aWYgLyogSU5FVCAqLwogCkBAIC0xNDgxLDkgKzE2NTQsOSBAQCB1ZHBfYmluZChzdHJ1Y3Qgc29j
a2V0ICpzbywgc3RydWN0IHNvY2thZGRyICpuYW0sCiAJaW5wID0gc290b2lucGNiKHNvKTsKIAlL
QVNTRVJUKGlucCAhPSBOVUxMLCAoInVkcF9iaW5kOiBpbnAgPT0gTlVMTCIpKTsKIAlJTlBfV0xP
Q0soaW5wKTsKLQlJTlBfSEFTSF9XTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSEFTSF9XTE9DSyhp
bnAtPmlucF9wY2JpbmZvKTsKIAllcnJvciA9IGluX3BjYmJpbmQoaW5wLCBuYW0sIHRkLT50ZF91
Y3JlZCk7Ci0JSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSEFTSF9XVU5MT0NL
KGlucC0+aW5wX3BjYmluZm8pOwogCUlOUF9XVU5MT0NLKGlucCk7CiAJcmV0dXJuIChlcnJvcik7
CiB9CkBAIC0xNDk3LDEwICsxNjcwLDEwIEBAIHVkcF9jbG9zZShzdHJ1Y3Qgc29ja2V0ICpzbykK
IAlLQVNTRVJUKGlucCAhPSBOVUxMLCAoInVkcF9jbG9zZTogaW5wID09IE5VTEwiKSk7CiAJSU5Q
X1dMT0NLKGlucCk7CiAJaWYgKGlucC0+aW5wX2ZhZGRyLnNfYWRkciAhPSBJTkFERFJfQU5ZKSB7
Ci0JCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFTSF9XTE9DSyhpbnAtPmlu
cF9wY2JpbmZvKTsKIAkJaW5fcGNiZGlzY29ubmVjdChpbnApOwogCQlpbnAtPmlucF9sYWRkci5z
X2FkZHIgPSBJTkFERFJfQU5ZOwotCQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOworCQlJ
TlBfSEFTSF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQlzb2lzZGlzY29ubmVjdGVkKHNv
KTsKIAl9CiAJSU5QX1dVTkxPQ0soaW5wKTsKQEAgLTE1MjYsOSArMTY5OSw5IEBAIHVkcF9jb25u
ZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hCiAJCUlOUF9XVU5MT0NL
KGlucCk7CiAJCXJldHVybiAoZXJyb3IpOwogCX0KLQlJTlBfSEFTSF9XTE9DSygmVl91ZGJpbmZv
KTsKKwlJTlBfSEFTSF9XTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAllcnJvciA9IGluX3BjYmNv
bm5lY3QoaW5wLCBuYW0sIHRkLT50ZF91Y3JlZCk7Ci0JSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJp
bmZvKTsKKwlJTlBfSEFTSF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWlmIChlcnJvciA9
PSAwKQogCQlzb2lzY29ubmVjdGVkKHNvKTsKIAlJTlBfV1VOTE9DSyhpbnApOwpAQCAtMTU0MCwy
MCArMTcxMywyMyBAQCB1ZHBfZGV0YWNoKHN0cnVjdCBzb2NrZXQgKnNvKQogewogCXN0cnVjdCBp
bnBjYiAqaW5wOwogCXN0cnVjdCB1ZHBjYiAqdXA7CisJaW50IGlzdWRwOwogCisJaXN1ZHAgPSAo
c28tPnNvX3Byb3RvLT5wcl9wcm90b2NvbCA9PSBJUFBST1RPX1VEUCkgPyAxIDogMDsKKwogCWlu
cCA9IHNvdG9pbnBjYihzbyk7CiAJS0FTU0VSVChpbnAgIT0gTlVMTCwgKCJ1ZHBfZGV0YWNoOiBp
bnAgPT0gTlVMTCIpKTsKIAlLQVNTRVJUKGlucC0+aW5wX2ZhZGRyLnNfYWRkciA9PSBJTkFERFJf
QU5ZLAogCSAgICAoInVkcF9kZXRhY2g6IG5vdCBkaXNjb25uZWN0ZWQiKSk7Ci0JSU5QX0lORk9f
V0xPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0lORk9fV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJ
SU5QX1dMT0NLKGlucCk7CiAJdXAgPSBpbnRvdWRwY2IoaW5wKTsKIAlLQVNTRVJUKHVwICE9IE5V
TEwsICgiJXM6IHVwID09IE5VTEwiLCBfX2Z1bmNfXykpOwogCWlucC0+aW5wX3BwY2IgPSBOVUxM
OwogCWluX3BjYmRldGFjaChpbnApOwogCWluX3BjYmZyZWUoaW5wKTsKLQlJTlBfSU5GT19XVU5M
T0NLKCZWX3VkYmluZm8pOwotCXVkcF9kaXNjYXJkY2IodXApOworCUlOUF9JTkZPX1dVTkxPQ0so
aW5wLT5pbnBfcGNiaW5mbyk7CisJdWRwX2Rpc2NhcmRjYih1cCwgaXN1ZHApOwogfQogCiBzdGF0
aWMgaW50CkBAIC0xNTY4LDEwICsxNzQ0LDEwIEBAIHVkcF9kaXNjb25uZWN0KHN0cnVjdCBzb2Nr
ZXQgKnNvKQogCQlJTlBfV1VOTE9DSyhpbnApOwogCQlyZXR1cm4gKEVOT1RDT05OKTsKIAl9Ci0J
SU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNi
aW5mbyk7CiAJaW5fcGNiZGlzY29ubmVjdChpbnApOwogCWlucC0+aW5wX2xhZGRyLnNfYWRkciA9
IElOQUREUl9BTlk7Ci0JSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSEFTSF9X
VU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCVNPQ0tfTE9DSyhzbyk7CiAJc28tPnNvX3N0YXRl
ICY9IH5TU19JU0NPTk5FQ1RFRDsJCS8qIFhYWCAqLwogCVNPQ0tfVU5MT0NLKHNvKTsKQEAgLTE2
MjIsNCArMTc5OCw1IEBAIHN0cnVjdCBwcl91c3JyZXFzIHVkcF91c3JyZXFzID0gewogCS5wcnVf
c29zZXRsYWJlbCA9CWluX3BjYnNvc2V0bGFiZWwsCiAJLnBydV9jbG9zZSA9CQl1ZHBfY2xvc2Us
CiB9OworCiAjZW5kaWYgLyogSU5FVCAqLwpJbmRleDogc3lzL25ldGluZXQvdWRwX3Zhci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHN5cy9uZXRpbmV0L3VkcF92YXIuaAkocmV2aXNpb24gMjQ4NDU4KQorKysg
c3lzL25ldGluZXQvdWRwX3Zhci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMCArNjIsMTIgQEAg
dHlwZWRlZiB2b2lkKCp1ZHBfdHVuX2Z1bmNfdCkoc3RydWN0IG1idWYgKiwgaW50IG8KIHN0cnVj
dCB1ZHBjYiB7CiAJdWRwX3R1bl9mdW5jX3QJdV90dW5fZnVuYzsJLyogVURQIGtlcm5lbCB0dW5u
ZWxpbmcgY2FsbGJhY2suICovCiAJdV9pbnQJCXVfZmxhZ3M7CS8qIEdlbmVyaWMgVURQIGZsYWdz
LiAqLworCXVpbnQxNl90CXVfcnhjc2xlbjsJLyogQ292ZXJhZ2UgZm9yIGluY29taW5nIGRhdGFn
cmFtcy4gKi8KKwl1aW50MTZfdAl1X3R4Y3NsZW47CS8qIENvdmVyYWdlIGZvciBvdXRnb2luZyBk
YXRhZ3JhbXMuICovCiB9OwogCi0jZGVmaW5lCWludG91ZHBjYihpcCkJKChzdHJ1Y3QgdWRwY2Ig
KikoaXApLT5pbnBfcHBjYikKLSNkZWZpbmUJc290b3VkcGNiKHNvKQkoaW50b3VkcGNiKHNvdG9p
bnBjYihzbykpKQorI2RlZmluZQlpbnRvdWRwY2IoaXApCQkoKHN0cnVjdCB1ZHBjYiAqKShpcCkt
PmlucF9wcGNiKQorI2RlZmluZQlzb3RvdWRwY2Ioc28pCQkoaW50b3VkcGNiKHNvdG9pbnBjYihz
bykpKQogCiAJCQkJLyogSVBzZWM6IEVTUCBpbiBVRFAgdHVubmVsaW5nOiAqLwogI2RlZmluZQlV
Rl9FU1BJTlVEUF9OT05fSUtFCTB4MDAwMDAwMDEJLyogdy8gbm9uLUlLRSBtYXJrZXIgLi4gKi8K
QEAgLTEzNCw4ICsxMzYsMTIgQEAgU1lTQ1RMX0RFQ0woX25ldF9pbmV0X3VkcCk7CiBleHRlcm4g
c3RydWN0IHByX3VzcnJlcXMJdWRwX3VzcnJlcXM7CiBWTkVUX0RFQ0xBUkUoc3RydWN0IGlucGNi
aGVhZCwgdWRiKTsKIFZORVRfREVDTEFSRShzdHJ1Y3QgaW5wY2JpbmZvLCB1ZGJpbmZvKTsKK1ZO
RVRfREVDTEFSRShzdHJ1Y3QgaW5wY2JoZWFkLCB1bGl0ZWNiKTsKK1ZORVRfREVDTEFSRShzdHJ1
Y3QgaW5wY2JpbmZvLCB1bGl0ZWNiaW5mbyk7CiAjZGVmaW5lCVZfdWRiCQkJVk5FVCh1ZGIpCiAj
ZGVmaW5lCVZfdWRiaW5mbwkJVk5FVCh1ZGJpbmZvKQorI2RlZmluZQlWX3VsaXRlY2IJCVZORVQo
dWxpdGVjYikKKyNkZWZpbmUJVl91bGl0ZWNiaW5mbwkJVk5FVCh1bGl0ZWNiaW5mbykKIAogZXh0
ZXJuIHVfbG9uZwkJCXVkcF9zZW5kc3BhY2U7CiBleHRlcm4gdV9sb25nCQkJdWRwX3JlY3ZzcGFj
ZTsKQEAgLTE0NywxNiArMTUzLDIwIEBAIFZORVRfREVDTEFSRShpbnQsIHVkcF9ibGFja2hvbGUp
OwogI2RlZmluZQlWX3VkcF9ibGFja2hvbGUJCVZORVQodWRwX2JsYWNraG9sZSkKIGV4dGVybiBp
bnQJCQl1ZHBfbG9nX2luX3ZhaW47CiAKLWludAkJIHVkcF9uZXd1ZHBjYihzdHJ1Y3QgaW5wY2Ig
Kik7Ci12b2lkCQkgdWRwX2Rpc2NhcmRjYihzdHJ1Y3QgdWRwY2IgKik7CitpbnQJCXVkcF9uZXd1
ZHBjYihzdHJ1Y3QgaW5wY2IgKik7Cit2b2lkCQl1ZHBfZGlzY2FyZGNiKHN0cnVjdCB1ZHBjYiAq
LCBpbnQpOwogCi12b2lkCQkgdWRwX2N0bGlucHV0KGludCwgc3RydWN0IHNvY2thZGRyICosIHZv
aWQgKik7Ci1pbnQJCSB1ZHBfY3Rsb3V0cHV0KHN0cnVjdCBzb2NrZXQgKiwgc3RydWN0IHNvY2tv
cHQgKik7Ci12b2lkCQkgdWRwX2luaXQodm9pZCk7Cit2b2lkCQl1ZHBfY3RsaW5wdXQoaW50LCBz
dHJ1Y3Qgc29ja2FkZHIgKiwgdm9pZCAqKTsKK3ZvaWQJCXVkcGxpdGVfY3RsaW5wdXQoaW50LCBz
dHJ1Y3Qgc29ja2FkZHIgKiwgdm9pZCAqKTsKK2ludAkJdWRwX2N0bG91dHB1dChzdHJ1Y3Qgc29j
a2V0ICosIHN0cnVjdCBzb2Nrb3B0ICopOwordm9pZAkJdWRwX2luaXQodm9pZCk7Cit2b2lkCQl1
ZHBsaXRlX2luaXQodm9pZCk7CiAjaWZkZWYgVklNQUdFCi12b2lkCQkgdWRwX2Rlc3Ryb3kodm9p
ZCk7Cit2b2lkCQl1ZHBfZGVzdHJveSh2b2lkKTsKK3ZvaWQJCXVkcGxpdGVfZGVzdHJveSh2b2lk
KTsKICNlbmRpZgotdm9pZAkJIHVkcF9pbnB1dChzdHJ1Y3QgbWJ1ZiAqLCBpbnQpOwordm9pZAkJ
dWRwX2lucHV0KHN0cnVjdCBtYnVmICosIGludCk7Cit2b2lkCQl1ZHBsaXRlX2lucHV0KHN0cnVj
dCBtYnVmICosIGludCk7CiBzdHJ1Y3QgaW5wY2IJKnVkcF9ub3RpZnkoc3RydWN0IGlucGNiICpp
bnAsIGludCBlcnJubyk7CiBpbnQJCSB1ZHBfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc28pOwog
CkluZGV4OiBzeXMvbmV0aW5ldC91ZHBsaXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldGluZXQv
dWRwbGl0ZS5oCShyZXZpc2lvbiAwKQorKysgc3lzL25ldGluZXQvdWRwbGl0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDEzLCBLZXZp
biBMbworICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqICRGcmVlQlNEJAorICovCisKKyNp
Zm5kZWYgX05FVElORVRfVURQTElURV9IXworI2RlZmluZQlfTkVUSU5FVF9VRFBMSVRFX0hfCisK
Ky8qIAorICogVXNlci1zZXR0YWJsZSBvcHRpb25zICh1c2VkIHdpdGggc2V0c29ja29wdCkuCisg
Ki8KKyNkZWZpbmUJVURQTElURV9TRU5EX0NTQ09WCTIJLyogU2VuZGVyIGNoZWNrc3VtIGNvdmVy
YWdlLiAqLworI2RlZmluZQlVRFBMSVRFX1JFQ1ZfQ1NDT1YJNAkvKiBSZWNlaXZlciBjaGVja3N1
bSBjb3ZlcmFnZS4gKi8KKworI2VuZGlmCS8qICFfTkVUSU5FVF9VRFBMSVRFX0hfICovCkluZGV4
OiBzeXMvbmV0aW5ldDYvaW42X2lmYXR0YWNoLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldGluZXQ2
L2luNl9pZmF0dGFjaC5jCShyZXZpc2lvbiAyNDg0NTgpCisrKyBzeXMvbmV0aW5ldDYvaW42X2lm
YXR0YWNoLmMJKHdvcmtpbmcgY29weSkKQEAgLTgzNyw2ICs4MzcsNyBAQCBpbjZfaWZkZXRhY2go
c3RydWN0IGlmbmV0ICppZnApCiAJfQogCiAJaW42X3BjYnB1cmdlaWYwKCZWX3VkYmluZm8sIGlm
cCk7CisJaW42X3BjYnB1cmdlaWYwKCZWX3VsaXRlY2JpbmZvLCBpZnApOwogCWluNl9wY2JwdXJn
ZWlmMCgmVl9yaXBjYmluZm8sIGlmcCk7CiAJLyogbGVhdmUgZnJvbSBhbGwgbXVsdGljYXN0IGdy
b3VwcyBqb2luZWQgKi8KIAlpbjZfcHVyZ2VtYWRkcnMoaWZwKTsKSW5kZXg6IHN5cy9uZXRpbmV0
Ni9pbjZfcHJvdG8uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0aW5ldDYvaW42X3Byb3RvLmMJKHJl
dmlzaW9uIDI0ODQ1OCkKKysrIHN5cy9uZXRpbmV0Ni9pbjZfcHJvdG8uYwkod29ya2luZyBjb3B5
KQpAQCAtMjE4LDYgKzIxOCwxOSBAQCBzdHJ1Y3QgaXA2cHJvdG9zdyBpbmV0NnN3W10gPSB7CiB9
LAogI2VuZGlmIC8qIFNDVFAgKi8KIHsKKwkucHJfdHlwZSA9CQlTT0NLX0RHUkFNLAorCS5wcl9k
b21haW4gPQkJJmluZXQ2ZG9tYWluLAorCS5wcl9wcm90b2NvbCA9CQlJUFBST1RPX1VEUExJVEUs
CisJLnByX2ZsYWdzID0JCVBSX0FUT01JQ3xQUl9BRERSLAorCS5wcl9pbnB1dCA9CQl1ZHA2X2lu
cHV0LAorCS5wcl9jdGxpbnB1dCA9CQl1ZHBsaXRlNl9jdGxpbnB1dCwKKwkucHJfY3Rsb3V0cHV0
ID0JCXVkcF9jdGxvdXRwdXQsCisjaWZuZGVmIElORVQJLyogRG8gbm90IGNhbGwgaW5pdGlhbGl6
YXRpb24gdHdpY2UuICovCisJLnByX2luaXQgPQkJdWRwbGl0ZV9pbml0LAorI2VuZGlmCisJLnBy
X3VzcnJlcXMgPQkJJnVkcDZfdXNycmVxcywKK30sCit7CiAJLnByX3R5cGUgPQkJU09DS19SQVcs
CiAJLnByX2RvbWFpbiA9CQkmaW5ldDZkb21haW4sCiAJLnByX3Byb3RvY29sID0JCUlQUFJPVE9f
UkFXLApAQCAtNDY4LDYgKzQ4MSw3IEBAIFNZU0NUTF9OT0RFKF9uZXRfaW5ldDYsCUlQUFJPVE9f
VENQLAl0Y3A2LAlDVExGTEFHCiAjaWZkZWYgU0NUUAogU1lTQ1RMX05PREUoX25ldF9pbmV0NiwJ
SVBQUk9UT19TQ1RQLAlzY3RwNiwJQ1RMRkxBR19SVywgMCwJIlNDVFA2Iik7CiAjZW5kaWYKK1NZ
U0NUTF9OT0RFKF9uZXRfaW5ldDYsCUlQUFJPVE9fVURQTElURSx1ZHBsaXRlNixDVExGTEFHX1JX
LCAwLAkiVURQTElURTYiKTsKICNpZmRlZiBJUFNFQwogU1lTQ1RMX05PREUoX25ldF9pbmV0NiwJ
SVBQUk9UT19FU1AsCWlwc2VjNiwJQ1RMRkxBR19SVywgMCwJIklQU0VDNiIpOwogI2VuZGlmIC8q
IElQU0VDICovCkluZGV4OiBzeXMvbmV0aW5ldDYvdWRwNl91c3JyZXEuYwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBzeXMvbmV0aW5ldDYvdWRwNl91c3JyZXEuYwkocmV2aXNpb24gMjQ4NDU4KQorKysgc3lzL25l
dGluZXQ2L3VkcDZfdXNycmVxLmMJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsNyBAQCBf
X0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KICNpbmNs
dWRlIDxuZXRpbmV0L3VkcC5oPgogI2luY2x1ZGUgPG5ldGluZXQvdWRwX3Zhci5oPgorI2luY2x1
ZGUgPG5ldGluZXQvdWRwbGl0ZS5oPgogCiAjaW5jbHVkZSA8bmV0aW5ldDYvaXA2cHJvdG9zdy5o
PgogI2luY2x1ZGUgPG5ldGluZXQ2L2lwNl92YXIuaD4KQEAgLTE3OCwxMSArMTc5LDE0IEBAIHVk
cDZfaW5wdXQoc3RydWN0IG1idWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJc3RydWN0
IGlwNl9oZHIgKmlwNjsKIAlzdHJ1Y3QgdWRwaGRyICp1aDsKIAlzdHJ1Y3QgaW5wY2IgKmlucDsK
LQlzdHJ1Y3QgdWRwY2IgKnVwOworCXN0cnVjdCBpbnBjYmluZm8gKnBjYmluZm87CisJc3RydWN0
IHVkcGNiICp1cCA9IE5VTEw7CiAJaW50IG9mZiA9ICpvZmZwOworCWludCBjc2Nvdl9wYXJ0aWFs
OwogCWludCBwbGVuLCB1bGVuOwogCXN0cnVjdCBzb2NrYWRkcl9pbjYgZnJvbXNhOwogCXN0cnVj
dCBtX3RhZyAqZndkX3RhZzsKKwl1aW50OF90IG54dDsKIAl1aW50MTZfdCB1aF9zdW07CiAKIAlp
ZnAgPSBtLT5tX3BrdGhkci5yY3ZpZjsKQEAgLTIxNSw5ICsyMTksMTkgQEAgdWRwNl9pbnB1dChz
dHJ1Y3QgbWJ1ZiAqKm1wLCBpbnQgKm9mZnAsIGludCBwcm90bykKIAlwbGVuID0gbnRvaHMoaXA2
LT5pcDZfcGxlbikgLSBvZmYgKyBzaXplb2YoKmlwNik7CiAJdWxlbiA9IG50b2hzKCh1X3Nob3J0
KXVoLT51aF91bGVuKTsKIAorCW54dCA9IGlwNi0+aXA2X254dDsKKwljc2Nvdl9wYXJ0aWFsID0g
KG54dCA9PSBJUFBST1RPX1VEUExJVEUpID8gMSA6IDA7CisJaWYgKG54dCA9PSBJUFBST1RPX1VE
UExJVEUgJiYgdWxlbiA9PSAwKSB7CisJCS8qIFplcm8gbWVhbnMgY2hlY2tzdW0gb3ZlciB0aGUg
Y29tcGxldGUgcGFja2V0LiAqLworCQl1bGVuID0gcGxlbjsKKwkJY3Njb3ZfcGFydGlhbCA9IDA7
CisJfQorCiAJaWYgKHBsZW4gIT0gdWxlbikgewotCQlVRFBTVEFUX0lOQyh1ZHBzX2JhZGxlbik7
Ci0JCWdvdG8gYmFkdW5sb2NrZWQ7CisJCWlmICh1bGVuID4gcGxlbiB8fCB1bGVuIDwgc2l6ZW9m
KHN0cnVjdCB1ZHBoZHIpKSB7CisJCQlVRFBTVEFUX0lOQyh1ZHBzX2JhZGxlbik7CisJCQlnb3Rv
IGJhZHVubG9ja2VkOworCQl9CiAJfQogCiAJLyoKQEAgLTIyOCwxNSArMjQyLDE2IEBAIHVkcDZf
aW5wdXQoc3RydWN0IG1idWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJCWdvdG8gYmFk
dW5sb2NrZWQ7CiAJfQogCi0JaWYgKG0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MgJiBDU1VNX0RBVEFf
VkFMSURfSVBWNikgeworCWlmICgobS0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIENTVU1fREFUQV9W
QUxJRF9JUFY2KSAmJgorCSAgICAhY3Njb3ZfcGFydGlhbCkgewogCQlpZiAobS0+bV9wa3RoZHIu
Y3N1bV9mbGFncyAmIENTVU1fUFNFVURPX0hEUikKIAkJCXVoX3N1bSA9IG0tPm1fcGt0aGRyLmNz
dW1fZGF0YTsKIAkJZWxzZQotCQkJdWhfc3VtID0gaW42X2Nrc3VtX3BzZXVkbyhpcDYsIHVsZW4s
Ci0JCQkgICAgSVBQUk9UT19VRFAsIG0tPm1fcGt0aGRyLmNzdW1fZGF0YSk7CisJCQl1aF9zdW0g
PSBpbjZfY2tzdW1fcHNldWRvKGlwNiwgdWxlbiwgbnh0LAorCQkJICAgIG0tPm1fcGt0aGRyLmNz
dW1fZGF0YSk7CiAJCXVoX3N1bSBePSAweGZmZmY7CiAJfSBlbHNlCi0JCXVoX3N1bSA9IGluNl9j
a3N1bShtLCBJUFBST1RPX1VEUCwgb2ZmLCB1bGVuKTsKKwkJdWhfc3VtID0gaW42X2Nrc3VtKG0s
IG54dCwgb2ZmLCB1bGVuKTsKIAogCWlmICh1aF9zdW0gIT0gMCkgewogCQlVRFBTVEFUX0lOQyh1
ZHBzX2JhZHN1bSk7CkBAIC0yNDksMTEgKzI2NCwxMyBAQCB1ZHA2X2lucHV0KHN0cnVjdCBtYnVm
ICoqbXAsIGludCAqb2ZmcCwgaW50IHByb3RvKQogCWluaXRfc2luNigmZnJvbXNhLCBtKTsKIAlm
cm9tc2Euc2luNl9wb3J0ID0gdWgtPnVoX3Nwb3J0OwogCisJcGNiaW5mbyA9IChueHQgPT0gSVBQ
Uk9UT19VRFApID8gJlZfdWRiaW5mbyA6ICZWX3VsaXRlY2JpbmZvOwogCWlmIChJTjZfSVNfQURE
Ul9NVUxUSUNBU1QoJmlwNi0+aXA2X2RzdCkpIHsKIAkJc3RydWN0IGlucGNiICpsYXN0OworCQlz
dHJ1Y3QgaW5wY2JoZWFkICpwY2JsaXN0OwogCQlzdHJ1Y3QgaXA2X21vcHRpb25zICppbW87CiAK
LQkJSU5QX0lORk9fUkxPQ0soJlZfdWRiaW5mbyk7CisJCUlOUF9JTkZPX1JMT0NLKHBjYmluZm8p
OwogCQkvKgogCQkgKiBJbiB0aGUgZXZlbnQgdGhhdCBsYWRkciBzaG91bGQgYmUgc2V0IHRvIHRo
ZSBsaW5rLWxvY2FsCiAJCSAqIGFkZHJlc3MgKHRoaXMgaGFwcGVucyBpbiBSSVBuZyksIHRoZSBt
dWx0aWNhc3QgYWRkcmVzcwpAQCAtMjY5LDggKzI4Niw5IEBAIHVkcDZfaW5wdXQoc3RydWN0IG1i
dWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJCSAqIGhlcmUuICBXZSBuZWVkIHVkcGhk
ciBmb3IgSVBzZWMgcHJvY2Vzc2luZyBzbyB3ZSBkbyB0aGF0CiAJCSAqIGxhdGVyLgogCQkgKi8K
KwkJcGNibGlzdCA9IChueHQgPT0gSVBQUk9UT19VRFApID8gJlZfdWRiIDogJlZfdWxpdGVjYjsK
IAkJbGFzdCA9IE5VTEw7Ci0JCUxJU1RfRk9SRUFDSChpbnAsICZWX3VkYiwgaW5wX2xpc3QpIHsK
KwkJTElTVF9GT1JFQUNIKGlucCwgcGNibGlzdCwgaW5wX2xpc3QpIHsKIAkJCWlmICgoaW5wLT5p
bnBfdmZsYWcgJiBJTlBfSVBWNikgPT0gMCkKIAkJCQljb250aW51ZTsKIAkJCWlmIChpbnAtPmlu
cF9scG9ydCAhPSB1aC0+dWhfZHBvcnQpCkBAIC0zNzUsNyArMzkzLDcgQEAgdWRwNl9pbnB1dChz
dHJ1Y3QgbWJ1ZiAqKm1wLCBpbnQgKm9mZnAsIGludCBwcm90bykKIAkJCWdvdG8gYmFkaGVhZGxv
Y2tlZDsKIAkJfQogCQlJTlBfUkxPQ0sobGFzdCk7Ci0JCUlOUF9JTkZPX1JVTkxPQ0soJlZfdWRi
aW5mbyk7CisJCUlOUF9JTkZPX1JVTkxPQ0socGNiaW5mbyk7CiAJCXVwID0gaW50b3VkcGNiKGxh
c3QpOwogCQlpZiAodXAtPnVfdHVuX2Z1bmMgPT0gTlVMTCkgewogCQkJdWRwNl9hcHBlbmQobGFz
dCwgbSwgb2ZmLCAmZnJvbXNhKTsKQEAgLTQwNSw4ICs0MjMsOCBAQCB1ZHA2X2lucHV0KHN0cnVj
dCBtYnVmICoqbXAsIGludCAqb2ZmcCwgaW50IHByb3RvKQogCQkgKiBUcmFuc3BhcmVudGx5IGZv
cndhcmRlZC4gUHJldGVuZCB0byBiZSB0aGUgZGVzdGluYXRpb24uCiAJCSAqIEFscmVhZHkgZ290
IG9uZSBsaWtlIHRoaXM/CiAJCSAqLwotCQlpbnAgPSBpbjZfcGNibG9va3VwX21idWYoJlZfdWRi
aW5mbywKLQkJICAgICZpcDYtPmlwNl9zcmMsIHVoLT51aF9zcG9ydCwgJmlwNi0+aXA2X2RzdCwg
dWgtPnVoX2Rwb3J0LAorCQlpbnAgPSBpbjZfcGNibG9va3VwX21idWYocGNiaW5mbywgJmlwNi0+
aXA2X3NyYywKKwkJICAgIHVoLT51aF9zcG9ydCwgJmlwNi0+aXA2X2RzdCwgdWgtPnVoX2Rwb3J0
LAogCQkgICAgSU5QTE9PS1VQX1JMT0NLUENCLCBtLT5tX3BrdGhkci5yY3ZpZiwgbSk7CiAJCWlm
ICghaW5wKSB7CiAJCQkvKgpAQCAtNDE0LDcgKzQzMiw3IEBAIHVkcDZfaW5wdXQoc3RydWN0IG1i
dWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJCQkgKiBCZWNhdXNlIHdlJ3ZlIHJld3Jp
dHRlbiB0aGUgZGVzdGluYXRpb24gYWRkcmVzcywKIAkJCSAqIGFueSBoYXJkd2FyZS1nZW5lcmF0
ZWQgaGFzaCBpcyBpZ25vcmVkLgogCQkJICovCi0JCQlpbnAgPSBpbjZfcGNibG9va3VwKCZWX3Vk
YmluZm8sICZpcDYtPmlwNl9zcmMsCisJCQlpbnAgPSBpbjZfcGNibG9va3VwKHBjYmluZm8sICZp
cDYtPmlwNl9zcmMsCiAJCQkgICAgdWgtPnVoX3Nwb3J0LCAmbmV4dF9ob3A2LT5zaW42X2FkZHIs
CiAJCQkgICAgbmV4dF9ob3A2LT5zaW42X3BvcnQgPyBodG9ucyhuZXh0X2hvcDYtPnNpbjZfcG9y
dCkgOgogCQkJICAgIHVoLT51aF9kcG9ydCwgSU5QTE9PS1VQX1dJTERDQVJEIHwKQEAgLTQyNCw3
ICs0NDIsNyBAQCB1ZHA2X2lucHV0KHN0cnVjdCBtYnVmICoqbXAsIGludCAqb2ZmcCwgaW50IHBy
b3RvKQogCQltX3RhZ19kZWxldGUobSwgZndkX3RhZyk7CiAJCW0tPm1fZmxhZ3MgJj0gfk1fSVA2
X05FWFRIT1A7CiAJfSBlbHNlCi0JCWlucCA9IGluNl9wY2Jsb29rdXBfbWJ1ZigmVl91ZGJpbmZv
LCAmaXA2LT5pcDZfc3JjLAorCQlpbnAgPSBpbjZfcGNibG9va3VwX21idWYocGNiaW5mbywgJmlw
Ni0+aXA2X3NyYywKIAkJICAgIHVoLT51aF9zcG9ydCwgJmlwNi0+aXA2X2RzdCwgdWgtPnVoX2Rw
b3J0LAogCQkgICAgSU5QTE9PS1VQX1dJTERDQVJEIHwgSU5QTE9PS1VQX1JMT0NLUENCLAogCQkg
ICAgbS0+bV9wa3RoZHIucmN2aWYsIG0pOwpAQCAtNDU0LDcgKzQ3MiwxNCBAQCB1ZHA2X2lucHV0
KHN0cnVjdCBtYnVmICoqbXAsIGludCAqb2ZmcCwgaW50IHByb3RvKQogCQlyZXR1cm4gKElQUFJP
VE9fRE9ORSk7CiAJfQogCUlOUF9STE9DS19BU1NFUlQoaW5wKTsKLQl1cCA9IGludG91ZHBjYihp
bnApOworCWlmIChjc2Nvdl9wYXJ0aWFsKSB7CisJCXVwID0gaW50b3VkcGNiKGlucCk7CisJCWlm
ICh1cC0+dV9yeGNzbGVuID4gdWxlbikgeworCQkJSU5QX1JVTkxPQ0soaW5wKTsKKwkJCW1fZnJl
ZW0obSk7CisJCQlyZXR1cm4gKElQUFJPVE9fRE9ORSk7CisJCX0KKwl9CiAJaWYgKHVwLT51X3R1
bl9mdW5jID09IE5VTEwpIHsKIAkJdWRwNl9hcHBlbmQoaW5wLCBtLCBvZmYsICZmcm9tc2EpOwog
CX0gZWxzZSB7CkBAIC00NjgsMTUgKzQ5MywxNiBAQCB1ZHA2X2lucHV0KHN0cnVjdCBtYnVmICoq
bXAsIGludCAqb2ZmcCwgaW50IHByb3RvKQogCXJldHVybiAoSVBQUk9UT19ET05FKTsKIAogYmFk
aGVhZGxvY2tlZDoKLQlJTlBfSU5GT19SVU5MT0NLKCZWX3VkYmluZm8pOworCUlOUF9JTkZPX1JV
TkxPQ0socGNiaW5mbyk7CiBiYWR1bmxvY2tlZDoKIAlpZiAobSkKIAkJbV9mcmVlbShtKTsKIAly
ZXR1cm4gKElQUFJPVE9fRE9ORSk7CiB9CiAKLXZvaWQKLXVkcDZfY3RsaW5wdXQoaW50IGNtZCwg
c3RydWN0IHNvY2thZGRyICpzYSwgdm9pZCAqZCkKK3N0YXRpYyB2b2lkCit1ZHA2X2NvbW1vbl9j
dGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICpkLAorICAgIHN0cnVj
dCBpbnBjYmluZm8gKnBjYmluZm8pCiB7CiAJc3RydWN0IHVkcGhkciB1aDsKIAlzdHJ1Y3QgaXA2
X2hkciAqaXA2OwpAQCAtNTMyLDE0ICs1NTgsMjYgQEAgYmFkdW5sb2NrZWQ6CiAJCWJ6ZXJvKCZ1
aCwgc2l6ZW9mKHVoKSk7CiAJCW1fY29weWRhdGEobSwgb2ZmLCBzaXplb2YoKnVocCksIChjYWRk
cl90KSZ1aCk7CiAKLQkJKHZvaWQpIGluNl9wY2Jub3RpZnkoJlZfdWRiaW5mbywgc2EsIHVoLnVo
X2Rwb3J0LAorCQkodm9pZCkgaW42X3BjYm5vdGlmeShwY2JpbmZvLCBzYSwgdWgudWhfZHBvcnQs
CiAJCSAgICAoc3RydWN0IHNvY2thZGRyICopaXA2Y3AtPmlwNmNfc3JjLCB1aC51aF9zcG9ydCwg
Y21kLAogCQkgICAgY21kYXJnLCBub3RpZnkpOwogCX0gZWxzZQotCQkodm9pZCkgaW42X3BjYm5v
dGlmeSgmVl91ZGJpbmZvLCBzYSwgMCwKKwkJKHZvaWQpIGluNl9wY2Jub3RpZnkocGNiaW5mbywg
c2EsIDAsCiAJCSAgICAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopc2E2X3NyYywgMCwgY21kLCBj
bWRhcmcsIG5vdGlmeSk7CiB9CiAKK3ZvaWQKK3VkcDZfY3RsaW5wdXQoaW50IGNtZCwgc3RydWN0
IHNvY2thZGRyICpzYSwgdm9pZCAqZCkKK3sKKwlyZXR1cm4gKHVkcDZfY29tbW9uX2N0bGlucHV0
KGNtZCwgc2EsIGQsICZWX3VkYmluZm8pKTsKK30KKwordm9pZAordWRwbGl0ZTZfY3RsaW5wdXQo
aW50IGNtZCwgc3RydWN0IHNvY2thZGRyICpzYSwgdm9pZCAqZCkKK3sKKwlyZXR1cm4gKHVkcDZf
Y29tbW9uX2N0bGlucHV0KGNtZCwgc2EsIGQsICZWX3VsaXRlY2JpbmZvKSk7Cit9CisKIHN0YXRp
YyBpbnQKIHVkcDZfZ2V0Y3JlZChTWVNDVExfSEFORExFUl9BUkdTKQogewpAQCAtNTk3LDkgKzYz
NSwxMiBAQCB1ZHA2X291dHB1dChzdHJ1Y3QgaW5wY2IgKmlucCwgc3RydWN0IG1idWYgKm0sIHN0
cgogCXN0cnVjdCBpbjZfYWRkciAqbGFkZHIsICpmYWRkciwgaW42YTsKIAlzdHJ1Y3Qgc29ja2Fk
ZHJfaW42ICpzaW42ID0gTlVMTDsKIAlzdHJ1Y3QgaWZuZXQgKm9pZnAgPSBOVUxMOworCWludCBj
c2Nvdl9wYXJ0aWFsID0gMDsKIAlpbnQgc2NvcGVfYW1iaWd1b3VzID0gMDsKIAl1X3Nob3J0IGZw
b3J0OwogCWludCBlcnJvciA9IDA7CisJdWludDhfdCBueHQ7CisJdWludDE2X3QgY3Njb3YgPSAw
OwogCXN0cnVjdCBpcDZfcGt0b3B0cyAqb3B0cCwgb3B0OwogCWludCBhZiA9IEFGX0lORVQ2LCBo
bGVuID0gc2l6ZW9mKHN0cnVjdCBpcDZfaGRyKTsKIAlpbnQgZmxhZ3M7CkBAIC03NTYsMTMgKzc5
NywyOSBAQCB1ZHA2X291dHB1dChzdHJ1Y3QgaW5wY2IgKmlucCwgc3RydWN0IG1idWYgKm0sIHN0
cgogCS8qCiAJICogU3R1ZmYgY2hlY2tzdW0gYW5kIG91dHB1dCBkYXRhZ3JhbS4KIAkgKi8KKwlu
eHQgPSBJUFBST1RPX1VEUDsKIAl1ZHA2ID0gKHN0cnVjdCB1ZHBoZHIgKikobXRvZChtLCBjYWRk
cl90KSArIGhsZW4pOwogCXVkcDYtPnVoX3Nwb3J0ID0gaW5wLT5pbnBfbHBvcnQ7IC8qIGxwb3J0
IGlzIGFsd2F5cyBzZXQgaW4gdGhlIFBDQiAqLwogCXVkcDYtPnVoX2Rwb3J0ID0gZnBvcnQ7Ci0J
aWYgKHBsZW4gPD0gMHhmZmZmKQorCWlmIChpbnAtPmlucF9zb2NrZXQtPnNvX3Byb3RvLT5wcl9w
cm90b2NvbCA9PSBJUFBST1RPX1VEUExJVEUpIHsKKwkJc3RydWN0IHVkcGNiICp1cDsKKworCQlu
eHQgPSBJUFBST1RPX1VEUExJVEU7CisJCXVwID0gaW50b3VkcGNiKGlucCk7CisJCWNzY292ID0g
dXAtPnVfdHhjc2xlbjsKKwkJaWYgKGNzY292ID49IHBsZW4pCisJCQljc2NvdiA9IDA7CisJCXVk
cDYtPnVoX3VsZW4gPSBodG9ucyhjc2Nvdik7CisKKwkJLyogRm9yIFVEUExpdGUsIGNoZWNrc3Vt
IGNvdmVyYWdlIGxlbmd0aCBvZiB6ZXJvIG1lYW5zCisJCSAqIHRoZSBlbnRpcmUgVURQTGl0ZSBw
YWNrZXQgaXMgY292ZXJlZCBieSB0aGUgY2hlY2tzdW0uCisJCSAqLworCQljc2Nvdl9wYXJ0aWFs
ID0gKGNzY292ID09IDApID8gMCA6IDE7CisJfSBlbHNlIGlmIChwbGVuIDw9IDB4ZmZmZikKIAkJ
dWRwNi0+dWhfdWxlbiA9IGh0b25zKCh1X3Nob3J0KXBsZW4pOwogCWVsc2UKIAkJdWRwNi0+dWhf
dWxlbiA9IDA7CisKIAl1ZHA2LT51aF9zdW0gPSAwOwogCiAJc3dpdGNoIChhZikgewpAQCAtNzcx
LDE3ICs4MjgsMjIgQEAgdWRwNl9vdXRwdXQoc3RydWN0IGlucGNiICppbnAsIHN0cnVjdCBtYnVm
ICptLCBzdHIKIAkJaXA2LT5pcDZfZmxvdwk9IGlucC0+aW5wX2Zsb3cgJiBJUFY2X0ZMT1dJTkZP
X01BU0s7CiAJCWlwNi0+aXA2X3ZmYwkmPSB+SVBWNl9WRVJTSU9OX01BU0s7CiAJCWlwNi0+aXA2
X3ZmYwl8PSBJUFY2X1ZFUlNJT047Ci0jaWYgMAkJCQkvKiBpcDZfcGxlbiB3aWxsIGJlIGZpbGxl
ZCBpbiBpcDZfb3V0cHV0LiAqLwotCQlpcDYtPmlwNl9wbGVuCT0gaHRvbnMoKHVfc2hvcnQpcGxl
bik7Ci0jZW5kaWYKLQkJaXA2LT5pcDZfbnh0CT0gSVBQUk9UT19VRFA7CisJCWlmIChueHQgPT0g
SVBQUk9UT19VRFBMSVRFKQorCQkJaXA2LT5pcDZfcGxlbiA9IGh0b25zKCh1X3Nob3J0KXBsZW4p
OworCQlpcDYtPmlwNl9ueHQJPSBueHQ7CiAJCWlwNi0+aXA2X2hsaW0JPSBpbjZfc2VsZWN0aGxp
bShpbnAsIE5VTEwpOwogCQlpcDYtPmlwNl9zcmMJPSAqbGFkZHI7CiAJCWlwNi0+aXA2X2RzdAk9
ICpmYWRkcjsKIAotCQl1ZHA2LT51aF9zdW0gPSBpbjZfY2tzdW1fcHNldWRvKGlwNiwgcGxlbiwg
SVBQUk9UT19VRFAsIDApOwotCQltLT5tX3BrdGhkci5jc3VtX2ZsYWdzID0gQ1NVTV9VRFBfSVBW
NjsKLQkJbS0+bV9wa3RoZHIuY3N1bV9kYXRhID0gb2Zmc2V0b2Yoc3RydWN0IHVkcGhkciwgdWhf
c3VtKTsKKwkJaWYgKGNzY292X3BhcnRpYWwpIHsKKwkJCWlmICgodWRwNi0+dWhfc3VtID0gaW42
X2Nrc3VtKG0sIDAsCisJCQkgICAgc2l6ZW9mKHN0cnVjdCBpcDZfaGRyKSwgY3Njb3YpKSA9PSAw
KQorCQkJCXVkcDYtPnVoX3N1bSA9IDB4ZmZmZjsKKwkJfSBlbHNlIHsKKwkJCXVkcDYtPnVoX3N1
bSA9IGluNl9ja3N1bV9wc2V1ZG8oaXA2LCBwbGVuLCBueHQsIDApOworCQkJbS0+bV9wa3RoZHIu
Y3N1bV9mbGFncyA9IENTVU1fVURQX0lQVjY7CisJCQltLT5tX3BrdGhkci5jc3VtX2RhdGEgPSBv
ZmZzZXRvZihzdHJ1Y3QgdWRwaGRyLCB1aF9zdW0pOworCQl9CiAKIAkJZmxhZ3MgPSAwOwogCkBA
IC04MjYsMTAgKzg4OCwxMCBAQCB1ZHA2X2Fib3J0KHN0cnVjdCBzb2NrZXQgKnNvKQogCiAJSU5Q
X1dMT0NLKGlucCk7CiAJaWYgKCFJTjZfSVNfQUREUl9VTlNQRUNJRklFRCgmaW5wLT5pbjZwX2Zh
ZGRyKSkgewotCQlJTlBfSEFTSF9XTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV0xPQ0so
aW5wLT5pbnBfcGNiaW5mbyk7CiAJCWluNl9wY2JkaXNjb25uZWN0KGlucCk7CiAJCWlucC0+aW42
cF9sYWRkciA9IGluNmFkZHJfYW55OwotCQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOwor
CQlJTlBfSEFTSF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQlzb2lzZGlzY29ubmVjdGVk
KHNvKTsKIAl9CiAJSU5QX1dVTkxPQ0soaW5wKTsKQEAgLTgzOSw4ICs5MDEsMTMgQEAgc3RhdGlj
IGludAogdWRwNl9hdHRhY2goc3RydWN0IHNvY2tldCAqc28sIGludCBwcm90bywgc3RydWN0IHRo
cmVhZCAqdGQpCiB7CiAJc3RydWN0IGlucGNiICppbnA7CisJc3RydWN0IGlucGNiaW5mbyAqcGNi
aW5mbzsKIAlpbnQgZXJyb3I7CiAKKwlpZiAoc28tPnNvX3Byb3RvLT5wcl9wcm90b2NvbCA9PSBJ
UFBST1RPX1VEUCkKKwkJcGNiaW5mbyA9ICZWX3VkYmluZm87CisJIGVsc2UKKwkJcGNiaW5mbyA9
ICZWX3VsaXRlY2JpbmZvOwogCWlucCA9IHNvdG9pbnBjYihzbyk7CiAJS0FTU0VSVChpbnAgPT0g
TlVMTCwgKCJ1ZHA2X2F0dGFjaDogaW5wICE9IE5VTEwiKSk7CiAKQEAgLTg0OSwxMCArOTE2LDEw
IEBAIHVkcDZfYXR0YWNoKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8sIHN0cnVjdCB0CiAJ
CWlmIChlcnJvcikKIAkJCXJldHVybiAoZXJyb3IpOwogCX0KLQlJTlBfSU5GT19XTE9DSygmVl91
ZGJpbmZvKTsKLQllcnJvciA9IGluX3BjYmFsbG9jKHNvLCAmVl91ZGJpbmZvKTsKKwlJTlBfSU5G
T19XTE9DSyhwY2JpbmZvKTsKKwllcnJvciA9IGluX3BjYmFsbG9jKHNvLCBwY2JpbmZvKTsKIAlp
ZiAoZXJyb3IpIHsKLQkJSU5QX0lORk9fV1VOTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0lORk9f
V1VOTE9DSyhwY2JpbmZvKTsKIAkJcmV0dXJuIChlcnJvcik7CiAJfQogCWlucCA9IChzdHJ1Y3Qg
aW5wY2IgKilzby0+c29fcGNiOwpAQCAtODczLDExICs5NDAsMTEgQEAgdWRwNl9hdHRhY2goc3Ry
dWN0IHNvY2tldCAqc28sIGludCBwcm90bywgc3RydWN0IHQKIAlpZiAoZXJyb3IpIHsKIAkJaW5f
cGNiZGV0YWNoKGlucCk7CiAJCWluX3BjYmZyZWUoaW5wKTsKLQkJSU5QX0lORk9fV1VOTE9DSygm
Vl91ZGJpbmZvKTsKKwkJSU5QX0lORk9fV1VOTE9DSyhwY2JpbmZvKTsKIAkJcmV0dXJuIChlcnJv
cik7CiAJfQogCUlOUF9XVU5MT0NLKGlucCk7Ci0JSU5QX0lORk9fV1VOTE9DSygmVl91ZGJpbmZv
KTsKKwlJTlBfSU5GT19XVU5MT0NLKHBjYmluZm8pOwogCXJldHVybiAoMCk7CiB9CiAKQEAgLTg5
MSw3ICs5NTgsNyBAQCB1ZHA2X2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRk
ciAqbmFtLAogCUtBU1NFUlQoaW5wICE9IE5VTEwsICgidWRwNl9iaW5kOiBpbnAgPT0gTlVMTCIp
KTsKIAogCUlOUF9XTE9DSyhpbnApOwotCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCUlO
UF9IQVNIX1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWlucC0+aW5wX3ZmbGFnICY9IH5JTlBf
SVBWNDsKIAlpbnAtPmlucF92ZmxhZyB8PSBJTlBfSVBWNjsKIAlpZiAoKGlucC0+aW5wX2ZsYWdz
ICYgSU42UF9JUFY2X1Y2T05MWSkgPT0gMCkgewpAQCAtOTE5LDcgKzk4Niw3IEBAIHVkcDZfYmlu
ZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICpuYW0sCiAjaWZkZWYgSU5FVAog
b3V0OgogI2VuZGlmCi0JSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSEFTSF9X
VU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCUlOUF9XVU5MT0NLKGlucCk7CiAJcmV0dXJuIChl
cnJvcik7CiB9CkBAIC05NDMsMTAgKzEwMTAsMTAgQEAgdWRwNl9jbG9zZShzdHJ1Y3Qgc29ja2V0
ICpzbykKICNlbmRpZgogCUlOUF9XTE9DSyhpbnApOwogCWlmICghSU42X0lTX0FERFJfVU5TUEVD
SUZJRUQoJmlucC0+aW42cF9mYWRkcikpIHsKLQkJSU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5mbyk7
CisJCUlOUF9IQVNIX1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQlpbjZfcGNiZGlzY29ubmVj
dChpbnApOwogCQlpbnAtPmluNnBfbGFkZHIgPSBpbjZhZGRyX2FueTsKLQkJSU5QX0hBU0hfV1VO
TE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV1VOTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsK
IAkJc29pc2Rpc2Nvbm5lY3RlZChzbyk7CiAJfQogCUlOUF9XVU5MT0NLKGlucCk7CkBAIC05ODUs
MTAgKzEwNTIsMTAgQEAgdWRwNl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29j
a2FkZHIgKm4KIAkJZXJyb3IgPSBwcmlzb25fcmVtb3RlX2lwNCh0ZC0+dGRfdWNyZWQsICZzaW4u
c2luX2FkZHIpOwogCQlpZiAoZXJyb3IgIT0gMCkKIAkJCWdvdG8gb3V0OwotCQlJTlBfSEFTSF9X
TE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJ
CWVycm9yID0gaW5fcGNiY29ubmVjdChpbnAsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLAogCQkg
ICAgdGQtPnRkX3VjcmVkKTsKLQkJSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5Q
X0hBU0hfV1VOTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAkJaWYgKGVycm9yID09IDApCiAJCQlz
b2lzY29ubmVjdGVkKHNvKTsKIAkJZ290byBvdXQ7CkBAIC0xMDAzLDkgKzEwNzAsOSBAQCB1ZHA2
X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqbgogCWVycm9yID0g
cHJpc29uX3JlbW90ZV9pcDYodGQtPnRkX3VjcmVkLCAmc2luNi0+c2luNl9hZGRyKTsKIAlpZiAo
ZXJyb3IgIT0gMCkKIAkJZ290byBvdXQ7Ci0JSU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5mbyk7CisJ
SU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJZXJyb3IgPSBpbjZfcGNiY29ubmVj
dChpbnAsIG5hbSwgdGQtPnRkX3VjcmVkKTsKLQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8p
OworCUlOUF9IQVNIX1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJaWYgKGVycm9yID09IDAp
CiAJCXNvaXNjb25uZWN0ZWQoc28pOwogb3V0OgpAQCAtMTAxOCwxOCArMTA4NSwyMSBAQCB1ZHA2
X2RldGFjaChzdHJ1Y3Qgc29ja2V0ICpzbykKIHsKIAlzdHJ1Y3QgaW5wY2IgKmlucDsKIAlzdHJ1
Y3QgdWRwY2IgKnVwOworCWludCBpc3VkcDsKIAorCWlzdWRwID0gKHNvLT5zb19wcm90by0+cHJf
cHJvdG9jb2wgPT0gSVBQUk9UT19VRFApID8gMSA6IDA7CisKIAlpbnAgPSBzb3RvaW5wY2Ioc28p
OwogCUtBU1NFUlQoaW5wICE9IE5VTEwsICgidWRwNl9kZXRhY2g6IGlucCA9PSBOVUxMIikpOwog
Ci0JSU5QX0lORk9fV0xPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0lORk9fV0xPQ0soaW5wLT5pbnBf
cGNiaW5mbyk7CiAJSU5QX1dMT0NLKGlucCk7CiAJdXAgPSBpbnRvdWRwY2IoaW5wKTsKIAlLQVNT
RVJUKHVwICE9IE5VTEwsICgiJXM6IHVwID09IE5VTEwiLCBfX2Z1bmNfXykpOwogCWluX3BjYmRl
dGFjaChpbnApOwogCWluX3BjYmZyZWUoaW5wKTsKLQlJTlBfSU5GT19XVU5MT0NLKCZWX3VkYmlu
Zm8pOwotCXVkcF9kaXNjYXJkY2IodXApOworCUlOUF9JTkZPX1dVTkxPQ0soaW5wLT5pbnBfcGNi
aW5mbyk7CisJdWRwX2Rpc2NhcmRjYih1cCwgaXN1ZHApOwogfQogCiBzdGF0aWMgaW50CkBAIC0x
MDU4LDEwICsxMTI4LDEwIEBAIHVkcDZfZGlzY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJ
Z290byBvdXQ7CiAJfQogCi0JSU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0hBU0hf
V0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJaW42X3BjYmRpc2Nvbm5lY3QoaW5wKTsKIAlpbnAt
PmluNnBfbGFkZHIgPSBpbjZhZGRyX2FueTsKLQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8p
OworCUlOUF9IQVNIX1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJU09DS19MT0NLKHNvKTsK
IAlzby0+c29fc3RhdGUgJj0gflNTX0lTQ09OTkVDVEVEOwkJLyogWFhYICovCiAJU09DS19VTkxP
Q0soc28pOwpAQCAtMTEyOCw5ICsxMTk4LDkgQEAgdWRwNl9zZW5kKHN0cnVjdCBzb2NrZXQgKnNv
LCBpbnQgZmxhZ3MsIHN0cnVjdCBtYnUKICNpZmRlZiBNQUMKIAltYWNfaW5wY2JfY3JlYXRlX21i
dWYoaW5wLCBtKTsKICNlbmRpZgotCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCUlOUF9I
QVNIX1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWVycm9yID0gdWRwNl9vdXRwdXQoaW5wLCBt
LCBhZGRyLCBjb250cm9sLCB0ZCk7Ci0JSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwlJ
TlBfSEFTSF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogI2lmZGVmIElORVQKICNlbmRpZgkK
IAlJTlBfV1VOTE9DSyhpbnApOwpJbmRleDogc3lzL25ldGluZXQ2L3VkcDZfdmFyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gc3lzL25ldGluZXQ2L3VkcDZfdmFyLmgJKHJldmlzaW9uIDI0ODQ1OCkKKysrIHN5
cy9uZXRpbmV0Ni91ZHA2X3Zhci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBAIFNZ
U0NUTF9ERUNMKF9uZXRfaW5ldDZfdWRwNik7CiBleHRlcm4gc3RydWN0IHByX3VzcnJlcXMJdWRw
Nl91c3JyZXFzOwogCiB2b2lkCXVkcDZfY3RsaW5wdXQoaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwg
dm9pZCAqKTsKK3ZvaWQJdWRwbGl0ZTZfY3RsaW5wdXQoaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwg
dm9pZCAqKTsKIGludAl1ZHA2X2lucHV0KHN0cnVjdCBtYnVmICoqLCBpbnQgKiwgaW50KTsKICNl
bmRpZgogCg==
--047d7b5d58b4c09aa004f4c73c6e--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2BWntOvLHYAxp5_s%2BCrWnQSy5H=G_p07WMRZn-=77Dx2kecr0g>