Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Jan 2016 11:51:24 +0200
From:      Boris Astardzhiev <boris.astardzhiev@gmail.com>
To:        Mark Delany <c2h@romeo.emu.st>
Cc:        freebsd-net@freebsd.org
Subject:   Re: Does FreeBSD have sendmmsg or recvmmsg system calls?
Message-ID:  <CAP=KkTwfpjec2Tgnm4PRR3u8t4GEqN9Febm5HRcqapifBG-B6g@mail.gmail.com>
In-Reply-To: <20160104210741.32812.qmail@f5-external.bushwire.net>
References:  <alpine.BSF.2.20.1601031833130.84701@localhost.my.domain> <1451841004.10139.34.camel@me.com> <alpine.BSF.2.20.1601031744040.20884@fledge.watson.org> <CAJ-Vmomxcn%2BiYJAzNViL8WnepsCihrkTuHd8=0O6vONKsTExCA@mail.gmail.com> <20160103214720.72014.qmail@f5-external.bushwire.net> <20160104085415.GS3625@kib.kiev.ua> <20160104091108.50654.qmail@f5-external.bushwire.net> <20160104093859.GV3625@kib.kiev.ua> <20160104101747.58347.qmail@f5-external.bushwire.net> <20160104194044.GD3625@kib.kiev.ua> <20160104210741.32812.qmail@f5-external.bushwire.net>

next in thread | previous in thread | raw e-mail | index | archive | help
--001a114b3ebce94c900528bb6994
Content-Type: text/plain; charset=UTF-8

Hello,

Here's my implementation of the two system calls. The patch is against HEAD
from a couple of days:
commit ff9e83788d7ed52342dcba4dff1e62fdf3cc985c
Author: ngie <ngie@FreeBSD.org>
Date:   Mon Jan 4 03:34:22 2016 +0000

    Remove free'ing of an uninitialized variable

    Just remove it completely from the test as it's initialized but unused
apart
    from the free(3) call

    Differential Revision: https://reviews.freebsd.org/D4769 (part of
larger diff)
    MFC after: 5 days
    Reported by: cppcheck
    Reviewed by: oshogbo
    Sponsored by: EMC / Isilon Storage Division

I've made brief tests using the examples in the manpages in Linux skipping
the timeout stuff:
http://man7.org/linux/man-pages/man2/sendmmsg.2.html
http://man7.org/linux/man-pages/man2/recvmmsg.2.html

I've tried to stick to the comments in the thread but any
suggestions/testings
are also welcomed so that I can fix the calls accordingly.

Regards,
Boris Astardzhiev


On Mon, Jan 4, 2016 at 11:07 PM, Mark Delany <c2h@romeo.emu.st> wrote:

> > You just repeat arguments for the text in my messages, which you removed
> > on reply.
>
> My goal is to get you to scruitinize.
>
> Thank you for helping.
>
>
> Mark.
> _______________________________________________
> freebsd-net@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"
>

--001a114b3ebce94c900528bb6994
Content-Type: text/plain; charset=US-ASCII; name="sendrecvmmsg.diff"
Content-Disposition: attachment; filename="sendrecvmmsg.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ij42nfvu0

ZGlmZiAtLWdpdCBhL2xpYi9saWJjL2luY2x1ZGUvbGliY19wcml2YXRlLmggYi9saWIvbGliYy9p
bmNsdWRlL2xpYmNfcHJpdmF0ZS5oCmluZGV4IDVjYWY5YTMuLjdlMmE5MDIgMTAwNjQ0Ci0tLSBh
L2xpYi9saWJjL2luY2x1ZGUvbGliY19wcml2YXRlLmgKKysrIGIvbGliL2xpYmMvaW5jbHVkZS9s
aWJjX3ByaXZhdGUuaApAQCAtMjAwLDggKzIwMCwxMCBAQCBlbnVtIHsKIAlJTlRFUlBPU19wc2Vs
ZWN0LAogCUlOVEVSUE9TX3JlY3Zmcm9tLAogCUlOVEVSUE9TX3JlY3Ztc2csCisJSU5URVJQT1Nf
cmVjdm1tc2csCiAJSU5URVJQT1Nfc2VsZWN0LAogCUlOVEVSUE9TX3NlbmRtc2csCisJSU5URVJQ
T1Nfc2VuZG1tc2csCiAJSU5URVJQT1Nfc2VuZHRvLAogCUlOVEVSUE9TX3NldGNvbnRleHQsCiAJ
SU5URVJQT1Nfc2lnYWN0aW9uLApAQCAtMjg5LDYgKzI5MSw3IEBAIHN0cnVjdCBmZF9zZXQ7CiBz
dHJ1Y3QgaW92ZWM7CiBzdHJ1Y3Qga2V2ZW50Owogc3RydWN0IG1zZ2hkcjsKK3N0cnVjdCBtbXNn
aGRyOwogc3RydWN0IHBvbGxmZDsKIHN0cnVjdCBydXNhZ2U7CiBzdHJ1Y3Qgc2lnYWN0aW9uOwpA
QCAtMzM0LDkgKzMzNywxMSBAQCBfX3NzaXplX3QJX19zeXNfcmVjdihpbnQsIHZvaWQgKiwgX19z
aXplX3QsIGludCk7CiBfX3NzaXplX3QJX19zeXNfcmVjdmZyb20oaW50LCB2b2lkICosIF9fc2l6
ZV90LCBpbnQsIHN0cnVjdCBzb2NrYWRkciAqLAogCQkgICAgX19zb2NrbGVuX3QgKik7CiBfX3Nz
aXplX3QJX19zeXNfcmVjdm1zZyhpbnQsIHN0cnVjdCBtc2doZHIgKiwgaW50KTsKK19fc3NpemVf
dAlfX3N5c19yZWN2bW1zZyhpbnQsIHN0cnVjdCBtbXNnaGRyICosIHVuc2lnbmVkIGludCwgaW50
KTsKIGludAkJX19zeXNfc2VsZWN0KGludCwgc3RydWN0IGZkX3NldCAqLCBzdHJ1Y3QgZmRfc2V0
ICosCiAJCSAgICBzdHJ1Y3QgZmRfc2V0ICosIHN0cnVjdCB0aW1ldmFsICopOwogX19zc2l6ZV90
CV9fc3lzX3NlbmRtc2coaW50LCBjb25zdCBzdHJ1Y3QgbXNnaGRyICosIGludCk7CitfX3NzaXpl
X3QJX19zeXNfc2VuZG1tc2coaW50LCBjb25zdCBzdHJ1Y3QgbW1zZ2hkciAqLCB1bnNpZ25lZCBp
bnQsIGludCk7CiBfX3NzaXplX3QJX19zeXNfc2VuZHRvKGludCwgY29uc3Qgdm9pZCAqLCBfX3Np
emVfdCwgaW50LAogCQkgICAgY29uc3Qgc3RydWN0IHNvY2thZGRyICosIF9fc29ja2xlbl90KTsK
IGludAkJX19zeXNfc2V0Y29udGV4dChjb25zdCBzdHJ1Y3QgX191Y29udGV4dCAqKTsKZGlmZiAt
LWdpdCBhL2xpYi9saWJjL2luY2x1ZGUvbmFtZXNwYWNlLmggYi9saWIvbGliYy9pbmNsdWRlL25h
bWVzcGFjZS5oCmluZGV4IDczOWQ3YjEuLmM5NTgyOWUgMTAwNjQ0Ci0tLSBhL2xpYi9saWJjL2lu
Y2x1ZGUvbmFtZXNwYWNlLmgKKysrIGIvbGliL2xpYmMvaW5jbHVkZS9uYW1lc3BhY2UuaApAQCAt
MjA4LDYgKzIwOCw3IEBACiAjZGVmaW5lCQlyZWFkdgkJCQlfcmVhZHYKICNkZWZpbmUJCXJlY3Zm
cm9tCQkJX3JlY3Zmcm9tCiAjZGVmaW5lCQlyZWN2bXNnCQkJCV9yZWN2bXNnCisjZGVmaW5lCQly
ZWN2bW1zZwkJCV9yZWN2bW1zZwogI2RlZmluZQkJc2VsZWN0CQkJCV9zZWxlY3QKICNkZWZpbmUJ
CXNlbV9jbG9zZQkJCV9zZW1fY2xvc2UKICNkZWZpbmUJCXNlbV9kZXN0cm95CQkJX3NlbV9kZXN0
cm95CkBAIC0yMjAsNiArMjIxLDcgQEAKICNkZWZpbmUJCXNlbV91bmxpbmsJCQlfc2VtX3VubGlu
awogI2RlZmluZQkJc2VtX3dhaXQJCQlfc2VtX3dhaXQKICNkZWZpbmUJCXNlbmRtc2cJCQkJX3Nl
bmRtc2cKKyNkZWZpbmUJCXNlbmRtbXNnCQkJX3NlbmRtbXNnCiAjZGVmaW5lCQlzZW5kdG8JCQkJ
X3NlbmR0bwogI2RlZmluZQkJc2V0c29ja29wdAkJCV9zZXRzb2Nrb3B0CiAvKiNkZWZpbmUJCXNp
Z2FjdGlvbgkJCV9zaWdhY3Rpb24qLwpkaWZmIC0tZ2l0IGEvbGliL2xpYmMvaW5jbHVkZS91bi1u
YW1lc3BhY2UuaCBiL2xpYi9saWJjL2luY2x1ZGUvdW4tbmFtZXNwYWNlLmgKaW5kZXggZjMxZmE3
YS4uMDIzMzM0OCAxMDA2NDQKLS0tIGEvbGliL2xpYmMvaW5jbHVkZS91bi1uYW1lc3BhY2UuaAor
KysgYi9saWIvbGliYy9pbmNsdWRlL3VuLW5hbWVzcGFjZS5oCkBAIC0xODksNiArMTg5LDcgQEAK
ICN1bmRlZgkJcmVhZHYKICN1bmRlZgkJcmVjdmZyb20KICN1bmRlZgkJcmVjdm1zZworI3VuZGVm
CQlyZWN2bW1zZwogI3VuZGVmCQlzZWxlY3QKICN1bmRlZgkJc2VtX2Nsb3NlCiAjdW5kZWYJCXNl
bV9kZXN0cm95CkBAIC0yMDEsNiArMjAyLDcgQEAKICN1bmRlZgkJc2VtX3VubGluawogI3VuZGVm
CQlzZW1fd2FpdAogI3VuZGVmCQlzZW5kbXNnCisjdW5kZWYJCXNlbmRtbXNnCiAjdW5kZWYJCXNl
bmR0bwogI3VuZGVmCQlzZXRzb2Nrb3B0CiAjdW5kZWYJCXNpZ2FjdGlvbgpkaWZmIC0tZ2l0IGEv
bGliL2xpYmMvc3lzL01ha2VmaWxlLmluYyBiL2xpYi9saWJjL3N5cy9NYWtlZmlsZS5pbmMKaW5k
ZXggZTRmZTFiMi4uMWMwOWZjZSAxMDA2NDQKLS0tIGEvbGliL2xpYmMvc3lzL01ha2VmaWxlLmlu
YworKysgYi9saWIvbGliYy9zeXMvTWFrZWZpbGUuaW5jCkBAIC00OSw4ICs0OSwxMCBAQCBJTlRF
UlBPU0VEID0gXAogCXJlYWR2IFwKIAlyZWN2ZnJvbSBcCiAJcmVjdm1zZyBcCisJcmVjdm1tc2cg
XAogCXNlbGVjdCBcCiAJc2VuZG1zZyBcCisJc2VuZG1tc2cgXAogCXNlbmR0byBcCiAJc2V0Y29u
dGV4dCBcCiAJc2lncHJvY21hc2sgXApkaWZmIC0tZ2l0IGEvbGliL2xpYmMvc3lzL1N5bWJvbC5t
YXAgYi9saWIvbGliYy9zeXMvU3ltYm9sLm1hcAppbmRleCA3YjMyNTdjLi42Y2MzYzZlIDEwMDY0
NAotLS0gYS9saWIvbGliYy9zeXMvU3ltYm9sLm1hcAorKysgYi9saWIvbGliYy9zeXMvU3ltYm9s
Lm1hcApAQCAtMjIwLDYgKzIyMCw3IEBAIEZCU0RfMS4wIHsKIAlyZWJvb3Q7CiAJcmVjdmZyb207
CiAJcmVjdm1zZzsKKwlyZWN2bW1zZzsKIAlyZW5hbWU7CiAJcmV2b2tlOwogCXJmb3JrOwpAQCAt
MjQwLDYgKzI0MSw3IEBAIEZCU0RfMS4wIHsKIAlzZW1zeXM7CiAJc2VuZGZpbGU7CiAJc2VuZG1z
ZzsKKwlzZW5kbW1zZzsKIAlzZW5kdG87CiAJc2V0YXVkaXQ7CiAJc2V0YXVkaXRfYWRkcjsKQEAg
LTg1MSw2ICs4NTMsOCBAQCBGQlNEcHJpdmF0ZV8xLjAgewogCV9fc3lzX3JlY3Zmcm9tOwogCV9y
ZWN2bXNnOwogCV9fc3lzX3JlY3Ztc2c7CisJX3JlY3ZtbXNnOworCV9fc3lzX3JlY3ZtbXNnOwog
CV9yZW5hbWU7CiAJX19zeXNfcmVuYW1lOwogCV9yZXZva2U7CkBAIC04OTEsNiArODk1LDggQEAg
RkJTRHByaXZhdGVfMS4wIHsKIAlfX3N5c19zZW5kZmlsZTsKIAlfc2VuZG1zZzsKIAlfX3N5c19z
ZW5kbXNnOworCV9zZW5kbW1zZzsKKwlfX3N5c19zZW5kbW1zZzsKIAlfc2VuZHRvOwogCV9fc3lz
X3NlbmR0bzsKIAlfc2V0YXVkaXQ7CmRpZmYgLS1naXQgYS9saWIvbGliYy9zeXMvaW50ZXJwb3Np
bmdfdGFibGUuYyBiL2xpYi9saWJjL3N5cy9pbnRlcnBvc2luZ190YWJsZS5jCmluZGV4IDA4ZGZi
YjEuLmM4NjZhNzUgMTAwNjQ0Ci0tLSBhL2xpYi9saWJjL3N5cy9pbnRlcnBvc2luZ190YWJsZS5j
CisrKyBiL2xpYi9saWJjL3N5cy9pbnRlcnBvc2luZ190YWJsZS5jCkBAIC01Niw4ICs1NiwxMCBA
QCBpbnRlcnBvc19mdW5jX3QgX19saWJjX2ludGVycG9zaW5nW0lOVEVSUE9TX01BWF0gPSB7CiAJ
U0xPVChyZWFkdiwgX19zeXNfcmVhZHYpLAogCVNMT1QocmVjdmZyb20sIF9fc3lzX3JlY3Zmcm9t
KSwKIAlTTE9UKHJlY3Ztc2csIF9fc3lzX3JlY3Ztc2cpLAorCVNMT1QocmVjdm1tc2csIF9fc3lz
X3JlY3ZtbXNnKSwKIAlTTE9UKHNlbGVjdCwgX19zeXNfc2VsZWN0KSwKIAlTTE9UKHNlbmRtc2cs
IF9fc3lzX3NlbmRtc2cpLAorCVNMT1Qoc2VuZG1tc2csIF9fc3lzX3NlbmRtbXNnKSwKIAlTTE9U
KHNlbmR0bywgX19zeXNfc2VuZHRvKSwKIAlTTE9UKHNldGNvbnRleHQsIF9fc3lzX3NldGNvbnRl
eHQpLAogCVNMT1Qoc2lnYWN0aW9uLCBfX3N5c19zaWdhY3Rpb24pLApkaWZmIC0tZ2l0IGEvbGli
L2xpYmMvc3lzL3JlY3ZtbXNnLmMgYi9saWIvbGliYy9zeXMvcmVjdm1tc2cuYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmIwNTg4Ci0tLSAvZGV2L251bGwKKysrIGIvbGli
L2xpYmMvc3lzL3JlY3ZtbXNnLmMKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAxNiBCb3JpcyBBc3RhcmR6aGlldiwgU21hcnRjb20tQnVsZ2FyaWEgQUQKKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlKHMpLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGFzCisgKiAgICB0aGUgZmlyc3QgbGluZXMg
b2YgdGhpcyBmaWxlIHVubW9kaWZpZWQgb3RoZXIgdGhhbiB0aGUgcG9zc2libGUKKyAqICAgIGFk
ZGl0aW9uIG9mIG9uZSBvciBtb3JlIGNvcHlyaWdodCBub3RpY2VzLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZShzKSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbgorICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIoUykgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBCRQor
ICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorICogQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
CisgKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRQorICogT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwKKyAqIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPHN5cy9jZGVmcy5o
PgorX19GQlNESUQoIiRGcmVlQlNEJCIpOworCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5j
bHVkZSA8c3lzL3N5c2NhbGwuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSAi
bGliY19wcml2YXRlLmgiCisKK19fd2Vha19yZWZlcmVuY2UoX19zeXNfcmVjdm1tc2csIF9fcmVj
dm1tc2cpOworCisjcHJhZ21hIHdlYWsgcmVjdm1tc2cKK3NzaXplX3QKK3JlY3ZtbXNnKGludCBz
LCBzdHJ1Y3QgbW1zZ2hkciAqbXNndmVjLCB1bnNpZ25lZCBpbnQgdmxlbiwgaW50IGZsYWdzKQor
eworCisJcmV0dXJuICgoKGludCAoKikoaW50LCBzdHJ1Y3QgbW1zZ2hkciAqLCBpbnQsIGludCkp
CisJICAgIF9fbGliY19pbnRlcnBvc2luZ1tJTlRFUlBPU19yZWN2bW1zZ10pKHMsIG1zZ3ZlYywg
dmxlbiwgZmxhZ3MpKTsKK30KZGlmZiAtLWdpdCBhL2xpYi9saWJjL3N5cy9zZW5kbW1zZy5jIGIv
bGliL2xpYmMvc3lzL3NlbmRtbXNnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMzk4ZjljYQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9saWJjL3N5cy9zZW5kbW1zZy5jCkBA
IC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgQm9yaXMgQXN0YXJkemhp
ZXYsIFNtYXJ0Y29tLUJ1bGdhcmlhIEFECisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZShzKSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBhcworICogICAgdGhlIGZpcnN0IGxpbmVzIG9mIHRoaXMgZmlsZSB1bm1vZGlmaWVk
IG90aGVyIHRoYW4gdGhlIHBvc3NpYmxlCisgKiAgICBhZGRpdGlvbiBvZiBvbmUgb3IgbW9yZSBj
b3B5cmlnaHQgbm90aWNlcy4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UocyksIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKyAqICAg
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIoUykgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IKKyAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAorICogV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UKKyAqIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsCisgKiBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KK19fRkJTRElEKCIkRnJlZUJTRCQi
KTsKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Cisj
aW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgImxpYmNfcHJpdmF0ZS5oIgorCitfX3dl
YWtfcmVmZXJlbmNlKF9fc3lzX3NlbmRtbXNnLCBfX3NlbmRtbXNnKTsKKworI3ByYWdtYSB3ZWFr
IHNlbmRtbXNnCitzc2l6ZV90CitzZW5kbW1zZyhpbnQgcywgY29uc3Qgc3RydWN0IG1tc2doZHIg
Km1zZ3ZlYywgdW5zaWduZWQgaW50IHZsZW4sIGludCBmbGFncykKK3sKKworCXJldHVybiAoKChp
bnQgKCopKGludCwgY29uc3Qgc3RydWN0IG1tc2doZHIgKiwgaW50LCBpbnQpKQorCSAgICBfX2xp
YmNfaW50ZXJwb3NpbmdbSU5URVJQT1Nfc2VuZG1tc2ddKShzLCBtc2d2ZWMsIHZsZW4sIGZsYWdz
KSk7Cit9CmRpZmYgLS1naXQgYS9zeXMvYnNtL2F1ZGl0X2tldmVudHMuaCBiL3N5cy9ic20vYXVk
aXRfa2V2ZW50cy5oCmluZGV4IDNjMTZjNzMuLjJmYzg4N2EgMTAwNjQ0Ci0tLSBhL3N5cy9ic20v
YXVkaXRfa2V2ZW50cy5oCisrKyBiL3N5cy9ic20vYXVkaXRfa2V2ZW50cy5oCkBAIC02MTEsNiAr
NjExLDggQEAKICNkZWZpbmUJQVVFX0JJTkRBVAkJNDMyMDcJLyogVHJ1c3RlZEJTRC4gKi8KICNk
ZWZpbmUJQVVFX0NPTk5FQ1RBVAkJNDMyMDgJLyogVHJ1c3RlZEJTRC4gKi8KICNkZWZpbmUJQVVF
X0NIRkxBR1NBVAkJNDMyMDkJLyogRnJlZUJTRC1zcGVjaWZpYy4gKi8KKyNkZWZpbmUJQVVFX1NF
TkRNTVNHCQk0MzIxMAorI2RlZmluZQlBVUVfUkVDVk1NU0cJCTQzMjExCiAKIC8qCiAgKiBEYXJ3
aW4gQlNNIHVzZXMgYSBudW1iZXIgb2YgQVVFX09fKiBkZWZpbml0aW9ucywgd2hpY2ggYXJlIGFs
aWFzZWQgdG8gdGhlCmRpZmYgLS1naXQgYS9zeXMva2Vybi9pbml0X3N5c2VudC5jIGIvc3lzL2tl
cm4vaW5pdF9zeXNlbnQuYwppbmRleCAwOWVjMDVkLi40MDFkNzg1IDEwMDY0NAotLS0gYS9zeXMv
a2Vybi9pbml0X3N5c2VudC5jCisrKyBiL3N5cy9rZXJuL2luaXRfc3lzZW50LmMKQEAgLTMsNyAr
Myw3IEBACiAgKgogICogRE8gTk9UIEVESVQtLSB0aGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQuCiAgKiAkRnJlZUJTRCQKLSAqIGNyZWF0ZWQgZnJvbSBGcmVlQlNEOiBoZWFkL3N5
cy9rZXJuL3N5c2NhbGxzLm1hc3RlciAyODUzODggMjAxNS0wNy0xMSAxNToyMjoxMVogYWRyaWFu
IAorICogY3JlYXRlZCBmcm9tIEZyZWVCU0QKICAqLwogCiAjaW5jbHVkZSAib3B0X2NvbXBhdC5o
IgpAQCAtNTkwLDQgKzU5MCw2IEBAIHN0cnVjdCBzeXNlbnQgc3lzZW50W10gPSB7CiAJeyBBUyh1
dGltZW5zYXRfYXJncyksIChzeV9jYWxsX3QgKilzeXNfdXRpbWVuc2F0LCBBVUVfRlVUSU1FU0FU
LCBOVUxMLCAwLCAwLCBTWUZfQ0FQRU5BQkxFRCwgU1lfVEhSX1NUQVRJQyB9LAkvKiA1NDcgPSB1
dGltZW5zYXQgKi8KIAl7IEFTKG51bWFfZ2V0YWZmaW5pdHlfYXJncyksIChzeV9jYWxsX3QgKilz
eXNfbnVtYV9nZXRhZmZpbml0eSwgQVVFX05VTEwsIE5VTEwsIDAsIDAsIDAsIFNZX1RIUl9TVEFU
SUMgfSwJLyogNTQ4ID0gbnVtYV9nZXRhZmZpbml0eSAqLwogCXsgQVMobnVtYV9zZXRhZmZpbml0
eV9hcmdzKSwgKHN5X2NhbGxfdCAqKXN5c19udW1hX3NldGFmZmluaXR5LCBBVUVfTlVMTCwgTlVM
TCwgMCwgMCwgMCwgU1lfVEhSX1NUQVRJQyB9LAkvKiA1NDkgPSBudW1hX3NldGFmZmluaXR5ICov
CisJeyBBUyhzZW5kbW1zZ19hcmdzKSwgKHN5X2NhbGxfdCAqKXN5c19zZW5kbW1zZywgQVVFX1NF
TkRNTVNHLCBOVUxMLCAwLCAwLCAwLCBTWV9USFJfU1RBVElDIH0sCS8qIDU1MCA9IHNlbmRtbXNn
ICovCisJeyBBUyhyZWN2bW1zZ19hcmdzKSwgKHN5X2NhbGxfdCAqKXN5c19yZWN2bW1zZywgQVVF
X1JFQ1ZNTVNHLCBOVUxMLCAwLCAwLCAwLCBTWV9USFJfU1RBVElDIH0sCS8qIDU1MSA9IHJlY3Zt
bXNnICovCiB9OwpkaWZmIC0tZ2l0IGEvc3lzL2tlcm4vc3lzY2FsbHMuYyBiL3N5cy9rZXJuL3N5
c2NhbGxzLmMKaW5kZXggMWVkYjE5My4uN2UwZDM4NDAgMTAwNjQ0Ci0tLSBhL3N5cy9rZXJuL3N5
c2NhbGxzLmMKKysrIGIvc3lzL2tlcm4vc3lzY2FsbHMuYwpAQCAtMyw3ICszLDcgQEAKICAqCiAg
KiBETyBOT1QgRURJVC0tIHRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC4KICAq
ICRGcmVlQlNEJAotICogY3JlYXRlZCBmcm9tIEZyZWVCU0Q6IGhlYWQvc3lzL2tlcm4vc3lzY2Fs
bHMubWFzdGVyIDI4NTM4OCAyMDE1LTA3LTExIDE1OjIyOjExWiBhZHJpYW4gCisgKiBjcmVhdGVk
IGZyb20gRnJlZUJTRAogICovCiAKIGNvbnN0IGNoYXIgKnN5c2NhbGxuYW1lc1tdID0gewpAQCAt
NTU3LDQgKzU1Nyw2IEBAIGNvbnN0IGNoYXIgKnN5c2NhbGxuYW1lc1tdID0gewogCSJ1dGltZW5z
YXQiLAkJCS8qIDU0NyA9IHV0aW1lbnNhdCAqLwogCSJudW1hX2dldGFmZmluaXR5IiwJCQkvKiA1
NDggPSBudW1hX2dldGFmZmluaXR5ICovCiAJIm51bWFfc2V0YWZmaW5pdHkiLAkJCS8qIDU0OSA9
IG51bWFfc2V0YWZmaW5pdHkgKi8KKwkic2VuZG1tc2ciLAkJCS8qIDU1MCA9IHNlbmRtbXNnICov
CisJInJlY3ZtbXNnIiwJCQkvKiA1NTEgPSByZWN2bW1zZyAqLwogfTsKZGlmZiAtLWdpdCBhL3N5
cy9rZXJuL3N5c2NhbGxzLm1hc3RlciBiL3N5cy9rZXJuL3N5c2NhbGxzLm1hc3RlcgppbmRleCA2
ZTZmYjM4Li42MTkwODk1IDEwMDY0NAotLS0gYS9zeXMva2Vybi9zeXNjYWxscy5tYXN0ZXIKKysr
IGIvc3lzL2tlcm4vc3lzY2FsbHMubWFzdGVyCkBAIC05OTQsNiArOTk0LDEwIEBACiA1NDkJQVVF
X05VTEwJU1RECXsgaW50IG51bWFfc2V0YWZmaW5pdHkoY3B1d2hpY2hfdCB3aGljaCwgXAogCQkJ
CSAgICBpZF90IGlkLCBcCiAJCQkJICAgIGNvbnN0IHN0cnVjdCB2bV9kb21haW5fcG9saWN5X2Vu
dHJ5ICpwb2xpY3kpOyB9Cis1NTAJQVVFX1NFTkRNTVNHCVNURAl7IGludCBzZW5kbW1zZyhpbnQg
cywgc3RydWN0IG1tc2doZHIgKm1zZ3ZlYyxcCisJCQkJICAgIHVuc2lnbmVkIGludCB2bGVuLCBp
bnQgZmxhZ3MpOyB9Cis1NTEJQVVFX1JFQ1ZNTVNHCVNURAl7IGludCByZWN2bW1zZyhpbnQgcywg
c3RydWN0IG1tc2doZHIgKm1zZ3ZlYyxcCisJCQkJICAgIHVuc2lnbmVkIGludCB2bGVuLCBpbnQg
ZmxhZ3MpOyB9CiAKIDsgUGxlYXNlIGNvcHkgYW55IGFkZGl0aW9ucyBhbmQgY2hhbmdlcyB0byB0
aGUgZm9sbG93aW5nIGNvbXBhdGFiaWxpdHkgdGFibGVzOgogOyBzeXMvY29tcGF0L2ZyZWVic2Qz
Mi9zeXNjYWxscy5tYXN0ZXIKZGlmZiAtLWdpdCBhL3N5cy9rZXJuL3N5c3RyYWNlX2FyZ3MuYyBi
L3N5cy9rZXJuL3N5c3RyYWNlX2FyZ3MuYwppbmRleCAwMGEwNTBmLi43YzBkODYyIDEwMDY0NAot
LS0gYS9zeXMva2Vybi9zeXN0cmFjZV9hcmdzLmMKKysrIGIvc3lzL2tlcm4vc3lzdHJhY2VfYXJn
cy5jCkBAIC0zMzU1LDYgKzMzNTUsMjYgQEAgc3lzdHJhY2VfYXJncyhpbnQgc3lzbnVtLCB2b2lk
ICpwYXJhbXMsIHVpbnQ2NF90ICp1YXJnLCBpbnQgKm5fYXJncykKIAkJKm5fYXJncyA9IDM7CiAJ
CWJyZWFrOwogCX0KKwkvKiBzZW5kbW1zZyAqLworCWNhc2UgNTUwOiB7CisJCXN0cnVjdCBzZW5k
bW1zZ19hcmdzICpwID0gcGFyYW1zOworCQlpYXJnWzBdID0gcC0+czsgLyogaW50ICovCisJCXVh
cmdbMV0gPSAoaW50cHRyX3QpIHAtPm1zZ3ZlYzsgLyogc3RydWN0IG1tc2doZHIgKiAqLworCQl1
YXJnWzJdID0gcC0+dmxlbjsgLyogdW5zaWduZWQgaW50ICovCisJCWlhcmdbM10gPSBwLT5mbGFn
czsgLyogaW50ICovCisJCSpuX2FyZ3MgPSA0OworCQlicmVhazsKKwl9CisJLyogcmVjdm1tc2cg
Ki8KKwljYXNlIDU1MTogeworCQlzdHJ1Y3QgcmVjdm1tc2dfYXJncyAqcCA9IHBhcmFtczsKKwkJ
aWFyZ1swXSA9IHAtPnM7IC8qIGludCAqLworCQl1YXJnWzFdID0gKGludHB0cl90KSBwLT5tc2d2
ZWM7IC8qIHN0cnVjdCBtbXNnaGRyICogKi8KKwkJdWFyZ1syXSA9IHAtPnZsZW47IC8qIHVuc2ln
bmVkIGludCAqLworCQlpYXJnWzNdID0gcC0+ZmxhZ3M7IC8qIGludCAqLworCQkqbl9hcmdzID0g
NDsKKwkJYnJlYWs7CisJfQogCWRlZmF1bHQ6CiAJCSpuX2FyZ3MgPSAwOwogCQlicmVhazsKQEAg
LTg5MzMsNiArODk1Myw0NCBAQCBzeXN0cmFjZV9lbnRyeV9zZXRhcmdkZXNjKGludCBzeXNudW0s
IGludCBuZHgsIGNoYXIgKmRlc2MsIHNpemVfdCBkZXNjc3opCiAJCQlicmVhazsKIAkJfTsKIAkJ
YnJlYWs7CisJLyogc2VuZG1tc2cgKi8KKwljYXNlIDU1MDoKKwkJc3dpdGNoKG5keCkgeworCQlj
YXNlIDA6CisJCQlwID0gImludCI7CisJCQlicmVhazsKKwkJY2FzZSAxOgorCQkJcCA9ICJzdHJ1
Y3QgbW1zZ2hkciAqIjsKKwkJCWJyZWFrOworCQljYXNlIDI6CisJCQlwID0gInVuc2lnbmVkIGlu
dCI7CisJCQlicmVhazsKKwkJY2FzZSAzOgorCQkJcCA9ICJpbnQiOworCQkJYnJlYWs7CisJCWRl
ZmF1bHQ6CisJCQlicmVhazsKKwkJfTsKKwkJYnJlYWs7CisJLyogcmVjdm1tc2cgKi8KKwljYXNl
IDU1MToKKwkJc3dpdGNoKG5keCkgeworCQljYXNlIDA6CisJCQlwID0gImludCI7CisJCQlicmVh
azsKKwkJY2FzZSAxOgorCQkJcCA9ICJzdHJ1Y3QgbW1zZ2hkciAqIjsKKwkJCWJyZWFrOworCQlj
YXNlIDI6CisJCQlwID0gInVuc2lnbmVkIGludCI7CisJCQlicmVhazsKKwkJY2FzZSAzOgorCQkJ
cCA9ICJpbnQiOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJfTsKKwkJYnJl
YWs7CiAJZGVmYXVsdDoKIAkJYnJlYWs7CiAJfTsKQEAgLTEwODY2LDYgKzEwOTI0LDE2IEBAIHN5
c3RyYWNlX3JldHVybl9zZXRhcmdkZXNjKGludCBzeXNudW0sIGludCBuZHgsIGNoYXIgKmRlc2Ms
IHNpemVfdCBkZXNjc3opCiAJCWlmIChuZHggPT0gMCB8fCBuZHggPT0gMSkKIAkJCXAgPSAiaW50
IjsKIAkJYnJlYWs7CisJLyogc2VuZG1tc2cgKi8KKwljYXNlIDU1MDoKKwkJaWYgKG5keCA9PSAw
IHx8IG5keCA9PSAxKQorCQkJcCA9ICJpbnQiOworCQlicmVhazsKKwkvKiByZWN2bW1zZyAqLwor
CWNhc2UgNTUxOgorCQlpZiAobmR4ID09IDAgfHwgbmR4ID09IDEpCisJCQlwID0gImludCI7CisJ
CWJyZWFrOwogCWRlZmF1bHQ6CiAJCWJyZWFrOwogCX07CmRpZmYgLS1naXQgYS9zeXMva2Vybi91
aXBjX3N5c2NhbGxzLmMgYi9zeXMva2Vybi91aXBjX3N5c2NhbGxzLmMKaW5kZXggYzMzYTJjZi4u
NzM1NGI0ZiAxMDA2NDQKLS0tIGEvc3lzL2tlcm4vdWlwY19zeXNjYWxscy5jCisrKyBiL3N5cy9r
ZXJuL3VpcGNfc3lzY2FsbHMuYwpAQCAtMTAzOCw2ICsxMDM4LDgyIEBAIHN5c19zZW5kbXNnKHRk
LCB1YXApCiB9CiAKIGludAorc3lzX3NlbmRtbXNnKHRkLCB1YXApCisJc3RydWN0IHRocmVhZCAq
dGQ7CisJc3RydWN0IHNlbmRtbXNnX2FyZ3MgLyogeworCQlpbnQJczsKKwkJc3RydWN0IG1tc2do
ZHIJKm1zZ3ZlYzsKKwkJdW5zaWduZWQgaW50CXZsZW47CisJCWludAlmbGFnczsKKwl9ICovICp1
YXA7Cit7CisJc3RydWN0IG1tc2doZHIgKnZlYywgKm1tcDsKKwlzdHJ1Y3QgbXNnaGRyICptcCwg
bXNnOworCXN0cnVjdCBpb3ZlYyAqaW92OworCXVuc2lnbmVkIGludCB2bGVuLCBsZW47CisJaW50
IGksIHNlbnQgPSAwLCBlcnJvcjsKKwlzdHJ1Y3Qgc29ja2V0ICpzbyA9IE5VTEw7CisJc3RydWN0
IGZpbGUgKmZwOworCWNhcF9yaWdodHNfdCByaWdodHM7CisKKwlpZiAoZmdldCh0ZCwgdWFwLT5z
LCBjYXBfcmlnaHRzX2luaXQoJnJpZ2h0cywgQ0FQX1NFTkQpLCAmZnApICE9IDApCisJCXJldHVy
biAoRUJBREYpOworCisJc28gPSBmcC0+Zl9kYXRhOworCisJdmxlbiA9IHVhcC0+dmxlbjsKKwlp
ZiAodmxlbiA+IFVJT19NQVhJT1YpCisJCXZsZW4gPSBVSU9fTUFYSU9WOworCisJbGVuID0gdmxl
biAqIHNpemVvZigqdWFwLT5tc2d2ZWMpOworCXZlYyA9IG1hbGxvYyhsZW4sIE1fVEVNUCwgTV9X
QUlUT0spOworCisJZXJyb3IgPSBjb3B5aW4odWFwLT5tc2d2ZWMsIHZlYywgbGVuKTsKKwlpZiAo
ZXJyb3IgIT0gMCkKKwkJZ290byBvdXQ7CisKKwlmb3IgKGkgPSAwOyBpIDwgdmxlbjsgaSsrKSB7
CisJCW1tcCA9ICZ2ZWNbaV07CisJCW1wID0gJm1tcC0+bXNnX2hkcjsKKwkJbXNnID0gKm1wOwor
CisJCWVycm9yID0gY29weWluaW92KG1zZy5tc2dfaW92LCBtc2cubXNnX2lvdmxlbiwgJmlvdiwg
RU1TR1NJWkUpOworCQlpZiAoZXJyb3IgIT0gMCkKKwkJCWdvdG8gb3V0OworCisJCW1zZy5tc2df
aW92ID0gaW92OworI2lmZGVmIENPTVBBVF9PTERTT0NLCisJCW1zZy5tc2dfZmxhZ3MgPSAwOwor
I2VuZGlmCisJCWVycm9yID0gc2VuZGl0KHRkLCB1YXAtPnMsICZtc2csIHVhcC0+ZmxhZ3MpOwor
CQlmcmVlKGlvdiwgTV9JT1YpOworCQlpZiAoZXJyb3IgIT0gMCkKKwkJCWdvdG8gb3V0OworCisJ
CWVycm9yID0gY29weW91dCgmdGQtPnRkX3JldHZhbFswXSwgJnVhcC0+bXNndmVjW2ldLm1zZ19s
ZW4sCisJCSAgICBzaXplb2YodGQtPnRkX3JldHZhbFswXSkpOworCQlpZiAoZXJyb3IgIT0gMCkK
KwkJCWdvdG8gb3V0OworCisJCXNlbnQrKzsKKwl9CisKKwl0ZC0+dGRfcmV0dmFsWzBdID0gc2Vu
dDsKKworb3V0OgorCWlmIChlcnJvciAhPSAwICYmIHNlbnQgIT0gMCAmJiBzZW50ICE9IHZsZW4p
IHsKKwkJc28tPnNvX2Vycm9yID0gZXJyb3I7CisJCWVycm9yID0gMDsKKwkJdGQtPnRkX3JldHZh
bFswXSA9IHNlbnQ7CisJfQorCisJZmRyb3AoZnAsIHRkKTsKKworCWZyZWUodmVjLCBNX1RFTVAp
OworCXJldHVybiAoZXJyb3IpOworfQorCitpbnQKIGtlcm5fcmVjdml0KHRkLCBzLCBtcCwgZnJv
bXNlZywgY29udHJvbHApCiAJc3RydWN0IHRocmVhZCAqdGQ7CiAJaW50IHM7CkBAIC0xMzYzLDYg
KzE0MzksOTEgQEAgc3lzX3JlY3Ztc2codGQsIHVhcCkKIAlyZXR1cm4gKGVycm9yKTsKIH0KIAor
aW50CitzeXNfcmVjdm1tc2codGQsIHVhcCkKKwlzdHJ1Y3QgdGhyZWFkICp0ZDsKKwlzdHJ1Y3Qg
cmVjdm1tc2dfYXJncyAvKiB7CisJCWludAlzOworCQlzdHJ1Y3QgbW1zZ2hkcgkqbXNndmVjOwor
CQl1bnNpZ25lZCBpbnQJdmxlbjsKKwkJaW50CWZsYWdzOworCX0gKi8gKnVhcDsKK3sKKwlzdHJ1
Y3QgbW1zZ2hkciAqdmVjLCAqbW1wOworCXN0cnVjdCBtc2doZHIgKm1wLCBtc2c7CisJc3RydWN0
IGlvdmVjICp1aW92LCAqaW92OworCXVuc2lnbmVkIGludCB2bGVuLCBsZW47CisJaW50IGksIHJj
dmQgPSAwLCBlcnJvcjsKKwlzdHJ1Y3Qgc29ja2V0ICpzbyA9IE5VTEw7CisJc3RydWN0IGZpbGUg
KmZwOworCWNhcF9yaWdodHNfdCByaWdodHM7CisKKwlpZiAoZmdldCh0ZCwgdWFwLT5zLCBjYXBf
cmlnaHRzX2luaXQoJnJpZ2h0cywgQ0FQX1JFQ1YpLCAmZnApICE9IDApCisJCXJldHVybiAoRUJB
REYpOworCisJc28gPSBmcC0+Zl9kYXRhOworCisJdmxlbiA9IHVhcC0+dmxlbjsKKwlpZiAodmxl
biA+IFVJT19NQVhJT1YpCisJCXZsZW4gPSBVSU9fTUFYSU9WOworCisJbGVuID0gdmxlbiAqIHNp
emVvZigqdWFwLT5tc2d2ZWMpOworCXZlYyA9IG1hbGxvYyhsZW4sIE1fVEVNUCwgTV9XQUlUT0sp
OworCisJZXJyb3IgPSBjb3B5aW4odWFwLT5tc2d2ZWMsIHZlYywgbGVuKTsKKwlpZiAoZXJyb3Ig
IT0gMCkKKwkJZ290byBvdXQ7CisKKwlmb3IgKGkgPSAwOyBpIDwgdmxlbjsgaSsrKSB7CisJCW1t
cCA9ICZ2ZWNbaV07CisJCW1wID0gJm1tcC0+bXNnX2hkcjsKKwkJbXNnID0gKm1wOworCisJCWVy
cm9yID0gY29weWluaW92KG1zZy5tc2dfaW92LCBtc2cubXNnX2lvdmxlbiwgJmlvdiwgRU1TR1NJ
WkUpOworCQlpZiAoZXJyb3IgIT0gMCkKKwkJCWdvdG8gb3V0OworCisJCW1zZy5tc2dfZmxhZ3Mg
PSB1YXAtPmZsYWdzOworI2lmZGVmIENPTVBBVF9PTERTT0NLCisJCW1zZy5tc2dfZmxhZ3MgJj0g
fk1TR19DT01QQVQ7CisjZW5kaWYKKwkJdWlvdiA9IG1zZy5tc2dfaW92OworCQltc2cubXNnX2lv
diA9IGlvdjsKKworCQllcnJvciA9IHJlY3ZpdCh0ZCwgdWFwLT5zLCAmbXNnLCBOVUxMKTsKKwkJ
aWYgKGVycm9yID09IDApIHsKKwkJCW1zZy5tc2dfaW92ID0gdWlvdjsKKwkJCWVycm9yID0gY29w
eW91dCgmbXNnLCAmdWFwLT5tc2d2ZWNbaV0ubXNnX2hkciwgc2l6ZW9mKG1zZykpOworCQkJaWYg
KGVycm9yICE9IDApIHsKKwkJCQlmcmVlKGlvdiwgTV9JT1YpOworCQkJCWdvdG8gb3V0OworCQkJ
fQorCQkJZXJyb3IgPSBjb3B5b3V0KCZ0ZC0+dGRfcmV0dmFsWzBdLCAmdWFwLT5tc2d2ZWNbaV0u
bXNnX2xlbiwKKwkJCSAgICBzaXplb2YodGQtPnRkX3JldHZhbFswXSkpOworCQkJaWYgKGVycm9y
ICE9IDApIHsKKwkJCQlmcmVlKGlvdiwgTV9JT1YpOworCQkJCWdvdG8gb3V0OworCQkJfQorCQl9
CisJCWZyZWUoaW92LCBNX0lPVik7CisJCXJjdmQrKzsKKwl9CisKKwl0ZC0+dGRfcmV0dmFsWzBd
ID0gcmN2ZDsKKworb3V0OgorCWlmIChlcnJvciAhPSAwICYmIHJjdmQgIT0gMCAmJiByY3ZkICE9
IHZsZW4pIHsKKwkJc28tPnNvX2Vycm9yID0gZXJyb3I7CisJCWVycm9yID0gMDsKKwkJdGQtPnRk
X3JldHZhbFswXSA9IHJjdmQ7CisJfQorCisJZmRyb3AoZnAsIHRkKTsKKworCWZyZWUodmVjLCBN
X1RFTVApOworCXJldHVybiAoZXJyb3IpOworfQorCiAvKiBBUkdTVVNFRCAqLwogaW50CiBzeXNf
c2h1dGRvd24odGQsIHVhcCkKZGlmZiAtLWdpdCBhL3N5cy9zeXMvc29ja2V0LmggYi9zeXMvc3lz
L3NvY2tldC5oCmluZGV4IDE4ZTJkZTEuLmQzNTJjZDIgMTAwNjQ0Ci0tLSBhL3N5cy9zeXMvc29j
a2V0LmgKKysrIGIvc3lzL3N5cy9zb2NrZXQuaApAQCAtNDE0LDYgKzQxNCwxMSBAQCBzdHJ1Y3Qg
bXNnaGRyIHsKIAlpbnQJCSBtc2dfZmxhZ3M7CQkvKiBmbGFncyBvbiByZWNlaXZlZCBtZXNzYWdl
ICovCiB9OwogCitzdHJ1Y3QgbW1zZ2hkciB7CisJc3RydWN0IG1zZ2hkcgltc2dfaGRyOwkJLyog
bWVzc2FnZSBoZWFkZXIgKi8KKwl1bnNpZ25lZCBpbnQJbXNnX2xlbjsJCS8qIG1lc3NhZ2UgbGVu
Z3RoICAqLworfTsKKwogI2RlZmluZQlNU0dfT09CCQkweDEJCS8qIHByb2Nlc3Mgb3V0LW9mLWJh
bmQgZGF0YSAqLwogI2RlZmluZQlNU0dfUEVFSwkweDIJCS8qIHBlZWsgYXQgaW5jb21pbmcgbWVz
c2FnZSAqLwogI2RlZmluZQlNU0dfRE9OVFJPVVRFCTB4NAkJLyogc2VuZCB3aXRob3V0IHVzaW5n
IHJvdXRpbmcgdGFibGVzICovCkBAIC02MTUsMTAgKzYyMCwxMiBAQCBpbnQJbGlzdGVuKGludCwg
aW50KTsKIHNzaXplX3QJcmVjdihpbnQsIHZvaWQgKiwgc2l6ZV90LCBpbnQpOwogc3NpemVfdAly
ZWN2ZnJvbShpbnQsIHZvaWQgKiwgc2l6ZV90LCBpbnQsIHN0cnVjdCBzb2NrYWRkciAqIF9fcmVz
dHJpY3QsIHNvY2tsZW5fdCAqIF9fcmVzdHJpY3QpOwogc3NpemVfdAlyZWN2bXNnKGludCwgc3Ry
dWN0IG1zZ2hkciAqLCBpbnQpOworc3NpemVfdAlyZWN2bW1zZyhpbnQsIHN0cnVjdCBtbXNnaGRy
ICosIHVuc2lnbmVkIGludCwgaW50KTsKIHNzaXplX3QJc2VuZChpbnQsIGNvbnN0IHZvaWQgKiwg
c2l6ZV90LCBpbnQpOwogc3NpemVfdAlzZW5kdG8oaW50LCBjb25zdCB2b2lkICosCiAJICAgIHNp
emVfdCwgaW50LCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKiwgc29ja2xlbl90KTsKIHNzaXplX3QJ
c2VuZG1zZyhpbnQsIGNvbnN0IHN0cnVjdCBtc2doZHIgKiwgaW50KTsKK3NzaXplX3QJc2VuZG1t
c2coaW50LCBjb25zdCBzdHJ1Y3QgbW1zZ2hkciAqLCB1bnNpZ25lZCBpbnQsIGludCk7CiAjaWYg
X19CU0RfVklTSUJMRQogaW50CXNlbmRmaWxlKGludCwgaW50LCBvZmZfdCwgc2l6ZV90LCBzdHJ1
Y3Qgc2ZfaGR0ciAqLCBvZmZfdCAqLCBpbnQpOwogaW50CXNldGZpYihpbnQpOwpkaWZmIC0tZ2l0
IGEvc3lzL3N5cy9zeXNjYWxsLmggYi9zeXMvc3lzL3N5c2NhbGwuaAppbmRleCBiYzcyMzQ1Li40
MjFhMTcxIDEwMDY0NAotLS0gYS9zeXMvc3lzL3N5c2NhbGwuaAorKysgYi9zeXMvc3lzL3N5c2Nh
bGwuaApAQCAtMyw3ICszLDcgQEAKICAqCiAgKiBETyBOT1QgRURJVC0tIHRoaXMgZmlsZSBpcyBh
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZC4KICAqICRGcmVlQlNEJAotICogY3JlYXRlZCBmcm9tIEZy
ZWVCU0Q6IGhlYWQvc3lzL2tlcm4vc3lzY2FsbHMubWFzdGVyIDI4NTM4OCAyMDE1LTA3LTExIDE1
OjIyOjExWiBhZHJpYW4gCisgKiBjcmVhdGVkIGZyb20gRnJlZUJTRAogICovCiAKICNkZWZpbmUJ
U1lTX3N5c2NhbGwJMApAQCAtNDY3LDQgKzQ2Nyw2IEBACiAjZGVmaW5lCVNZU191dGltZW5zYXQJ
NTQ3CiAjZGVmaW5lCVNZU19udW1hX2dldGFmZmluaXR5CTU0OAogI2RlZmluZQlTWVNfbnVtYV9z
ZXRhZmZpbml0eQk1NDkKLSNkZWZpbmUJU1lTX01BWFNZU0NBTEwJNTUwCisjZGVmaW5lCVNZU19z
ZW5kbW1zZwk1NTAKKyNkZWZpbmUJU1lTX3JlY3ZtbXNnCTU1MQorI2RlZmluZQlTWVNfTUFYU1lT
Q0FMTAk1NTIKZGlmZiAtLWdpdCBhL3N5cy9zeXMvc3lzY2FsbC5tayBiL3N5cy9zeXMvc3lzY2Fs
bC5tawppbmRleCBmZTJjYjM1Li4yMjllOTE1IDEwMDY0NAotLS0gYS9zeXMvc3lzL3N5c2NhbGwu
bWsKKysrIGIvc3lzL3N5cy9zeXNjYWxsLm1rCkBAIC0xLDcgKzEsNyBAQAogIyBGcmVlQlNEIHN5
c3RlbSBjYWxsIG5hbWVzLgogIyBETyBOT1QgRURJVC0tIHRoaXMgZmlsZSBpcyBhdXRvbWF0aWNh
bGx5IGdlbmVyYXRlZC4KICMgJEZyZWVCU0QkCi0jIGNyZWF0ZWQgZnJvbSBGcmVlQlNEOiBoZWFk
L3N5cy9rZXJuL3N5c2NhbGxzLm1hc3RlciAyODUzODggMjAxNS0wNy0xMSAxNToyMjoxMVogYWRy
aWFuIAorIyBjcmVhdGVkIGZyb20gRnJlZUJTRAogTUlBU00gPSAgXAogCXN5c2NhbGwubyBcCiAJ
ZXhpdC5vIFwKQEAgLTQxNCw0ICs0MTQsNiBAQCBNSUFTTSA9ICBcCiAJZnV0aW1lbnMubyBcCiAJ
dXRpbWVuc2F0Lm8gXAogCW51bWFfZ2V0YWZmaW5pdHkubyBcCi0JbnVtYV9zZXRhZmZpbml0eS5v
CisJbnVtYV9zZXRhZmZpbml0eS5vIFwKKwlzZW5kbW1zZy5vIFwKKwlyZWN2bW1zZy5vCmRpZmYg
LS1naXQgYS9zeXMvc3lzL3N5c3Byb3RvLmggYi9zeXMvc3lzL3N5c3Byb3RvLmgKaW5kZXggMTQz
ZjgxZC4uZTJiMDVhOCAxMDA2NDQKLS0tIGEvc3lzL3N5cy9zeXNwcm90by5oCisrKyBiL3N5cy9z
eXMvc3lzcHJvdG8uaApAQCAtMyw3ICszLDcgQEAKICAqCiAgKiBETyBOT1QgRURJVC0tIHRoaXMg
ZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC4KICAqICRGcmVlQlNEJAotICogY3JlYXRl
ZCBmcm9tIEZyZWVCU0Q6IGhlYWQvc3lzL2tlcm4vc3lzY2FsbHMubWFzdGVyIDI4NTM4OCAyMDE1
LTA3LTExIDE1OjIyOjExWiBhZHJpYW4gCisgKiBjcmVhdGVkIGZyb20gRnJlZUJTRAogICovCiAK
ICNpZm5kZWYgX1NZU19TWVNQUk9UT19IXwpAQCAtMTgwMCw2ICsxODAwLDE4IEBAIHN0cnVjdCBu
dW1hX3NldGFmZmluaXR5X2FyZ3MgewogCWNoYXIgaWRfbF9bUEFETF8oaWRfdCldOyBpZF90IGlk
OyBjaGFyIGlkX3JfW1BBRFJfKGlkX3QpXTsKIAljaGFyIHBvbGljeV9sX1tQQURMXyhjb25zdCBz
dHJ1Y3Qgdm1fZG9tYWluX3BvbGljeV9lbnRyeSAqKV07IGNvbnN0IHN0cnVjdCB2bV9kb21haW5f
cG9saWN5X2VudHJ5ICogcG9saWN5OyBjaGFyIHBvbGljeV9yX1tQQURSXyhjb25zdCBzdHJ1Y3Qg
dm1fZG9tYWluX3BvbGljeV9lbnRyeSAqKV07CiB9Oworc3RydWN0IHNlbmRtbXNnX2FyZ3Mgewor
CWNoYXIgc19sX1tQQURMXyhpbnQpXTsgaW50IHM7IGNoYXIgc19yX1tQQURSXyhpbnQpXTsKKwlj
aGFyIG1zZ3ZlY19sX1tQQURMXyhzdHJ1Y3QgbW1zZ2hkciAqKV07IHN0cnVjdCBtbXNnaGRyICog
bXNndmVjOyBjaGFyIG1zZ3ZlY19yX1tQQURSXyhzdHJ1Y3QgbW1zZ2hkciAqKV07CisJY2hhciB2
bGVuX2xfW1BBRExfKHVuc2lnbmVkIGludCldOyB1bnNpZ25lZCBpbnQgdmxlbjsgY2hhciB2bGVu
X3JfW1BBRFJfKHVuc2lnbmVkIGludCldOworCWNoYXIgZmxhZ3NfbF9bUEFETF8oaW50KV07IGlu
dCBmbGFnczsgY2hhciBmbGFnc19yX1tQQURSXyhpbnQpXTsKK307CitzdHJ1Y3QgcmVjdm1tc2df
YXJncyB7CisJY2hhciBzX2xfW1BBRExfKGludCldOyBpbnQgczsgY2hhciBzX3JfW1BBRFJfKGlu
dCldOworCWNoYXIgbXNndmVjX2xfW1BBRExfKHN0cnVjdCBtbXNnaGRyICopXTsgc3RydWN0IG1t
c2doZHIgKiBtc2d2ZWM7IGNoYXIgbXNndmVjX3JfW1BBRFJfKHN0cnVjdCBtbXNnaGRyICopXTsK
KwljaGFyIHZsZW5fbF9bUEFETF8odW5zaWduZWQgaW50KV07IHVuc2lnbmVkIGludCB2bGVuOyBj
aGFyIHZsZW5fcl9bUEFEUl8odW5zaWduZWQgaW50KV07CisJY2hhciBmbGFnc19sX1tQQURMXyhp
bnQpXTsgaW50IGZsYWdzOyBjaGFyIGZsYWdzX3JfW1BBRFJfKGludCldOworfTsKIGludAlub3N5
cyhzdHJ1Y3QgdGhyZWFkICosIHN0cnVjdCBub3N5c19hcmdzICopOwogdm9pZAlzeXNfc3lzX2V4
aXQoc3RydWN0IHRocmVhZCAqLCBzdHJ1Y3Qgc3lzX2V4aXRfYXJncyAqKTsKIGludAlzeXNfZm9y
ayhzdHJ1Y3QgdGhyZWFkICosIHN0cnVjdCBmb3JrX2FyZ3MgKik7CkBAIC0yMTkwLDYgKzIyMDIs
OCBAQCBpbnQJc3lzX2Z1dGltZW5zKHN0cnVjdCB0aHJlYWQgKiwgc3RydWN0IGZ1dGltZW5zX2Fy
Z3MgKik7CiBpbnQJc3lzX3V0aW1lbnNhdChzdHJ1Y3QgdGhyZWFkICosIHN0cnVjdCB1dGltZW5z
YXRfYXJncyAqKTsKIGludAlzeXNfbnVtYV9nZXRhZmZpbml0eShzdHJ1Y3QgdGhyZWFkICosIHN0
cnVjdCBudW1hX2dldGFmZmluaXR5X2FyZ3MgKik7CiBpbnQJc3lzX251bWFfc2V0YWZmaW5pdHko
c3RydWN0IHRocmVhZCAqLCBzdHJ1Y3QgbnVtYV9zZXRhZmZpbml0eV9hcmdzICopOworaW50CXN5
c19zZW5kbW1zZyhzdHJ1Y3QgdGhyZWFkICosIHN0cnVjdCBzZW5kbW1zZ19hcmdzICopOworaW50
CXN5c19yZWN2bW1zZyhzdHJ1Y3QgdGhyZWFkICosIHN0cnVjdCByZWN2bW1zZ19hcmdzICopOwog
CiAjaWZkZWYgQ09NUEFUXzQzCiAKQEAgLTI5NDUsNiArMjk1OSw4IEBAIGludAlmcmVlYnNkN19z
aG1jdGwoc3RydWN0IHRocmVhZCAqLCBzdHJ1Y3QgZnJlZWJzZDdfc2htY3RsX2FyZ3MgKik7CiAj
ZGVmaW5lCVNZU19BVUVfdXRpbWVuc2F0CUFVRV9GVVRJTUVTQVQKICNkZWZpbmUJU1lTX0FVRV9u
dW1hX2dldGFmZmluaXR5CUFVRV9OVUxMCiAjZGVmaW5lCVNZU19BVUVfbnVtYV9zZXRhZmZpbml0
eQlBVUVfTlVMTAorI2RlZmluZQlTWVNfQVVFX3NlbmRtbXNnCUFVRV9TRU5ETU1TRworI2RlZmlu
ZQlTWVNfQVVFX3JlY3ZtbXNnCUFVRV9SRUNWTU1TRwogCiAjdW5kZWYgUEFEXwogI3VuZGVmIFBB
RExfCg==
--001a114b3ebce94c900528bb6994--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAP=KkTwfpjec2Tgnm4PRR3u8t4GEqN9Febm5HRcqapifBG-B6g>