Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 26 Mar 2017 11:36:48 +0300
From:      Fedor Uporov <thisisadrgreenthumb@gmail.com>
To:        freebsd-fs@freebsd.org
Subject:   [PATCH] ext2fs: extended attributes read-only support
Message-ID:  <CAOEhZLuy4CNTP9Daz1zJhUP8=D_2Wv=2tWx3hx=cFBuMYjtsjw@mail.gmail.com>

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

Here is the patch (attachment) to allow reading ext4 extended attributes on
FreeBSD side.

--94eb2c05dcdaab8210054b9e20be
Content-Type: text/x-patch; charset=US-ASCII; 
	name="0001-ext2fs-add-read-only-support-for-extended-attributes.patch"
Content-Disposition: attachment; 
	filename="0001-ext2fs-add-read-only-support-for-extended-attributes.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_j0qfkhma0

RnJvbSBjYzZlYzBkMDZhMjhiNjk3ZmNhMTJlZGJkODRiYzEzOWRhMGNmZjE5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGZWRvciBVcG9yb3YgPHRoaXNpc2FkcmdyZWVudGh1bWJAZ21h
aWwuY29tPgpEYXRlOiBTdW4sIDI2IE1hciAyMDE3IDExOjI3OjU4ICswMzAwClN1YmplY3Q6IFtQ
QVRDSF0gZXh0MmZzOiBhZGQgcmVhZC1vbmx5IHN1cHBvcnQgZm9yIGV4dGVuZGVkIGF0dHJpYnV0
ZXMKCi0tLQogc3lzL2ZzL2V4dDJmcy9leHQyX2V4dGF0dHIuYyAgIHwgNDQ1ICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzeXMvZnMvZXh0MmZzL2V4dDJfZXh0YXR0
ci5oICAgfCAxMDIgKysrKysrKysrKwogc3lzL2ZzL2V4dDJmcy9leHQyX2lub2RlX2Nudi5jIHwg
ICA0ICsKIHN5cy9mcy9leHQyZnMvZXh0Ml92bm9wcy5jICAgICB8ICAgMyArCiBzeXMvZnMvZXh0
MmZzL2V4dDJmcy5oICAgICAgICAgfCAgIDEgKwogc3lzL2ZzL2V4dDJmcy9pbm9kZS5oICAgICAg
ICAgIHwgICAxICsKIHN5cy9tb2R1bGVzL2V4dDJmcy9NYWtlZmlsZSAgICB8ICAgMiArLQogNyBm
aWxlcyBjaGFuZ2VkLCA1NTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IHN5cy9mcy9leHQyZnMvZXh0Ml9leHRhdHRyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBzeXMvZnMvZXh0MmZzL2V4dDJfZXh0YXR0ci5oCgpkaWZmIC0tZ2l0IGEvc3lzL2ZzL2V4dDJm
cy9leHQyX2V4dGF0dHIuYyBiL3N5cy9mcy9leHQyZnMvZXh0Ml9leHRhdHRyLmMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWY2YTZhNWFhZDlmOWExNTA3YmEwM2IyODk5NjY2NGM2MjI0ZDdkNgotLS0gL2Rldi9udWxs
CisrKyBiL3N5cy9mcy9leHQyZnMvZXh0Ml9leHRhdHRyLmMKQEAgLTAsMCArMSw0NDUgQEAKKy8q
LQorICogQ29weXJpZ2h0IChjKSAyMDAyLCAyMDAzIE5ldHdvcmtzIEFzc29jaWF0ZXMgVGVjaG5v
bG9neSwgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHNvZnR3YXJl
IHdhcyBkZXZlbG9wZWQgZm9yIHRoZSBGcmVlQlNEIFByb2plY3QgYnkgTWFyc2hhbGwKKyAqIEtp
cmsgTWNLdXNpY2sgYW5kIE5ldHdvcmsgQXNzb2NpYXRlcyBMYWJvcmF0b3JpZXMsIHRoZSBTZWN1
cml0eQorICogUmVzZWFyY2ggRGl2aXNpb24gb2YgTmV0d29yayBBc3NvY2lhdGVzLCBJbmMuIHVu
ZGVyIERBUlBBL1NQQVdBUgorICogY29udHJhY3QgTjY2MDAxLTAxLUMtODAzNSAoIkNCT1NTIiks
IGFzIHBhcnQgb2YgdGhlIERBUlBBIENIQVRTCisgKiByZXNlYXJjaCBwcm9ncmFtCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKgorICogQ29w
eXJpZ2h0IChjKSAxOTgyLCAxOTg2LCAxOTg5LCAxOTkzCisgKglUaGUgUmVnZW50cyBvZiB0aGUg
VW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBv
ZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisg
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUK
KyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
CisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRgorICogU1VDSCBEQU1BR0UuCisgKgorICoJZnJvbTogQCgjKXVmc19yZWFkd3JpdGUuYwk4
LjExIChCZXJrZWxleSkgNS84Lzk1CisgKiBmcm9tOiAkRnJlZUJTRDogLi4uL3Vmcy91ZnNfcmVh
ZHdyaXRlLmMsdiAxLjk2IDIwMDIvMDgvMTIgMDk6MjI6MTEgcGhrIC4uLgorICoJQCgjKWZmc192
bm9wcy5jCTguMTUgKEJlcmtlbGV5KSA1LzE0Lzk1CisgKi8KKworI2luY2x1ZGUgPHN5cy9wYXJh
bS5oPgorI2luY2x1ZGUgPHN5cy9zeXN0bS5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lu
Y2x1ZGUgPHN5cy9rZXJuZWwuaD4KKyNpbmNsdWRlIDxzeXMvbWFsbG9jLmg+CisjaW5jbHVkZSA8
c3lzL3Zub2RlLmg+CisjaW5jbHVkZSA8c3lzL2Jpby5oPgorI2luY2x1ZGUgPHN5cy9idWYuaD4K
KyNpbmNsdWRlIDxzeXMvZW5kaWFuLmg+CisjaW5jbHVkZSA8c3lzL2NvbmYuaD4KKyNpbmNsdWRl
IDxzeXMvZXh0YXR0ci5oPgorCisjaW5jbHVkZSA8ZnMvZXh0MmZzL2ZzLmg+CisjaW5jbHVkZSA8
ZnMvZXh0MmZzL2V4dDJmcy5oPgorI2luY2x1ZGUgPGZzL2V4dDJmcy9pbm9kZS5oPgorI2luY2x1
ZGUgPGZzL2V4dDJmcy9leHQyX2Rpbm9kZS5oPgorI2luY2x1ZGUgPGZzL2V4dDJmcy9leHQyX21v
dW50Lmg+CisjaW5jbHVkZSA8ZnMvZXh0MmZzL2V4dDJfZXh0YXR0ci5oPgorCisKK3N0YXRpYyBp
bnQKK2V4dDJfZXh0YXR0cl9pbmRleF90b19ic2QoaW50IGluZGV4KQoreworCXN3aXRjaCAoaW5k
ZXgpIHsKKwkJY2FzZSBFWFQ0X1hBVFRSX0lOREVYX1VTRVI6CisJCQlyZXR1cm4gRVhUQVRUUl9O
QU1FU1BBQ0VfVVNFUjsKKworCQljYXNlIEVYVDRfWEFUVFJfSU5ERVhfU1lTVEVNOgorCQkJcmV0
dXJuIEVYVEFUVFJfTkFNRVNQQUNFX1NZU1RFTTsKKworCQlkZWZhdWx0OgorCQkJcmV0dXJuIEVY
VEFUVFJfTkFNRVNQQUNFX0VNUFRZOworCX0KK30KKworc3RhdGljIGludAorZXh0Ml9leHRhdHRy
X2lub2RlX2xpc3Qoc3RydWN0IGlub2RlICppcCwgaW50IGF0dHJuYW1lc3BhY2UsCisgICAgc3Ry
dWN0IHVpbyAqdWlvLCBzaXplX3QgKnNpemUpCit7CisJc3RydWN0IG1fZXh0MmZzICpmczsKKwlz
dHJ1Y3QgYnVmICpicDsKKwlzdHJ1Y3QgZXh0MmZzX2V4dGF0dHJfZGlub2RlX2hlYWRlciAqaGVh
ZGVyOworCXN0cnVjdCBleHQyZnNfZXh0YXR0cl9lbnRyeSAqZW50cnk7CisJc3RydWN0IGV4dDJm
c19leHRhdHRyX2VudHJ5ICpuZXh0OworCWNoYXIgKmVuZDsKKwlpbnQgZXJyb3I7CisKKwlmcyA9
IGlwLT5pX2UyZnM7CisKKwlpZiAoKGVycm9yID0gYnJlYWQoaXAtPmlfZGV2dnAsCisJICAgIGZz
YnRvZGIoZnMsIGlub190b19mc2JhKGZzLCBpcC0+aV9udW1iZXIpKSwKKwkgICAgKGludClmcy0+
ZTJmc19ic2l6ZSwgTk9DUkVELCAmYnApKSAhPSAwKSB7CisJCWJyZWxzZShicCk7CisJCXJldHVy
biAoZXJyb3IpOworCX0KKworCXN0cnVjdCBleHQyZnNfZGlub2RlICpkaW5vZGUgPSAoc3RydWN0
IGV4dDJmc19kaW5vZGUgKikKKwkgICAgKChjaGFyICopYnAtPmJfZGF0YSArCisJICAgIEVYVDJf
SU5PREVfU0laRShmcykgKiBpbm9fdG9fZnNibyhmcywgaXAtPmlfbnVtYmVyKSk7CisKKwkvKiBD
aGVjayBhdHRyaWJ1dGVzIG1hZ2ljIHZhbHVlICovCisJaGVhZGVyID0gKHN0cnVjdCBleHQyZnNf
ZXh0YXR0cl9kaW5vZGVfaGVhZGVyKikoKGNoYXIgKilkaW5vZGUgKworCSAgICBFMkZTX1JFVjBf
SU5PREVfU0laRSArIGRpbm9kZS0+ZTJkaV9leHRyYV9pc2l6ZSk7CisKKwlpZiAoaGVhZGVyLT5o
X21hZ2ljICE9IEVYVEFUVFJfTUFHSUMpIHsKKwkJYnJlbHNlKGJwKTsKKwkJcmV0dXJuICgwKTsK
Kwl9CisKKwkvKiBDaGVjayBhdHRyaWJ1dGVzIGludGVncml0eSAqLworCWVudHJ5ID0gSUZJUlNU
KGhlYWRlcik7CisJZW5kID0gKGNoYXIqKWRpbm9kZSArIEVYVDJfSU5PREVfU0laRShmcyk7CisJ
d2hpbGUgKCFJU19MQVNUX0VOVFJZKGVudHJ5KSkgeworCQluZXh0ID0gRVhUQVRUUl9ORVhUKGVu
dHJ5KTsKKwkJaWYgKChjaGFyICopbmV4dCA+PSBlbmQpIHsKKwkJCWJyZWxzZShicCk7CisJCQly
ZXR1cm4gKEVJTyk7CisJCX0KKworCQllbnRyeSA9IG5leHQ7CisJfQorCisJZm9yIChlbnRyeSA9
IElGSVJTVChoZWFkZXIpOyAhSVNfTEFTVF9FTlRSWShlbnRyeSk7CisJCWVudHJ5ID0gRVhUQVRU
Ul9ORVhUKGVudHJ5KSkgeworCQlpZiAoZXh0Ml9leHRhdHRyX2luZGV4X3RvX2JzZChlbnRyeS0+
ZV9uYW1lX2luZGV4KSAhPSBhdHRybmFtZXNwYWNlKQorCQkJY29udGludWU7CisKKwkJaWYgKHVp
byA9PSBOVUxMKSB7CisJCQkqc2l6ZSArPSBlbnRyeS0+ZV9uYW1lX2xlbiArIDE7CisJCX0KKwkJ
ZWxzZSB7CisJCQljaGFyKiBhdHRyX25hbWUgPSBtYWxsb2MoZW50cnktPmVfbmFtZV9sZW4gKyAx
LCBNX1RFTVAsIE1fV0FJVE9LKTsKKwkJCWF0dHJfbmFtZVswXSA9IGVudHJ5LT5lX25hbWVfbGVu
OworCQkJbWVtY3B5KCZhdHRyX25hbWVbMV0sIGVudHJ5LT5lX25hbWUsIGVudHJ5LT5lX25hbWVf
bGVuKTsKKwkJCWVycm9yID0gdWlvbW92ZShhdHRyX25hbWUsIGVudHJ5LT5lX25hbWVfbGVuICsg
MSwgdWlvKTsKKwkJCWZyZWUoYXR0cl9uYW1lLCBNX1RFTVApOworCQl9CisJfQorCisJYnJlbHNl
KGJwKTsKKworCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBpbnQKK2V4dDJfZXh0YXR0cl9ibG9j
a19saXN0KHN0cnVjdCBpbm9kZSAqaXAsIGludCBhdHRybmFtZXNwYWNlLAorICAgIHN0cnVjdCB1
aW8gKnVpbywgc2l6ZV90ICpzaXplKQoreworCXN0cnVjdCBtX2V4dDJmcyAqZnM7CisJc3RydWN0
IGJ1ZiAqYnA7CisJc3RydWN0IGV4dDJmc19leHRhdHRyX2hlYWRlciogaGVhZGVyOworCXN0cnVj
dCBleHQyZnNfZXh0YXR0cl9lbnRyeSAqZW50cnk7CisJc3RydWN0IGV4dDJmc19leHRhdHRyX2Vu
dHJ5ICpuZXh0OworCWNoYXIgKmVuZDsKKwlpbnQgZXJyb3I7CisKKwlmcyA9IGlwLT5pX2UyZnM7
CisKKwllcnJvciA9IGJyZWFkKGlwLT5pX2RldnZwLCBmc2J0b2RiKGZzLCBpcC0+aV9mYWNsKSwK
KwkgICAgZnMtPmUyZnNfYnNpemUsIE5PQ1JFRCwgJmJwKTsKKwlpZiAoZXJyb3IpIHsKKwkJYnJl
bHNlKGJwKTsKKwkJcmV0dXJuIChlcnJvcik7CisJfQorCisJLyogQ2hlY2sgYXR0cmlidXRlcyBt
YWdpYyB2YWx1ZSAqLworCWhlYWRlciA9IEhEUihicCk7CisJaWYgKGhlYWRlci0+aF9tYWdpYyAh
PSBFWFRBVFRSX01BR0lDIHx8IGhlYWRlci0+aF9ibG9ja3MgIT0gMSkgeworCQlicmVsc2UoYnAp
OworCQlyZXR1cm4gKEVJTlZBTCk7CisJfQorCisJLyogQ2hlY2sgYXR0cmlidXRlcyBpbnRlZ3Jp
dHkgKi8KKwllbmQgPSBicC0+Yl9kYXRhICsgYnAtPmJfYnVmc2l6ZTsKKwllbnRyeSA9IEZJUlNU
X0VOVFJZKGJwKTsKKwl3aGlsZSAoIUlTX0xBU1RfRU5UUlkoZW50cnkpKSB7CisJCW5leHQgPSBF
WFRBVFRSX05FWFQoZW50cnkpOworCQlpZiAoKGNoYXIgKiluZXh0ID49IGVuZCkgeworCQkJYnJl
bHNlKGJwKTsKKwkJCXJldHVybiAoRUlPKTsKKwkJfQorCisJCWVudHJ5ID0gbmV4dDsKKwl9CisK
Kwlmb3IgKGVudHJ5ID0gRklSU1RfRU5UUlkoYnApOyAhSVNfTEFTVF9FTlRSWShlbnRyeSk7CisJ
ICAgIGVudHJ5ID0gRVhUQVRUUl9ORVhUKGVudHJ5KSkgeworCQlpZiAoZXh0Ml9leHRhdHRyX2lu
ZGV4X3RvX2JzZChlbnRyeS0+ZV9uYW1lX2luZGV4KSAhPSBhdHRybmFtZXNwYWNlKQorCQkJY29u
dGludWU7CisKKwkJaWYgKHVpbyA9PSBOVUxMKSB7CisJCQkqc2l6ZSArPSBlbnRyeS0+ZV9uYW1l
X2xlbiArIDE7CisJCX0KKwkJZWxzZSB7CisJCQljaGFyKiBhdHRyX25hbWUgPSBtYWxsb2MoZW50
cnktPmVfbmFtZV9sZW4gKyAxLCBNX1RFTVAsIE1fV0FJVE9LKTsKKwkJCWF0dHJfbmFtZVswXSA9
IGVudHJ5LT5lX25hbWVfbGVuOworCQkJbWVtY3B5KCZhdHRyX25hbWVbMV0sIGVudHJ5LT5lX25h
bWUsIGVudHJ5LT5lX25hbWVfbGVuKTsKKwkJCWVycm9yID0gdWlvbW92ZShhdHRyX25hbWUsIGVu
dHJ5LT5lX25hbWVfbGVuICsgMSwgdWlvKTsKKwkJCWZyZWUoYXR0cl9uYW1lLCBNX1RFTVApOwor
CQl9CisJfQorCisJYnJlbHNlKGJwKTsKKworCXJldHVybiAoMCk7Cit9CisKK2ludAorZXh0Ml9s
aXN0ZXh0YXR0cihzdHJ1Y3Qgdm9wX2xpc3RleHRhdHRyX2FyZ3MgKmFwKQoreworCXN0cnVjdCBp
bm9kZSAqaXA7CisJc3RydWN0IG1fZXh0MmZzICpmczsKKwlpbnQgZXJyb3I7CisKKwlpcCA9IFZU
T0koYXAtPmFfdnApOworCWZzID0gaXAtPmlfZTJmczsKKworCWlmICghRVhUMl9IQVNfQ09NUEFU
X0ZFQVRVUkUoaXAtPmlfZTJmcywgRVhUMkZfQ09NUEFUX0VYVF9BVFRSKSkKKwkJcmV0dXJuIChF
T1BOT1RTVVBQKTsKKworCWlmIChhcC0+YV92cC0+dl90eXBlID09IFZDSFIgfHwgYXAtPmFfdnAt
PnZfdHlwZSA9PSBWQkxLKQorCQlyZXR1cm4gKEVPUE5PVFNVUFApOworCisJZXJyb3IgPSBleHRh
dHRyX2NoZWNrX2NyZWQoYXAtPmFfdnAsIGFwLT5hX2F0dHJuYW1lc3BhY2UsCisJICAgIGFwLT5h
X2NyZWQsIGFwLT5hX3RkLCBWUkVBRCk7CisJaWYgKGVycm9yKQorCQlyZXR1cm4gKGVycm9yKTsK
KworCWlmIChhcC0+YV9zaXplICE9IE5VTEwpCisJCSphcC0+YV9zaXplID0gMDsKKworCWlmIChF
WFQyX0lOT0RFX1NJWkUoZnMpICE9IEUyRlNfUkVWMF9JTk9ERV9TSVpFKQorCQllcnJvciA9IGV4
dDJfZXh0YXR0cl9pbm9kZV9saXN0KGlwLCBhcC0+YV9hdHRybmFtZXNwYWNlLAorCQkgICAgYXAt
PmFfdWlvLCBhcC0+YV9zaXplKTsKKworCWlmKGVycm9yKQorCQlyZXR1cm4gKGVycm9yKTsKKwor
CWlmKGlwLT5pX2ZhY2wpCisJCWVycm9yID0gZXh0Ml9leHRhdHRyX2Jsb2NrX2xpc3QoaXAsIGFw
LT5hX2F0dHJuYW1lc3BhY2UsCisJCSAgICBhcC0+YV91aW8sIGFwLT5hX3NpemUpOworCisJcmV0
dXJuIChlcnJvcik7Cit9CisKK3N0YXRpYyBpbnQKK2V4dDJfZXh0YXR0cl9pbm9kZV9nZXQoc3Ry
dWN0IGlub2RlICppcCwgaW50IGF0dHJuYW1lc3BhY2UsCisgICAgY29uc3QgY2hhciAqbmFtZSwg
c3RydWN0IHVpbyAqdWlvLCBzaXplX3QgKnNpemUpCit7CisJc3RydWN0IG1fZXh0MmZzICpmczsK
KwlzdHJ1Y3QgYnVmICpicDsKKwlzdHJ1Y3QgZXh0MmZzX2V4dGF0dHJfZGlub2RlX2hlYWRlciAq
aGVhZGVyOworCXN0cnVjdCBleHQyZnNfZXh0YXR0cl9lbnRyeSAqZW50cnk7CisJc3RydWN0IGV4
dDJmc19leHRhdHRyX2VudHJ5ICpuZXh0OworCWNoYXIgKmVuZDsKKwlpbnQgZXJyb3I7CisKKwlm
cyA9IGlwLT5pX2UyZnM7CisKKwlpZiAoKGVycm9yID0gYnJlYWQoaXAtPmlfZGV2dnAsCisJICAg
IGZzYnRvZGIoZnMsIGlub190b19mc2JhKGZzLCBpcC0+aV9udW1iZXIpKSwKKwkgICAgKGludClm
cy0+ZTJmc19ic2l6ZSwgTk9DUkVELCAmYnApKSAhPSAwKSB7CisJCWJyZWxzZShicCk7CisJCXJl
dHVybiAoZXJyb3IpOworCX0KKworCXN0cnVjdCBleHQyZnNfZGlub2RlICpkaW5vZGUgPSAoc3Ry
dWN0IGV4dDJmc19kaW5vZGUgKikKKwkgICAgKChjaGFyICopYnAtPmJfZGF0YSArCisJICAgIEVY
VDJfSU5PREVfU0laRShmcykgKiBpbm9fdG9fZnNibyhmcywgaXAtPmlfbnVtYmVyKSk7CisKKwkv
KiBDaGVjayBhdHRyaWJ1dGVzIG1hZ2ljIHZhbHVlICovCisJaGVhZGVyID0gKHN0cnVjdCBleHQy
ZnNfZXh0YXR0cl9kaW5vZGVfaGVhZGVyKikoKGNoYXIgKilkaW5vZGUgKworCSAgICBFMkZTX1JF
VjBfSU5PREVfU0laRSArIGRpbm9kZS0+ZTJkaV9leHRyYV9pc2l6ZSk7CisKKwlpZiAoaGVhZGVy
LT5oX21hZ2ljICE9IEVYVEFUVFJfTUFHSUMpIHsKKwkJYnJlbHNlKGJwKTsKKwkJcmV0dXJuICgw
KTsKKwl9CisKKwkvKiBDaGVjayBhdHRyaWJ1dGVzIGludGVncml0eSAqLworCWVudHJ5ID0gSUZJ
UlNUKGhlYWRlcik7CisJZW5kID0gKGNoYXIqKWRpbm9kZSArIEVYVDJfSU5PREVfU0laRShmcyk7
CisJd2hpbGUgKCFJU19MQVNUX0VOVFJZKGVudHJ5KSkgeworCQluZXh0ID0gRVhUQVRUUl9ORVhU
KGVudHJ5KTsKKwkJaWYgKChjaGFyICopbmV4dCA+PSBlbmQpIHsKKwkJCWJyZWxzZShicCk7CisJ
CQlyZXR1cm4gKEVJTyk7CisJCX0KKworCQllbnRyeSA9IG5leHQ7CisJfQorCisJZm9yIChlbnRy
eSA9IElGSVJTVChoZWFkZXIpOyAhSVNfTEFTVF9FTlRSWShlbnRyeSk7CisJICAgIGVudHJ5ID0g
RVhUQVRUUl9ORVhUKGVudHJ5KSkgeworCQlpZiAoZXh0Ml9leHRhdHRyX2luZGV4X3RvX2JzZChl
bnRyeS0+ZV9uYW1lX2luZGV4KSAhPSBhdHRybmFtZXNwYWNlKQorCQkJY29udGludWU7CisKKwkJ
aWYgKHN0cmxlbihuYW1lKSA9PSBlbnRyeS0+ZV9uYW1lX2xlbiAmJiAKKwkJICAgIDAgPT0gc3Ry
bmNtcChlbnRyeS0+ZV9uYW1lLCBuYW1lLCBlbnRyeS0+ZV9uYW1lX2xlbikpIHsKKwkJCWlmICh1
aW8gPT0gTlVMTCkgeworCQkJCSpzaXplICs9IGVudHJ5LT5lX3ZhbHVlX3NpemU7CisJCQl9CisJ
CQllbHNlIHsKKwkJCQllcnJvciA9IHVpb21vdmUoKChjaGFyKilJRklSU1QoaGVhZGVyKSkgKyBl
bnRyeS0+ZV92YWx1ZV9vZmZzLAorCQkJCSAgICBlbnRyeS0+ZV92YWx1ZV9zaXplLCB1aW8pOwor
CQkJCWlmIChlcnJvcikgeworCQkJCQlicmVsc2UoYnApOworCQkJCQlyZXR1cm4gKGVycm9yKTsK
KwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwlicmVsc2UoYnApOworCisJcmV0dXJuICgwKTsKK30K
Kworc3RhdGljIGludAorZXh0Ml9leHRhdHRyX2Jsb2NrX2dldChzdHJ1Y3QgaW5vZGUgKmlwLCBp
bnQgYXR0cm5hbWVzcGFjZSwKKyAgICBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgdWlvICp1aW8s
IHNpemVfdCAqc2l6ZSkKK3sKKwlzdHJ1Y3QgbV9leHQyZnMgKmZzOworCXN0cnVjdCBidWYgKmJw
OworCXN0cnVjdCBleHQyZnNfZXh0YXR0cl9oZWFkZXIqIGhlYWRlcjsKKwlzdHJ1Y3QgZXh0MmZz
X2V4dGF0dHJfZW50cnkgKmVudHJ5OworCXN0cnVjdCBleHQyZnNfZXh0YXR0cl9lbnRyeSAqbmV4
dDsKKwljaGFyICplbmQ7CisJaW50IGVycm9yOworCisJZnMgPSBpcC0+aV9lMmZzOworCisJZXJy
b3IgPSBicmVhZChpcC0+aV9kZXZ2cCwgZnNidG9kYihmcywgaXAtPmlfZmFjbCksCisJICAgIGZz
LT5lMmZzX2JzaXplLCBOT0NSRUQsICZicCk7CisJaWYgKGVycm9yKSB7CisJCWJyZWxzZShicCk7
CisJCXJldHVybiAoZXJyb3IpOworCX0KKworCS8qIENoZWNrIGF0dHJpYnV0ZXMgbWFnaWMgdmFs
dWUgKi8KKwloZWFkZXIgPSBIRFIoYnApOworCWlmIChoZWFkZXItPmhfbWFnaWMgIT0gRVhUQVRU
Ul9NQUdJQyB8fCBoZWFkZXItPmhfYmxvY2tzICE9IDEpIHsKKwkJYnJlbHNlKGJwKTsKKwkJcmV0
dXJuIChFSU5WQUwpOworCX0KKworCS8qIENoZWNrIGF0dHJpYnV0ZXMgaW50ZWdyaXR5ICovCisJ
ZW5kID0gYnAtPmJfZGF0YSArIGJwLT5iX2J1ZnNpemU7CisJZW50cnkgPSBGSVJTVF9FTlRSWShi
cCk7CisJd2hpbGUgKCFJU19MQVNUX0VOVFJZKGVudHJ5KSkgeworCQluZXh0ID0gRVhUQVRUUl9O
RVhUKGVudHJ5KTsKKwkJaWYgKChjaGFyICopbmV4dCA+PSBlbmQpIHsKKwkJCWJyZWxzZShicCk7
CisJCQlyZXR1cm4gKEVJTyk7CisJCX0KKworCQllbnRyeSA9IG5leHQ7CisJfQorCisJZm9yIChl
bnRyeSA9IEZJUlNUX0VOVFJZKGJwKTsgIUlTX0xBU1RfRU5UUlkoZW50cnkpOworCSAgICBlbnRy
eSA9IEVYVEFUVFJfTkVYVChlbnRyeSkpIHsKKwkJaWYgKGV4dDJfZXh0YXR0cl9pbmRleF90b19i
c2QoZW50cnktPmVfbmFtZV9pbmRleCkgIT0gYXR0cm5hbWVzcGFjZSkKKwkJCWNvbnRpbnVlOwor
CisJCWlmIChzdHJsZW4obmFtZSkgPT0gZW50cnktPmVfbmFtZV9sZW4gJiYgCisJCSAgICAwID09
IHN0cm5jbXAoZW50cnktPmVfbmFtZSwgbmFtZSwgZW50cnktPmVfbmFtZV9sZW4pKSB7CisJCQlp
ZiAodWlvID09IE5VTEwpIHsKKwkJCQkqc2l6ZSArPSBlbnRyeS0+ZV92YWx1ZV9zaXplOworCQkJ
fQorCQkJZWxzZSB7CisJCQkJZXJyb3IgPSB1aW9tb3ZlKGJwLT5iX2RhdGEgKyBlbnRyeS0+ZV92
YWx1ZV9vZmZzLAorCQkJCSAgICBlbnRyeS0+ZV92YWx1ZV9zaXplLCB1aW8pOworCQkJCWlmIChl
cnJvcikgeworCQkJCQlicmVsc2UoYnApOworCQkJCQlyZXR1cm4gKGVycm9yKTsKKwkJCQl9CisJ
CQl9CisJCX0KKwl9CisKKwlicmVsc2UoYnApOworCisJcmV0dXJuICgwKTsKK30KKworaW50Citl
eHQyX2dldGV4dGF0dHIoc3RydWN0IHZvcF9nZXRleHRhdHRyX2FyZ3MgKmFwKQoreworCXN0cnVj
dCBpbm9kZSAqaXA7CisJc3RydWN0IG1fZXh0MmZzICpmczsKKwlpbnQgZXJyb3I7CisKKwlpcCA9
IFZUT0koYXAtPmFfdnApOworCWZzID0gaXAtPmlfZTJmczsKKworCWlmICghRVhUMl9IQVNfQ09N
UEFUX0ZFQVRVUkUoaXAtPmlfZTJmcywgRVhUMkZfQ09NUEFUX0VYVF9BVFRSKSkKKwkJcmV0dXJu
IChFT1BOT1RTVVBQKTsKKworCWlmIChhcC0+YV92cC0+dl90eXBlID09IFZDSFIgfHwgYXAtPmFf
dnAtPnZfdHlwZSA9PSBWQkxLKQorCQlyZXR1cm4gKEVPUE5PVFNVUFApOworCisJZXJyb3IgPSBl
eHRhdHRyX2NoZWNrX2NyZWQoYXAtPmFfdnAsIGFwLT5hX2F0dHJuYW1lc3BhY2UsCisJICAgIGFw
LT5hX2NyZWQsIGFwLT5hX3RkLCBWUkVBRCk7CisJaWYgKGVycm9yKQorCQlyZXR1cm4gKGVycm9y
KTsKKworCWlmIChhcC0+YV9zaXplICE9IE5VTEwpCisJCSphcC0+YV9zaXplID0gMDsKKworCWlm
IChFWFQyX0lOT0RFX1NJWkUoZnMpICE9IEUyRlNfUkVWMF9JTk9ERV9TSVpFKQorCQllcnJvciA9
IGV4dDJfZXh0YXR0cl9pbm9kZV9nZXQoaXAsIGFwLT5hX2F0dHJuYW1lc3BhY2UsCisJCSAgICBh
cC0+YV9uYW1lLCBhcC0+YV91aW8sIGFwLT5hX3NpemUpOworCisJaWYgKGVycm9yKQorCQlyZXR1
cm4gKGVycm9yKTsKKworCWlmIChpcC0+aV9mYWNsKQorCQllcnJvciA9IGV4dDJfZXh0YXR0cl9i
bG9ja19nZXQoaXAsIGFwLT5hX2F0dHJuYW1lc3BhY2UsCisJCSAgICBhcC0+YV9uYW1lLCBhcC0+
YV91aW8sIGFwLT5hX3NpemUpOworCisJcmV0dXJuIChlcnJvcik7Cit9CmRpZmYgLS1naXQgYS9z
eXMvZnMvZXh0MmZzL2V4dDJfZXh0YXR0ci5oIGIvc3lzL2ZzL2V4dDJmcy9leHQyX2V4dGF0dHIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MmNiMTI1ZWJiMmJiY2IzYjk1NGI2NjczOThlNTJhOGI5NDliMjMyCi0t
LSAvZGV2L251bGwKKysrIGIvc3lzL2ZzL2V4dDJmcy9leHQyX2V4dGF0dHIuaApAQCAtMCwwICsx
LDEwMiBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDE5OTEsIDE5OTMsIDE5OTQKKyAqCVRoZSBS
ZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBu
b3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICog
ICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisg
KiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
CisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqCisgKglAKCMpdWZzX2V4dGVy
bi5oCTguMTAgKEJlcmtlbGV5KSA1LzE0Lzk1CisgKiAkRnJlZUJTRCQKKyAqLworCisjaWZuZGVm
IF9GU19FWFQyRlNfRVhUMl9FWFRBUlRUUl9IXworI2RlZmluZQlfRlNfRVhUMkZTX0VYVDJfRVhU
QVJUVFJfSF8KKworLyogTGludXggeGF0dHIgbmFtZSBpbmRleGVzICovCisjZGVmaW5lCUVYVDRf
WEFUVFJfSU5ERVhfVVNFUgkJCQkxCisjZGVmaW5lCUVYVDRfWEFUVFJfSU5ERVhfUE9TSVhfQUNM
X0FDQ0VTUwkyCisjZGVmaW5lCUVYVDRfWEFUVFJfSU5ERVhfUE9TSVhfQUNMX0RFRkFVTFQJMwor
I2RlZmluZQlFWFQ0X1hBVFRSX0lOREVYX1RSVVNURUQJCQk0CisjZGVmaW5lCUVYVDRfWEFUVFJf
SU5ERVhfTFVTVFJFCQkJCTUKKyNkZWZpbmUJRVhUNF9YQVRUUl9JTkRFWF9TRUNVUklUWQkJCTYK
KyNkZWZpbmUJRVhUNF9YQVRUUl9JTkRFWF9TWVNURU0JCQkJNworI2RlZmluZQlFWFQ0X1hBVFRS
X0lOREVYX1JJQ0hBQ0wJCQk4CisjZGVmaW5lCUVYVDRfWEFUVFJfSU5ERVhfRU5DUllQVElPTgkJ
CTkKKworLyogTWFnaWMgdmFsdWUgaW4gYXR0cmlidXRlIGJsb2NrcyAqLworI2RlZmluZSBFWFRB
VFRSX01BR0lDIDB4RUEwMjAwMDAKKworLyogTWF4aW11bSBudW1iZXIgb2YgcmVmZXJlbmNlcyB0
byBvbmUgYXR0cmlidXRlIGJsb2NrICovCisjZGVmaW5lIEVYVEFUVFJfUkVGQ09VTlRfTUFYIDEw
MjQKKworc3RydWN0IGV4dDJmc19leHRhdHRyX2hlYWRlciB7CisJaW50MzJfdAloX21hZ2ljOwkv
KiBtYWdpYyBudW1iZXIgZm9yIGlkZW50aWZpY2F0aW9uICovCisJaW50MzJfdAloX3JlZmNvdW50
OwkvKiByZWZlcmVuY2UgY291bnQgKi8KKwlpbnQzMl90CWhfYmxvY2tzOwkvKiBudW1iZXIgb2Yg
ZGlzayBibG9ja3MgdXNlZCAqLworCWludDMyX3QJaF9oYXNoOwkJLyogaGFzaCB2YWx1ZSBvZiBh
bGwgYXR0cmlidXRlcyAqLworCXVpbnQzMl90CWhfcmVzZXJ2ZWRbNF07CS8qIHplcm8gcmlnaHQg
bm93ICovCit9OworCitzdHJ1Y3QgZXh0MmZzX2V4dGF0dHJfZGlub2RlX2hlYWRlciB7CisJaW50
MzJfdAloX21hZ2ljOwkvKiBtYWdpYyBudW1iZXIgZm9yIGlkZW50aWZpY2F0aW9uICovCit9Owor
CitzdHJ1Y3QgZXh0MmZzX2V4dGF0dHJfZW50cnkgeworCXVpbnQ4X3QJZV9uYW1lX2xlbjsJCQkv
KiBsZW5ndGggb2YgbmFtZSAqLworCXVpbnQ4X3QJZV9uYW1lX2luZGV4OwkJLyogYXR0cmlidXRl
IG5hbWUgaW5kZXggKi8KKwl1aW50MTZfdAllX3ZhbHVlX29mZnM7CS8qIG9mZnNldCBpbiBkaXNr
IGJsb2NrIG9mIHZhbHVlICovCisJdWludDMyX3QJZV92YWx1ZV9ibG9jazsJLyogZGlzayBibG9j
ayBhdHRyaWJ1dGUgaXMgc3RvcmVkIG9uIChuL2kpICovCisJdWludDMyX3QJZV92YWx1ZV9zaXpl
OwkvKiBzaXplIG9mIGF0dHJpYnV0ZSB2YWx1ZSAqLworCXVpbnQzMl90CWVfaGFzaDsJCQkvKiBo
YXNoIHZhbHVlIG9mIG5hbWUgYW5kIHZhbHVlICovCisJY2hhcgllX25hbWVbMF07CQkJLyogYXR0
cmlidXRlIG5hbWUgKi8KK307CisKKyNkZWZpbmUgSUhEUihpbm9kZSwgcmF3X2lub2RlKSBcCisJ
KChzdHJ1Y3QgZXh0NF94YXR0cl9pYm9keV9oZWFkZXIgKikgXAorCSAgICAoKHZvaWQgKilyYXdf
aW5vZGUgKyBcCisJICAgIEVYVDRfR09PRF9PTERfSU5PREVfU0laRSArIFwKKwkgICAgRVhUNF9J
KGlub2RlKS0+aV9leHRyYV9pc2l6ZSkpCisKKyNkZWZpbmUgSUZJUlNUKGhkcikgKChzdHJ1Y3Qg
ZXh0MmZzX2V4dGF0dHJfZW50cnkgKikoKGhkcikrMSkpCisKKyNkZWZpbmUgSERSKGJoKSAoKHN0
cnVjdCBleHQyZnNfZXh0YXR0cl9oZWFkZXIgKikoKGJoKS0+Yl9kYXRhKSkKKyNkZWZpbmUgRU5U
UlkocHRyKSAoKHN0cnVjdCBleHQyZnNfZXh0YXR0cl9lbnRyeSAqKShwdHIpKQorI2RlZmluZSBG
SVJTVF9FTlRSWShiaCkgRU5UUlkoSERSKGJoKSsxKQorI2RlZmluZSBJU19MQVNUX0VOVFJZKGVu
dHJ5KSAoKih1aW50MzJfdCAqKShlbnRyeSkgPT0gMCkKKworI2RlZmluZSBFWFRBVFRSX1BBRF9C
SVRTCQkyCisjZGVmaW5lIEVYVEFUVFJfUEFECQkoMTw8RVhUQVRUUl9QQURfQklUUykKKyNkZWZp
bmUgRVhUQVRUUl9ST1VORAkJKEVYVEFUVFJfUEFELTEpCisjZGVmaW5lIEVYVEFUVFJfTEVOKG5h
bWVfbGVuKSBcCisJKCgobmFtZV9sZW4pICsgRVhUQVRUUl9ST1VORCArIFwKKwkgICAgc2l6ZW9m
KHN0cnVjdCBleHQyZnNfZXh0YXR0cl9lbnRyeSkpICYgfkVYVEFUVFJfUk9VTkQpCisKKyNkZWZp
bmUgRVhUQVRUUl9ORVhUKGVudHJ5KSBcCisJKCAoc3RydWN0IGV4dDJmc19leHRhdHRyX2VudHJ5
ICopKCBcCisJICAgIChjaGFyICopKGVudHJ5KSArIEVYVEFUVFJfTEVOKChlbnRyeSktPmVfbmFt
ZV9sZW4pKSApCisKK2ludCBleHQyX2xpc3RleHRhdHRyKHN0cnVjdCB2b3BfbGlzdGV4dGF0dHJf
YXJncyAqYXApOworaW50IGV4dDJfZ2V0ZXh0YXR0cihzdHJ1Y3Qgdm9wX2dldGV4dGF0dHJfYXJn
cyAqYXApOworCisjZW5kaWYJLyogIV9GU19FWFQyRlNfRVhUMl9FWFRBUlRUUl9IXyAqLwpkaWZm
IC0tZ2l0IGEvc3lzL2ZzL2V4dDJmcy9leHQyX2lub2RlX2Nudi5jIGIvc3lzL2ZzL2V4dDJmcy9l
eHQyX2lub2RlX2Nudi5jCmluZGV4IDk4OGYwZjg1YTkxMmRiMGYwYWIwY2JkMjY2NGY3MmI5NmQ2
MWYzN2MuLjA4NDVjOWFhMmY5ZjZiOTQyNTU3MTcxY2NiYzRkNGUyYTVmOGFiOTQgMTAwNjQ0Ci0t
LSBhL3N5cy9mcy9leHQyZnMvZXh0Ml9pbm9kZV9jbnYuYworKysgYi9zeXMvZnMvZXh0MmZzL2V4
dDJfaW5vZGVfY252LmMKQEAgLTEyMiw2ICsxMjIsMTAgQEAgZXh0Ml9laTJpKHN0cnVjdCBleHQy
ZnNfZGlub2RlICplaSwgc3RydWN0IGlub2RlICppcCkKIAlpcC0+aV9nZW4gPSBlaS0+ZTJkaV9n
ZW47CiAJaXAtPmlfdWlkID0gZWktPmUyZGlfdWlkOwogCWlwLT5pX2dpZCA9IGVpLT5lMmRpX2dp
ZDsKKwlpcC0+aV9mYWNsID0gZWktPmUyZGlfZmFjbDsKKwlpZiAoRVhUMl9IQVNfSU5DT01QQVRf
RkVBVFVSRShpcC0+aV9lMmZzLCBFWFQyRl9JTkNPTVBBVF82NEJJVCkpCisJCWlwLT5pX2ZhY2wg
fD0gKCgodWludDY0X3QpZWktPmUyZGlfZmFjbF9oaWdoKSA8PCAzMik7CisKIAkvKiBYWFggdXNl
IG1lbWNweSAqLwogCWZvciAoaSA9IDA7IGkgPCBFWFQyX05EQUREUjsgaSsrKQogCQlpcC0+aV9k
YltpXSA9IGVpLT5lMmRpX2Jsb2Nrc1tpXTsKZGlmZiAtLWdpdCBhL3N5cy9mcy9leHQyZnMvZXh0
Ml92bm9wcy5jIGIvc3lzL2ZzL2V4dDJmcy9leHQyX3Zub3BzLmMKaW5kZXggNzRhYjRmMDUzZWI5
Mjc2MmQzNzdiZDdiMWQ2M2Y5NmQ0ZGVhYzA0Zi4uNjZjM2M2YzJkMTQ5Nzk5YmU5NmU4OTM5ZTlm
NDg0ZDAwNTA0MGNlMiAxMDA2NDQKLS0tIGEvc3lzL2ZzL2V4dDJmcy9leHQyX3Zub3BzLmMKKysr
IGIvc3lzL2ZzL2V4dDJmcy9leHQyX3Zub3BzLmMKQEAgLTg0LDYgKzg0LDcgQEAKICNpbmNsdWRl
IDxmcy9leHQyZnMvZXh0Ml9kaW5vZGUuaD4KICNpbmNsdWRlIDxmcy9leHQyZnMvZXh0Ml9kaXIu
aD4KICNpbmNsdWRlIDxmcy9leHQyZnMvZXh0Ml9tb3VudC5oPgorI2luY2x1ZGUgPGZzL2V4dDJm
cy9leHQyX2V4dGF0dHIuaD4KIAogc3RhdGljIGludCBleHQyX21ha2Vpbm9kZShpbnQgbW9kZSwg
c3RydWN0IHZub2RlICosIHN0cnVjdCB2bm9kZSAqKiwgc3RydWN0IGNvbXBvbmVudG5hbWUgKik7
CiBzdGF0aWMgdm9pZCBleHQyX2l0aW1lc19sb2NrZWQoc3RydWN0IHZub2RlICopOwpAQCAtMTUz
LDYgKzE1NCw4IEBAIHN0cnVjdCB2b3BfdmVjdG9yIGV4dDJfdm5vZGVvcHMgPSB7CiAJLnZvcF9z
eW1saW5rID0JCWV4dDJfc3ltbGluaywKIAkudm9wX3dyaXRlID0JCWV4dDJfd3JpdGUsCiAJLnZv
cF92cHRvZmggPQkJZXh0Ml92cHRvZmgsCisJLnZvcF9saXN0ZXh0YXR0ciA9CWV4dDJfbGlzdGV4
dGF0dHIsCisJLnZvcF9nZXRleHRhdHRyID0JZXh0Ml9nZXRleHRhdHRyLAogfTsKIAogc3RydWN0
IHZvcF92ZWN0b3IgZXh0Ml9maWZvb3BzID0gewpkaWZmIC0tZ2l0IGEvc3lzL2ZzL2V4dDJmcy9l
eHQyZnMuaCBiL3N5cy9mcy9leHQyZnMvZXh0MmZzLmgKaW5kZXggMGJhOGE3N2EyYmQ1ODQ0NjIz
NTU1MjNmNGZjNmRlNDk4ZWViMzA5MC4uNzI1ZTRhZmU2NWJlM2QzZTE4YTUxNzdjNTE1NjVkZmY1
ZGJmMzMwYyAxMDA2NDQKLS0tIGEvc3lzL2ZzL2V4dDJmcy9leHQyZnMuaAorKysgYi9zeXMvZnMv
ZXh0MmZzL2V4dDJmcy5oCkBAIC0yMDQsNiArMjA0LDcgQEAgc3RydWN0IGNzdW0gewogICovCiAj
ZGVmaW5lCUVYVDJGX0NPTVBBVF9QUkVBTExPQwkJMHgwMDAxCiAjZGVmaW5lCUVYVDJGX0NPTVBB
VF9IQVNKT1VSTkFMCQkweDAwMDQKKyNkZWZpbmUJRVhUMkZfQ09NUEFUX0VYVF9BVFRSCQkweDAw
MDgKICNkZWZpbmUJRVhUMkZfQ09NUEFUX1JFU0laRQkJMHgwMDEwCiAjZGVmaW5lCUVYVDJGX0NP
TVBBVF9ESVJIQVNISU5ERVgJMHgwMDIwCiAjZGVmaW5lCUVYVDJGX0NPTVBBVF9TUEFSU0VTVVBF
UjIJMHgwMjAwCmRpZmYgLS1naXQgYS9zeXMvZnMvZXh0MmZzL2lub2RlLmggYi9zeXMvZnMvZXh0
MmZzL2lub2RlLmgKaW5kZXggNGY2NGMzNWYyYTE4NjkyZDg1MmE5OTZjODYyMDA3NWFkNjExYTZm
OS4uNmY2N2M3Yzk3OGE4MzJmMmYyNDk4OWU3ZTQ0NDc1YTE2MjE4N2ZkMCAxMDA2NDQKLS0tIGEv
c3lzL2ZzL2V4dDJmcy9pbm9kZS5oCisrKyBiL3N5cy9mcy9leHQyZnMvaW5vZGUuaApAQCAtMTA1
LDYgKzEwNSw3IEBAIHN0cnVjdCBpbm9kZSB7CiAJaW50MzJfdAkJaV9jdGltZW5zZWM7CS8qIExh
c3QgaW5vZGUgY2hhbmdlIHRpbWUuICovCiAJaW50MzJfdAkJaV9iaXJ0aG5zZWM7CS8qIElub2Rl
IGNyZWF0aW9uIHRpbWUuICovCiAJdWludDMyX3QJaV9nZW47CQkvKiBHZW5lcmF0aW9uIG51bWJl
ci4gKi8KKwl1aW50NjRfdAlpX2ZhY2w7CQkvKiBFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgbnVt
YmVyICovCiAJdWludDMyX3QJaV9mbGFnczsJLyogU3RhdHVzIGZsYWdzIChjaGZsYWdzKS4gKi8K
IAl1aW50MzJfdAlpX2RiW0VYVDJfTkRBRERSXTsgLyogRGlyZWN0IGRpc2sgYmxvY2tzLiAqLwog
CXVpbnQzMl90CWlfaWJbRVhUMl9OSUFERFJdOyAvKiBJbmRpcmVjdCBkaXNrIGJsb2Nrcy4gKi8K
ZGlmZiAtLWdpdCBhL3N5cy9tb2R1bGVzL2V4dDJmcy9NYWtlZmlsZSBiL3N5cy9tb2R1bGVzL2V4
dDJmcy9NYWtlZmlsZQppbmRleCA3MDgxNGJmYjEyMjNjNWY1MjJiNGE3YTAyZGY3NWQ5OWUzMTVm
MjU5Li4wYzMxMGNhYmYzYmQxZmQ2MmM3MTFjYjdjYzY2NzU3Zjg4YTc1ZWMxIDEwMDY0NAotLS0g
YS9zeXMvbW9kdWxlcy9leHQyZnMvTWFrZWZpbGUKKysrIGIvc3lzL21vZHVsZXMvZXh0MmZzL01h
a2VmaWxlCkBAIC01LDYgKzUsNiBAQCBLTU9EPQlleHQyZnMKIFNSQ1M9CW9wdF9kZGIuaCBvcHRf
ZGlyZWN0aW8uaCBvcHRfcXVvdGEuaCBvcHRfc3VpZGRpci5oIHZub2RlX2lmLmggXAogCWV4dDJf
YWxsb2MuYyBleHQyX2JhbGxvYy5jIGV4dDJfYm1hcC5jIGV4dDJfZXh0ZW50cy5jIGV4dDJfaGFz
aC5jIFwKIAlleHQyX2h0cmVlLmMgZXh0Ml9pbm9kZS5jIGV4dDJfaW5vZGVfY252LmMgZXh0Ml9s
b29rdXAuYyBleHQyX3N1YnIuYyBcCi0JZXh0Ml92ZnNvcHMuYyBleHQyX3Zub3BzLmMKKwlleHQy
X2V4dGF0dHIuYyBleHQyX3Zmc29wcy5jIGV4dDJfdm5vcHMuYwogCiAuaW5jbHVkZSA8YnNkLmtt
b2QubWs+Ci0tIAoyLjEuNAoK
--94eb2c05dcdaab8210054b9e20be--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOEhZLuy4CNTP9Daz1zJhUP8=D_2Wv=2tWx3hx=cFBuMYjtsjw>