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>