Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Sep 2011 14:36:53 -0400
From:      Arnaud Lacombe <lacombar@gmail.com>
To:        Jack Vogel <jfvogel@gmail.com>
Cc:        freebsd-net@freebsd.org
Subject:   Re: FreeBSD 7-STABLE mbuf corruption
Message-ID:  <CACqU3MV7JRxQ_mNeHCk7RVyzETZLAcc3XL=xyZ-qqtPfRxkZeQ@mail.gmail.com>
In-Reply-To: <CAFOYbc=mu7rGU8LudLSzZwKfM3QHFw%2BPGEHHKD3rcA2=dxGfoQ@mail.gmail.com>
References:  <CACqU3MUs9Z9GeuGe=8iVp=MWV6eG-tO%2BkHb1znatsTq2uEqwvA@mail.gmail.com> <CACqU3MXf52tLajTfVCEiGGhtCuXsesrdM65LfsoGecuZj2tNwA@mail.gmail.com> <CAFOYbc=mu7rGU8LudLSzZwKfM3QHFw%2BPGEHHKD3rcA2=dxGfoQ@mail.gmail.com>

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

Hi,

On Wed, Sep 7, 2011 at 7:57 PM, Jack Vogel <jfvogel@gmail.com> wrote:
> I have seen this, but I don't have any hot ideas right off the top of my
> head yet :(
>
I've been running for 19h now the following patches:
 - backport of kmacy@'s buf_ring(9) API, from FreeBSD 8 (from [0], see
attachment for full diff)
 - conversion of igb(4), from CURRENT, to use buf_ring(9) on FreeBSD
7.1 (see attachment)
 - all the original patches I already sent

It did not crash, yet. The only downside is that after 3h30 and ~4h,
igb(4) queues' handler started spinning infinitely, breaking network
connectivity.

I would be tempted to say that the infinite loop issue is an igb(4)
(separate from the original crashes), and to link the crashes I was
seeing to a race in the legacy IFQ code...

 - Arnaud


[0]: roughly, a cherry-pick of r185162, r185164, r185193, r185543,
r186207, r186213, r191033, r191161, r191899, r193848 and r194518.

> Jack
>
>
> On Wed, Sep 7, 2011 at 4:19 PM, Arnaud Lacombe <lacombar@gmail.com> wrote=
:
>>
>> Hi,
>>
>> On Mon, Sep 5, 2011 at 2:59 AM, Arnaud Lacombe <lacombar@gmail.com> wrot=
e:
>> > Hi folks,
>> >
>> > We have been trying to track down a bad mbuf management for about two
>> > weeks on a customized 7.1 base. I have finally been able to reproduce
>> > it with a stock FreeBSD 7-STABLE (kernel from r225276, userland from
>> > 7.4).
>> >
>> > With the help of the attached patches, I have just been able to
>> > trigger the following panic:
>> >
>> > panic: Corrupted unused flags, expected 0xffffffff00000000, got 0x0,
>> > flags 0x3
>> > cpuid =3D 1
>> > Uptime: 3d10h5m3s
>> > Cannot dump. No dump device defined
>> >
>> General form of the crash is:
>>
>> panic: Corrupted unused flags, expected 0xffffffff00000000, got
>> 0xbabe0000000000, flags 0xbabe0000babe00
>> cpuid =3D 0
>> KDB: stack backtrace:
>> db_trace_self_wrapper(c0874e29,0,c0835757,f4574c48,0,...) at
>> db_trace_self_wrapper+0x26
>> panic(c0835757,0,ffffffff,0,babe00,...) at panic+0x10b
>> igb_txeof(c6a25008,0,c0837083,5ea,17c,...) at igb_txeof+0x399
>> igb_msix_que(c6a2b800,0,c084d367,4b6,c69dd068,...) at igb_msix_que+0x7b
>> ithread_loop(c6a29090,f4574d38,c084d0db,31c,c6a16828,...) at
>> ithread_loop+0xc3
>> fork_exit(c061d520,c6a29090,f4574d38) at fork_exit+0xa6
>> fork_trampoline() at fork_trampoline+0x8
>> --- trap 0, eip =3D 0, esp =3D 0xf4574d70, ebp =3D 0 ---
>> Uptime: 1m42s
>>
>> It happens particularly easily when the box receives wall of SYN
>> (about 1000 cnx attempts at once) every 5s or so.
>>
>> =A0- Arnaud
>>
>> >
>> > [cut stuff no one cares about...]
>
>

--bcaec520ed5777122404acd6ed09
Content-Type: text/x-patch; charset=US-ASCII; name="buf_ring_backport.diff"
Content-Disposition: attachment; filename="buf_ring_backport.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gsj7uwhq0

ZGlmZiAtLWdpdCBhL3N5cy9hbWQ2NC9pbmNsdWRlL2F0b21pYy5oIGIvc3lzL2FtZDY0L2luY2x1
ZGUvYXRvbWljLmgKaW5kZXggNTJjOTBjOS4uYTk5NzFjZCAxMDA2NDQKLS0tIGEvc3lzL2FtZDY0
L2luY2x1ZGUvYXRvbWljLmgKKysrIGIvc3lzL2FtZDY0L2luY2x1ZGUvYXRvbWljLmgKQEAgLTMy
LDYgKzMyLDEwIEBACiAjZXJyb3IgdGhpcyBmaWxlIG5lZWRzIHN5cy9jZGVmcy5oIGFzIGEgcHJl
cmVxdWlzaXRlCiAjZW5kaWYKIAorI2RlZmluZSBtYigpCV9fYXNtX18gX192b2xhdGlsZV9fICgi
bWZlbmNlOyI6IDogOiJtZW1vcnkiKQorI2RlZmluZSB3bWIoKQlfX2FzbV9fIF9fdm9sYXRpbGVf
XyAoInNmZW5jZTsiOiA6IDoibWVtb3J5IikKKyNkZWZpbmUgcm1iKCkJX19hc21fXyBfX3ZvbGF0
aWxlX18gKCJsZmVuY2U7IjogOiA6Im1lbW9yeSIpCisKIC8qCiAgKiBWYXJpb3VzIHNpbXBsZSBv
cGVyYXRpb25zIG9uIG1lbW9yeSwgZWFjaCBvZiB3aGljaCBpcyBhdG9taWMgaW4gdGhlCiAgKiBw
cmVzZW5jZSBvZiBpbnRlcnJ1cHRzIGFuZCBtdWx0aXBsZSBwcm9jZXNzb3JzLgpkaWZmIC0tZ2l0
IGEvc3lzL2FybS9pbmNsdWRlL2F0b21pYy5oIGIvc3lzL2FybS9pbmNsdWRlL2F0b21pYy5oCmlu
ZGV4IGJlZDVhNzIuLmYwYmUzYWUgMTAwNjQ0Ci0tLSBhL3N5cy9hcm0vaW5jbHVkZS9hdG9taWMu
aAorKysgYi9zeXMvYXJtL2luY2x1ZGUvYXRvbWljLmgKQEAgLTQ1LDYgKzQ1LDExIEBACiAKICNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4KIAorCisjZGVmaW5lCW1iKCkKKyNkZWZpbmUJd21iKCkKKyNk
ZWZpbmUJcm1iKCkKKwogI2lmbmRlZiBJMzJfYml0CiAjZGVmaW5lIEkzMl9iaXQgKDEgPDwgNykg
ICAgICAgIC8qIElSUSBkaXNhYmxlICovCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3N5cy9jb25mL2Zp
bGVzIGIvc3lzL2NvbmYvZmlsZXMKaW5kZXggODIyNmUxMS4uZDUzNTFjMSAxMDA2NDQKLS0tIGEv
c3lzL2NvbmYvZmlsZXMKKysrIGIvc3lzL2NvbmYvZmlsZXMKQEAgLTE2NzYsNiArMTY3Niw3IEBA
IGtlcm4vc3Vicl9hY2xfcG9zaXgxZS5jCQlzdGFuZGFyZAoga2Vybi9zdWJyX2F1dG9jb25mLmMJ
CXN0YW5kYXJkCiBrZXJuL3N1YnJfYmxpc3QuYwkJc3RhbmRhcmQKIGtlcm4vc3Vicl9idXMuYwkJ
CXN0YW5kYXJkCitrZXJuL3N1YnJfYnVmcmluZy5jCQlzdGFuZGFyZAoga2Vybi9zdWJyX2Nsb2Nr
LmMJCXN0YW5kYXJkCiBrZXJuL3N1YnJfZGV2c3RhdC5jCQlzdGFuZGFyZAoga2Vybi9zdWJyX2Rp
c2suYwkJc3RhbmRhcmQKZGlmZiAtLWdpdCBhL3N5cy9kZXYvYmNlL2lmX2JjZXJlZy5oIGIvc3lz
L2Rldi9iY2UvaWZfYmNlcmVnLmgKaW5kZXggNzIzZmQyNi4uMmJiNTg5ZiAxMDA2NDQKLS0tIGEv
c3lzL2Rldi9iY2UvaWZfYmNlcmVnLmgKKysrIGIvc3lzL2Rldi9iY2UvaWZfYmNlcmVnLmgKQEAg
LTU0MSw2ICs1NDEsOCBAQCBkZWZhdWx0OiBEQlBSSU5UKHNjLCBCQ0VfSU5TQU5FX1BIWSwJCQkJ
CVwKIAogI2VuZGlmIC8qIEJDRV9ERUJVRyAqLwogCisKKyNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA8
IDgwMDA1NAogI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hbWQ2NF9fKQogI2Rl
ZmluZSBtYigpICAgIF9fYXNtIHZvbGF0aWxlKCJtZmVuY2UiIDo6OiAibWVtb3J5IikKICNkZWZp
bmUgd21iKCkgICBfX2FzbSB2b2xhdGlsZSgic2ZlbmNlIiA6OjogIm1lbW9yeSIpCkBAIC01NTAs
NiArNTUyLDcgQEAgZGVmYXVsdDogREJQUklOVChzYywgQkNFX0lOU0FORV9QSFksCQkJCQlcCiAj
ZGVmaW5lIHJtYigpCiAjZGVmaW5lIHdtYigpCiAjZW5kaWYKKyNlbmRpZgogCiAvKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKi8KIC8qIERldmljZSBpZGVudGlmaWNhdGlvbiBkZWZpbml0aW9ucy4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvc3lzL2Rldi9j
eGdiL2N4Z2JfYWRhcHRlci5oIGIvc3lzL2Rldi9jeGdiL2N4Z2JfYWRhcHRlci5oCmluZGV4IGI1
NGQzNDAuLmE2MDk5YTAgMTAwNjQ0Ci0tLSBhL3N5cy9kZXYvY3hnYi9jeGdiX2FkYXB0ZXIuaAor
KysgYi9zeXMvZGV2L2N4Z2IvY3hnYl9hZGFwdGVyLmgKQEAgLTQyLDYgKzQyLDcgQEAgJEZyZWVC
U0QkCiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgogI2luY2x1ZGUgPHN5cy9zb2NraW8uaD4KICNp
bmNsdWRlIDxzeXMvY29uZHZhci5oPgorI2luY2x1ZGUgPHN5cy9idWZfcmluZy5oPgogCiAjaW5j
bHVkZSA8bmV0L2V0aGVybmV0Lmg+CiAjaW5jbHVkZSA8bmV0L2lmLmg+CkBAIC0yNjUsNyArMjY2
LDcgQEAgc3RydWN0IHNnZV90eHEgewogCSAqIG1idWYgdG91Y2hlcwogCSAqLwogCXN0cnVjdCBt
YnVmX2hlYWQgY2xlYW5xOwkKLQlzdHJ1Y3QgYnVmX3JpbmcgdHhxX21yOworCXN0cnVjdCBidWZf
cmluZyAqdHhxX21yOwogCXN0cnVjdCBtYnVmICAgICAqaW1tcGt0OwogCXVpbnQzMl90ICAgICAg
ICB0eHFfZHJvcHM7CiAJdWludDMyX3QgICAgICAgIHR4cV9za2lwcGVkOwpkaWZmIC0tZ2l0IGEv
c3lzL2Rldi9jeGdiL2N4Z2JfbXVsdGlxLmMgYi9zeXMvZGV2L2N4Z2IvY3hnYl9tdWx0aXEuYwpp
bmRleCAwNDViMDk0Li5kYzY2N2JlIDEwMDY0NAotLS0gYS9zeXMvZGV2L2N4Z2IvY3hnYl9tdWx0
aXEuYworKysgYi9zeXMvZGV2L2N4Z2IvY3hnYl9tdWx0aXEuYwpAQCAtMTM0LDcgKzEzNCw3IEBA
IGN4Z2JfcGNwdV9lbnF1ZXVlX3BhY2tldF8oc3RydWN0IHNnZV9xc2V0ICpxcywgc3RydWN0IG1i
dWYgKm0pCiAJCXJldHVybiAoRU5FVERPV04pOwogCX0KIAl0eHEgPSAmcXMtPnR4cVtUWFFfRVRI
XTsKLQllcnIgPSBidWZfcmluZ19lbnF1ZXVlKCZ0eHEtPnR4cV9tciwgbSk7CisJZXJyID0gZHJi
cl9lbnF1ZXVlKHFzLT5wb3J0LT5pZnAsIHR4cS0+dHhxX21yLCBtKTsKIAlpZiAoZXJyKSB7CiAJ
CXR4cS0+dHhxX2Ryb3BzKys7CiAJCW1fZnJlZW0obSk7CkBAIC0xOTksMTQgKzE5OSwxMSBAQCBj
eGdiX2RlcXVldWVfcGFja2V0KHN0cnVjdCBzZ2VfdHhxICp0eHEsIHN0cnVjdCBtYnVmICoqbV92
ZWMpCiAJfQogCXNjID0gcXMtPnBvcnQtPmFkYXB0ZXI7CiAKLQltID0gYnVmX3JpbmdfZGVxdWV1
ZSgmdHhxLT50eHFfbXIpOworCW0gPSBidWZfcmluZ19kZXF1ZXVlX3NjKHR4cS0+dHhxX21yKTsK
IAlpZiAobSA9PSBOVUxMKSAKIAkJcmV0dXJuICgwKTsKIAogCWNvdW50ID0gMTsKLQlLQVNTRVJU
KG0tPm1fdHlwZSA9PSBNVF9EQVRBLAotCSAgICAoIm09JXAgaXMgYmFkIG1idWYgdHlwZSAlZCBm
cm9tIHJpbmcgY29ucz0lZCBwcm9kPSVkIiwgbSwKLQkJbS0+bV90eXBlLCB0eHEtPnR4cV9tci5i
cl9jb25zLCB0eHEtPnR4cV9tci5icl9wcm9kKSk7CiAJbV92ZWNbMF0gPSBtOwogCWlmIChtLT5t
X3BrdGhkci50c29fc2Vnc3ogPiAwIHx8IG0tPm1fcGt0aGRyLmxlbiA+IFRYX1dSX1NJWkVfTUFY
IHx8CiAJICAgIG0tPm1fbmV4dCAhPSBOVUxMIHx8IChjeGdiX3BjcHVfdHhfY29hbGVzY2UgPT0g
MCkpIHsKQEAgLTIxNCwxNCArMjExLDE0IEBAIGN4Z2JfZGVxdWV1ZV9wYWNrZXQoc3RydWN0IHNn
ZV90eHEgKnR4cSwgc3RydWN0IG1idWYgKiptX3ZlYykKIAl9CiAKIAlzaXplID0gbS0+bV9wa3Ro
ZHIubGVuOwotCWZvciAobSA9IGJ1Zl9yaW5nX3BlZWsoJnR4cS0+dHhxX21yKTsgbSAhPSBOVUxM
OwotCSAgICAgbSA9IGJ1Zl9yaW5nX3BlZWsoJnR4cS0+dHhxX21yKSkgeworCWZvciAobSA9IGJ1
Zl9yaW5nX3BlZWsodHhxLT50eHFfbXIpOyBtICE9IE5VTEw7CisJICAgICBtID0gYnVmX3Jpbmdf
cGVlayh0eHEtPnR4cV9tcikpIHsKIAogCQlpZiAobS0+bV9wa3RoZHIudHNvX3NlZ3N6ID4gMCB8
fAogCQkgICAgc2l6ZSArIG0tPm1fcGt0aGRyLmxlbiA+IFRYX1dSX1NJWkVfTUFYIHx8IG0tPm1f
bmV4dCAhPSBOVUxMKQogCQkJYnJlYWs7CiAKLQkJYnVmX3JpbmdfZGVxdWV1ZSgmdHhxLT50eHFf
bXIpOworCQlidWZfcmluZ19kZXF1ZXVlX3NjKHR4cS0+dHhxX21yKTsKIAkJc2l6ZSArPSBtLT5t
X3BrdGhkci5sZW47CiAJCW1fdmVjW2NvdW50KytdID0gbTsKIApAQCAtMzcyLDcgKzM2OSw3IEBA
IGN4Z2JfcGNwdV9mcmVlKHN0cnVjdCBzZ2VfcXNldCAqcXMpCiAJbXR4X2xvY2soJnR4cS0+bG9j
ayk7CiAJd2hpbGUgKChtID0gbWJ1ZnFfZGVxdWV1ZSgmdHhxLT5zZW5kcSkpICE9IE5VTEwpIAog
CQltX2ZyZWVtKG0pOwotCXdoaWxlICgobSA9IGJ1Zl9yaW5nX2RlcXVldWUoJnR4cS0+dHhxX21y
KSkgIT0gTlVMTCkgCisJd2hpbGUgKChtID0gYnVmX3JpbmdfZGVxdWV1ZV9zYyh0eHEtPnR4cV9t
cikpICE9IE5VTEwpIAogCQltX2ZyZWVtKG0pOwogCiAJdDNfZnJlZV90eF9kZXNjX2FsbCh0eHEp
OwpAQCAtNDM0LDcgKzQzMSw3IEBAIGN4Z2JfcGNwdV9zdGFydF8oc3RydWN0IHNnZV9xc2V0ICpx
cywgc3RydWN0IG1idWYgKmltbXBrdCwgaW50IHR4X2ZsdXNoKQogCQlpbml0ZXJyID0gRU5FVERP
V047CiAJZWxzZSBpZiAoaW1tcGt0KSB7CiAKLQkJaWYgKCFidWZfcmluZ19lbXB0eSgmdHhxLT50
eHFfbXIpKSAKKwkJaWYgKCFidWZfcmluZ19lbXB0eSh0eHEtPnR4cV9tcikpIAogCQkJaW5pdGVy
ciA9IGN4Z2JfcGNwdV9lbnF1ZXVlX3BhY2tldF8ocXMsIGltbXBrdCk7CiAJCWVsc2UKIAkJCXR4
cS0+aW1tcGt0ID0gaW1tcGt0OwpAQCAtNDY1LDcgKzQ2Miw3IEBAIGN4Z2JfcGNwdV9zdGFydF8o
c3RydWN0IHNnZV9xc2V0ICpxcywgc3RydWN0IG1idWYgKmltbXBrdCwgaW50IHR4X2ZsdXNoKQog
CX0KIAogCXN0b3BwZWQgPSBpc3NldCgmcXMtPnR4cV9zdG9wcGVkLCBUWFFfRVRIKTsKLQlmbHVz
aCA9ICgoKCFidWZfcmluZ19lbXB0eSgmdHhxLT50eHFfbXIpIHx8ICghSUZRX0RSVl9JU19FTVBU
WSgmcGktPmlmcC0+aWZfc25kKSkpICYmICFzdG9wcGVkKSB8fCB0eHEtPmltbXBrdCk7IAorCWZs
dXNoID0gKCgoIWJ1Zl9yaW5nX2VtcHR5KHR4cS0+dHhxX21yKSB8fCAoIUlGUV9EUlZfSVNfRU1Q
VFkoJnBpLT5pZnAtPmlmX3NuZCkpKSAmJiAhc3RvcHBlZCkgfHwgdHhxLT5pbW1wa3QpOyAKIAlt
YXhfZGVzYyA9IHR4X2ZsdXNoID8gVFhfRVRIX1FfU0laRSA6IFRYX1NUQVJUX01BWF9ERVNDOwog
CiAJaWYgKGN4Z2JfZGVidWcpCkBAIC00NzYsNyArNDczLDcgQEAgY3hnYl9wY3B1X3N0YXJ0Xyhz
dHJ1Y3Qgc2dlX3FzZXQgKnFzLCBzdHJ1Y3QgbWJ1ZiAqaW1tcGt0LCBpbnQgdHhfZmx1c2gpCiAK
IAogCWlmICgodHhfZmx1c2ggJiYgZmx1c2ggJiYgZXJyID09IDApICYmCi0JICAgICghYnVmX3Jp
bmdfZW1wdHkoJnR4cS0+dHhxX21yKSAgfHwKKwkgICAgKCFidWZfcmluZ19lbXB0eSh0eHEtPnR4
cV9tcikgIHx8CiAJCSFJRlFfRFJWX0lTX0VNUFRZKCZwaS0+aWZwLT5pZl9zbmQpKSkgewogCQlz
dHJ1Y3QgdGhyZWFkICp0ZCA9IGN1cnRocmVhZDsKIApAQCAtNTI2LDcgKzUyMyw3IEBAIGN4Z2Jf
cGNwdV9zdGFydChzdHJ1Y3QgaWZuZXQgKmlmcCwgc3RydWN0IG1idWYgKmltbXBrdCkKIAl0eHEg
PSAmcXMtPnR4cVtUWFFfRVRIXTsKIAogCWlmICgoKHNjLT50dW5xX2NvYWxlc2NlID09IDApIHx8
Ci0JCShidWZfcmluZ19jb3VudCgmdHhxLT50eHFfbXIpID49IFRYX1dSX0NPVU5UX01BWCkgfHwK
KwkJKGJ1Zl9yaW5nX2NvdW50KHR4cS0+dHhxX21yKSA+PSBUWF9XUl9DT1VOVF9NQVgpIHx8CiAJ
CShjeGdiX3BjcHVfdHhfY29hbGVzY2UgPT0gMCkpICYmIG10eF90cnlsb2NrKCZ0eHEtPmxvY2sp
KSB7CiAJCWlmIChjeGdiX2RlYnVnKQogCQkJcHJpbnRmKCJkb2luZyBpbW1lZGlhdGUgdHJhbnNt
aXRcbiIpOwpAQCAtNTM0LDEyICs1MzEsMTIgQEAgY3hnYl9wY3B1X3N0YXJ0KHN0cnVjdCBpZm5l
dCAqaWZwLCBzdHJ1Y3QgbWJ1ZiAqaW1tcGt0KQogCQl0eHEtPmZsYWdzIHw9IFRYUV9UUkFOU01J
VFRJTkc7CiAJCWVyciA9IGN4Z2JfcGNwdV9zdGFydF8ocXMsIGltbXBrdCwgRkFMU0UpOwogCQl0
eHEtPmZsYWdzICY9IH5UWFFfVFJBTlNNSVRUSU5HOwotCQlyZXNpZCA9IChidWZfcmluZ19jb3Vu
dCgmdHhxLT50eHFfbXIpID4gNjQpIHx8IChkZXNjX3JlY2xhaW1hYmxlKHR4cSkgPiA2NCk7CisJ
CXJlc2lkID0gKGJ1Zl9yaW5nX2NvdW50KHR4cS0+dHhxX21yKSA+IDY0KSB8fCAoZGVzY19yZWNs
YWltYWJsZSh0eHEpID4gNjQpOwogCQltdHhfdW5sb2NrKCZ0eHEtPmxvY2spOwogCX0gZWxzZSBp
ZiAoaW1tcGt0KSB7CiAJCWlmIChjeGdiX2RlYnVnKQogCQkJcHJpbnRmKCJkZWZlcnJlZCBjb2Fs
ZXNjZT0langgcmluZ19jb3VudD0lZCBtdHhfb3duZWQ9JWRcbiIsCi0JCQkgICAgc2MtPnR1bnFf
Y29hbGVzY2UsIGJ1Zl9yaW5nX2NvdW50KCZ0eHEtPnR4cV9tciksIG10eF9vd25lZCgmdHhxLT5s
b2NrKSk7CisJCQkgICAgc2MtPnR1bnFfY29hbGVzY2UsIGJ1Zl9yaW5nX2NvdW50KHR4cS0+dHhx
X21yKSwgbXR4X293bmVkKCZ0eHEtPmxvY2spKTsKIAkJZXJyID0gY3hnYl9wY3B1X2VucXVldWVf
cGFja2V0XyhxcywgaW1tcGt0KTsKIAl9CiAJCkBAIC01OTEsNyArNTg4LDcgQEAgY3hnYl9wY3B1
X3N0YXJ0X3Byb2Modm9pZCAqYXJnKQogCiAJCWlmICgocXMtPnBvcnQtPmlmcC0+aWZfZHJ2X2Zs
YWdzICYgSUZGX0RSVl9SVU5OSU5HKSA9PSAwKSB7CiAJCQlpZGxldGlja3MgPSBoejsKLQkJCWlm
ICghYnVmX3JpbmdfZW1wdHkoJnR4cS0+dHhxX21yKSB8fAorCQkJaWYgKCFidWZfcmluZ19lbXB0
eSh0eHEtPnR4cV9tcikgfHwKIAkJCSAgICAhbWJ1ZnFfZW1wdHkoJnR4cS0+c2VuZHEpKQogCQkJ
CWN4Z2JfcGNwdV9mcmVlKHFzKTsKIAkJCWdvdG8gZG9uZTsKQEAgLTYxNiwxMSArNjEzLDEzIEBA
IGN4Z2JfcGNwdV9zdGFydF9wcm9jKHZvaWQgKmFyZykKIAkJCW10eF91bmxvY2soJnFzLT5yc3Bx
LmxvY2spOwogCQl9CiAjZW5kaWYJCQotCQlpZiAoKCFidWZfcmluZ19lbXB0eSgmdHhxLT50eHFf
bXIpKSAmJiBlcnIgPT0gMCkgeworCQlpZiAoKCFidWZfcmluZ19lbXB0eSh0eHEtPnR4cV9tcikp
ICYmIGVyciA9PSAwKSB7CisjaWYgMAogCQkJaWYgKGN4Z2JfZGVidWcpCiAJCQkJcHJpbnRmKCJo
ZWFkPSVwIGNvbnM9JWQgcHJvZD0lZFxuIiwKIAkJCQkgICAgdHhxLT5zZW5kcS5oZWFkLCB0eHEt
PnR4cV9tci5icl9jb25zLAogCQkJCSAgICB0eHEtPnR4cV9tci5icl9wcm9kKTsKKyNlbmRpZgkJ
CQogCQkJY29udGludWU7CiAJCX0KIAlkb25lOgkKZGlmZiAtLWdpdCBhL3N5cy9kZXYvY3hnYi9j
eGdiX29zZGVwLmggYi9zeXMvZGV2L2N4Z2IvY3hnYl9vc2RlcC5oCmluZGV4IDI5YjllMmYuLjRm
NDIyOTAgMTAwNjQ0Ci0tLSBhL3N5cy9kZXYvY3hnYi9jeGdiX29zZGVwLmgKKysrIGIvc3lzL2Rl
di9jeGdiL2N4Z2Jfb3NkZXAuaApAQCAtMTU1LDkgKzE1NSw2IEBAIHZvaWQgY3hnYl9sb2dfdGNi
KHN0cnVjdCBhZGFwdGVyICpzYywgdW5zaWduZWQgaW50IHRpZCk7CiAKIAogI2lmIGRlZmluZWQo
X19pMzg2X18pIHx8IGRlZmluZWQoX19hbWQ2NF9fKQotI2RlZmluZSBtYigpICAgIF9fYXNtIHZv
bGF0aWxlKCJtZmVuY2UiOjo6Im1lbW9yeSIpCi0jZGVmaW5lIHJtYigpICAgX19hc20gdm9sYXRp
bGUoImxmZW5jZSI6OjoibWVtb3J5IikKLSNkZWZpbmUgd21iKCkgICBfX2FzbSB2b2xhdGlsZSgi
c2ZlbmNlIiA6OjogIm1lbW9yeSIpCiAjZGVmaW5lIHNtcF9tYigpIG1iKCkKIAogI2RlZmluZSBM
MV9DQUNIRV9CWVRFUyAxMjgKQEAgLTE3OCwxNjMgKzE3NSwxMSBAQCBleHRlcm4gdm9pZCBrZGJf
YmFja3RyYWNlKHZvaWQpOwogCiAKICNlbHNlIC8qICFpMzg2ICYmICFhbWQ2NCAqLwotI2RlZmlu
ZSBtYigpCi0jZGVmaW5lIHJtYigpCi0jZGVmaW5lIHdtYigpCiAjZGVmaW5lIHNtcF9tYigpCiAj
ZGVmaW5lIHByZWZldGNoKHgpCiAjZGVmaW5lIEwxX0NBQ0hFX0JZVEVTIDMyCiAjZW5kaWYKIAot
c3RydWN0IGJ1Zl9yaW5nIHsKLQljYWRkcl90ICAgICAgICAgICpicl9yaW5nOwotCXZvbGF0aWxl
IHVpbnQzMl90IGJyX2NvbnM7Ci0Jdm9sYXRpbGUgdWludDMyX3QgYnJfcHJvZDsKLQlpbnQgICAg
ICAgICAgICAgICBicl9zaXplOwotCXN0cnVjdCBtdHggICAgICAgIGJyX2xvY2s7Ci19OwotCi1z
dHJ1Y3QgYnVmX3JpbmcgKmJ1Zl9yaW5nX2FsbG9jKGludCBjb3VudCwgaW50IGZsYWdzKTsKLXZv
aWQgYnVmX3JpbmdfZnJlZShzdHJ1Y3QgYnVmX3JpbmcgKik7Ci0KLXN0YXRpYyBfX2lubGluZSBp
bnQKLWJ1Zl9yaW5nX2NvdW50KHN0cnVjdCBidWZfcmluZyAqbXIpCi17Ci0JaW50IHNpemUgPSBt
ci0+YnJfc2l6ZTsKLQl1aW50MzJfdCBtYXNrID0gc2l6ZSAtIDE7Ci0JCi0JcmV0dXJuICgoc2l6
ZSArIG1yLT5icl9wcm9kIC0gbXItPmJyX2NvbnMpICYgbWFzayk7Ci19Ci0KLXN0YXRpYyBfX2lu
bGluZSBpbnQKLWJ1Zl9yaW5nX2VtcHR5KHN0cnVjdCBidWZfcmluZyAqbXIpCi17Ci0JcmV0dXJu
IChtci0+YnJfY29ucyA9PSBtci0+YnJfcHJvZCk7Ci19Ci0KLXN0YXRpYyBfX2lubGluZSBpbnQK
LWJ1Zl9yaW5nX2Z1bGwoc3RydWN0IGJ1Zl9yaW5nICptcikKLXsKLQl1aW50MzJfdCBtYXNrOwot
Ci0JbWFzayA9IG1yLT5icl9zaXplIC0gMTsKLQlyZXR1cm4gKG1yLT5icl9jb25zID09ICgobXIt
PmJyX3Byb2QgKyAxKSAmIG1hc2spKTsKLX0KLQotLyoKLSAqIFRoZSBwcm9kdWNlciBhbmQgY29u
c3VtZXIgYXJlIGluZGVwZW5kZW50bHkgbG9ja2VkCi0gKiB0aGlzIHJlbGllcyBvbiB0aGUgY29u
c3VtZXIgcHJvdmlkaW5nIGhpcyBvd24gc2VyaWFsaXphdGlvbgotICoKLSAqLwotc3RhdGljIF9f
aW5saW5lIHZvaWQgKgotYnVmX3JpbmdfZGVxdWV1ZShzdHJ1Y3QgYnVmX3JpbmcgKm1yKQotewot
CXVpbnQzMl90IHByb2QsIGNvbnMsIG1hc2s7Ci0JY2FkZHJfdCAqcmluZywgbTsKLQkKLQlyaW5n
ID0gKGNhZGRyX3QgKiltci0+YnJfcmluZzsKLQltYXNrID0gbXItPmJyX3NpemUgLSAxOwotCWNv
bnMgPSBtci0+YnJfY29uczsKLQltYigpOwotCXByb2QgPSBtci0+YnJfcHJvZDsKLQltID0gTlVM
TDsKLQlpZiAoY29ucyAhPSBwcm9kKSB7Ci0JCW0gPSByaW5nW2NvbnNdOwotCQlyaW5nW2NvbnNd
ID0gTlVMTDsKLQkJbXItPmJyX2NvbnMgPSAoY29ucyArIDEpICYgbWFzazsKLQkJbWIoKTsKLQl9
Ci0JcmV0dXJuIChtKTsKLX0KLQotI2lmZGVmIERFQlVHX0JVRlJJTkcKLXN0YXRpYyBfX2lubGlu
ZSB2b2lkCi1fX2J1Zl9yaW5nX3NjYW4oc3RydWN0IGJ1Zl9yaW5nICptciwgdm9pZCAqbSwgY2hh
ciAqZmlsZSwgaW50IGxpbmUpCi17Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbXItPmJy
X3NpemU7IGkrKykKLQkJaWYgKG0gPT0gbXItPmJyX3JpbmdbaV0pCi0JCQlwYW5pYygiJXM6JWQg
bT0lcCBwcmVzZW50IHByb2Q9JWQgY29ucz0lZCBpZHg9JWQiLCBmaWxlLAotCQkJICAgIGxpbmUs
IG0sIG1yLT5icl9wcm9kLCBtci0+YnJfY29ucywgaSk7Ci19Ci0KLXN0YXRpYyBfX2lubGluZSB2
b2lkCi1idWZfcmluZ19zY2FuKHN0cnVjdCBidWZfcmluZyAqbXIsIHZvaWQgKm0sIGNoYXIgKmZp
bGUsIGludCBsaW5lKQotewotCW10eF9sb2NrKCZtci0+YnJfbG9jayk7Ci0JX19idWZfcmluZ19z
Y2FuKG1yLCBtLCBmaWxlLCBsaW5lKTsKLQltdHhfdW5sb2NrKCZtci0+YnJfbG9jayk7Ci19Ci0K
LSNlbHNlCi1zdGF0aWMgX19pbmxpbmUgdm9pZAotX19idWZfcmluZ19zY2FuKHN0cnVjdCBidWZf
cmluZyAqbXIsIHZvaWQgKm0sIGNoYXIgKmZpbGUsIGludCBsaW5lKQotewotfQotCi1zdGF0aWMg
X19pbmxpbmUgdm9pZAotYnVmX3Jpbmdfc2NhbihzdHJ1Y3QgYnVmX3JpbmcgKm1yLCB2b2lkICpt
LCBjaGFyICpmaWxlLCBpbnQgbGluZSkKLXsKLX0KLSNlbmRpZgotCi1zdGF0aWMgX19pbmxpbmUg
aW50Ci1fX2J1Zl9yaW5nX2VucXVldWUoc3RydWN0IGJ1Zl9yaW5nICptciwgdm9pZCAqbSwgY2hh
ciAqZmlsZSwgaW50IGxpbmUpCi17Ci0JCi0JdWludDMyX3QgcHJvZCwgY29ucywgbWFzazsKLQlp
bnQgZXJyOwotCQotCW1hc2sgPSBtci0+YnJfc2l6ZSAtIDE7Ci0JcHJvZCA9IG1yLT5icl9wcm9k
OwotCW1iKCk7Ci0JY29ucyA9IG1yLT5icl9jb25zOwotCV9fYnVmX3Jpbmdfc2NhbihtciwgbSwg
ZmlsZSwgbGluZSk7Ci0JaWYgKCgocHJvZCArIDEpICYgbWFzaykgIT0gY29ucykgewotCQlLQVNT
RVJUKG1yLT5icl9yaW5nW3Byb2RdID09IE5VTEwsICgib3ZlcndyaXRpbmcgZW50cnkiKSk7Ci0J
CW1yLT5icl9yaW5nW3Byb2RdID0gbTsKLQkJbWIoKTsKLQkJbXItPmJyX3Byb2QgPSAocHJvZCAr
IDEpICYgbWFzazsKLQkJZXJyID0gMDsKLQl9IGVsc2UKLQkJZXJyID0gRU5PQlVGUzsKLQotCXJl
dHVybiAoZXJyKTsKLX0KLQotc3RhdGljIF9faW5saW5lIGludAotYnVmX3JpbmdfZW5xdWV1ZV8o
c3RydWN0IGJ1Zl9yaW5nICptciwgdm9pZCAqbSwgY2hhciAqZmlsZSwgaW50IGxpbmUpCi17Ci0J
aW50IGVycjsKLQkKLQltdHhfbG9jaygmbXItPmJyX2xvY2spOwotCWVyciA9IF9fYnVmX3Jpbmdf
ZW5xdWV1ZShtciwgbSwgZmlsZSwgbGluZSk7Ci0JbXR4X3VubG9jaygmbXItPmJyX2xvY2spOwot
Ci0JcmV0dXJuIChlcnIpOwotfQotCi0jZGVmaW5lIGJ1Zl9yaW5nX2VucXVldWUobXIsIG0pIGJ1
Zl9yaW5nX2VucXVldWVfKChtciksIChtKSwgX19GSUxFX18sIF9fTElORV9fKQotCi0KLXN0YXRp
YyBfX2lubGluZSB2b2lkICoKLWJ1Zl9yaW5nX3BlZWsoc3RydWN0IGJ1Zl9yaW5nICptcikKLXsK
LQlpbnQgcHJvZCwgY29ucywgbWFzazsKLQljYWRkcl90ICpyaW5nLCBtOwotCQotCXJpbmcgPSAo
Y2FkZHJfdCAqKW1yLT5icl9yaW5nOwotCW1hc2sgPSBtci0+YnJfc2l6ZSAtIDE7Ci0JY29ucyA9
IG1yLT5icl9jb25zOwotCXByb2QgPSBtci0+YnJfcHJvZDsKLQltID0gTlVMTDsKLQlpZiAoY29u
cyAhPSBwcm9kKQotCQltID0gcmluZ1tjb25zXTsKLQotCXJldHVybiAobSk7Ci19Ci0KICNkZWZp
bmUgREJHX1JYICAgICAgICAgICgxIDw8IDApCiBzdGF0aWMgY29uc3QgaW50IGRlYnVnX2ZsYWdz
ID0gREJHX1JYOwogCmRpZmYgLS1naXQgYS9zeXMvZGV2L2N4Z2IvY3hnYl9zZ2UuYyBiL3N5cy9k
ZXYvY3hnYi9jeGdiX3NnZS5jCmluZGV4IDI2MjMzZDkuLjFhMDBkNDIgMTAwNjQ0Ci0tLSBhL3N5
cy9kZXYvY3hnYi9jeGdiX3NnZS5jCisrKyBiL3N5cy9kZXYvY3hnYi9jeGdiX3NnZS5jCkBAIC0x
NzE2LDEwICsxNzE2LDggQEAgdDNfZnJlZV9xc2V0KGFkYXB0ZXJfdCAqc2MsIHN0cnVjdCBzZ2Vf
cXNldCAqcSkKIAl0M19mcmVlX3R4X2Rlc2NfYWxsKCZxLT50eHFbVFhRX0VUSF0pOwogCQogCWZv
ciAoaSA9IDA7IGkgPCBTR0VfVFhRX1BFUl9TRVQ7IGkrKykgCi0JCWlmIChxLT50eHFbaV0udHhx
X21yLmJyX3JpbmcgIT0gTlVMTCkgewotCQkJZnJlZShxLT50eHFbaV0udHhxX21yLmJyX3Jpbmcs
IE1fREVWQlVGKTsKLQkJCW10eF9kZXN0cm95KCZxLT50eHFbaV0udHhxX21yLmJyX2xvY2spOwot
CQl9CisJCWlmIChxLT50eHFbaV0udHhxX21yICE9IE5VTEwpIAorCQkJYnVmX3JpbmdfZnJlZShx
LT50eHFbaV0udHhxX21yLCBNX0RFVkJVRik7CiAJZm9yIChpID0gMDsgaSA8IFNHRV9SWFFfUEVS
X1NFVDsgKytpKSB7CiAJCWlmIChxLT5mbFtpXS5kZXNjKSB7CiAJCQltdHhfbG9ja19zcGluKCZz
Yy0+c2dlLnJlZ19sb2NrKTsKQEAgLTE4NzQsNyArMTg3Miw2IEBAIHQzX2ZyZWVfdHhfZGVzYyhz
dHJ1Y3Qgc2dlX3R4cSAqcSwgaW50IHJlY2xhaW1hYmxlKQogCQkJCXR4c2QtPmZsYWdzICY9IH5U
WF9TV19ERVNDX01BUFBFRDsKIAkJCX0KIAkJCW1fZnJlZW1faW92ZWMoJnR4c2QtPm1pKTsJCi0J
CQlidWZfcmluZ19zY2FuKCZxLT50eHFfbXIsIHR4c2QtPm1pLm1pX2Jhc2UsIF9fRklMRV9fLCBf
X0xJTkVfXyk7CiAJCQl0eHNkLT5taS5taV9iYXNlID0gTlVMTDsKICNpZiBkZWZpbmVkKERJQUdO
T1NUSUMpICYmIDAKIAkJCWlmIChtX2dldF9wcmlvcml0eSh0eHNkLT5tWzBdKSAhPSBjaWR4KSAK
QEAgLTIyNzIsMTQgKzIyNjksMTIgQEAgdDNfc2dlX2FsbG9jX3FzZXQoYWRhcHRlcl90ICpzYywg
dV9pbnQgaWQsIGludCBucG9ydHMsIGludCBpcnFfdmVjX2lkeCwKIAlpbnQgaSwgaGVhZGVyX3Np
emUsIHJldCA9IDA7CiAKIAlmb3IgKGkgPSAwOyBpIDwgU0dFX1RYUV9QRVJfU0VUOyBpKyspIHsK
LQkJaWYgKChxLT50eHFbaV0udHhxX21yLmJyX3JpbmcgPSBtYWxsb2MoY3hnYl90eHFfYnVmX3Jp
bmdfc2l6ZSpzaXplb2Yoc3RydWN0IG1idWYgKiksCi0JCQkgICAgTV9ERVZCVUYsIE1fV0FJVE9L
fE1fWkVSTykpID09IE5VTEwpIHsKKwkJCisJCWlmICgocS0+dHhxW2ldLnR4cV9tciA9IGJ1Zl9y
aW5nX2FsbG9jKGN4Z2JfdHhxX2J1Zl9yaW5nX3NpemUsCisJCQkgICAgTV9ERVZCVUYsIE1fV0FJ
VE9LLCAmcS0+dHhxW2ldLmxvY2spKSA9PSBOVUxMKSB7CiAJCQlkZXZpY2VfcHJpbnRmKHNjLT5k
ZXYsICJmYWlsZWQgdG8gYWxsb2NhdGUgbWJ1ZiByaW5nXG4iKTsKIAkJCWdvdG8gZXJyOwogCQl9
Ci0JCXEtPnR4cVtpXS50eHFfbXIuYnJfcHJvZCA9IHEtPnR4cVtpXS50eHFfbXIuYnJfY29ucyA9
IDA7Ci0JCXEtPnR4cVtpXS50eHFfbXIuYnJfc2l6ZSA9IGN4Z2JfdHhxX2J1Zl9yaW5nX3NpemU7
Ci0JCW10eF9pbml0KCZxLT50eHFbaV0udHhxX21yLmJyX2xvY2ssICJ0eHEgbWJ1ZiByaW5nIiwg
TlVMTCwgTVRYX0RFRik7CiAJfQogCiAJaW5pdF9xc2V0X2NudHh0KHEsIGlkKTsKQEAgLTM0OTYs
MTIgKzM0OTEsMTQgQEAgdDNfYWRkX2NvbmZpZ3VyZWRfc3lzY3RscyhhZGFwdGVyX3QgKnNjKQog
CQkJU1lTQ1RMX0FERF9JTlQoY3R4LCB0eHFwb2lkbGlzdCwgT0lEX0FVVE8sICJzZW5kcWxlbiIs
CiAJCQkgICAgQ1RMRkxBR19SRCwgJnFzLT50eHFbVFhRX0VUSF0uc2VuZHEucWxlbiwKIAkJCSAg
ICAwLCAiI3R1bm5lbGVkIHBhY2tldHMgd2FpdGluZyB0byBiZSBzZW50Iik7CisjaWYgMAkJCQog
CQkJU1lTQ1RMX0FERF9VSU5UKGN0eCwgdHhxcG9pZGxpc3QsIE9JRF9BVVRPLCAicXVldWVfcGlk
eCIsCiAJCQkgICAgQ1RMRkxBR19SRCwgKHVpbnQzMl90ICopKHVpbnRwdHJfdCkmcXMtPnR4cVtU
WFFfRVRIXS50eHFfbXIuYnJfcHJvZCwKIAkJCSAgICAwLCAiI3R1bm5lbGVkIHBhY2tldHMgcXVl
dWUgcHJvZHVjZXIgaW5kZXgiKTsKIAkJCVNZU0NUTF9BRERfVUlOVChjdHgsIHR4cXBvaWRsaXN0
LCBPSURfQVVUTywgInF1ZXVlX2NpZHgiLAogCQkJICAgIENUTEZMQUdfUkQsICh1aW50MzJfdCAq
KSh1aW50cHRyX3QpJnFzLT50eHFbVFhRX0VUSF0udHhxX21yLmJyX2NvbnMsCiAJCQkgICAgMCwg
IiN0dW5uZWxlZCBwYWNrZXRzIHF1ZXVlIGNvbnN1bWVyIGluZGV4Iik7CisjZW5kaWYJCQkKIAkJ
CVNZU0NUTF9BRERfSU5UKGN0eCwgdHhxcG9pZGxpc3QsIE9JRF9BVVRPLCAicHJvY2Vzc2VkIiwK
IAkJCSAgICBDVExGTEFHX1JELCAmcXMtPnR4cVtUWFFfRVRIXS5wcm9jZXNzZWQsCiAJCQkgICAg
MCwgIiN0dW5uZWxlZCBwYWNrZXRzIHByb2Nlc3NlZCBieSB0aGUgY2FyZCIpOwpkaWZmIC0tZ2l0
IGEvc3lzL2Rldi9jeGdiL3N5cy9jeGdiX3N1cHBvcnQuYyBiL3N5cy9kZXYvY3hnYi9zeXMvY3hn
Yl9zdXBwb3J0LmMKaW5kZXggZTkxMWRmYy4uMThmNzk5ZSAxMDA2NDQKLS0tIGEvc3lzL2Rldi9j
eGdiL3N5cy9jeGdiX3N1cHBvcnQuYworKysgYi9zeXMvZGV2L2N4Z2Ivc3lzL2N4Z2Jfc3VwcG9y
dC5jCkBAIC0zMDgsMzMgKzMwOCwzIEBAIGZyZWU6CiAJCXVtYV96ZnJlZSh6b25lLCB2ZWNbaV0p
OwogfQogCQotc3RydWN0IGJ1Zl9yaW5nICoKLWJ1Zl9yaW5nX2FsbG9jKGludCBjb3VudCwgaW50
IGZsYWdzKQotewotCXN0cnVjdCBidWZfcmluZyAqYnI7Ci0KLQlLQVNTRVJUKHBvd2Vyb2YyKGNv
dW50KSwgKCJidWYgcmluZyBtdXN0IGJlIHNpemUgcG93ZXIgb2YgMiIpKTsKLQkKLQliciA9IG1h
bGxvYyhzaXplb2Yoc3RydWN0IGJ1Zl9yaW5nKSwgTV9ERVZCVUYsIGZsYWdzfE1fWkVSTyk7Ci0J
aWYgKGJyID09IE5VTEwpCi0JCXJldHVybiAoTlVMTCk7Ci0JCi0JYnItPmJyX3JpbmcgPSBtYWxs
b2Moc2l6ZW9mKGNhZGRyX3QpKmNvdW50LCBNX0RFVkJVRiwgZmxhZ3N8TV9aRVJPKTsKLQlpZiAo
YnItPmJyX3JpbmcgPT0gTlVMTCkgewotCQlmcmVlKGJyLCBNX0RFVkJVRik7Ci0JCXJldHVybiAo
TlVMTCk7Ci0JfQotCQotCW10eF9pbml0KCZici0+YnJfbG9jaywgImJ1ZiByaW5nIiwgTlVMTCwg
TVRYX0RVUE9LfE1UWF9ERUYpOwotCWJyLT5icl9zaXplID0gY291bnQ7Ci0JYnItPmJyX3Byb2Qg
PSBici0+YnJfY29ucyA9IDA7Ci0KLQlyZXR1cm4gKGJyKTsKLX0KLQotdm9pZAotYnVmX3Jpbmdf
ZnJlZShzdHJ1Y3QgYnVmX3JpbmcgKmJyKQotewotCWZyZWUoYnItPmJyX3JpbmcsIE1fREVWQlVG
KTsKLQlmcmVlKGJyLCBNX0RFVkJVRik7Ci19CmRpZmYgLS1naXQgYS9zeXMvZGV2L2N4Z2IvdWxw
L2l3X2N4Z2IvaXdfY3hnYl9yZXNvdXJjZS5jIGIvc3lzL2Rldi9jeGdiL3VscC9pd19jeGdiL2l3
X2N4Z2JfcmVzb3VyY2UuYwppbmRleCA5ZDM2MThmLi40N2Q5ZDhlIDEwMDY0NAotLS0gYS9zeXMv
ZGV2L2N4Z2IvdWxwL2l3X2N4Z2IvaXdfY3hnYl9yZXNvdXJjZS5jCisrKyBiL3N5cy9kZXYvY3hn
Yi91bHAvaXdfY3hnYi9pd19jeGdiX3Jlc291cmNlLmMKQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0
aWMgaW50IF9fY3hpb19pbml0X3Jlc291cmNlX2ZpZm8oc3RydWN0IGJ1Zl9yaW5nICoqZmlmbywK
IAl1MzIgcmFycmF5WzE2XTsKIAltdHhfaW5pdChmaWZvX2xvY2ssICJjeGlvIGZpZm8iLCBOVUxM
LCBNVFhfREVGfE1UWF9EVVBPSyk7CiAKLQkqZmlmbyA9IGJ1Zl9yaW5nX2FsbG9jKG5yLCBNX05P
V0FJVCk7CisJKmZpZm8gPSBidWZfcmluZ19hbGxvYyhuciwgTV9ERVZCVUYsIE1fTk9XQUlULCBm
aWZvX2xvY2spOwogCWlmICgqZmlmbyA9PSBOVUxMKQogCQlyZXR1cm4gKC1FTk9NRU0pOwogI2lm
IDAKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgaW50IF9fY3hpb19pbml0X3Jlc291cmNlX2Zp
Zm8oc3RydWN0IGJ1Zl9yaW5nICoqZmlmbywKIAkJCWJ1Zl9yaW5nX2VucXVldWUoKmZpZm8sICh2
b2lkICopICh1aW50cHRyX3QpaSk7CiAjaWYgMAogCWZvciAoaSA9IDA7IGkgPCBza2lwX2xvdyAr
IHNraXBfaGlnaDsgaSsrKQotCQlidWZfcmluZ19kZXF1ZXVlKCpmaWZvKTsKKwkJYnVmX3Jpbmdf
ZGVxdWV1ZV9zYygqZmlmbyk7CiAjZW5kaWYJCiAJcmV0dXJuIDA7CiB9CkBAIC0xNjEsNyArMTYx
LDggQEAgc3RhdGljIGludCBjeGlvX2luaXRfcXBpZF9maWZvKHN0cnVjdCBjeGlvX3JkZXYgKnJk
ZXZfcCkKIAogCW10eF9pbml0KCZyZGV2X3AtPnJzY3AtPnFwaWRfZmlmb19sb2NrLCAicXBpZCBm
aWZvIiwgTlVMTCwgTVRYX0RFRik7CiAKLQlyZGV2X3AtPnJzY3AtPnFwaWRfZmlmbyA9IGJ1Zl9y
aW5nX2FsbG9jKFQzX01BWF9OVU1fUVAsIE1fTk9XQUlUKTsKKwlyZGV2X3AtPnJzY3AtPnFwaWRf
ZmlmbyA9IGJ1Zl9yaW5nX2FsbG9jKFQzX01BWF9OVU1fUVAsIE1fREVWQlVGLAorCSAgICBNX05P
V0FJVCwgJnJkZXZfcC0+cnNjcC0+cXBpZF9maWZvX2xvY2spOwogCWlmIChyZGV2X3AtPnJzY3At
PnFwaWRfZmlmbyA9PSBOVUxMKQogCQlyZXR1cm4gKC1FTk9NRU0pOwogCkBAIC0xODAsNyArMTgx
LDcgQEAgaW50IGN4aW9faGFsX2luaXRfcmhkbF9yZXNvdXJjZSh1MzIgbnJfcmhkbCkKIAogdm9p
ZCBjeGlvX2hhbF9kZXN0cm95X3JoZGxfcmVzb3VyY2Uodm9pZCkKIHsKLQlidWZfcmluZ19mcmVl
KHJoZGxfZmlmbyk7CisJYnVmX3JpbmdfZnJlZShyaGRsX2ZpZm8sIE1fREVWQlVGKTsKIH0KICNl
bmRpZgogCkBAIC0yMTQsMTEgKzIxNSwxMSBAQCBpbnQgY3hpb19oYWxfaW5pdF9yZXNvdXJjZShz
dHJ1Y3QgY3hpb19yZGV2ICpyZGV2X3AsCiAJCWdvdG8gcGRpZF9lcnI7CiAJcmV0dXJuIDA7CiBw
ZGlkX2VycjoKLQlidWZfcmluZ19mcmVlKHJzY3AtPmNxaWRfZmlmbyk7CisJYnVmX3JpbmdfZnJl
ZShyc2NwLT5jcWlkX2ZpZm8sIE1fREVWQlVGKTsKIGNxaWRfZXJyOgotCWJ1Zl9yaW5nX2ZyZWUo
cnNjcC0+cXBpZF9maWZvKTsKKwlidWZfcmluZ19mcmVlKHJzY3AtPnFwaWRfZmlmbywgTV9ERVZC
VUYpOwogcXBpZF9lcnI6Ci0JYnVmX3JpbmdfZnJlZShyc2NwLT50cHRfZmlmbyk7CisJYnVmX3Jp
bmdfZnJlZShyc2NwLT50cHRfZmlmbywgTV9ERVZCVUYpOwogdHB0X2VycjoKIAlyZXR1cm4gKC1F
Tk9NRU0pOwogfQpAQCAtMjMxLDcgKzIzMiw3IEBAIHN0YXRpYyB1MzIgY3hpb19oYWxfZ2V0X3Jl
c291cmNlKHN0cnVjdCBidWZfcmluZyAqZmlmbywgc3RydWN0IG10eCAqbG9jaykKIAl1MzIgZW50
cnk7CiAJCiAJbXR4X2xvY2sobG9jayk7Ci0JZW50cnkgPSAodTMyKSh1aW50cHRyX3QpYnVmX3Jp
bmdfZGVxdWV1ZShmaWZvKTsKKwllbnRyeSA9ICh1MzIpKHVpbnRwdHJfdClidWZfcmluZ19kZXF1
ZXVlX3NjKGZpZm8pOwogCW10eF91bmxvY2sobG9jayk7CiAJcmV0dXJuIGVudHJ5OwogfQpAQCAt
Mjg4LDEwICsyODksMTAgQEAgdm9pZCBjeGlvX2hhbF9wdXRfcGRpZChzdHJ1Y3QgY3hpb19oYWxf
cmVzb3VyY2UgKnJzY3AsIHUzMiBwZGlkKQogCiB2b2lkIGN4aW9faGFsX2Rlc3Ryb3lfcmVzb3Vy
Y2Uoc3RydWN0IGN4aW9faGFsX3Jlc291cmNlICpyc2NwKQogewotCWJ1Zl9yaW5nX2ZyZWUocnNj
cC0+dHB0X2ZpZm8pOwotCWJ1Zl9yaW5nX2ZyZWUocnNjcC0+Y3FpZF9maWZvKTsKLQlidWZfcmlu
Z19mcmVlKHJzY3AtPnFwaWRfZmlmbyk7Ci0JYnVmX3JpbmdfZnJlZShyc2NwLT5wZGlkX2ZpZm8p
OworCWJ1Zl9yaW5nX2ZyZWUocnNjcC0+dHB0X2ZpZm8sIE1fREVWQlVGKTsKKwlidWZfcmluZ19m
cmVlKHJzY3AtPmNxaWRfZmlmbywgTV9ERVZCVUYpOworCWJ1Zl9yaW5nX2ZyZWUocnNjcC0+cXBp
ZF9maWZvLCBNX0RFVkJVRik7CisJYnVmX3JpbmdfZnJlZShyc2NwLT5wZGlkX2ZpZm8sIE1fREVW
QlVGKTsKIAlmcmVlKHJzY3AsIE1fREVWQlVGKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3lzL2Rldi9t
eGdlL2lmX214Z2VfdmFyLmggYi9zeXMvZGV2L214Z2UvaWZfbXhnZV92YXIuaAppbmRleCBlNWQx
NzZkLi5hOTFiNGQ4IDEwMDY0NAotLS0gYS9zeXMvZGV2L214Z2UvaWZfbXhnZV92YXIuaAorKysg
Yi9zeXMvZGV2L214Z2UvaWZfbXhnZV92YXIuaApAQCAtMjk4LDYgKzI5OCw4IEBAIHN0cnVjdCBt
eGdlX21lZGlhX3R5cGUKIC8qIGltcGxlbWVudCBvdXIgb3duIG1lbW9yeSBiYXJyaWVycywgc2lu
Y2UgYnVzX3NwYWNlX2JhcnJpZXIKICAgIGNhbm5vdCBoYW5kbGUgd3JpdGUtY29tYmluaW5nIHJl
Z2lvbnMgKi8KIAorI2lmIF9fRnJlZUJTRF92ZXJzaW9uIDwgODAwMDUzCisKICNpZiBkZWZpbmVk
IChfX0dOVUNfXykKICAgI2lmICNjcHUoaTM4NikgfHwgZGVmaW5lZCBfX2kzODYgfHwgZGVmaW5l
ZCBpMzg2IHx8IGRlZmluZWQgX19pMzg2X18gfHwgI2NwdSh4ODZfNjQpIHx8IGRlZmluZWQgX194
ODZfNjRfXwogICAgICNkZWZpbmUgbWIoKSAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJzZmVuY2U7
IjogOiA6Im1lbW9yeSIpCkBAIC0zMTIsNiArMzE0LDggQEAgc3RydWN0IG14Z2VfbWVkaWFfdHlw
ZQogICAjZXJyb3IgInVua25vd24gY29tcGlsZXIiCiAjZW5kaWYKIAorI2VuZGlmCisKIHN0YXRp
YyBpbmxpbmUgdm9pZAogbXhnZV9waW9fY29weSh2b2xhdGlsZSB2b2lkICp0b192LCB2b2lkICpm
cm9tX3YsIHNpemVfdCBzaXplKQogewpkaWZmIC0tZ2l0IGEvc3lzL2Rldi9ueGdlL3hnZS1vc2Rl
cC5oIGIvc3lzL2Rldi9ueGdlL3hnZS1vc2RlcC5oCmluZGV4IDE1YWRmZTcuLmU4ZjRhYmEgMTAw
NjQ0Ci0tLSBhL3N5cy9kZXYvbnhnZS94Z2Utb3NkZXAuaAorKysgYi9zeXMvZGV2L254Z2UveGdl
LW9zZGVwLmgKQEAgLTI0Miw4ICsyNDIsMTIgQEAgdHlwZWRlZiB4Z2VfcGNpX2luZm9fdCAgICAg
ICAgICAgICAqcGNpX2NmZ19oOwogCW10eF91bmxvY2tfZmxhZ3MobG9ja3AsIGZsYWdzKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogfQogCisjaWYgX19GcmVlQlNE
X3ZlcnNpb24gPiA4MDAwNTMKIC8qIFdyaXRlIG1lbW9yeSBiYXJyaWVyICovCisjZGVmaW5lIHhn
ZV9vc193bWIoKQkJd21iKCkJCisjZWxzZQogI2RlZmluZSB4Z2Vfb3Nfd21iKCkKKyNlbmRpZgog
CiAvKiBEZWxheSAoaW4gbWljcm8gc2Vjb25kcykgKi8KICNkZWZpbmUgeGdlX29zX3VkZWxheSh1
cykgICAgICAgICAgICBERUxBWSh1cykKZGlmZiAtLWdpdCBhL3N5cy9pMzg2L2luY2x1ZGUvYXRv
bWljLmggYi9zeXMvaTM4Ni9pbmNsdWRlL2F0b21pYy5oCmluZGV4IDA2MjE2ZmIuLmJiZjI2NTUg
MTAwNjQ0Ci0tLSBhL3N5cy9pMzg2L2luY2x1ZGUvYXRvbWljLmgKKysrIGIvc3lzL2kzODYvaW5j
bHVkZS9hdG9taWMuaApAQCAtMzIsNiArMzIsMjEgQEAKICNlcnJvciB0aGlzIGZpbGUgbmVlZHMg
c3lzL2NkZWZzLmggYXMgYSBwcmVyZXF1aXNpdGUKICNlbmRpZgogCisKKyNpZiBkZWZpbmVkKEk2
ODZfQ1BVKQorI2RlZmluZSBtYigpCV9fYXNtX18gX192b2xhdGlsZV9fICgibWZlbmNlOyI6IDog
OiJtZW1vcnkiKQorI2RlZmluZSB3bWIoKQlfX2FzbV9fIF9fdm9sYXRpbGVfXyAoInNmZW5jZTsi
OiA6IDoibWVtb3J5IikKKyNkZWZpbmUgcm1iKCkJX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsZmVu
Y2U7IjogOiA6Im1lbW9yeSIpCisjZWxzZQorLyoKKyAqIGRvIHdlIG5lZWQgYSBzZXJpYWxpemlu
ZyBpbnN0cnVjdGlvbj8KKyAqLworI2RlZmluZSBtYigpCisjZGVmaW5lIHdtYigpCisjZGVmaW5l
IHJtYigpCisjZW5kaWYKKworCiAvKgogICogVmFyaW91cyBzaW1wbGUgb3BlcmF0aW9ucyBvbiBt
ZW1vcnksIGVhY2ggb2Ygd2hpY2ggaXMgYXRvbWljIGluIHRoZQogICogcHJlc2VuY2Ugb2YgaW50
ZXJydXB0cyBhbmQgbXVsdGlwbGUgcHJvY2Vzc29ycy4KZGlmZiAtLWdpdCBhL3N5cy9pYTY0L2lu
Y2x1ZGUvYXRvbWljLmggYi9zeXMvaWE2NC9pbmNsdWRlL2F0b21pYy5oCmluZGV4IDYzMTE5M2Yu
LmZkZmNiOWUgMTAwNjQ0Ci0tLSBhL3N5cy9pYTY0L2luY2x1ZGUvYXRvbWljLmgKKysrIGIvc3lz
L2lhNjQvaW5jbHVkZS9hdG9taWMuaApAQCAtMjksNiArMjksMTAgQEAKICNpZm5kZWYgX01BQ0hJ
TkVfQVRPTUlDX0hfCiAjZGVmaW5lCV9NQUNISU5FX0FUT01JQ19IXwogCisjZGVmaW5lCW1iKCkK
KyNkZWZpbmUJd21iKCkKKyNkZWZpbmUJcm1iKCkKKwogLyoKICAqIFZhcmlvdXMgc2ltcGxlIGFy
aXRobWV0aWMgb24gbWVtb3J5IHdoaWNoIGlzIGF0b21pYyBpbiB0aGUgcHJlc2VuY2UKICAqIG9m
IGludGVycnVwdHMgYW5kIFNNUCBzYWZlLgpkaWZmIC0tZ2l0IGEvc3lzL2tlcm4vc3Vicl9idWZy
aW5nLmMgYi9zeXMva2Vybi9zdWJyX2J1ZnJpbmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42MzkzOGVhCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL2tlcm4vc3Vicl9idWZy
aW5nLmMKQEAgLTAsMCArMSw2OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogQ29weXJp
Z2h0IChjKSAyMDA3LDIwMDggS2lwIE1hY3kga21hY3lAZnJlZWJzZC5vcmcKKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAq
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFRoZSBuYW1lIG9mIEtpcCBNYWN5
IG5vciB0aGUgbmFtZXMgb2Ygb3RoZXIKKyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
KgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CitfX0ZC
U0RJRCgiJEZyZWVCU0QkIik7CisKKworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUg
PHN5cy9zeXN0bS5oPgorI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KKyNpbmNsdWRlIDxzeXMvbWFs
bG9jLmg+CisjaW5jbHVkZSA8c3lzL2t0ci5oPgorI2luY2x1ZGUgPHN5cy9idWZfcmluZy5oPgor
CisKK3N0cnVjdCBidWZfcmluZyAqCitidWZfcmluZ19hbGxvYyhpbnQgY291bnQsIHN0cnVjdCBt
YWxsb2NfdHlwZSAqdHlwZSwgaW50IGZsYWdzLCBzdHJ1Y3QgbXR4ICpsb2NrKQoreworCXN0cnVj
dCBidWZfcmluZyAqYnI7CisKKwlLQVNTRVJUKHBvd2Vyb2YyKGNvdW50KSwgKCJidWYgcmluZyBt
dXN0IGJlIHNpemUgcG93ZXIgb2YgMiIpKTsKKwkKKwliciA9IG1hbGxvYyhzaXplb2Yoc3RydWN0
IGJ1Zl9yaW5nKSArIGNvdW50KnNpemVvZihjYWRkcl90KSwKKwkgICAgdHlwZSwgZmxhZ3N8TV9a
RVJPKTsKKwlpZiAoYnIgPT0gTlVMTCkKKwkJcmV0dXJuIChOVUxMKTsKKyNpZmRlZiBERUJVR19C
VUZSSU5HCisJYnItPmJyX2xvY2sgPSBsb2NrOworI2VuZGlmCQorCWJyLT5icl9wcm9kX3NpemUg
PSBici0+YnJfY29uc19zaXplID0gY291bnQ7CisJYnItPmJyX3Byb2RfbWFzayA9IGJyLT5icl9j
b25zX21hc2sgPSBjb3VudC0xOworCWJyLT5icl9wcm9kX2hlYWQgPSBici0+YnJfY29uc19oZWFk
ID0gMDsKKwlici0+YnJfcHJvZF90YWlsID0gYnItPmJyX2NvbnNfdGFpbCA9IDA7CisJCQorCXJl
dHVybiAoYnIpOworfQorCit2b2lkCitidWZfcmluZ19mcmVlKHN0cnVjdCBidWZfcmluZyAqYnIs
IHN0cnVjdCBtYWxsb2NfdHlwZSAqdHlwZSkKK3sKKwlmcmVlKGJyLCB0eXBlKTsKK30KZGlmZiAt
LWdpdCBhL3N5cy9uZXQvaWYuYyBiL3N5cy9uZXQvaWYuYwppbmRleCA3N2Q0ZWMzLi4zNThkOGYy
IDEwMDY0NAotLS0gYS9zeXMvbmV0L2lmLmMKKysrIGIvc3lzL25ldC9pZi5jCkBAIC0xMTksMTAg
KzExOSwxMCBAQCBzdGF0aWMgdm9pZAlpZl9mcmVlbXVsdGkoc3RydWN0IGlmbXVsdGlhZGRyICop
Owogc3RhdGljIHZvaWQJaWZfZ3Jvdyh2b2lkKTsKIHN0YXRpYyB2b2lkCWlmX2luaXQodm9pZCAq
KTsKIHN0YXRpYyB2b2lkCWlmX2NoZWNrKHZvaWQgKik7Ci1zdGF0aWMgdm9pZAlpZl9xZmx1c2go
c3RydWN0IGlmYWx0cSAqKTsKIHN0YXRpYyB2b2lkCWlmX3JvdXRlKHN0cnVjdCBpZm5ldCAqLCBp
bnQgZmxhZywgaW50IGZhbSk7CiBzdGF0aWMgaW50CWlmX3NldGZsYWcoc3RydWN0IGlmbmV0ICos
IGludCwgaW50LCBpbnQgKiwgaW50KTsKIHN0YXRpYyB2b2lkCWlmX3Nsb3d0aW1vKHZvaWQgKik7
CitzdGF0aWMgaW50CWlmX3RyYW5zbWl0KHN0cnVjdCBpZm5ldCAqaWZwLCBzdHJ1Y3QgbWJ1ZiAq
bSk7CiBzdGF0aWMgdm9pZAlpZl91bnJvdXRlKHN0cnVjdCBpZm5ldCAqLCBpbnQgZmxhZywgaW50
IGZhbSk7CiBzdGF0aWMgdm9pZAlsaW5rX3J0cmVxdWVzdChpbnQsIHN0cnVjdCBydGVudHJ5ICos
IHN0cnVjdCBydF9hZGRyaW5mbyAqKTsKIHN0YXRpYyBpbnQJaWZfcnRkZWwoc3RydWN0IHJhZGl4
X25vZGUgKiwgdm9pZCAqKTsKQEAgLTUwNyw2ICs1MDcsMjggQEAgaWZfZnJlZV90eXBlKHN0cnVj
dCBpZm5ldCAqaWZwLCB1X2NoYXIgdHlwZSkKIAlmcmVlKGlmcCwgTV9JRk5FVCk7CiB9OwogCit2
b2lkCitpZnFfYXR0YWNoKHN0cnVjdCBpZmFsdHEgKmlmcSwgc3RydWN0IGlmbmV0ICppZnApCit7
CisJCisJbXR4X2luaXQoJmlmcS0+aWZxX210eCwgaWZwLT5pZl94bmFtZSwgImlmIHNlbmQgcXVl
dWUiLCBNVFhfREVGKTsKKworCWlmIChpZnEtPmlmcV9tYXhsZW4gPT0gMCkgCisJCWlmcS0+aWZx
X21heGxlbiA9IGlmcW1heGxlbjsKKworCWlmcS0+YWx0cV90eXBlID0gMDsKKwlpZnEtPmFsdHFf
ZGlzYyA9IE5VTEw7CisJaWZxLT5hbHRxX2ZsYWdzICY9IEFMVFFGX0NBTlRDSEFOR0U7CisJaWZx
LT5hbHRxX3RiciAgPSBOVUxMOworCWlmcS0+YWx0cV9pZnAgID0gaWZwOworfQorCit2b2lkCitp
ZnFfZGV0YWNoKHN0cnVjdCBpZmFsdHEgKmlmcSkKK3sKKwltdHhfZGVzdHJveSgmaWZxLT5pZnFf
bXR4KTsKK30KKwogLyoKICAqIFBlcmZvcm0gZ2VuZXJpYyBpbnRlcmZhY2UgaW5pdGFsaXphdGlv
biB0YXNrcyBhbmQgYXR0YWNoIHRoZSBpbnRlcmZhY2UKICAqIHRvIHRoZSBsaXN0IG9mICJhY3Rp
dmUiIGludGVyZmFjZXMuCkBAIC01NDcsNyArNTY5LDE1IEBAIGlmX2F0dGFjaChzdHJ1Y3QgaWZu
ZXQgKmlmcCkKIAlnZXRtaWNyb3RpbWUoJmlmcC0+aWZfbGFzdGNoYW5nZSk7CiAJaWZwLT5pZl9k
YXRhLmlmaV9lcG9jaCA9IHRpbWVfdXB0aW1lOwogCWlmcC0+aWZfZGF0YS5pZmlfZGF0YWxlbiA9
IHNpemVvZihzdHJ1Y3QgaWZfZGF0YSk7CisJS0FTU0VSVCgoaWZwLT5pZl90cmFuc21pdCA9PSBO
VUxMICYmIGlmcC0+aWZfcWZsdXNoID09IE5VTEwpIHx8CisJICAgIChpZnAtPmlmX3RyYW5zbWl0
ICE9IE5VTEwgJiYgaWZwLT5pZl9xZmx1c2ggIT0gTlVMTCksCisJICAgICgidHJhbnNtaXQgYW5k
IHFmbHVzaCBtdXN0IGJvdGggZWl0aGVyIGJlIHNldCBvciBib3RoIGJlIE5VTEwiKSk7CiAKKwlp
ZiAoaWZwLT5pZl90cmFuc21pdCA9PSBOVUxMKSB7CisJCWlmcC0+aWZfdHJhbnNtaXQgPSBpZl90
cmFuc21pdDsKKwkJaWZwLT5pZl9xZmx1c2ggPSBpZl9xZmx1c2g7CisJfQorCQogI2lmZGVmIE1B
QwogCW1hY19pbml0X2lmbmV0KGlmcCk7CiAJbWFjX2NyZWF0ZV9pZm5ldChpZnApOwpAQCAtNTU5
LDcgKzU4OSw3IEBAIGlmX2F0dGFjaChzdHJ1Y3QgaWZuZXQgKmlmcCkKIAltYWtlX2Rldl9hbGlh
cyhpZmRldl9ieWluZGV4KGlmcC0+aWZfaW5kZXgpLCAiJXMlZCIsCiAJICAgIG5ldF9jZGV2c3cu
ZF9uYW1lLCBpZnAtPmlmX2luZGV4KTsKIAotCW10eF9pbml0KCZpZnAtPmlmX3NuZC5pZnFfbXR4
LCBpZnAtPmlmX3huYW1lLCAiaWYgc2VuZCBxdWV1ZSIsIE1UWF9ERUYpOworCWlmcV9hdHRhY2go
JmlmcC0+aWZfc25kLCBpZnApOwogCiAJLyoKIAkgKiBjcmVhdGUgYSBMaW5rIExldmVsIG5hbWUg
Zm9yIHRoaXMgZGV2aWNlCkBAIC01OTYsMTEgKzYyNiwxNSBAQCBpZl9hdHRhY2goc3RydWN0IGlm
bmV0ICppZnApCiAJaWZhLT5pZmFfcmVmY250ID0gMTsKIAlUQUlMUV9JTlNFUlRfSEVBRCgmaWZw
LT5pZl9hZGRyaGVhZCwgaWZhLCBpZmFfbGluayk7CiAJaWZwLT5pZl9icm9hZGNhc3RhZGRyID0g
TlVMTDsgLyogcmVsaWFibHkgY3Jhc2ggaWYgdXNlZCB1bmluaXRpYWxpemVkICovCis8PDw8PDw8
IEhFQUQKIAlpZnAtPmlmX3NuZC5hbHRxX3R5cGUgPSAwOwogCWlmcC0+aWZfc25kLmFsdHFfZGlz
YyA9IE5VTEw7CiAJaWZwLT5pZl9zbmQuYWx0cV9mbGFncyAmPSBBTFRRRl9DQU5UQ0hBTkdFOwog
CWlmcC0+aWZfc25kLmFsdHFfdGJyICA9IE5VTEw7CiAJaWZwLT5pZl9zbmQuYWx0cV9pZnAgID0g
aWZwOworPT09PT09PQorCis+Pj4+Pj4+IDFiZTg3ZjAuLi4gLSBidW1wIF9fRnJlZUJTRCB2ZXJz
aW9uIHRvIHJlZmxlY3QgYWRkZWQgYnVmX3JpbmcsIG1lbW9yeSBiYXJyaWVycywKIAogCUlGTkVU
X1dMT0NLKCk7CiAJVEFJTFFfSU5TRVJUX1RBSUwoJmlmbmV0LCBpZnAsIGlmX2xpbmspOwpAQCAt
ODQ5LDcgKzg4Myw3IEBAIGlmX2RldGFjaChzdHJ1Y3QgaWZuZXQgKmlmcCkKIAlLTk9URV9VTkxP
Q0tFRCgmaWZwLT5pZl9rbGlzdCwgTk9URV9FWElUKTsKIAlrbmxpc3RfY2xlYXIoJmlmcC0+aWZf
a2xpc3QsIDApOwogCWtubGlzdF9kZXN0cm95KCZpZnAtPmlmX2tsaXN0KTsKLQltdHhfZGVzdHJv
eSgmaWZwLT5pZl9zbmQuaWZxX210eCk7CisJaWZxX2RldGFjaCgmaWZwLT5pZl9zbmQpOwogCUlG
X0FGREFUQV9ERVNUUk9ZKGlmcCk7CiAJc3BseChzKTsKIH0KQEAgLTE0NDAsNyArMTQ3NCw4IEBA
IGlmX3Vucm91dGUoc3RydWN0IGlmbmV0ICppZnAsIGludCBmbGFnLCBpbnQgZmFtKQogCVRBSUxR
X0ZPUkVBQ0goaWZhLCAmaWZwLT5pZl9hZGRyaGVhZCwgaWZhX2xpbmspCiAJCWlmIChmYW0gPT0g
UEZfVU5TUEVDIHx8IChmYW0gPT0gaWZhLT5pZmFfYWRkci0+c2FfZmFtaWx5KSkKIAkJCXBmY3Rs
aW5wdXQoUFJDX0lGRE9XTiwgaWZhLT5pZmFfYWRkcik7Ci0JaWZfcWZsdXNoKCZpZnAtPmlmX3Nu
ZCk7CisJaWZwLT5pZl9xZmx1c2goaWZwKTsKKwogI2lmZGVmIERFVl9DQVJQCiAJaWYgKGlmcC0+
aWZfY2FycCkKIAkJY2FycF9jYXJwZGV2X3N0YXRlKGlmcC0+aWZfY2FycCk7CkBAIC0xNTY3LDEx
ICsxNjAyLDEzIEBAIGlmX3VwKHN0cnVjdCBpZm5ldCAqaWZwKQogLyoKICAqIEZsdXNoIGFuIGlu
dGVyZmFjZSBxdWV1ZS4KICAqLwotc3RhdGljIHZvaWQKLWlmX3FmbHVzaChzdHJ1Y3QgaWZhbHRx
ICppZnEpCit2b2lkCitpZl9xZmx1c2goc3RydWN0IGlmbmV0ICppZnApCiB7CiAJc3RydWN0IG1i
dWYgKm0sICpuOwotCisJc3RydWN0IGlmYWx0cSAqaWZxOworCQorCWlmcSA9ICZpZnAtPmlmX3Nu
ZDsKIAlJRlFfTE9DSyhpZnEpOwogI2lmZGVmIEFMVFEKIAlpZiAoQUxUUV9JU19FTkFCTEVEKGlm
cSkpCkBAIC0yODYyLDYgKzI4OTksMTkgQEAgaWZfc3RhcnRfZGVmZXJyZWQodm9pZCAqY29udGV4
dCwgaW50IHBlbmRpbmcpCiAJKGlmcC0+aWZfc3RhcnQpKGlmcCk7CiB9CiAKKy8qCisgKiBCYWNr
d2FyZHMgY29tcGF0aWJpbGl0eSBpbnRlcmZhY2UgZm9yIGRyaXZlcnMgCisgKiB0aGF0IGhhdmUg
bm90IGltcGxlbWVudGVkIGl0CisgKi8KK3N0YXRpYyBpbnQKK2lmX3RyYW5zbWl0KHN0cnVjdCBp
Zm5ldCAqaWZwLCBzdHJ1Y3QgbWJ1ZiAqbSkKK3sKKwlpbnQgZXJyb3I7CisKKwlJRlFfSEFORE9G
RihpZnAsIG0sIGVycm9yKTsKKwlyZXR1cm4gKGVycm9yKTsKK30KKwogaW50CiBpZl9oYW5kb2Zm
KHN0cnVjdCBpZnF1ZXVlICppZnEsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3QgaWZuZXQgKmlmcCwg
aW50IGFkanVzdCkKIHsKZGlmZiAtLWdpdCBhL3N5cy9uZXQvaWZfZXRoZXJzdWJyLmMgYi9zeXMv
bmV0L2lmX2V0aGVyc3Vici5jCmluZGV4IGZhNDNhZTAuLjI0YWNhYzggMTAwNjQ0Ci0tLSBhL3N5
cy9uZXQvaWZfZXRoZXJzdWJyLmMKKysrIGIvc3lzL25ldC9pZl9ldGhlcnN1YnIuYwpAQCAtMzgz
LDcgKzM4Myw2IEBAIGJhZDoJCQlpZiAobSAhPSBOVUxMKQogaW50CiBldGhlcl9vdXRwdXRfZnJh
bWUoc3RydWN0IGlmbmV0ICppZnAsIHN0cnVjdCBtYnVmICptKQogewotCWludCBlcnJvcjsKICNp
ZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5FVDYpCiAJc3RydWN0IGlwX2Z3ICpydWxlID0g
aXBfZG5fY2xhaW1fcnVsZShtKTsKIApAQCAtNDAyLDggKzQwMSw3IEBAIGV0aGVyX291dHB1dF9m
cmFtZShzdHJ1Y3QgaWZuZXQgKmlmcCwgc3RydWN0IG1idWYgKm0pCiAJICogUXVldWUgbWVzc2Fn
ZSBvbiBpbnRlcmZhY2UsIHVwZGF0ZSBvdXRwdXQgc3RhdGlzdGljcyBpZgogCSAqIHN1Y2Nlc3Nm
dWwsIGFuZCBzdGFydCBvdXRwdXQgaWYgaW50ZXJmYWNlIG5vdCB5ZXQgYWN0aXZlLgogCSAqLwot
CUlGUV9IQU5ET0ZGKGlmcCwgbSwgZXJyb3IpOwotCXJldHVybiAoZXJyb3IpOworCXJldHVybiAo
KGlmcC0+aWZfdHJhbnNtaXQpKGlmcCwgbSkpOwogfQogCiAjaWYgZGVmaW5lZChJTkVUKSB8fCBk
ZWZpbmVkKElORVQ2KQpkaWZmIC0tZ2l0IGEvc3lzL25ldC9pZl9mZGRpc3Vici5jIGIvc3lzL25l
dC9pZl9mZGRpc3Vici5jCmluZGV4IGEyZmQwMGIuLjYxZjhmNTYgMTAwNjQ0Ci0tLSBhL3N5cy9u
ZXQvaWZfZmRkaXN1YnIuYworKysgYi9zeXMvbmV0L2lmX2ZkZGlzdWJyLmMKQEAgLTMzNiw3ICsz
MzYsNyBAQCBmZGRpX291dHB1dChpZnAsIG0sIGRzdCwgcnQwKQogCQl9CiAJfQogCi0JSUZRX0hB
TkRPRkYoaWZwLCBtLCBlcnJvcik7CisJZXJyb3IgPSAoaWZwLT5pZl90cmFuc21pdCkoaWZwLCBt
KTsKIAlpZiAoZXJyb3IpCiAJCWlmcC0+aWZfb2Vycm9ycysrOwogCmRpZmYgLS1naXQgYS9zeXMv
bmV0L2lmX2Z3c3Vici5jIGIvc3lzL25ldC9pZl9md3N1YnIuYwppbmRleCBiMWM2OGQyLi5kNTNi
MzE4IDEwMDY0NAotLS0gYS9zeXMvbmV0L2lmX2Z3c3Vici5jCisrKyBiL3N5cy9uZXQvaWZfZndz
dWJyLmMKQEAgLTI0OSw3ICsyNDksNyBAQCBmaXJld2lyZV9vdXRwdXQoc3RydWN0IGlmbmV0ICpp
ZnAsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwKIAkJICovCiAJCWVuYy0+
dWxbMF0gPSBodG9ubChlbmMtPnVsWzBdKTsKIAotCQlJRlFfSEFORE9GRihpZnAsIG0sIGVycm9y
KTsKKwkJZXJyb3IgPSAoaWZwLT5pZl90cmFuc21pdCkoaWZwLCBtKTsKIAkJcmV0dXJuIChlcnJv
cik7CiAJfSBlbHNlIHsKIAkJLyoKQEAgLTMwOSw3ICszMDksNyBAQCBmaXJld2lyZV9vdXRwdXQo
c3RydWN0IGlmbmV0ICppZnAsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3Qgc29ja2FkZHIgKmRzdCwK
IAkJCWVuYy0+dWxbMF0gPSBodG9ubChlbmMtPnVsWzBdKTsKIAkJCWVuYy0+dWxbMV0gPSBodG9u
bChlbmMtPnVsWzFdKTsKIAotCQkJSUZRX0hBTkRPRkYoaWZwLCBtLCBlcnJvcik7CisJCQllcnJv
ciA9IChpZnAtPmlmX3RyYW5zbWl0KShpZnAsIG0pOwogCQkJaWYgKGVycm9yKSB7CiAJCQkJaWYg
KG10YWlsKQogCQkJCQltX2ZyZWVtKG10YWlsKTsKZGlmZiAtLWdpdCBhL3N5cy9uZXQvaWZfbGFn
Zy5jIGIvc3lzL25ldC9pZl9sYWdnLmMKaW5kZXggNDJjYTdjNi4uYmUwY2YwNSAxMDA2NDQKLS0t
IGEvc3lzL25ldC9pZl9sYWdnLmMKKysrIGIvc3lzL25ldC9pZl9sYWdnLmMKQEAgLTEzNzQsMTIg
KzEzNzQsOCBAQCBvdXQ6CiBpbnQKIGxhZ2dfZW5xdWV1ZShzdHJ1Y3QgaWZuZXQgKmlmcCwgc3Ry
dWN0IG1idWYgKm0pCiB7Ci0JaW50IGVycm9yID0gMDsKIAotCUlGUV9IQU5ET0ZGKGlmcCwgbSwg
ZXJyb3IpOwotCWlmIChlcnJvcikKLQkJaWZwLT5pZl9vZXJyb3JzKys7Ci0JcmV0dXJuIChlcnJv
cik7CisJcmV0dXJuIChpZnAtPmlmX3RyYW5zbWl0KShpZnAsIG0pOwogfQogCiAvKgpkaWZmIC0t
Z2l0IGEvc3lzL25ldC9pZl90dW4uYyBiL3N5cy9uZXQvaWZfdHVuLmMKaW5kZXggMDg1MmFkNS4u
ODI3MjNmMSAxMDA2NDQKLS0tIGEvc3lzL25ldC9pZl90dW4uYworKysgYi9zeXMvbmV0L2lmX3R1
bi5jCkBAIC02NDcsNyArNjQ3LDcgQEAgdHVub3V0cHV0KAogCQl9CiAJfQogCi0JSUZRX0hBTkRP
RkYoaWZwLCBtMCwgZXJyb3IpOworCWVycm9yID0gKGlmcC0+aWZfdHJhbnNtaXQpKGlmcCwgbTAp
OwogCWlmIChlcnJvcikgewogCQlpZnAtPmlmX2NvbGxpc2lvbnMrKzsKIAkJcmV0dXJuIChFTk9C
VUZTKTsKZGlmZiAtLWdpdCBhL3N5cy9uZXQvaWZfdmFyLmggYi9zeXMvbmV0L2lmX3Zhci5oCmlu
ZGV4IDkyYzhlODAuLmQ0ZjM4MjMgMTAwNjQ0Ci0tLSBhL3N5cy9uZXQvaWZfdmFyLmgKKysrIGIv
c3lzL25ldC9pZl92YXIuaApAQCAtNzcsNiArNzcsNyBAQCBzdHJ1Y3QgIGlmdmxhbnRydW5rOwog
I2lmZGVmIF9LRVJORUwKICNpbmNsdWRlIDxzeXMvbWJ1Zi5oPgogI2luY2x1ZGUgPHN5cy9ldmVu
dGhhbmRsZXIuaD4KKyNpbmNsdWRlIDxzeXMvYnVmX3JpbmcuaD4KICNlbmRpZiAvKiBfS0VSTkVM
ICovCiAjaW5jbHVkZSA8c3lzL2xvY2suaD4JCS8qIFhYWCAqLwogI2luY2x1ZGUgPHN5cy9tdXRl
eC5oPgkJLyogWFhYICovCkBAIC0xODYsNyArMTg3LDExIEBAIHN0cnVjdCBpZm5ldCB7CiAJCQkJ
CS8qIHByb3RlY3RlZCBieSBpZl9hZGRyX210eCAqLwogCXZvaWQJKmlmX3BmX2tpZjsKIAl2b2lk
CSppZl9sYWdnOwkJLyogbGFnZyBnbHVlICovCi0Jdm9pZAkqaWZfcHNwYXJlWzEwXTsJCS8qIG11
bHRpcS9UT0UgMzsgdmltYWdlIDM7IGdlbmVyYWwgdXNlIDQgKi8KKwl2b2lkCSppZl9wc3BhcmVb
OF07CQkvKiBtdWx0aXEvVE9FIDM7IHZpbWFnZSAzOyBnZW5lcmFsIHVzZSA0ICovCisJdm9pZAko
KmlmX3FmbHVzaCkJLyogZmx1c2ggYW55IHF1ZXVlcyAqLworCQkoc3RydWN0IGlmbmV0ICopOwor
CWludAkoKmlmX3RyYW5zbWl0KQkvKiBpbml0aWF0ZSBvdXRwdXQgcm91dGluZSAqLworCQkoc3Ry
dWN0IGlmbmV0ICosIHN0cnVjdCBtYnVmICopOwogCWludAlpZl9pc3BhcmVbMl07CQkvKiBnZW5l
cmFsIHVzZSAyICovCiB9OwogCkBAIC01MzYsNiArNTQxLDExOSBAQCBkbyB7CQkJCQkJCQkJXAog
CUlGUV9QVVJHRShpZnEpOwkJCQkJCQlcCiB9IHdoaWxlICgwKQogCisjaWZkZWYgX0tFUk5FTAor
c3RhdGljIF9faW5saW5lIHZvaWQKK2RyYnJfc3RhdHNfdXBkYXRlKHN0cnVjdCBpZm5ldCAqaWZw
LCBpbnQgbGVuLCBpbnQgbWZsYWdzKQoreworI2lmbmRlZiBOT19TTE9XX1NUQVRTCisJaWZwLT5p
Zl9vYnl0ZXMgKz0gbGVuOworCWlmIChtZmxhZ3MgJiBNX01DQVNUKQorCQlpZnAtPmlmX29tY2Fz
dHMrKzsKKyNlbmRpZgorfQorCitzdGF0aWMgX19pbmxpbmUgaW50CitkcmJyX2VucXVldWUoc3Ry
dWN0IGlmbmV0ICppZnAsIHN0cnVjdCBidWZfcmluZyAqYnIsIHN0cnVjdCBtYnVmICptKQorewkK
KwlpbnQgZXJyb3IgPSAwOworCWludCBsZW4gPSBtLT5tX3BrdGhkci5sZW47CisJaW50IG1mbGFn
cyA9IG0tPm1fZmxhZ3M7CisKKyNpZmRlZiBBTFRRCisJaWYgKEFMVFFfSVNfRU5BQkxFRCgmaWZw
LT5pZl9zbmQpKSB7CisJCUlGUV9FTlFVRVVFKCZpZnAtPmlmX3NuZCwgbSwgZXJyb3IpOworCQly
ZXR1cm4gKGVycm9yKTsKKwl9CisjZW5kaWYKKwlpZiAoKGVycm9yID0gYnVmX3JpbmdfZW5xdWV1
ZV9ieXRlcyhiciwgbSwgbGVuKSkgPT0gRU5PQlVGUykgeworCQlici0+YnJfZHJvcHMrKzsKKwkJ
bV9mcmVlbShtKTsKKwl9IGVsc2UKKwkJZHJicl9zdGF0c191cGRhdGUoaWZwLCBsZW4sIG1mbGFn
cyk7CisJCisJcmV0dXJuIChlcnJvcik7Cit9CisKK3N0YXRpYyBfX2lubGluZSB2b2lkCitkcmJy
X2ZsdXNoKHN0cnVjdCBpZm5ldCAqaWZwLCBzdHJ1Y3QgYnVmX3JpbmcgKmJyKQoreworCXN0cnVj
dCBtYnVmICptOworCisjaWZkZWYgQUxUUQorCWlmIChpZnAgIT0gTlVMTCAmJiBBTFRRX0lTX0VO
QUJMRUQoJmlmcC0+aWZfc25kKSkgeworCQl3aGlsZSAoIUlGUV9JU19FTVBUWSgmaWZwLT5pZl9z
bmQpKSB7CisJCQlJRlFfRFJWX0RFUVVFVUUoJmlmcC0+aWZfc25kLCBtKTsKKwkJCW1fZnJlZW0o
bSk7CisJCX0KKwl9CisjZW5kaWYJCisJd2hpbGUgKChtID0gYnVmX3JpbmdfZGVxdWV1ZV9zYyhi
cikpICE9IE5VTEwpCisJCW1fZnJlZW0obSk7Cit9CisKK3N0YXRpYyBfX2lubGluZSB2b2lkCitk
cmJyX2ZyZWUoc3RydWN0IGJ1Zl9yaW5nICpiciwgc3RydWN0IG1hbGxvY190eXBlICp0eXBlKQor
eworCisJZHJicl9mbHVzaChOVUxMLCBicik7CisJYnVmX3JpbmdfZnJlZShiciwgdHlwZSk7Cit9
CisKK3N0YXRpYyBfX2lubGluZSBzdHJ1Y3QgbWJ1ZiAqCitkcmJyX2RlcXVldWUoc3RydWN0IGlm
bmV0ICppZnAsIHN0cnVjdCBidWZfcmluZyAqYnIpCit7CisjaWZkZWYgQUxUUQorCXN0cnVjdCBt
YnVmICptOworCisJaWYgKEFMVFFfSVNfRU5BQkxFRCgmaWZwLT5pZl9zbmQpKSB7CQorCQlJRlFf
RFJWX0RFUVVFVUUoJmlmcC0+aWZfc25kLCBtKTsKKwkJcmV0dXJuIChtKTsKKwl9CisjZW5kaWYK
KwlyZXR1cm4gKGJ1Zl9yaW5nX2RlcXVldWVfc2MoYnIpKTsKK30KKworc3RhdGljIF9faW5saW5l
IHN0cnVjdCBtYnVmICoKK2RyYnJfZGVxdWV1ZV9jb25kKHN0cnVjdCBpZm5ldCAqaWZwLCBzdHJ1
Y3QgYnVmX3JpbmcgKmJyLAorICAgIGludCAoKmZ1bmMpIChzdHJ1Y3QgbWJ1ZiAqLCB2b2lkICop
LCB2b2lkICphcmcpIAoreworCXN0cnVjdCBtYnVmICptOworI2lmZGVmIEFMVFEKKwkvKgorCSAq
IFhYWCBuZWVkIHRvIGV2YWx1YXRlIC8gcmVxdWV1ZSAKKwkgKi8KKwlpZiAoQUxUUV9JU19FTkFC
TEVEKCZpZnAtPmlmX3NuZCkpIHsJCisJCUlGUV9EUlZfREVRVUVVRSgmaWZwLT5pZl9zbmQsIG0p
OworCQlyZXR1cm4gKG0pOworCX0KKyNlbmRpZgorCW0gPSBidWZfcmluZ19wZWVrKGJyKTsKKwlp
ZiAobSA9PSBOVUxMIHx8IGZ1bmMobSwgYXJnKSA9PSAwKQorCQlyZXR1cm4gKE5VTEwpOworCisJ
cmV0dXJuIChidWZfcmluZ19kZXF1ZXVlX3NjKGJyKSk7Cit9CisKK3N0YXRpYyBfX2lubGluZSBp
bnQKK2RyYnJfZW1wdHkoc3RydWN0IGlmbmV0ICppZnAsIHN0cnVjdCBidWZfcmluZyAqYnIpCit7
CisjaWZkZWYgQUxUUQorCWlmIChBTFRRX0lTX0VOQUJMRUQoJmlmcC0+aWZfc25kKSkKKwkJcmV0
dXJuIChJRlFfRFJWX0lTX0VNUFRZKCZpZnAtPmlmX3NuZCkpOworI2VuZGlmCisJcmV0dXJuIChi
dWZfcmluZ19lbXB0eShicikpOworfQorCitzdGF0aWMgX19pbmxpbmUgaW50CitkcmJyX2ludXNl
KHN0cnVjdCBpZm5ldCAqaWZwLCBzdHJ1Y3QgYnVmX3JpbmcgKmJyKQoreworI2lmZGVmIEFMVFEK
KwlpZiAoQUxUUV9JU19FTkFCTEVEKCZpZnAtPmlmX3NuZCkpCisJCXJldHVybiAoaWZwLT5pZl9z
bmQuaWZxX2xlbik7CisjZW5kaWYKKwlyZXR1cm4gKGJ1Zl9yaW5nX2NvdW50KGJyKSk7Cit9Cisj
ZW5kaWYKIC8qCiAgKiA3MiB3YXMgY2hvc2VuIGJlbG93IGJlY2F1c2UgaXQgaXMgdGhlIHNpemUg
b2YgYSBUQ1AvSVAKICAqIGhlYWRlciAoNDApICsgdGhlIG1pbmltdW0gbXNzICgzMikuCkBAIC02
NzcsNiArNzk1LDcgQEAgdm9pZAlpZl9mcmVlX3R5cGUoc3RydWN0IGlmbmV0ICosIHVfY2hhcik7
CiB2b2lkCWlmX2luaXRuYW1lKHN0cnVjdCBpZm5ldCAqLCBjb25zdCBjaGFyICosIGludCk7CiB2
b2lkCWlmX2xpbmtfc3RhdGVfY2hhbmdlKHN0cnVjdCBpZm5ldCAqLCBpbnQpOwogaW50CWlmX3By
aW50ZihzdHJ1Y3QgaWZuZXQgKiwgY29uc3QgY2hhciAqLCAuLi4pIF9fcHJpbnRmbGlrZSgyLCAz
KTsKK3ZvaWQJaWZfcWZsdXNoKHN0cnVjdCBpZm5ldCAqKTsKIGludAlpZl9zZXRsbGFkZHIoc3Ry
dWN0IGlmbmV0ICosIGNvbnN0IHVfY2hhciAqLCBpbnQpOwogdm9pZAlpZl91cChzdHJ1Y3QgaWZu
ZXQgKik7CiAvKnZvaWQJaWZpbml0KHZvaWQpOyovIC8qIGRlY2xhcmVkIGluIHN5c3RtLmggZm9y
IG1haW4oKSAqLwpAQCAtNjg0LDYgKzgwMyw5IEBAIGludAlpZmlvY3RsKHN0cnVjdCBzb2NrZXQg
KiwgdV9sb25nLCBjYWRkcl90LCBzdHJ1Y3QgdGhyZWFkICopOwogaW50CWlmcHJvbWlzYyhzdHJ1
Y3QgaWZuZXQgKiwgaW50KTsKIHN0cnVjdAlpZm5ldCAqaWZ1bml0KGNvbnN0IGNoYXIgKik7CiAK
K3ZvaWQJaWZxX2F0dGFjaChzdHJ1Y3QgaWZhbHRxICosIHN0cnVjdCBpZm5ldCAqaWZwKTsKK3Zv
aWQJaWZxX2RldGFjaChzdHJ1Y3QgaWZhbHRxICopOworCiBzdHJ1Y3QJaWZhZGRyICppZmFfaWZ3
aXRoYWRkcihzdHJ1Y3Qgc29ja2FkZHIgKik7CiBzdHJ1Y3QJaWZhZGRyICppZmFfaWZ3aXRoYnJv
YWRhZGRyKHN0cnVjdCBzb2NrYWRkciAqKTsKIHN0cnVjdAlpZmFkZHIgKmlmYV9pZndpdGhkc3Rh
ZGRyKHN0cnVjdCBzb2NrYWRkciAqKTsKZGlmZiAtLWdpdCBhL3N5cy9uZXQvaWZfdmxhbi5jIGIv
c3lzL25ldC9pZl92bGFuLmMKaW5kZXggYzE4ODFkYS4uYjFmN2RlZSAxMDA2NDQKLS0tIGEvc3lz
L25ldC9pZl92bGFuLmMKKysrIGIvc3lzL25ldC9pZl92bGFuLmMKQEAgLTg3MSw3ICs4NzEsNyBA
QCB2bGFuX3N0YXJ0KHN0cnVjdCBpZm5ldCAqaWZwKQogCQkgKiBTZW5kIGl0LCBwcmVjaXNlbHkg
YXMgZXRoZXJfb3V0cHV0KCkgd291bGQgaGF2ZS4KIAkJICogV2UgYXJlIGFscmVhZHkgcnVubmlu
ZyBhdCBzcGxpbXAuCiAJCSAqLwotCQlJRlFfSEFORE9GRihwLCBtLCBlcnJvcik7CisJCWVycm9y
ID0gKHAtPmlmX3RyYW5zbWl0KShwLCBtKTsKIAkJaWYgKCFlcnJvcikKIAkJCWlmcC0+aWZfb3Bh
Y2tldHMrKzsKIAkJZWxzZQpkaWZmIC0tZ2l0IGEvc3lzL25ldDgwMjExL2llZWU4MDIxMV9vdXRw
dXQuYyBiL3N5cy9uZXQ4MDIxMS9pZWVlODAyMTFfb3V0cHV0LmMKaW5kZXggYzgyZGU0OC4uZWU5
NjMyNSAxMDA2NDQKLS0tIGEvc3lzL25ldDgwMjExL2llZWU4MDIxMV9vdXRwdXQuYworKysgYi9z
eXMvbmV0ODAyMTEvaWVlZTgwMjExX291dHB1dC5jCkBAIC0yMzMsNyArMjMzLDIyIEBAIGllZWU4
MDIxMV9yYXdfeG1pdChzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLCBzdHJ1Y3QgbWJ1ZiAqbSwK
IAlpZl9zdGFydChpZnApOwogCWlmcC0+aWZfb3BhY2tldHMrKzsKIAorI2Vycm9yICJyMTg1MTY0
IGNoZXJyeS1waWNrIGNvbmZsaWN0ZWQgaGVyZSwgcGxlYXNlIGZpeC4iCis8PDw8PDw8IEhFQUQK
IAlyZXR1cm4gMDsKKz09PT09PT0KKwkJLyogWFhYIGRlZmVyIGlmX3N0YXJ0IGNhbGxzPyAqLwor
CQllcnJvciA9IChwYXJlbnQtPmlmX3RyYW5zbWl0KShwYXJlbnQsIG0pOworCQlpZiAoZXJyb3Ig
IT0gMCkgeworCQkJLyogTkI6IElGUV9IQU5ET0ZGIHJlY2xhaW1zIG1idWYgKi8KKwkJCWllZWU4
MDIxMV9mcmVlX25vZGUobmkpOworCQl9IGVsc2UgeworCQkJaWZwLT5pZl9vcGFja2V0cysrOwor
CQl9CisJCWljLT5pY19sYXN0ZGF0YSA9IHRpY2tzOworCX0KKyN1bmRlZiBJU19EV0RTCis+Pj4+
Pj4+IGVlZTRmMWYuLi4gY29udmVydCBjYWxscyB0byBJRlFfSEFORE9GRiB0byBpZl90cmFuc21p
dAogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3lzL25ldGdyYXBoL25nX2lmYWNlLmMgYi9zeXMvbmV0
Z3JhcGgvbmdfaWZhY2UuYwppbmRleCA1Yjc2YzI5Li42MzU4ZDg5IDEwMDY0NAotLS0gYS9zeXMv
bmV0Z3JhcGgvbmdfaWZhY2UuYworKysgYi9zeXMvbmV0Z3JhcGgvbmdfaWZhY2UuYwpAQCAtNDAx
LDcgKzQwMSw3IEBAIG5nX2lmYWNlX291dHB1dChzdHJ1Y3QgaWZuZXQgKmlmcCwgc3RydWN0IG1i
dWYgKm0sCiAJCQlyZXR1cm4gKEVOT0JVRlMpOwogCQl9CiAJCSooc2FfZmFtaWx5X3QgKiltLT5t
X2RhdGEgPSBkc3QtPnNhX2ZhbWlseTsKLQkJSUZRX0hBTkRPRkYoaWZwLCBtLCBlcnJvcik7CisJ
CWVycm9yID0gKGlmcC0+aWZfdHJhbnNtaXQpKGlmcCwgbSk7CiAJfSBlbHNlCiAJCWVycm9yID0g
bmdfaWZhY2Vfc2VuZChpZnAsIG0sIGRzdC0+c2FfZmFtaWx5KTsKIApkaWZmIC0tZ2l0IGEvc3lz
L3Bvd2VycGMvaW5jbHVkZS9hdG9taWMuaCBiL3N5cy9wb3dlcnBjL2luY2x1ZGUvYXRvbWljLmgK
aW5kZXggZDUxNWE2YS4uNGFjOWYwYyAxMDA2NDQKLS0tIGEvc3lzL3Bvd2VycGMvaW5jbHVkZS9h
dG9taWMuaAorKysgYi9zeXMvcG93ZXJwYy9pbmNsdWRlL2F0b21pYy5oCkBAIC0zOSw2ICszOSwx
MCBAQAogI2RlZmluZQlfX0FUT01JQ19CQVJSSUVSCQkJCQlcCiAgICAgX19hc20gX192b2xhdGls
ZSgic3luYyIgOiA6IDogIm1lbW9yeSIpCiAKKyNkZWZpbmUgbWIoKQlfX0FUT01JQ19CQVJSSUVS
CisjZGVmaW5lCXdtYigpCW1iKCkKKyNkZWZpbmUJcm1iKCkJbWIoKQorCiAvKgogICogYXRvbWlj
X2FkZChwLCB2KQogICogeyAqcCArPSB2OyB9CmRpZmYgLS1naXQgYS9zeXMvc3BhcmM2NC9pbmNs
dWRlL2F0b21pYy5oIGIvc3lzL3NwYXJjNjQvaW5jbHVkZS9hdG9taWMuaAppbmRleCBmZTM2Nzkx
Li5kNjYzZmJjIDEwMDY0NAotLS0gYS9zeXMvc3BhcmM2NC9pbmNsdWRlL2F0b21pYy5oCisrKyBi
L3N5cy9zcGFyYzY0L2luY2x1ZGUvYXRvbWljLmgKQEAgLTQwLDYgKzQwLDEwIEBACiAjZGVmaW5l
CV9fQVNJX0FUT01JQwlBU0lfUAogI2VuZGlmCiAKKyNkZWZpbmUgbWIoKQlfX2FzbV9fIF9fdm9s
YXRpbGVfXyAoIm1lbWJhciAjTWVtSXNzdWUiOiA6IDoibWVtb3J5IikKKyNkZWZpbmUgd21iKCkJ
bWIoKQorI2RlZmluZSBybWIoKQltYigpCisKIC8qCiAgKiBWYXJpb3VzIHNpbXBsZSBhcml0aG1l
dGljIG9uIG1lbW9yeSB3aGljaCBpcyBhdG9taWMgaW4gdGhlIHByZXNlbmNlCiAgKiBvZiBpbnRl
cnJ1cHRzIGFuZCBtdWx0aXBsZSBwcm9jZXNzb3JzLiAgU2VlIGF0b21pYyg5KSBmb3IgZGV0YWls
cy4KZGlmZiAtLWdpdCBhL3N5cy9zdW40di9pbmNsdWRlL2F0b21pYy5oIGIvc3lzL3N1bjR2L2lu
Y2x1ZGUvYXRvbWljLmgKaW5kZXggZmUzNjc5MS4uYzUwMDVmYSAxMDA2NDQKLS0tIGEvc3lzL3N1
bjR2L2luY2x1ZGUvYXRvbWljLmgKKysrIGIvc3lzL3N1bjR2L2luY2x1ZGUvYXRvbWljLmgKQEAg
LTMzLDYgKzMzLDEwIEBACiAKICNpbmNsdWRlIDxtYWNoaW5lL2NwdWZ1bmMuaD4KIAorI2RlZmlu
ZSBtYigpCV9fYXNtX18gX192b2xhdGlsZV9fICgibWVtYmFyICNNZW1Jc3N1ZSI6IDogOiJtZW1v
cnkiKQorI2RlZmluZSB3bWIoKQltYigpCisjZGVmaW5lIHJtYigpCW1iKCkKKwogLyogVXNlcmxh
bmQgbmVlZHMgZGlmZmVyZW50IEFTSSdzLiAqLwogI2lmZGVmIF9LRVJORUwKICNkZWZpbmUJX19B
U0lfQVRPTUlDCUFTSV9OCmRpZmYgLS1naXQgYS9zeXMvc3lzL2J1Zl9yaW5nLmggYi9zeXMvc3lz
L2J1Zl9yaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZhNjY3ZAot
LS0gL2Rldi9udWxsCisrKyBiL3N5cy9zeXMvYnVmX3JpbmcuaApAQCAtMCwwICsxLDI3OSBAQAor
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA3LTIwMDkgS2lwIE1h
Y3kga21hY3lAZnJlZWJzZC5vcmcKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisg
KiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICoKKyAqIDIuIFRoZSBuYW1lIG9mIEtpcCBNYWN5IG5vciB0aGUgbmFtZXMgb2Ygb3RoZXIK
KyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQor
ICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogJEZyZWVCU0QkCisgKgorICoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKi8KKworI2lmbmRlZglfU1lTX0JVRl9SSU5HX0hfCisjZGVmaW5lCV9T
WVNfQlVGX1JJTkdfSF8KKworI2luY2x1ZGUgPG1hY2hpbmUvY3B1Lmg+CisKKyNpZiBkZWZpbmVk
KElOVkFSSUFOVFMpICYmICFkZWZpbmVkKERFQlVHX0JVRlJJTkcpCisjZGVmaW5lIERFQlVHX0JV
RlJJTkcgMQorI2VuZGlmCisKKyNpZmRlZiBERUJVR19CVUZSSU5HCisjaW5jbHVkZSA8c3lzL2xv
Y2suaD4KKyNpbmNsdWRlIDxzeXMvbXV0ZXguaD4KKyNlbmRpZgorCitzdHJ1Y3QgYnVmX3Jpbmcg
eworCXZvbGF0aWxlIHVpbnQzMl90CWJyX3Byb2RfaGVhZDsKKwl2b2xhdGlsZSB1aW50MzJfdAli
cl9wcm9kX3RhaWw7CQorCWludCAgICAgICAgICAgICAgCWJyX3Byb2Rfc2l6ZTsKKwlpbnQgICAg
ICAgICAgICAgIAlicl9wcm9kX21hc2s7CisJdWludDY0X3QJCWJyX2Ryb3BzOworCXVpbnQ2NF90
CQlicl9wcm9kX2J1ZnM7CisJdWludDY0X3QJCWJyX3Byb2RfYnl0ZXM7CisJLyoKKwkgKiBQYWQg
b3V0IHRvIG5leHQgTDIgY2FjaGUgbGluZQorCSAqLworCXVpbnQ2NF90CSAgCV9wYWQwWzExXTsK
KworCXZvbGF0aWxlIHVpbnQzMl90CWJyX2NvbnNfaGVhZDsKKwl2b2xhdGlsZSB1aW50MzJfdAli
cl9jb25zX3RhaWw7CisJaW50CQkgCWJyX2NvbnNfc2l6ZTsKKwlpbnQgICAgICAgICAgICAgIAli
cl9jb25zX21hc2s7CisJCisJLyoKKwkgKiBQYWQgb3V0IHRvIG5leHQgTDIgY2FjaGUgbGluZQor
CSAqLworCXVpbnQ2NF90CSAgCV9wYWQxWzE0XTsKKyNpZmRlZiBERUJVR19CVUZSSU5HCisJc3Ry
dWN0IG10eAkJKmJyX2xvY2s7CisjZW5kaWYJCisJdm9pZAkJCSpicl9yaW5nWzBdOworfTsKKwor
LyoKKyAqIG11bHRpLXByb2R1Y2VyIHNhZmUgbG9jay1mcmVlIHJpbmcgYnVmZmVyIGVucXVldWUK
KyAqCisgKi8KK3N0YXRpYyBfX2lubGluZSBpbnQKK2J1Zl9yaW5nX2VucXVldWVfYnl0ZXMoc3Ry
dWN0IGJ1Zl9yaW5nICpiciwgdm9pZCAqYnVmLCBpbnQgbmJ5dGVzKQoreworCXVpbnQzMl90IHBy
b2RfaGVhZCwgcHJvZF9uZXh0OworCXVpbnQzMl90IGNvbnNfdGFpbDsKKwlpbnQgc3VjY2VzczsK
KyNpZmRlZiBERUJVR19CVUZSSU5HCisJaW50IGk7CisJZm9yIChpID0gYnItPmJyX2NvbnNfaGVh
ZDsgaSAhPSBici0+YnJfcHJvZF9oZWFkOworCSAgICAgaSA9ICgoaSArIDEpICYgYnItPmJyX2Nv
bnNfbWFzaykpCisJCWlmKGJyLT5icl9yaW5nW2ldID09IGJ1ZikKKwkJCXBhbmljKCJidWY9JXAg
YWxyZWFkeSBlbnF1ZXVlIGF0ICVkIHByb2Q9JWQgY29ucz0lZCIsCisJCQkgICAgYnVmLCBpLCBi
ci0+YnJfcHJvZF90YWlsLCBici0+YnJfY29uc190YWlsKTsKKyNlbmRpZgkKKwljcml0aWNhbF9l
bnRlcigpOworCWRvIHsKKwkJcHJvZF9oZWFkID0gYnItPmJyX3Byb2RfaGVhZDsKKwkJY29uc190
YWlsID0gYnItPmJyX2NvbnNfdGFpbDsKKworCQlwcm9kX25leHQgPSAocHJvZF9oZWFkICsgMSkg
JiBici0+YnJfcHJvZF9tYXNrOworCQkKKwkJaWYgKHByb2RfbmV4dCA9PSBjb25zX3RhaWwpIHsK
KwkJCWNyaXRpY2FsX2V4aXQoKTsKKwkJCXJldHVybiAoRU5PQlVGUyk7CisJCX0KKwkJCisJCXN1
Y2Nlc3MgPSBhdG9taWNfY21wc2V0X2ludCgmYnItPmJyX3Byb2RfaGVhZCwgcHJvZF9oZWFkLAor
CQkgICAgcHJvZF9uZXh0KTsKKwl9IHdoaWxlIChzdWNjZXNzID09IDApOworI2lmZGVmIERFQlVH
X0JVRlJJTkcKKwlpZiAoYnItPmJyX3JpbmdbcHJvZF9oZWFkXSAhPSBOVUxMKQorCQlwYW5pYygi
ZGFuZ2xpbmcgdmFsdWUgaW4gZW5xdWV1ZSIpOworI2VuZGlmCQorCWJyLT5icl9yaW5nW3Byb2Rf
aGVhZF0gPSBidWY7CisJd21iKCk7CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBvdGhlciBlbnF1
ZXVlcyBpbiBwcm9ncmVzcworCSAqIHRoYXQgcHJlY2VlZGVkIHVzLCB3ZSBuZWVkIHRvIHdhaXQg
Zm9yIHRoZW0KKwkgKiB0byBjb21wbGV0ZSAKKwkgKi8gICAKKwl3aGlsZSAoYnItPmJyX3Byb2Rf
dGFpbCAhPSBwcm9kX2hlYWQpCisJCWNwdV9zcGlud2FpdCgpOworCWJyLT5icl9wcm9kX2J1ZnMr
KzsKKwlici0+YnJfcHJvZF9ieXRlcyArPSBuYnl0ZXM7CisJYnItPmJyX3Byb2RfdGFpbCA9IHBy
b2RfbmV4dDsKKwljcml0aWNhbF9leGl0KCk7CisJcmV0dXJuICgwKTsKK30KKworc3RhdGljIF9f
aW5saW5lIGludAorYnVmX3JpbmdfZW5xdWV1ZShzdHJ1Y3QgYnVmX3JpbmcgKmJyLCB2b2lkICpi
dWYpCit7CisKKwlyZXR1cm4gKGJ1Zl9yaW5nX2VucXVldWVfYnl0ZXMoYnIsIGJ1ZiwgMCkpOwor
fQorCisvKgorICogbXVsdGktY29uc3VtZXIgc2FmZSBkZXF1ZXVlIAorICoKKyAqLworc3RhdGlj
IF9faW5saW5lIHZvaWQgKgorYnVmX3JpbmdfZGVxdWV1ZV9tYyhzdHJ1Y3QgYnVmX3JpbmcgKmJy
KQoreworCXVpbnQzMl90IGNvbnNfaGVhZCwgY29uc19uZXh0OworCXVpbnQzMl90IHByb2RfdGFp
bDsKKwl2b2lkICpidWY7CisJaW50IHN1Y2Nlc3M7CisKKwljcml0aWNhbF9lbnRlcigpOworCWRv
IHsKKwkJY29uc19oZWFkID0gYnItPmJyX2NvbnNfaGVhZDsKKwkJcHJvZF90YWlsID0gYnItPmJy
X3Byb2RfdGFpbDsKKworCQljb25zX25leHQgPSAoY29uc19oZWFkICsgMSkgJiBici0+YnJfY29u
c19tYXNrOworCQkKKwkJaWYgKGNvbnNfaGVhZCA9PSBwcm9kX3RhaWwpIHsKKwkJCWNyaXRpY2Fs
X2V4aXQoKTsKKwkJCXJldHVybiAoTlVMTCk7CisJCX0KKwkJCisJCXN1Y2Nlc3MgPSBhdG9taWNf
Y21wc2V0X2ludCgmYnItPmJyX2NvbnNfaGVhZCwgY29uc19oZWFkLAorCQkgICAgY29uc19uZXh0
KTsKKwl9IHdoaWxlIChzdWNjZXNzID09IDApOwkJCisKKwlidWYgPSBici0+YnJfcmluZ1tjb25z
X2hlYWRdOworI2lmZGVmIERFQlVHX0JVRlJJTkcKKwlici0+YnJfcmluZ1tjb25zX2hlYWRdID0g
TlVMTDsKKyNlbmRpZgorCXJtYigpOworCQorCS8qCisJICogSWYgdGhlcmUgYXJlIG90aGVyIGRl
cXVldWVzIGluIHByb2dyZXNzCisJICogdGhhdCBwcmVjZWVkZWQgdXMsIHdlIG5lZWQgdG8gd2Fp
dCBmb3IgdGhlbQorCSAqIHRvIGNvbXBsZXRlIAorCSAqLyAgIAorCXdoaWxlIChici0+YnJfY29u
c190YWlsICE9IGNvbnNfaGVhZCkKKwkJY3B1X3NwaW53YWl0KCk7CisKKwlici0+YnJfY29uc190
YWlsID0gY29uc19uZXh0OworCWNyaXRpY2FsX2V4aXQoKTsKKworCXJldHVybiAoYnVmKTsKK30K
KworLyoKKyAqIHNpbmdsZS1jb25zdW1lciBkZXF1ZXVlIAorICogdXNlIHdoZXJlIGRlcXVldWUg
aXMgcHJvdGVjdGVkIGJ5IGEgbG9jaworICogZS5nLiBhIG5ldHdvcmsgZHJpdmVyJ3MgdHggcXVl
dWUgbG9jaworICovCitzdGF0aWMgX19pbmxpbmUgdm9pZCAqCitidWZfcmluZ19kZXF1ZXVlX3Nj
KHN0cnVjdCBidWZfcmluZyAqYnIpCit7CisJdWludDMyX3QgY29uc19oZWFkLCBjb25zX25leHQs
IGNvbnNfbmV4dF9uZXh0OworCXVpbnQzMl90IHByb2RfdGFpbDsKKwl2b2lkICpidWY7CisJCisJ
Y29uc19oZWFkID0gYnItPmJyX2NvbnNfaGVhZDsKKwlwcm9kX3RhaWwgPSBici0+YnJfcHJvZF90
YWlsOworCQorCWNvbnNfbmV4dCA9IChjb25zX2hlYWQgKyAxKSAmIGJyLT5icl9jb25zX21hc2s7
CisJY29uc19uZXh0X25leHQgPSAoY29uc19oZWFkICsgMikgJiBici0+YnJfY29uc19tYXNrOwor
CQorCWlmIChjb25zX2hlYWQgPT0gcHJvZF90YWlsKSAKKwkJcmV0dXJuIChOVUxMKTsKKworI2lm
ZGVmIFBSRUZFVENIX0RFRklORUQJCisJaWYgKGNvbnNfbmV4dCAhPSBwcm9kX3RhaWwpIHsJCQor
CQlwcmVmZXRjaChici0+YnJfcmluZ1tjb25zX25leHRdKTsKKwkJaWYgKGNvbnNfbmV4dF9uZXh0
ICE9IHByb2RfdGFpbCkgCisJCQlwcmVmZXRjaChici0+YnJfcmluZ1tjb25zX25leHRfbmV4dF0p
OworCX0KKyNlbmRpZgorCWJyLT5icl9jb25zX2hlYWQgPSBjb25zX25leHQ7CisJYnVmID0gYnIt
PmJyX3JpbmdbY29uc19oZWFkXTsKKworI2lmZGVmIERFQlVHX0JVRlJJTkcKKwlici0+YnJfcmlu
Z1tjb25zX2hlYWRdID0gTlVMTDsKKwlpZiAoIW10eF9vd25lZChici0+YnJfbG9jaykpCisJCXBh
bmljKCJsb2NrIG5vdCBoZWxkIG9uIHNpbmdsZSBjb25zdW1lciBkZXF1ZXVlIik7CisJaWYgKGJy
LT5icl9jb25zX3RhaWwgIT0gY29uc19oZWFkKQorCQlwYW5pYygiaW5jb25zaXN0ZW50IGxpc3Qg
Y29uc190YWlsPSVkIGNvbnNfaGVhZD0lZCIsCisJCSAgICBici0+YnJfY29uc190YWlsLCBjb25z
X2hlYWQpOworI2VuZGlmCisJYnItPmJyX2NvbnNfdGFpbCA9IGNvbnNfbmV4dDsKKwlyZXR1cm4g
KGJ1Zik7Cit9CisKKy8qCisgKiByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBmaXJzdCBlbnRyeSBp
biB0aGUgcmluZworICogd2l0aG91dCBtb2RpZnlpbmcgaXQsIG9yIE5VTEwgaWYgdGhlIHJpbmcg
aXMgZW1wdHkKKyAqIHJhY2UtcHJvbmUgaWYgbm90IHByb3RlY3RlZCBieSBhIGxvY2sKKyAqLwor
c3RhdGljIF9faW5saW5lIHZvaWQgKgorYnVmX3JpbmdfcGVlayhzdHJ1Y3QgYnVmX3JpbmcgKmJy
KQoreworCisjaWZkZWYgREVCVUdfQlVGUklORworCWlmICgoYnItPmJyX2xvY2sgIT0gTlVMTCkg
JiYgIW10eF9vd25lZChici0+YnJfbG9jaykpCisJCXBhbmljKCJsb2NrIG5vdCBoZWxkIG9uIHNp
bmdsZSBjb25zdW1lciBkZXF1ZXVlIik7CisjZW5kaWYJCisJLyoKKwkgKiBJIGJlbGlldmUgaXQg
aXMgc2FmZSB0byBub3QgaGF2ZSBhIG1lbW9yeSBiYXJyaWVyCisJICogaGVyZSBiZWNhdXNlIHdl
IGNvbnRyb2wgY29ucyBhbmQgdGFpbCBpcyB3b3JzdCBjYXNlCisJICogYSBsYWdnaW5nIGluZGlj
YXRvciBzbyB3ZSB3b3JzdCBjYXNlIHdlIG1pZ2h0CisJICogcmV0dXJuIE5VTEwgaW1tZWRpYXRl
bHkgYWZ0ZXIgYSBidWZmZXIgaGFzIGJlZW4gZW5xdWV1ZWQKKwkgKi8KKwlpZiAoYnItPmJyX2Nv
bnNfaGVhZCA9PSBici0+YnJfcHJvZF90YWlsKQorCQlyZXR1cm4gKE5VTEwpOworCQorCXJldHVy
biAoYnItPmJyX3JpbmdbYnItPmJyX2NvbnNfaGVhZF0pOworfQorCitzdGF0aWMgX19pbmxpbmUg
aW50CitidWZfcmluZ19mdWxsKHN0cnVjdCBidWZfcmluZyAqYnIpCit7CisKKwlyZXR1cm4gKCgo
YnItPmJyX3Byb2RfaGVhZCArIDEpICYgYnItPmJyX3Byb2RfbWFzaykgPT0gYnItPmJyX2NvbnNf
dGFpbCk7Cit9CisKK3N0YXRpYyBfX2lubGluZSBpbnQKK2J1Zl9yaW5nX2VtcHR5KHN0cnVjdCBi
dWZfcmluZyAqYnIpCit7CisKKwlyZXR1cm4gKGJyLT5icl9jb25zX2hlYWQgPT0gYnItPmJyX3By
b2RfdGFpbCk7Cit9CisKK3N0YXRpYyBfX2lubGluZSBpbnQKK2J1Zl9yaW5nX2NvdW50KHN0cnVj
dCBidWZfcmluZyAqYnIpCit7CisKKwlyZXR1cm4gKChici0+YnJfcHJvZF9zaXplICsgYnItPmJy
X3Byb2RfdGFpbCAtIGJyLT5icl9jb25zX3RhaWwpCisJICAgICYgYnItPmJyX3Byb2RfbWFzayk7
Cit9CisKK3N0cnVjdCBidWZfcmluZyAqYnVmX3JpbmdfYWxsb2MoaW50IGNvdW50LCBzdHJ1Y3Qg
bWFsbG9jX3R5cGUgKnR5cGUsIGludCBmbGFncywKKyAgICBzdHJ1Y3QgbXR4ICopOwordm9pZCBi
dWZfcmluZ19mcmVlKHN0cnVjdCBidWZfcmluZyAqYnIsIHN0cnVjdCBtYWxsb2NfdHlwZSAqdHlw
ZSk7CisKKworCisjZW5kaWYK
--bcaec520ed5777122404acd6ed09
Content-Type: text/x-patch; charset=US-ASCII; name="0001-IGB_MULTIQUEUE.patch"
Content-Disposition: attachment; filename="0001-IGB_MULTIQUEUE.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gsj810bi1

RnJvbSA2ZWYyM2M0OGE3MTc2NjY0MWY0NzcxNmE5ZTNkYzI3NWMyMzE1YTJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBcm5hdWQgTGFjb21iZSA8bGFjb21iYXJAZ21haWwuY29tPgpE
YXRlOiBNb24sIDEyIFNlcCAyMDExIDIyOjMyOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gSUdC
X01VTFRJUVVFVUUKCi0tLQogc3lzL2Rldi9lMTAwMC9pZl9pZ2IuYyB8ICAgMzQgKysrKysrKysr
KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogc3lzL2Rldi9lMTAwMC9pZl9pZ2IuaCB8ICAgIDQg
KystLQogMiBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9zeXMvZGV2L2UxMDAwL2lmX2lnYi5jIGIvc3lzL2Rldi9lMTAwMC9pZl9p
Z2IuYwppbmRleCA0OTQ0ZTU2Li5kZTFmYWU5IDEwMDY0NAotLS0gYS9zeXMvZGV2L2UxMDAwL2lm
X2lnYi5jCisrKyBiL3N5cy9kZXYvZTEwMDAvaWZfaWdiLmMKQEAgLTQyLDcgKzQyLDcgQEAKIAog
I2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2luY2x1ZGUgPHN5cy9zeXN0bS5oPgotI2lmIF9fRnJl
ZUJTRF92ZXJzaW9uID49IDgwMDAwMAorI2lmZGVmIElHQl9NVUxUSVFVRVVFCiAjaW5jbHVkZSA8
c3lzL2J1Zl9yaW5nLmg+CiAjZW5kaWYKICNpbmNsdWRlIDxzeXMvYnVzLmg+CkBAIC0xNzIsNyAr
MTcyLDcgQEAgc3RhdGljIGludAlpZ2JfZGV0YWNoKGRldmljZV90KTsKIHN0YXRpYyBpbnQJaWdi
X3NodXRkb3duKGRldmljZV90KTsKIHN0YXRpYyBpbnQJaWdiX3N1c3BlbmQoZGV2aWNlX3QpOwog
c3RhdGljIGludAlpZ2JfcmVzdW1lKGRldmljZV90KTsKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+
PSA4MDAwMDAKKyNpZmRlZiBJR0JfTVVMVElRVUVVRQogc3RhdGljIGludAlpZ2JfbXFfc3RhcnQo
c3RydWN0IGlmbmV0ICosIHN0cnVjdCBtYnVmICopOwogc3RhdGljIGludAlpZ2JfbXFfc3RhcnRf
bG9ja2VkKHN0cnVjdCBpZm5ldCAqLAogCQkgICAgc3RydWN0IHR4X3JpbmcgKiwgc3RydWN0IG1i
dWYgKik7CkBAIC04MDAsNyArODAwLDcgQEAgaWdiX3Jlc3VtZShkZXZpY2VfdCBkZXYpCiB7CiAJ
c3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CiAJc3RydWN0
IGlmbmV0ICppZnAgPSBhZGFwdGVyLT5pZnA7Ci0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAw
MDAwCisjaWZkZWYgSUdCX01VTFRJUVVFVUUKIAlzdHJ1Y3QgdHhfcmluZyAqdHhyID0gYWRhcHRl
ci0+dHhfcmluZ3M7CiAjZW5kaWYKIApAQCAtODEwLDcgKzgxMCw3IEBAIGlnYl9yZXN1bWUoZGV2
aWNlX3QgZGV2KQogCiAJaWYgKChpZnAtPmlmX2ZsYWdzICYgSUZGX1VQKSAmJgogCSAgICAoaWZw
LT5pZl9kcnZfZmxhZ3MgJiBJRkZfRFJWX1JVTk5JTkcpKSB7Ci0jaWYgX19GcmVlQlNEX3ZlcnNp
b24gPCA4MDAwMDAKKyNpZm5kZWYgSUdCX01VTFRJUVVFVUUKIAkJaWdiX3N0YXJ0KGlmcCk7CiAj
ZWxzZQogCQlmb3IgKGludCBpID0gMDsgaSA8IGFkYXB0ZXItPm51bV9xdWV1ZXM7IGkrKywgdHhy
KyspIHsKQEAgLTgyOCw3ICs4MjgsNyBAQCBpZ2JfcmVzdW1lKGRldmljZV90IGRldikKIH0KIAog
Ci0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPCA4MDAwMDAKKyNpZm5kZWYgSUdCX01VTFRJUVVFVUUK
IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKICAqICBUcmFuc21pdCBlbnRyeSBwb2ludAogICoKQEAgLTkwNSw3ICs5
MDUsNyBAQCBpZ2Jfc3RhcnQoc3RydWN0IGlmbmV0ICppZnApCiAJcmV0dXJuOwogfQogCi0jZWxz
ZSAvKiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAgKi8KKyNlbHNlIC8qIGRlZmluZWQoSUdC
X01VTFRJUVVFVUUpICovCiAvKgogKiogTXVsdGlxdWV1ZSBUcmFuc21pdCBkcml2ZXIKICoqCkBA
IC05MTgsOSArOTE4LDExIEBAIGlnYl9tcV9zdGFydChzdHJ1Y3QgaWZuZXQgKmlmcCwgc3RydWN0
IG1idWYgKm0pCiAJc3RydWN0IHR4X3JpbmcJCSp0eHI7CiAJaW50IAkJCWkgPSAwLCBlcnIgPSAw
OwogCisjaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCiAJLyogV2hpY2ggcXVldWUgdG8g
dXNlICovCiAJaWYgKChtLT5tX2ZsYWdzICYgTV9GTE9XSUQpICE9IDApCiAJCWkgPSBtLT5tX3Br
dGhkci5mbG93aWQgJSBhZGFwdGVyLT5udW1fcXVldWVzOworI2VuZGlmCiAKIAl0eHIgPSAmYWRh
cHRlci0+dHhfcmluZ3NbaV07CiAJcXVlID0gJmFkYXB0ZXItPnF1ZXVlc1tpXTsKQEAgLTEwMjQs
NyArMTAyNiw3IEBAIGlnYl9xZmx1c2goc3RydWN0IGlmbmV0ICppZnApCiAJfQogCWlmX3FmbHVz
aChpZnApOwogfQotI2VuZGlmIC8qIF9fRnJlZUJTRF92ZXJzaW9uIDwgODAwMDAwICovCisjZW5k
aWYgLyogIWRlZmluZWQoSUdCX01VTFRJUVVFVUUpICovCiAKIC8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICBJ
b2N0bCBlbnRyeSBwb2ludApAQCAtMTM1OCw3ICsxMzYwLDcgQEAgaWdiX2hhbmRsZV9xdWUodm9p
ZCAqY29udGV4dCwgaW50IHBlbmRpbmcpCiAJCUlHQl9UWF9MT0NLKHR4cik7CiAJCWlmIChpZ2Jf
dHhlb2YodHhyKSkKIAkJCW1vcmUgPSBUUlVFOwotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgw
MDAwMAorI2lmZGVmIElHQl9NVUxUSVFVRVVFCiAJCWlmICghZHJicl9lbXB0eShpZnAsIHR4ci0+
YnIpKQogCQkJaWdiX21xX3N0YXJ0X2xvY2tlZChpZnAsIHR4ciwgTlVMTCk7CiAjZWxzZQpAQCAt
MTQ4Miw3ICsxNDg0LDcgQEAgaWdiX3BvbGwoc3RydWN0IGlmbmV0ICppZnAsIGVudW0gcG9sbF9j
bWQgY21kLCBpbnQgY291bnQpCiAJZG8gewogCQltb3JlID0gaWdiX3R4ZW9mKHR4cik7CiAJfSB3
aGlsZSAobG9vcC0tICYmIG1vcmUpOwotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDAwMAor
I2lmZGVmIElHQl9NVUxUSVFVRVVFCiAJaWYgKCFkcmJyX2VtcHR5KGlmcCwgdHhyLT5icikpCiAJ
CWlnYl9tcV9zdGFydF9sb2NrZWQoaWZwLCB0eHIsIE5VTEwpOwogI2Vsc2UKQEAgLTIyMzUsNyAr
MjIzNyw3IEBAIGlnYl9hbGxvY2F0ZV9sZWdhY3koc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCiB7
CiAJZGV2aWNlX3QJCWRldiA9IGFkYXB0ZXItPmRldjsKIAlzdHJ1Y3QgaWdiX3F1ZXVlCSpxdWUg
PSBhZGFwdGVyLT5xdWV1ZXM7Ci0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCisjaWZk
ZWYgSUdCX01VTFRJUVVFVUUKIAlzdHJ1Y3QgdHhfcmluZwkJKnR4ciA9IGFkYXB0ZXItPnR4X3Jp
bmdzOwogI2VuZGlmCiAJaW50CQkJZXJyb3IsIHJpZCA9IDA7CkBAIC0yMjU2LDcgKzIyNTgsNyBA
QCBpZ2JfYWxsb2NhdGVfbGVnYWN5KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQogCQlyZXR1cm4g
KEVOWElPKTsKIAl9CiAKLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAKKyNpZmRlZiBJ
R0JfTVVMVElRVUVVRQogCVRBU0tfSU5JVCgmdHhyLT50eHFfdGFzaywgMCwgaWdiX2RlZmVycmVk
X21xX3N0YXJ0LCB0eHIpOwogI2VuZGlmCiAKQEAgLTIzMzAsNyArMjMzMiw3IEBAIGlnYl9hbGxv
Y2F0ZV9tc2l4KHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQogCQkqLwogCQlpZiAoYWRhcHRlci0+
bnVtX3F1ZXVlcyA+IDEpCiAJCQlidXNfYmluZF9pbnRyKGRldiwgcXVlLT5yZXMsIGkpOwotI2lm
IF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDAwMAorI2lmZGVmIElHQl9NVUxUSVFVRVVFCiAJCVRB
U0tfSU5JVCgmcXVlLT50eHItPnR4cV90YXNrLCAwLCBpZ2JfZGVmZXJyZWRfbXFfc3RhcnQsCiAJ
CSAgICBxdWUtPnR4cik7CiAjZW5kaWYKQEAgLTI4MzIsNyArMjgzNCw3IEBAIGlnYl9zZXR1cF9p
bnRlcmZhY2UoZGV2aWNlX3QgZGV2LCBzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKIAlpZnAtPmlm
X3NvZnRjID0gYWRhcHRlcjsKIAlpZnAtPmlmX2ZsYWdzID0gSUZGX0JST0FEQ0FTVCB8IElGRl9T
SU1QTEVYIHwgSUZGX01VTFRJQ0FTVDsKIAlpZnAtPmlmX2lvY3RsID0gaWdiX2lvY3RsOwotI2lm
IF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDAwMAorI2lmZGVmIElHQl9NVUxUSVFVRVVFCiAJaWZw
LT5pZl90cmFuc21pdCA9IGlnYl9tcV9zdGFydDsKIAlpZnAtPmlmX3FmbHVzaCA9IGlnYl9xZmx1
c2g7CiAjZWxzZQpAQCAtMzA3Niw3ICszMDc4LDcgQEAgaWdiX2FsbG9jYXRlX3F1ZXVlcyhzdHJ1
Y3QgYWRhcHRlciAqYWRhcHRlcikKIAkJCWVycm9yID0gRU5PTUVNOwogCQkJZ290byBlcnJfdHhf
ZGVzYzsKICAgICAgICAgCX0KLSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAKKyNpZmRl
ZiBJR0JfTVVMVElRVUVVRQogCQkvKiBBbGxvY2F0ZSBhIGJ1ZiByaW5nICovCiAJCXR4ci0+YnIg
PSBidWZfcmluZ19hbGxvYyhJR0JfQlJfU0laRSwgTV9ERVZCVUYsCiAJCSAgICBNX1dBSVRPSywg
JnR4ci0+dHhfbXR4KTsKQEAgLTMxMzcsNyArMzEzOSw3IEBAIGVycl90eF9kZXNjOgogCQlpZ2Jf
ZG1hX2ZyZWUoYWRhcHRlciwgJnR4ci0+dHhkbWEpOwogCWZyZWUoYWRhcHRlci0+cnhfcmluZ3Ms
IE1fREVWQlVGKTsKIHJ4X2ZhaWw6Ci0jaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCisj
aWZkZWYgSUdCX01VTFRJUVVFVUUKIAlidWZfcmluZ19mcmVlKHR4ci0+YnIsIE1fREVWQlVGKTsK
ICNlbmRpZgogCWZyZWUoYWRhcHRlci0+dHhfcmluZ3MsIE1fREVWQlVGKTsKQEAgLTMzODEsNyAr
MzM4Myw3IEBAIGlnYl9mcmVlX3RyYW5zbWl0X2J1ZmZlcnMoc3RydWN0IHR4X3JpbmcgKnR4cikK
IAkJCXR4X2J1ZmZlci0+bWFwID0gTlVMTDsKIAkJfQogCX0KLSNpZiBfX0ZyZWVCU0RfdmVyc2lv
biA+PSA4MDAwMDAKKyNpZmRlZiBJR0JfTVVMVElRVUVVRQogCWlmICh0eHItPmJyICE9IE5VTEwp
CiAJCWJ1Zl9yaW5nX2ZyZWUodHhyLT5iciwgTV9ERVZCVUYpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9zeXMvZGV2L2UxMDAwL2lmX2lnYi5oIGIvc3lzL2Rldi9lMTAwMC9pZl9pZ2IuaAppbmRleCA4
MGFiZjZlLi44NWRiY2VmIDEwMDY0NAotLS0gYS9zeXMvZGV2L2UxMDAwL2lmX2lnYi5oCisrKyBi
L3N5cy9kZXYvZTEwMDAvaWZfaWdiLmgKQEAgLTI5Myw3ICsyOTMsNyBAQCBzdHJ1Y3QgdHhfcmlu
ZyB7CiAJdTMyCQkJbmV4dF90b19jbGVhbjsKIAl2b2xhdGlsZSB1MTYJCXR4X2F2YWlsOwogCXN0
cnVjdCBpZ2JfdHhfYnVmZmVyCSp0eF9idWZmZXJzOwotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49
IDgwMDAwMAorI2lmZGVmIElHQl9NVUxUSVFVRVVFCiAJc3RydWN0IGJ1Zl9yaW5nCQkqYnI7CiAj
ZW5kaWYKIAlidXNfZG1hX3RhZ190CQl0eHRhZzsKQEAgLTUyNyw3ICs1MjcsNyBAQCBpZ2Jfcnhf
dW5yZWZyZXNoZWQoc3RydWN0IHJ4X3JpbmcgKnJ4cikKIAljdXIgfD0gbmV3OwkJCQlcCiB9CiAK
LSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA4
MDA1MDQKKyNpZiBkZWZpbmVkKElHQl9NVUxUSVFVRVVFKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA8
IDgwMDUwNAogc3RhdGljIF9faW5saW5lIGludAogZHJicl9uZWVkc19lbnF1ZXVlKHN0cnVjdCBp
Zm5ldCAqaWZwLCBzdHJ1Y3QgYnVmX3JpbmcgKmJyKQogewotLSAKMS43LjYuMTUzLmc3ODQzMgoK
--bcaec520ed5777122404acd6ed09--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CACqU3MV7JRxQ_mNeHCk7RVyzETZLAcc3XL=xyZ-qqtPfRxkZeQ>