Date: Mon, 16 Jan 2012 09:39:35 +0100 From: Monthadar Al Jaberi <monthadar@gmail.com> To: Bernhard Schmidt <bschmidt@freebsd.org> Cc: freebsd-wireless@freebsd.org Subject: Re: 11s mesh path setup problem Message-ID: <CA%2BsBSo%2BuYa-6w8VFBMTyhWFHCNezMH5HBHJONCRvWRy6QuaCbQ@mail.gmail.com> In-Reply-To: <201201112003.44891.bschmidt@freebsd.org> References: <CA%2BsBSoJWXD5S-zvxHR_=iwh26G0bd00trR=E-jCUBD03uMrU%2BQ@mail.gmail.com> <CAJ-VmomX2NK6p%2BckB6Gc40sz0PTx7cf7NznVLH1tTPvnhmHH6A@mail.gmail.com> <201201112003.44891.bschmidt@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--14dae934053783400c04b6a127c5 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Wed, Jan 11, 2012 at 8:03 PM, Bernhard Schmidt <bschmidt@freebsd.org> wr= ote: > On Wednesday 11 January 2012 18:23:29 Adrian Chadd wrote: >> Hi! >> >> I've just done a bit of a code review. Here are my comments: sorry for late answer here is a a better formated patch. >> >> * ether_sprintf() can't be implemented the way you've implemented it - >> it just won't work at all in a multithreaded, concurrent environment. >> We'll have to find an alternative way. >> >> Maybe something like: >> >> char * >> ether_sprintf2(const u_char *ap, char *buf, int len) >> { >> =A0 =A0 .. do things to buf, rather than the static buf. >> } >> >> Then maybe this'd work: >> >> char a[32], b[32]; >> IEEE80211_NOTE(..., ether_sprintf2(addr1, a, 32), ether_sprintf2(addr2, = a, 32)); >> >> does that make sense? > > Isn't there an example in net80211 with %D? > printf("%6D %6D", addr1, ":", addr2, ":"); > > The saner alternative is to call printf() multiple times, see ieee80211_d= ump_pkt() as an example. But that means we have to modify for example ieee80211_note_mac function? > > -- > Bernhard --=20 Monthadar Al Jaberi --14dae934053783400c04b6a127c5 Content-Type: text/x-patch; charset=US-ASCII; name="patch_11s_4_nodes_in_line_goodformated.patch" Content-Disposition: attachment; filename="patch_11s_4_nodes_in_line_goodformated.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gxh8r69p0 ZGlmZiAtLWdpdCBhL3N5cy9uZXQvaWZfZXRoZXJzdWJyLmMgYi9zeXMvbmV0L2lmX2V0aGVyc3Vi ci5jCmluZGV4IDllYWU2ODMuLjk3OWViZmQgMTAwNjQ0Ci0tLSBhL3N5cy9uZXQvaWZfZXRoZXJz dWJyLmMKKysrIGIvc3lzL25ldC9pZl9ldGhlcnN1YnIuYwpAQCAtOTY4LDkgKzk2OCwxMyBAQCBk aXNjYXJkOgogY2hhciAqCiBldGhlcl9zcHJpbnRmKGNvbnN0IHVfY2hhciAqYXApCiB7Ci0Jc3Rh dGljIGNoYXIgZXRoZXJidWZbMThdOwotCXNucHJpbnRmKGV0aGVyYnVmLCBzaXplb2YgKGV0aGVy YnVmKSwgIiU2RCIsIGFwLCAiOiIpOwotCXJldHVybiAoZXRoZXJidWYpOworCXN0YXRpYyBjaGFy IGV0aGVyYnVmWzJdWzE4XTsKKwlzdGF0aWMgaW50IGkgPSAwOworCWNoYXIgKmJ1ZjsKKwlzbnBy aW50ZihldGhlcmJ1ZltpXSwgc2l6ZW9mIChldGhlcmJ1ZlswXSksICIlNkQiLCBhcCwgIjoiKTsK KwlidWYgPSBldGhlcmJ1ZltpXTsKKwlpID0gKGkrMSklMjsKKwlyZXR1cm4gKGJ1Zik7CiB9CiAK IC8qCmRpZmYgLS1naXQgYS9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX2h3bXAuYyBiL3N5cy9uZXQ4 MDIxMS9pZWVlODAyMTFfaHdtcC5jCmluZGV4IDkzYTllNTUuLmRmYjc5NmQgMTAwNjQ0Ci0tLSBh L3N5cy9uZXQ4MDIxMS9pZWVlODAyMTFfaHdtcC5jCisrKyBiL3N5cy9uZXQ4MDIxMS9pZWVlODAy MTFfaHdtcC5jCkBAIC0zMywxNSArMzMsMTUgQEAgX19GQlNESUQoIiRGcmVlQlNEJCIpOwogCiAv KgogICogSUVFRSA4MDIuMTFzIEh5YnJpZCBXaXJlbGVzcyBNZXNoIFByb3RvY29sLCBIV01QLgot ICogCisgKgogICogQmFzZWQgb24gTWFyY2ggMjAwOSwgRDMuMCA4MDIuMTFzIGRyYWZ0IHNwZWMu CiAgKi8KICNpbmNsdWRlICJvcHRfaW5ldC5oIgogI2luY2x1ZGUgIm9wdF93bGFuLmgiCiAKICNp bmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNpbmNsdWRlIDxzeXMvc3lzdG0uaD4gCi0jaW5jbHVkZSA8 c3lzL21idWYuaD4gICAKKyNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KKyNpbmNsdWRlIDxzeXMvbWJ1 Zi5oPgogI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4KICNpbmNsdWRlIDxzeXMva2VybmVsLmg+CiAK QEAgLTEzOSw5ICsxMzksMTMgQEAgc3RhdGljIGNvbnN0IHVpbnQ4X3QJYnJvYWRjYXN0YWRkcltJ RUVFODAyMTFfQUREUl9MRU5dID0KIHR5cGVkZWYgdWludDMyX3QgaWVlZTgwMjExX2h3bXBfc2Vx OwogI2RlZmluZQlIV01QX1NFUV9MVChhLCBiKQkoKGludDMyX3QpKChhKS0oYikpIDwgMCkKICNk ZWZpbmUJSFdNUF9TRVFfTEVRKGEsIGIpCSgoaW50MzJfdCkoKGEpLShiKSkgPD0gMCkKKyNkZWZp bmUJSFdNUF9TRVFfRVEoYSwgYikJKChpbnQzMl90KSgoYSktKGIpKSA9PSAwKQogI2RlZmluZQlI V01QX1NFUV9HVChhLCBiKQkoKGludDMyX3QpKChhKS0oYikpID4gMCkKICNkZWZpbmUJSFdNUF9T RVFfR0VRKGEsIGIpCSgoaW50MzJfdCkoKGEpLShiKSkgPj0gMCkKIAorLyogVGhlIGxvbmdlciBv bmUgb2YgdGhlIGxpZmV0aW1lIHNob3VsZCBiZSBzdG9yZWQgYXMgbmV3IGxpZmV0aW1lICovCisj ZGVmaW5lIE1FU0hfUk9VVEVfTElGRVRJTUVfTUFYKGEsIGIpCShhID4gYiA/IGEgOiBiKQorCiAv KgogICogUHJpdmF0ZSBleHRlbnNpb24gb2YgaWVlZTgwMjExX21lc2hfcm91dGUuCiAgKi8KQEAg LTY3Nyw3ICs2ODEsOSBAQCBod21wX3JlY3ZfcHJlcShzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAs IHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJc3RydWN0IGllZWU4MDIxMV9tZXNoX3N0YXRl ICptcyA9IHZhcC0+aXZfbWVzaDsKIAlzdHJ1Y3QgaWVlZTgwMjExX21lc2hfcm91dGUgKnJ0ID0g TlVMTDsKIAlzdHJ1Y3QgaWVlZTgwMjExX21lc2hfcm91dGUgKnJ0b3JpZyA9IE5VTEw7Ci0Jc3Ry dWN0IGllZWU4MDIxMV9od21wX3JvdXRlICpocm9yaWc7CisJc3RydWN0IGllZWU4MDIxMV9tZXNo X3JvdXRlICpydHRhcmcgPSBOVUxMOworCXN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0ZSAqaHJv cmlnID0gTlVMTDsKKwlzdHJ1Y3QgaWVlZTgwMjExX2h3bXBfcm91dGUgKmhydGFyZyA9IE5VTEw7 CiAJc3RydWN0IGllZWU4MDIxMV9od21wX3N0YXRlICpocyA9IHZhcC0+aXZfaHdtcDsKIAlzdHJ1 Y3QgaWVlZTgwMjExX21lc2hwcmVwX2llIHByZXA7CiAKQEAgLTY5Miw0NiArNjk4LDk1IEBAIGh3 bXBfcmVjdl9wcmVxKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9u b2RlICpuaSwKIAkJcmV0dXJuOwogCiAJSUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNH X0hXTVAsIG5pLAotCSAgICAicmVjZWl2ZWQgUFJFUSwgc291cmNlICVzIiwgZXRoZXJfc3ByaW50 ZihwcmVxLT5wcmVxX29yaWdhZGRyKSk7CisJICAgICJyZWNlaXZlZCBQUkVRLCBvcmlnaW5hdG9y ICVzLCB0YXJnZXQgJXMiLAorCSAgICBldGhlcl9zcHJpbnRmKHByZXEtPnByZXFfb3JpZ2FkZHIp LCBldGhlcl9zcHJpbnRmKFBSRVFfVEFERFIoMCkpKTsKIAogCS8qCi0JICogQWNjZXB0YW5jZSBj cml0ZXJpYTogaWYgdGhlIFBSRVEgaXMgbm90IGZvciB1cyBhbmQKLQkgKiBmb3J3YXJkaW5nIGlz IGRpc2FibGVkLCBkaXNjYXJkIHRoaXMgUFJFUS4KKwkgKiBBY2NlcHRhbmNlIGNyaXRlcmlhOiBp ZiB0aGUgUFJFUSBpcyBub3QgZm9yIHVzIG9yIG5vdCBicm9hZGNhc3QKKwkgKiBBTkQgZm9yd2Fy ZGluZyBpcyBkaXNhYmxlZCwgZGlzY2FyZCB0aGlzIFBSRVEuCisJICogWFhYOiBuZWVkIHRvIGNo ZWNrIFBST1hZCiAJICovCi0JaWYgKCFJRUVFODAyMTFfQUREUl9FUSh2YXAtPml2X215YWRkciwg UFJFUV9UQUREUigwKSkgJiYKKwlpZiAoKCFJRUVFODAyMTFfQUREUl9FUSh2YXAtPml2X215YWRk ciwgUFJFUV9UQUREUigwKSkgfHwKKwkgICAgIUlFRUU4MDIxMV9JU19NVUxUSUNBU1QoUFJFUV9U QUREUigwKSkpICYmCiAJICAgICEobXMtPm1zX2ZsYWdzICYgSUVFRTgwMjExX01FU0hGTEFHU19G V0QpKSB7CiAJCUlFRUU4MDIxMV9ESVNDQVJEX01BQyh2YXAsIElFRUU4MDIxMV9NU0dfSFdNUCwK IAkJICAgIHByZXEtPnByZXFfb3JpZ2FkZHIsIE5VTEwsICIlcyIsICJub3QgYWNjZXB0aW5nIFBS RVEiKTsKIAkJcmV0dXJuOwogCX0KKwkvKgorCSAqIEFjY2VwdGFuY2UgY3JpdGVyaWE6IGlmIHVu aWNhc3QgYWRkcmVzc2VkIAorCSAqIEFORCBubyB2YWxpZCBmb3J3YXJkaW5nIGZvciBUYXJnZXQg b2YgUFJFUSwgZGlzY2FyZCB0aGlzIFBSRVEuCisJICovCisJcnR0YXJnID0gaWVlZTgwMjExX21l c2hfcnRfZmluZCh2YXAsIFBSRVFfVEFERFIoMCkpOworCWlmKHJ0dGFyZyAhPSBOVUxMKQorCQlo cnRhcmcgPSBJRUVFODAyMTFfTUVTSF9ST1VURV9QUklWKHJ0dGFyZywKKwkJICAgIHN0cnVjdCBp ZWVlODAyMTFfaHdtcF9yb3V0ZSk7CisJLyogQWRkcmVzcyBtb2RlOiB1Y2FzdCAqLworCWlmKChw cmVxLT5wcmVxX2ZsYWdzICYgSUVFRTgwMjExX01FU0hQUkVRX0ZMQUdTX0FNKSA9PSAwICYmCisJ ICAgIHJ0dGFyZyA9PSBOVUxMICYmCisJICAgICFJRUVFODAyMTFfQUREUl9FUSh2YXAtPml2X215 YWRkciwgUFJFUV9UQUREUigwKSkpIHsKKwkJSUVFRTgwMjExX0RJU0NBUkRfTUFDKHZhcCwgSUVF RTgwMjExX01TR19IV01QLAorCQkgICAgcHJlcS0+cHJlcV9vcmlnYWRkciwgTlVMTCwKKwkJICAg ICJ1bmljYXN0IGFkZHJlc3NlZCBQUkVRIG9mIHVua25vd24gdGFyZ2V0ICVzIiwKKwkJICAgIGV0 aGVyX3NwcmludGYoUFJFUV9UQUREUigwKSkpOworCQlyZXR1cm47CisJfQorCisJLyogUFJFUSBB Q0NFUFRFRCAqLworCiAJcnRvcmlnID0gaWVlZTgwMjExX21lc2hfcnRfZmluZCh2YXAsIHByZXEt PnByZXFfb3JpZ2FkZHIpOwotCWlmIChydG9yaWcgPT0gTlVMTCkKKwlpZiAocnRvcmlnID09IE5V TEwpIHsKIAkJcnRvcmlnID0gaWVlZTgwMjExX21lc2hfcnRfYWRkKHZhcCwgcHJlcS0+cHJlcV9v cmlnYWRkcik7CisJCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBuaSwK KwkJICAgICJhZGRpbmcgb3JpZ2luYXRvciAlcyIsCisJCSAgICBldGhlcl9zcHJpbnRmKHByZXEt PnByZXFfb3JpZ2FkZHIpKTsKKwl9CiAJaWYgKHJ0b3JpZyA9PSBOVUxMKSB7CiAJCS8qIFhYWCBz dGF0ICovCiAJCXJldHVybjsKIAl9CiAJaHJvcmlnID0gSUVFRTgwMjExX01FU0hfUk9VVEVfUFJJ VihydG9yaWcsIHN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0ZSk7Ci0JLyoKLQkgKiBTZXF1ZW5j ZSBudW1iZXIgdmFsaWRhdGlvbi4KKworCS8qIERhdGEgY3JlYXRpb24gYW5kIHVwZGF0ZSBvZiBm b3J3YXJkaW5nIGluZm9ybWF0aW9uCisJICogYWNjb3JkaW5nIHRvIFRhYmxlIDExQy04IGZvciBv cmlnaW5hdG9yIG1lc2ggU1RBLgogCSAqLwotCWlmIChIV01QX1NFUV9MRVEocHJlcS0+cHJlcV9p ZCwgaHJvcmlnLT5ocl9wcmVxaWQpICYmCi0JICAgIEhXTVBfU0VRX0xFUShwcmVxLT5wcmVxX29y aWdzZXEsIGhyb3JpZy0+aHJfc2VxKSkgeworCWlmKEhXTVBfU0VRX0dUKHByZXEtPnByZXFfb3Jp Z3NlcSwgaHJvcmlnLT5ocl9zZXEpIHx8CisJICAgIChIV01QX1NFUV9FUShwcmVxLT5wcmVxX29y aWdzZXEsIGhyb3JpZy0+aHJfc2VxKSAmJgorCSAgICBwcmVxLT5wcmVxX21ldHJpYyA8IHJ0b3Jp Zy0+cnRfbWV0cmljKSkgeworCQlocm9yaWctPmhyX3NlcSA9IHByZXEtPnByZXFfb3JpZ3NlcTsK KwkJSUVFRTgwMjExX0FERFJfQ09QWShydG9yaWctPnJ0X25leHRob3AsIHdoLT5pX2FkZHIyKTsK KwkJcnRvcmlnLT5ydF9tZXRyaWMgPSBwcmVxLT5wcmVxX21ldHJpYyArCisJCQltcy0+bXNfcG1l dHJpYy0+bXBtX21ldHJpYyhuaSk7CisJCXJ0b3JpZy0+cnRfbmhvcHMgID0gcHJlcS0+cHJlcV9o b3Bjb3VudCArIDE7CisJCXJ0b3JpZy0+cnRfbGlmZXRpbWUgID0gTUVTSF9ST1VURV9MSUZFVElN RV9NQVgoCisJCSAgICBwcmVxLT5wcmVxX2xpZmV0aW1lLCBydG9yaWctPnJ0X2xpZmV0aW1lKTsK KwkJLyogcGF0aCB0byBvcmlnIGlzIHZhbGlkIG5vdyAqLworCQlydG9yaWctPnJ0X2ZsYWdzIHw9 IElFRUU4MDIxMV9NRVNIUlRfRkxBR1NfVkFMSUQ7CisJfWVsc2UgaWYoaHJ0YXJnICE9IE5VTEwg JiYKKwkJSFdNUF9TRVFfRVEoaHJ0YXJnLT5ocl9zZXEsIFBSRVFfVFNFUSgwKSkgJiYKKwkJKHJ0 b3JpZy0+cnRfZmxhZ3MgJiBJRUVFODAyMTFfTUVTSFJUX0ZMQUdTX1ZBTElEKSA9PSAwKSB7CiAJ CUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBuaSwKLQkJICAgICJkaXNj YXJkIFBSRVEgZnJvbSAlcywgb2xkIHNlcSBubyAldSA8PSAldSIsCi0JCSAgICBldGhlcl9zcHJp bnRmKHByZXEtPnByZXFfb3JpZ2FkZHIpLAotCQkgICAgcHJlcS0+cHJlcV9vcmlnc2VxLCBocm9y aWctPmhyX3NlcSk7CisJCSAgICAicmVjZWl2ZWQgUFJFUSwgb3JpZ2luYXRvciAlcyIsICJ1bmtu b3duIik7CisJfWVsc2UgeworCQlJRUVFODAyMTFfRElTQ0FSRF9NQUModmFwLCBJRUVFODAyMTFf TVNHX0hXTVAsCisJCSAgICBwcmVxLT5wcmVxX29yaWdhZGRyLCBOVUxMLAorCQkgICAgIiVzLCBs YXN0IHNlZW4gb3JpZy5zZXEgJWQsIHByZXEgb3JpZy5zZXEgJWQiLAorCQkgICAgImRpc2NhcmRp bmcgUFJFUSIsIGhyb3JpZy0+aHJfc2VxLCBwcmVxLT5wcmVxX29yaWdzZXEpOwogCQlyZXR1cm47 CiAJfQotCWhyb3JpZy0+aHJfcHJlcWlkID0gcHJlcS0+cHJlcV9pZDsKLQlocm9yaWctPmhyX3Nl cSA9IHByZXEtPnByZXFfb3JpZ3NlcTsKKworCS8qCisJICogRm9yd2FyZGluZyBpbmZvcm1hdGlv biBmb3IgdHJhbnNtaXR0ZXIgbWVzaCBTVEEgCisJICogW09QVElPTkFMOiBpZiBtZXRyaWMgaW1w cm92ZWRdCisJICovCiAKIAkvKgogCSAqIENoZWNrIGlmIHRoZSBQUkVRIGlzIGFkZHJlc3NlZCB0 byB1cy4KIAkgKi8KIAlpZiAoSUVFRTgwMjExX0FERFJfRVEodmFwLT5pdl9teWFkZHIsIFBSRVFf VEFERFIoMCkpKSB7CiAJCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBu aSwKLQkJICAgICJyZXBseSB0byAlcyIsIGV0aGVyX3NwcmludGYocHJlcS0+cHJlcV9vcmlnYWRk cikpOworCQkgICAgInJlcGx5IFBSRVAsIG9yaWdpbmF0b3IgJXMiLAorCQkgICAgZXRoZXJfc3By aW50ZihwcmVxLT5wcmVxX29yaWdhZGRyKSk7CiAJCS8qCiAJCSAqIEJ1aWxkIGFuZCBzZW5kIGEg UFJFUCBmcmFtZS4KIAkJICovCkBAIC04MTksMjUgKzg3NCwyOSBAQCBod21wX3JlY3ZfcHJlcShz dHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJCQlp ZiAocHJlcS0+cHJlcV90dGwgPiAxICYmCiAJCQkgICAgcHJlcS0+cHJlcV9ob3Bjb3VudCA8IGhz LT5oc19tYXhob3BzKSB7CiAJCQkJSUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hX TVAsIG5pLAotCQkJCSAgICAiZm9yd2FyZCBQUkVRIGZyb20gJXMiLAotCQkJCSAgICBldGhlcl9z cHJpbnRmKHByZXEtPnByZXFfb3JpZ2FkZHIpKTsKKwkJCQkgICAgImZvcndhcmQgUFJFUSwgb3Jp Z2luYXRvciAlcywgdG8gJXMiLAorCQkJCSAgICBldGhlcl9zcHJpbnRmKHByZXEtPnByZXFfb3Jp Z2FkZHIpLAorCQkJCSAgICBldGhlcl9zcHJpbnRmKHJ0LT5ydF9uZXh0aG9wKSk7CiAJCQkJLyoK IAkJCQkgKiBQcm9wYWdhdGUgdGhlIG9yaWdpbmFsIFBSRVEuCisJCQkJICogUFJFUSBpcyB1bmlj YXN0IG5vdyB0byBydC0+cnRfbmV4dGhvcAogCQkJCSAqLworCQkJCXBwcmVxLnByZXFfZmxhZ3Mg Jj0KKwkJCQkgICAgfklFRUU4MDIxMV9NRVNIUFJFUV9GTEFHU19BTTsKIAkJCQlwcHJlcS5wcmVx X2hvcGNvdW50ICs9IDE7CiAJCQkJcHByZXEucHJlcV90dGwgLT0gMTsKIAkJCQlwcHJlcS5wcmVx X21ldHJpYyArPQogCQkJCSAgICBtcy0+bXNfcG1ldHJpYy0+bXBtX21ldHJpYyhuaSk7CiAJCQkJ LyoKLQkJCQkgKiBTZXQgVE8gYW5kIHVuc2V0IFJGIGJpdHMgYmVjYXVzZSB3ZSBhcmUgZ29pbmcK LQkJCQkgKiB0byBzZW5kIGEgUFJFUCBuZXh0LgorCQkJCSAqIFNldCBUTyBhbmQgdW5zZXQgUkYg Yml0cyBiZWNhdXNlIHdlIGFyZQorCQkJCSAqIGdvaW5nIHRvIHNlbmQgYSBQUkVQIG5leHQuCiAJ CQkJICovCiAJCQkJcHByZXEucHJlcV90YXJnZXRzWzBdLnRhcmdldF9mbGFncyB8PQogCQkJCSAg ICBJRUVFODAyMTFfTUVTSFBSRVFfVEZMQUdTX1RPOwogCQkJCXBwcmVxLnByZXFfdGFyZ2V0c1sw XS50YXJnZXRfZmxhZ3MgJj0KIAkJCQkgICAgfklFRUU4MDIxMV9NRVNIUFJFUV9URkxBR1NfUkY7 CiAJCQkJaHdtcF9zZW5kX3ByZXEobmksIHZhcC0+aXZfbXlhZGRyLAotCQkJCSAgICBicm9hZGNh c3RhZGRyLCAmcHByZXEpOworCQkJCSAgICBydC0+cnRfbmV4dGhvcCwgJnBwcmVxKTsKIAkJCX0K IAkJCS8qCiAJCQkgKiBDaGVjayBpZiB3ZSBjYW4gc2VuZCBhbiBpbnRlcm1lZGlhdGUgUGF0aCBS ZXBseSwKQEAgLTg3MCwyNiArOTI5LDExIEBAIGh3bXBfcmVjdl9wcmVxKHN0cnVjdCBpZWVlODAy MTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAkJICovCiAJCX0gZWxzZSBp ZiAocHJlcS0+cHJlcV90dGwgPiAxICYmCiAJCSAgICBwcmVxLT5wcmVxX2hvcGNvdW50IDwgaHMt PmhzX21heGhvcHMpIHsKLQkJCWlmIChydCA9PSBOVUxMKSB7Ci0JCQkJcnQgPSBpZWVlODAyMTFf bWVzaF9ydF9hZGQodmFwLCBQUkVRX1RBRERSKDApKTsKLQkJCQlpZiAocnQgPT0gTlVMTCkgewot CQkJCQlJRUVFODAyMTFfTk9URSh2YXAsIElFRUU4MDIxMV9NU0dfSFdNUCwKLQkJCQkJICAgIG5p LCAidW5hYmxlIHRvIGFkZCBQUkVRIHBhdGggdG8gJXMiLAotCQkJCQkgICAgZXRoZXJfc3ByaW50 ZihQUkVRX1RBRERSKDApKSk7Ci0JCQkJCXZhcC0+aXZfc3RhdHMuaXNfbWVzaF9ydGFkZGZhaWxl ZCsrOwotCQkJCQlyZXR1cm47Ci0JCQkJfQotCQkJfQotCQkJcnQtPnJ0X21ldHJpYyA9IHByZXEt PnByZXFfbWV0cmljOwotCQkJcnQtPnJ0X2xpZmV0aW1lID0gcHJlcS0+cHJlcV9saWZldGltZTsK LQkJCWhyb3JpZyA9IElFRUU4MDIxMV9NRVNIX1JPVVRFX1BSSVYocnQsCi0JCQkgICAgc3RydWN0 IGllZWU4MDIxMV9od21wX3JvdXRlKTsKLQkJCWhyb3JpZy0+aHJfc2VxID0gcHJlcS0+cHJlcV9v cmlnc2VxOwotCQkJaHJvcmlnLT5ocl9wcmVxaWQgPSBwcmVxLT5wcmVxX2lkOwotCiAJCQlJRUVF ODAyMTFfTk9URSh2YXAsIElFRUU4MDIxMV9NU0dfSFdNUCwgbmksCi0JCQkgICAgImZvcndhcmQg UFJFUSBmcm9tICVzIiwKLQkJCSAgICBldGhlcl9zcHJpbnRmKHByZXEtPnByZXFfb3JpZ2FkZHIp KTsKKwkJCSAgICAiYnJvYWRjYXN0IFBSRVEsIG9yaWdpbmF0b3IgJXMsIHRhcmdldCAlcyIsCisJ CQkgICAgZXRoZXJfc3ByaW50ZihwcmVxLT5wcmVxX29yaWdhZGRyKSwKKwkJCSAgICBldGhlcl9z cHJpbnRmKFBSRVFfVEFERFIoMCkpKTsKKwkJCXBwcmVxLnByZXFfZmxhZ3MgfD0gSUVFRTgwMjEx X01FU0hQUkVRX0ZMQUdTX0FNOwogCQkJcHByZXEucHJlcV9ob3Bjb3VudCArPSAxOwogCQkJcHBy ZXEucHJlcV90dGwgLT0gMTsKIAkJCXBwcmVxLnByZXFfbWV0cmljICs9IG1zLT5tc19wbWV0cmlj LT5tcG1fbWV0cmljKG5pKTsKQEAgLTg5Nyw3ICs5NDEsNiBAQCBod21wX3JlY3ZfcHJlcShzdHJ1 Y3QgaWVlZTgwMjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJCQkgICAg JnBwcmVxKTsKIAkJfQogCX0KLQogfQogI3VuZGVmCVBSRVFfVEZMQUdTCiAjdW5kZWYJUFJFUV9U QUREUgpAQCAtOTIxLDcgKzk2NCw3IEBAIGh3bXBfc2VuZF9wcmVxKHN0cnVjdCBpZWVlODAyMTFf bm9kZSAqbmksCiAJLyoKIAkgKiBtZXNoIHByZXEgYWN0aW9uIGZyYW1lIGZvcm1hdAogCSAqICAg ICBbNl0gZGEKLQkgKiAgICAgWzZdIHNhIAorCSAqICAgICBbNl0gc2EKIAkgKiAgICAgWzZdIGFk ZHIzID0gc2EKIAkgKiAgICAgWzFdIGFjdGlvbgogCSAqICAgICBbMV0gY2F0ZWdvcnkKQEAgLTk0 Myw2ICs5ODYsNyBAQCBod21wX3JlY3ZfcHJlcChzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAsIHN0 cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSB2YXAt Pml2X2ljOwogCXN0cnVjdCBpZm5ldCAqaWZwID0gdmFwLT5pdl9pZnA7CiAJc3RydWN0IG1idWYg Km0sICpuZXh0OworCXVpbnQzMl90IG1ldHJpYyA9IDA7CiAKIAkvKgogCSAqIEFjY2VwdGFuY2Ug Y3JpdGVyaWE6IGlmIHRoZSBjb3JyZXNwb25kaW5nIFBSRVEgd2FzIG5vdCBnZW5lcmF0ZWQKQEAg LTk1NiwxMiArMTAwMCwxNiBAQCBod21wX3JlY3ZfcHJlcChzdHJ1Y3QgaWVlZTgwMjExdmFwICp2 YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJCXJldHVybjsKIAogCUlFRUU4MDIxMV9O T1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBuaSwKLQkgICAgInJlY2VpdmVkIFBSRVAgZnJv bSAlcyIsIGV0aGVyX3NwcmludGYocHJlcC0+cHJlcF90YXJnZXRhZGRyKSk7CisJICAgICJyZWNl aXZlZCBQUkVQLCBvcmlnaW5hdG9yICVzLCB0YXJnZXQgJXMiLAorCSAgICBldGhlcl9zcHJpbnRm KHByZXAtPnByZXBfb3JpZ2FkZHIpLAorCSAgICBldGhlcl9zcHJpbnRmKHByZXAtPnByZXBfdGFy Z2V0YWRkcikpOwogCiAJcnQgPSBpZWVlODAyMTFfbWVzaF9ydF9maW5kKHZhcCwgcHJlcC0+cHJl cF90YXJnZXRhZGRyKTsKIAlpZiAocnQgPT0gTlVMTCkgewogCQkvKgogCQkgKiBJZiB3ZSBoYXZl IG5vIGVudHJ5IHRoaXMgY291bGQgYmUgYSByZXBseSB0byBhIHJvb3QgUFJFUS4KKwkJICogWFhY OiBub3QgdHJ1ZSBhbnltb3JlIGNhdXNlIHdlIGRvbnQgY3JlYXRlIGVudHJ5IGZvciB0YXJnZXQK KwkJICogIHdoZW4gcHJvcGFnYXRpbmcgUFJFUXMgbGlrZSB0aGUgb2xkIGNvZGUgZGlkLgogCQkg Ki8KIAkJaWYgKGhzLT5oc19yb290bW9kZSAhPSBJRUVFODAyMTFfSFdNUF9ST09UTU9ERV9ESVNB QkxFRCkgewogCQkJcnQgPSBpZWVlODAyMTFfbWVzaF9ydF9hZGQodmFwLCBwcmVwLT5wcmVwX3Rh cmdldGFkZHIpOwpAQCAtOTc4LDI0ICsxMDI2LDM2IEBAIGh3bXBfcmVjdl9wcmVwKHN0cnVjdCBp ZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAkJCXJ0LT5ydF9t ZXRyaWMgPSBwcmVwLT5wcmVwX21ldHJpYzsKIAkJCXJ0LT5ydF9mbGFncyB8PSBJRUVFODAyMTFf TUVTSFJUX0ZMQUdTX1ZBTElEOwogCQkJSUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNH X0hXTVAsIG5pLAotCQkJICAgICJhZGQgcm9vdCBwYXRoIHRvICVzIG5ob3BzICVkIG1ldHJpYyAl ZCAoUFJFUCkiLAorCQkJICAgICJhZGQgcm9vdCBwYXRoIHRvICVzIG5ob3BzICVkIG1ldHJpYyAl bHUgKFBSRVApIiwKIAkJCSAgICBldGhlcl9zcHJpbnRmKHByZXAtPnByZXBfdGFyZ2V0YWRkciks CiAJCQkgICAgcnQtPnJ0X25ob3BzLCBydC0+cnRfbWV0cmljKTsKIAkJCXJldHVybjsKLQkJfSAK KwkJfQogCQlyZXR1cm47CiAJfQogCS8qCiAJICogU2VxdWVuY2UgbnVtYmVyIHZhbGlkYXRpb24u CiAJICovCiAJaHIgPSBJRUVFODAyMTFfTUVTSF9ST1VURV9QUklWKHJ0LCBzdHJ1Y3QgaWVlZTgw MjExX2h3bXBfcm91dGUpOwotCWlmIChIV01QX1NFUV9MRVEocHJlcC0+cHJlcF90YXJnZXRzZXEs IGhyLT5ocl9zZXEpKSB7Ci0JCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01Q LCBuaSwKLQkJICAgICJkaXNjYXJkIFBSRVAgZnJvbSAlcywgb2xkIHNlcSBubyAldSA8PSAldSIs Ci0JCSAgICBldGhlcl9zcHJpbnRmKHByZXAtPnByZXBfdGFyZ2V0YWRkciksCi0JCSAgICBwcmVw LT5wcmVwX3RhcmdldHNlcSwgaHItPmhyX3NlcSk7Ci0JCXJldHVybjsKKwkvKiBBY2NlcHQgaWYg cm91dGUgaXMgbm90IHZhbGlkICovCisJaWYoKHJ0LT5ydF9mbGFncyAmIElFRUU4MDIxMV9NRVNI UlRfRkxBR1NfVkFMSUQpKSB7CisJCWlmIChIV01QX1NFUV9MVChwcmVwLT5wcmVwX3RhcmdldHNl cSwgaHItPmhyX3NlcSkpIHsKKwkJCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19I V01QLCBuaSwKKwkJCSAgICAiZGlzY2FyZCBQUkVQIGZyb20gJXMsIG9sZCBzZXEgbm8gJXUgPCAl dSIsCisJCQkgICAgZXRoZXJfc3ByaW50ZihwcmVwLT5wcmVwX3RhcmdldGFkZHIpLAorCQkJICAg IHByZXAtPnByZXBfdGFyZ2V0c2VxLCBoci0+aHJfc2VxKTsKKwkJCXJldHVybjsKKwkJLyogSWYg c2FtZSBzZXFubyBjb21wYXJlIG1ldHJpYyAqLworCQl9ZWxzZSBpZihIV01QX1NFUV9MRVEocHJl cC0+cHJlcF90YXJnZXRzZXEsIGhyLT5ocl9zZXEpICYmCisJCSAgICBwcmVwLT5wcmVwX21ldHJp YyA+IHJ0LT5ydF9tZXRyaWMpIHsKKwkJCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01T R19IV01QLCBuaSwKKwkJCSAgICAiZGlzY2FyZCBQUkVQIGZyb20gJXMsIG5ldyBtZXRyaWMgJXUg PiAldSIsCisJCQkgICAgZXRoZXJfc3ByaW50ZihwcmVwLT5wcmVwX3RhcmdldGFkZHIpLAorCQkJ ICAgIHByZXAtPnByZXBfbWV0cmljLCBydC0+cnRfbWV0cmljKTsKKwkJCXJldHVybjsKKwkJfQog CX0KKwogCWhyLT5ocl9zZXEgPSBwcmVwLT5wcmVwX3RhcmdldHNlcTsKIAkvKgogCSAqIElmIGl0 J3MgTk9UIGZvciB1cywgcHJvcGFnYXRlIHRoZSBQUkVQLgpAQCAtMTAwMywxNiArMTA2MywxMyBA QCBod21wX3JlY3ZfcHJlcChzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAy MTFfbm9kZSAqbmksCiAJaWYgKCFJRUVFODAyMTFfQUREUl9FUSh2YXAtPml2X215YWRkciwgcHJl cC0+cHJlcF9vcmlnYWRkcikgJiYKIAkgICAgcHJlcC0+cHJlcF90dGwgPiAxICYmIHByZXAtPnBy ZXBfaG9wY291bnQgPCBocy0+aHNfbWF4aG9wcykgewogCQlzdHJ1Y3QgaWVlZTgwMjExX21lc2hw cmVwX2llIHBwcmVwOyAvKiBwcm9wYWdhdGVkIFBSRVAgKi8KLQogCQlJRUVFODAyMTFfTk9URSh2 YXAsIElFRUU4MDIxMV9NU0dfSFdNUCwgbmksCiAJCSAgICAicHJvcGFnYXRlIFBSRVAgZnJvbSAl cyIsCiAJCSAgICBldGhlcl9zcHJpbnRmKHByZXAtPnByZXBfdGFyZ2V0YWRkcikpOwotCiAJCW1l bWNweSgmcHByZXAsIHByZXAsIHNpemVvZihwcHJlcCkpOwogCQlwcHJlcC5wcmVwX2hvcGNvdW50 ICs9IDE7CiAJCXBwcmVwLnByZXBfdHRsIC09IDE7CiAJCXBwcmVwLnByZXBfbWV0cmljICs9IG1z LT5tc19wbWV0cmljLT5tcG1fbWV0cmljKG5pKTsKLQkJSUVFRTgwMjExX0FERFJfQ09QWShwcHJl cC5wcmVwX3RhcmdldGFkZHIsIHZhcC0+aXZfbXlhZGRyKTsKIAkJaHdtcF9zZW5kX3ByZXAobmks IHZhcC0+aXZfbXlhZGRyLCBicm9hZGNhc3RhZGRyLCAmcHByZXApOwogCX0KIAlociA9IElFRUU4 MDIxMV9NRVNIX1JPVVRFX1BSSVYocnQsIHN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0ZSk7CkBA IC0xMDIyLDcgKzEwNzksOSBAQCBod21wX3JlY3ZfcHJlcChzdHJ1Y3QgaWVlZTgwMjExdmFwICp2 YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJCSAgICAiZGlzY2FyZCBQUkVQIGZvciAl cywgcm91dGUgaXMgbWFya2VkIFBST1hZIiwKIAkJICAgIGV0aGVyX3NwcmludGYocHJlcC0+cHJl cF90YXJnZXRhZGRyKSk7CiAJCXZhcC0+aXZfc3RhdHMuaXNfaHdtcF9wcm94eSsrOwotCX0gZWxz ZSBpZiAocHJlcC0+cHJlcF9vcmlnc2VxID09IGhyLT5ocl9vcmlnc2VxKSB7CisJLyogTkI6IGZp cnN0IHBhdGggZGlzY292ZXJ5IGFsd2F5cyBmYWlscyAqLworCX0gZWxzZSBpZiAoaHItPmhyX29y aWdzZXEgPT0gMCB8fAorCSAgICBwcmVwLT5wcmVwX29yaWdzZXEgPT0gaHItPmhyX29yaWdzZXEp IHsKIAkJLyoKIAkJICogQ2hlY2sgaWYgd2UgYWxyZWFkeSBoYXZlIGEgcGF0aCB0byB0aGlzIG5v ZGUuCiAJCSAqIElmIHdlIGRvLCBjaGVjayBpZiB0aGlzIHBhdGggcmVwbHkgY29udGFpbnMgYQpA QCAtMTAzMSwzMiArMTA5MCwzNSBAQCBod21wX3JlY3ZfcHJlcChzdHJ1Y3QgaWVlZTgwMjExdmFw ICp2YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJCWlmICgocnQtPnJ0X2ZsYWdzICYg SUVFRTgwMjExX01FU0hSVF9GTEFHU19WQUxJRCkgPT0gMCB8fAogCQkgICAgKHByZXAtPnByZXBf aG9wY291bnQgPCBydC0+cnRfbmhvcHMgfHwKIAkJICAgICBwcmVwLT5wcmVwX21ldHJpYyA8IHJ0 LT5ydF9tZXRyaWMpKSB7CisJCQloci0+aHJfb3JpZ3NlcSA9IHByZXAtPnByZXBfb3JpZ3NlcTsK KwkJCW1ldHJpYyA9IHByZXAtPnByZXBfbWV0cmljICsKKwkJCSAgICBtcy0+bXNfcG1ldHJpYy0+ bXBtX21ldHJpYyhuaSk7CiAJCQlJRUVFODAyMTFfTk9URSh2YXAsIElFRUU4MDIxMV9NU0dfSFdN UCwgbmksCi0JCQkgICAgIiVzIHBhdGggdG8gJXMsIGhvcGNvdW50ICVkOiVkIG1ldHJpYyAlZDol ZCIsCisJCQkgICAgIiVzIHBhdGggdG8gJXMsIGhvcGNvdW50ICVkOiVkIG1ldHJpYyAlbHU6JWx1 IiwKIAkJCSAgICBydC0+cnRfZmxhZ3MgJiBJRUVFODAyMTFfTUVTSFJUX0ZMQUdTX1ZBTElEID8K LQkJCQkicHJlZmVyIiA6ICJ1cGRhdGUiLAotCQkJICAgIGV0aGVyX3NwcmludGYocHJlcC0+cHJl cF9vcmlnYWRkciksCi0JCQkgICAgcnQtPnJ0X25ob3BzLCBwcmVwLT5wcmVwX2hvcGNvdW50LAot CQkJICAgIHJ0LT5ydF9tZXRyaWMsIHByZXAtPnByZXBfbWV0cmljKTsKKwkJCSAgICAicHJlZmVy IiA6ICJ1cGRhdGUiLAorCQkJICAgIGV0aGVyX3NwcmludGYocHJlcC0+cHJlcF90YXJnZXRhZGRy KSwKKwkJCSAgICBydC0+cnRfbmhvcHMsIHByZXAtPnByZXBfaG9wY291bnQgKyAxLAorCQkJICAg IHJ0LT5ydF9tZXRyaWMsIG1ldHJpYyk7CiAJCQlJRUVFODAyMTFfQUREUl9DT1BZKHJ0LT5ydF9u ZXh0aG9wLCB3aC0+aV9hZGRyMik7Ci0JCQlydC0+cnRfbmhvcHMgPSBwcmVwLT5wcmVwX2hvcGNv dW50OworCQkJcnQtPnJ0X25ob3BzID0gcHJlcC0+cHJlcF9ob3Bjb3VudCArIDE7CiAJCQlydC0+ cnRfbGlmZXRpbWUgPSBwcmVwLT5wcmVwX2xpZmV0aW1lOwotCQkJcnQtPnJ0X21ldHJpYyA9IHBy ZXAtPnByZXBfbWV0cmljOworCQkJcnQtPnJ0X21ldHJpYyA9IG1ldHJpYzsKIAkJCXJ0LT5ydF9m bGFncyB8PSBJRUVFODAyMTFfTUVTSFJUX0ZMQUdTX1ZBTElEOwogCQl9IGVsc2UgewogCQkJSUVF RTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsIG5pLAotCQkJICAgICJpZ25vcmUg UFJFUCBmb3IgJXMsIGhvcGNvdW50ICVkOiVkIG1ldHJpYyAlZDolZCIsCisJCQkgICAgImlnbm9y ZSBQUkVQIGZvciAlcywgaG9wY291bnQgJWQ6JWQgbWV0cmljICVsdTolbHUiLAogCQkJICAgIGV0 aGVyX3NwcmludGYocHJlcC0+cHJlcF90YXJnZXRhZGRyKSwKIAkJCSAgICBydC0+cnRfbmhvcHMs IHByZXAtPnByZXBfaG9wY291bnQsCiAJCQkgICAgcnQtPnJ0X21ldHJpYywgcHJlcC0+cHJlcF9t ZXRyaWMpOwogCQl9CiAJfSBlbHNlIHsKIAkJSUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFf TVNHX0hXTVAsIG5pLAotCQkgICAgImRpc2NhcmQgUFJFUCBmb3IgJXMsIHdyb25nIHNlcW5vICV1 ICE9ICV1IiwKKwkJICAgICJkaXNjYXJkIFBSRVAgZm9yICVzLCB3cm9uZyBvcmlnIHNlcW5vICV1 ICE9ICV1IiwKIAkJICAgIGV0aGVyX3NwcmludGYocHJlcC0+cHJlcF90YXJnZXRhZGRyKSwgcHJl cC0+cHJlcF9vcmlnc2VxLAotCQkgICAgaHItPmhyX3NlcSk7CisJCSAgICBoci0+aHJfb3JpZ3Nl cSk7CiAJCXZhcC0+aXZfc3RhdHMuaXNfaHdtcF93cm9uZ3NlcSsrOwotCX0gCisJfQogCS8qCiAJ ICogQ2hlY2sgZm9yIGZyYW1lcyBxdWV1ZWQgYXdhaXRpbmcgcGF0aCBkaXNjb3ZlcnkuCiAJICog WFhYIHByb2JhYmx5IGNhbiB0ZWxsIGV4YWN0bHkgYW5kIGF2b2lkIHJlbW92ZSBjYWxsCkBAIC0x MDY0LDkgKzExMjYsOSBAQCBod21wX3JlY3ZfcHJlcChzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAs IHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJICogICAgIHN0dWNrIGJhY2sgb24gdGhlIHN0 YWdlcSBiZWNhdXNlIHRoZXJlIHdvbid0IGJlCiAJICogICAgIGEgcGF0aC4KIAkgKi8KLQltID0g aWVlZTgwMjExX2FnZXFfcmVtb3ZlKCZpYy0+aWNfc3RhZ2VxLCAKKwltID0gaWVlZTgwMjExX2Fn ZXFfcmVtb3ZlKCZpYy0+aWNfc3RhZ2VxLAogCSAgICAoc3RydWN0IGllZWU4MDIxMV9ub2RlICop KHVpbnRwdHJfdCkKLQkJaWVlZTgwMjExX21hY19oYXNoKGljLCBydC0+cnRfZGVzdCkpOworCSAg ICBpZWVlODAyMTFfbWFjX2hhc2goaWMsIHJ0LT5ydF9kZXN0KSk7CiAJZm9yICg7IG0gIT0gTlVM TDsgbSA9IG5leHQpIHsKIAkJbmV4dCA9IG0tPm1fbmV4dHBrdDsKIAkJbS0+bV9uZXh0cGt0ID0g TlVMTDsKQEAgLTEwODcsNyArMTE0OSw3IEBAIGh3bXBfc2VuZF9wcmVwKHN0cnVjdCBpZWVlODAy MTFfbm9kZSAqbmksCiAJLyoKIAkgKiBtZXNoIHByZXAgYWN0aW9uIGZyYW1lIGZvcm1hdAogCSAq ICAgICBbNl0gZGEKLQkgKiAgICAgWzZdIHNhIAorCSAqICAgICBbNl0gc2EKIAkgKiAgICAgWzZd IGFkZHIzID0gc2EKIAkgKiAgICAgWzFdIGFjdGlvbgogCSAqICAgICBbMV0gY2F0ZWdvcnkKQEAg LTExNDYsNyArMTIwOCw3IEBAIGh3bXBfcmVjdl9wZXJyKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZh cCwgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAlzdHJ1Y3QgaWVlZTgwMjExX21lc2hfc3Rh dGUgKm1zID0gdmFwLT5pdl9tZXNoOwogCXN0cnVjdCBpZWVlODAyMTFfbWVzaF9yb3V0ZSAqcnQg PSBOVUxMOwogCXN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0ZSAqaHI7Ci0gCXN0cnVjdCBpZWVl ODAyMTFfbWVzaHBlcnJfaWUgcHBlcnI7CisJc3RydWN0IGllZWU4MDIxMV9tZXNocGVycl9pZSBw cGVycjsKIAlpbnQgaSwgZm9yd2FyZCA9IDA7CiAKIAkvKgpAQCAtMTE2NSw3ICsxMjI3LDcgQEAg aHdtcF9yZWN2X3BlcnIoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBzdHJ1Y3QgaWVlZTgwMjEx X25vZGUgKm5pLAogCQlpZiAocnQgPT0gTlVMTCkKIAkJCWNvbnRpbnVlOwogCQlociA9IElFRUU4 MDIxMV9NRVNIX1JPVVRFX1BSSVYocnQsIHN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0ZSk7Ci0J CWlmICghKFBFUlJfREZMQUdTKDApICYgSUVFRTgwMjExX01FU0hQRVJSX0RGTEFHU19VU04pICYm IAorCQlpZiAoIShQRVJSX0RGTEFHUygwKSAmIElFRUU4MDIxMV9NRVNIUEVSUl9ERkxBR1NfVVNO KSAmJgogCQkgICAgSFdNUF9TRVFfR0VRKFBFUlJfRFNFUShpKSwgaHItPmhyX3NlcSkpIHsKIAkJ CWllZWU4MDIxMV9tZXNoX3J0X2RlbCh2YXAsIHJ0LT5ydF9kZXN0KTsKIAkJCWllZWU4MDIxMV9t ZXNoX3J0X2ZsdXNoX3BlZXIodmFwLCBydC0+cnRfZGVzdCk7CkBAIC0xMjY3LDcgKzEzMjksNyBA QCBod21wX3NlbmRfcmFubihzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLAogCS8qCiAJICogbWVz aCByYW5uIGFjdGlvbiBmcmFtZSBmb3JtYXQKIAkgKiAgICAgWzZdIGRhCi0JICogICAgIFs2XSBz YSAKKwkgKiAgICAgWzZdIHNhCiAJICogICAgIFs2XSBhZGRyMyA9IHNhCiAJICogICAgIFsxXSBh Y3Rpb24KIAkgKiAgICAgWzFdIGNhdGVnb3J5CkBAIC0xMzIzLDEzICsxMzg1LDE1IEBAIGh3bXBf ZGlzY292ZXIoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLAogCQkJLyogWFhYIGNoZWNrIHByZXEg cmV0cmllcyAqLwogCQkJc2VuZHByZXEgPSAxOwogCQkJSUVFRTgwMjExX05PVEVfTUFDKHZhcCwg SUVFRTgwMjExX01TR19IV01QLCBkZXN0LAotCQkJICAgICJzdGFydCBwYXRoIGRpc2NvdmVyeSAo c3JjICVzKSIsCisJCQkgICAgInN0YXJ0IHBhdGggZGlzY292ZXJ5IChzcmMgJXMpLCB0YXJnZXQg c2VxICV1IiwKIAkJCSAgICBtID09IE5VTEwgPyAiPG5vbmU+IiA6IGV0aGVyX3NwcmludGYoCi0J CQkJbXRvZChtLCBzdHJ1Y3QgZXRoZXJfaGVhZGVyICopLT5ldGhlcl9zaG9zdCkpOworCQkJICAg IG10b2QobSwgc3RydWN0IGV0aGVyX2hlYWRlciAqKS0+ZXRoZXJfc2hvc3QpLAorCQkJICAgIGhy LT5ocl9zZXEpOwogCQkJLyoKIAkJCSAqIFRyeSB0byBkaXNjb3ZlciB0aGUgcGF0aCBmb3IgdGhp cyBub2RlLgorCQkJICogR3JvdXAgYWRkcmVzc2VkIFBSRVEgQ2FzZSBBCiAJCQkgKi8KLQkJCXBy ZXEucHJlcV9mbGFncyA9IDA7CisJCQlwcmVxLnByZXFfZmxhZ3MgPSBJRUVFODAyMTFfTUVTSFBS RVFfRkxBR1NfQU07CiAJCQlwcmVxLnByZXFfaG9wY291bnQgPSAwOwogCQkJcHJlcS5wcmVxX3R0 bCA9IG1zLT5tc190dGw7CiAJCQlwcmVxLnByZXFfaWQgPSArK2hzLT5oc19wcmVxaWQ7CkBAIC0x MzQ1LDcgKzE0MDksNyBAQCBod21wX2Rpc2NvdmVyKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwK IAkJCWlmIChpZWVlODAyMTFfaHdtcF9yZXBseWZvcndhcmQpCiAJCQkJUFJFUV9URkxBR1MoMCkg fD0gSUVFRTgwMjExX01FU0hQUkVRX1RGTEFHU19SRjsKIAkJCVBSRVFfVEZMQUdTKDApIHw9IElF RUU4MDIxMV9NRVNIUFJFUV9URkxBR1NfVVNOOwotCQkJUFJFUV9UU0VRKDApID0gMDsKKwkJCVBS RVFfVFNFUSgwKSA9IGhyLT5ocl9zZXE7CiAJCQkvKiBYWFggY2hlY2sgcmV0dXJuIHZhbHVlICov CiAJCQlod21wX3NlbmRfcHJlcSh2YXAtPml2X2JzcywgdmFwLT5pdl9teWFkZHIsCiAJCQkgICAg YnJvYWRjYXN0YWRkciwgJnByZXEpOwpAQCAtMTM5MSw3ICsxNDU1LDcgQEAgaHdtcF9pb2N0bF9n ZXQ4MDIxMShzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAyMTFyZXEgKmly ZXEpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9od21wX3N0YXRlICpocyA9IHZhcC0+aXZfaHdtcDsK IAlpbnQgZXJyb3I7Ci0gCisKIAlpZiAodmFwLT5pdl9vcG1vZGUgIT0gSUVFRTgwMjExX01fTUJT UykKIAkJcmV0dXJuIEVOT1NZUzsKIAllcnJvciA9IDA7CmRpZmYgLS1naXQgYS9zeXMvbmV0ODAy MTEvaWVlZTgwMjExX2lvY3RsLmMgYi9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX2lvY3RsLmMKaW5k ZXggMmUzODhhZS4uZGY3YTcwNCAxMDA2NDQKLS0tIGEvc3lzL25ldDgwMjExL2llZWU4MDIxMV9p b2N0bC5jCisrKyBiL3N5cy9uZXQ4MDIxMS9pZWVlODAyMTFfaW9jdGwuYwpAQCAtMTM5Nyw2ICsx Mzk3LDE3IEBAIHNldG1sbWVfY29tbW9uKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgaW50IG9w LAogCQkJICAgIElFRUU4MDIxMV9GQzBfU1VCVFlQRV9ERUFVVEgsIHJlYXNvbik7CiAJCQlpZWVl ODAyMTFfZnJlZV9ub2RlKG5pKTsKIAkJCWJyZWFrOworCQljYXNlIElFRUU4MDIxMV9NX01CU1M6 CisJCQlJRUVFODAyMTFfTk9ERV9MT0NLKG50KTsKKwkJCW5pID0gaWVlZTgwMjExX2ZpbmRfbm9k ZV9sb2NrZWQobnQsIG1hYyk7CisJCQlpZiAobmkgIT0gTlVMTCkgeworCQkJCWllZWU4MDIxMV9u b2RlX2xlYXZlKG5pKTsKKwkJCQlpZWVlODAyMTFfZnJlZV9ub2RlKG5pKTsKKwkJCX1lbHNlewor CQkJCWVycm9yID0gRU5PRU5UOworCQkJfQorCQkJSUVFRTgwMjExX05PREVfVU5MT0NLKG50KTsK KwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZXJyb3IgPSBFSU5WQUw7CiAJCQlicmVhazsKZGlm ZiAtLWdpdCBhL3N5cy9uZXQ4MDIxMS9pZWVlODAyMTFfbWVzaC5jIGIvc3lzL25ldDgwMjExL2ll ZWU4MDIxMV9tZXNoLmMKaW5kZXggY2ZmZmQ4Ny4uNmFkYzQ1YSAxMDA2NDQKLS0tIGEvc3lzL25l dDgwMjExL2llZWU4MDIxMV9tZXNoLmMKKysrIGIvc3lzL25ldDgwMjExL2llZWU4MDIxMV9tZXNo LmMKQEAgLTMzNiw2ICszMzYsMTQgQEAgbWVzaF9ydF9mbHVzaF9pbnZhbGlkKHN0cnVjdCBpZWVl ODAyMTF2YXAgKnZhcCkKIAkJaWYgKChydC0+cnRfZmxhZ3MgJiBJRUVFODAyMTFfTUVTSFJUX0ZM QUdTX1ZBTElEKSA9PSAwICYmCiAJCSAgICB0aWNrcyAtIHJ0LT5ydF9jcnRpbWUgPj0gbXMtPm1z X3BwYXRoLT5tcHBfaW5hY3QpCiAJCQltZXNoX3J0X2RlbChtcywgcnQpOworCQllbHNlIHsKKwkJ CXJ0LT5ydF9saWZldGltZSAtPSAxMDA7IC8qIGRlY3JlYXNlIGxpZmV0aW1lICovCisJCQlpZihy dC0+cnRfbGlmZXRpbWUgPD0gMCl7CisJCQkJcnQtPnJ0X2ZsYWdzICY9CisJCQkJICAgIH5JRUVF ODAyMTFfTUVTSFJUX0ZMQUdTX1ZBTElEOyAvKiBpbnZhbGlkYXRlICovCisJCQkJbWVzaF9ydF9k ZWwobXMsIHJ0KTsKKwkJCX0KKwkJfQogCX0KIAlNRVNIX1JUX1VOTE9DSyhtcyk7CiB9CmRpZmYg LS1naXQgYS9zeXMvbmV0L2lmX2V0aGVyc3Vici5jIGIvc3lzL25ldC9pZl9ldGhlcnN1YnIuYwpp bmRleCA5ZWFlNjgzLi45NzllYmZkIDEwMDY0NAotLS0gYS9zeXMvbmV0L2lmX2V0aGVyc3Vici5j CisrKyBiL3N5cy9uZXQvaWZfZXRoZXJzdWJyLmMKQEAgLTk2OCw5ICs5NjgsMTMgQEAgZGlzY2Fy ZDoKIGNoYXIgKgogZXRoZXJfc3ByaW50Zihjb25zdCB1X2NoYXIgKmFwKQogewotCXN0YXRpYyBj aGFyIGV0aGVyYnVmWzE4XTsKLQlzbnByaW50ZihldGhlcmJ1Ziwgc2l6ZW9mIChldGhlcmJ1Ziks ICIlNkQiLCBhcCwgIjoiKTsKLQlyZXR1cm4gKGV0aGVyYnVmKTsKKwlzdGF0aWMgY2hhciBldGhl cmJ1ZlsyXVsxOF07CisJc3RhdGljIGludCBpID0gMDsKKwljaGFyICpidWY7CisJc25wcmludGYo ZXRoZXJidWZbaV0sIHNpemVvZiAoZXRoZXJidWZbMF0pLCAiJTZEIiwgYXAsICI6Iik7CisJYnVm ID0gZXRoZXJidWZbaV07CisJaSA9IChpKzEpJTI7CisJcmV0dXJuIChidWYpOwogfQogCiAvKgpk aWZmIC0tZ2l0IGEvc3lzL25ldDgwMjExL2llZWU4MDIxMV9od21wLmMgYi9zeXMvbmV0ODAyMTEv aWVlZTgwMjExX2h3bXAuYwppbmRleCA5M2E5ZTU1Li41OGI0YWZmIDEwMDY0NAotLS0gYS9zeXMv bmV0ODAyMTEvaWVlZTgwMjExX2h3bXAuYworKysgYi9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX2h3 bXAuYwpAQCAtMzMsMTUgKzMzLDE1IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKIAogLyoKICAq IElFRUUgODAyLjExcyBIeWJyaWQgV2lyZWxlc3MgTWVzaCBQcm90b2NvbCwgSFdNUC4KLSAqIAor ICoKICAqIEJhc2VkIG9uIE1hcmNoIDIwMDksIEQzLjAgODAyLjExcyBkcmFmdCBzcGVjLgogICov CiAjaW5jbHVkZSAib3B0X2luZXQuaCIKICNpbmNsdWRlICJvcHRfd2xhbi5oIgogCiAjaW5jbHVk ZSA8c3lzL3BhcmFtLmg+Ci0jaW5jbHVkZSA8c3lzL3N5c3RtLmg+IAotI2luY2x1ZGUgPHN5cy9t YnVmLmg+ICAgCisjaW5jbHVkZSA8c3lzL3N5c3RtLmg+CisjaW5jbHVkZSA8c3lzL21idWYuaD4K ICNpbmNsdWRlIDxzeXMvbWFsbG9jLmg+CiAjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgogCkBAIC0x MzksOSArMTM5LDEzIEBAIHN0YXRpYyBjb25zdCB1aW50OF90CWJyb2FkY2FzdGFkZHJbSUVFRTgw MjExX0FERFJfTEVOXSA9CiB0eXBlZGVmIHVpbnQzMl90IGllZWU4MDIxMV9od21wX3NlcTsKICNk ZWZpbmUJSFdNUF9TRVFfTFQoYSwgYikJKChpbnQzMl90KSgoYSktKGIpKSA8IDApCiAjZGVmaW5l CUhXTVBfU0VRX0xFUShhLCBiKQkoKGludDMyX3QpKChhKS0oYikpIDw9IDApCisjZGVmaW5lCUhX TVBfU0VRX0VRKGEsIGIpCSgoaW50MzJfdCkoKGEpLShiKSkgPT0gMCkKICNkZWZpbmUJSFdNUF9T RVFfR1QoYSwgYikJKChpbnQzMl90KSgoYSktKGIpKSA+IDApCiAjZGVmaW5lCUhXTVBfU0VRX0dF UShhLCBiKQkoKGludDMyX3QpKChhKS0oYikpID49IDApCiAKKy8qIFRoZSBsb25nZXIgb25lIG9m IHRoZSBsaWZldGltZSBzaG91bGQgYmUgc3RvcmVkIGFzIG5ldyBsaWZldGltZSAqLworI2RlZmlu ZSBNRVNIX1JPVVRFX0xJRkVUSU1FX01BWChhLCBiKQkoYSA+IGIgPyBhIDogYikKKwogLyoKICAq IFByaXZhdGUgZXh0ZW5zaW9uIG9mIGllZWU4MDIxMV9tZXNoX3JvdXRlLgogICovCkBAIC0yNTYs NyArMjYwLDcgQEAgaHdtcF92ZGV0YWNoKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCkKIAljYWxs b3V0X2RyYWluKCZocy0+aHNfcm9vdHRpbWVyKTsKIAlmcmVlKHZhcC0+aXZfaHdtcCwgTV84MDIx MV9WQVApOwogCXZhcC0+aXZfaHdtcCA9IE5VTEw7Ci19IAorfQogCiBpbnQKIGh3bXBfbmV3c3Rh dGUoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBlbnVtIGllZWU4MDIxMV9zdGF0ZSBvc3RhdGUs IGludCBhcmcpCkBAIC0zMTMsNyArMzE3LDcgQEAgaHdtcF9yZWN2X2FjdGlvbl9tZXNocGF0aChz dHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLAogCQkJICAgIExFX1JFQURfNCgmbXByZXEtPnByZXFf dGFyZ2V0c1swXS50YXJnZXRfc2VxKTsKIAkJCWh3bXBfcmVjdl9wcmVxKHZhcCwgbmksIHdoLCAm cHJlcSk7CiAJCQlmb3VuZCsrOwotCQkJYnJlYWs7CQorCQkJYnJlYWs7CiAJCX0KIAkJY2FzZSBJ RUVFODAyMTFfRUxFTUlEX01FU0hQUkVQOgogCQl7CkBAIC02NzcsNyArNjgxLDkgQEAgaHdtcF9y ZWN2X3ByZXEoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUg Km5pLAogCXN0cnVjdCBpZWVlODAyMTFfbWVzaF9zdGF0ZSAqbXMgPSB2YXAtPml2X21lc2g7CiAJ c3RydWN0IGllZWU4MDIxMV9tZXNoX3JvdXRlICpydCA9IE5VTEw7CiAJc3RydWN0IGllZWU4MDIx MV9tZXNoX3JvdXRlICpydG9yaWcgPSBOVUxMOwotCXN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0 ZSAqaHJvcmlnOworCXN0cnVjdCBpZWVlODAyMTFfbWVzaF9yb3V0ZSAqcnR0YXJnID0gTlVMTDsK KwlzdHJ1Y3QgaWVlZTgwMjExX2h3bXBfcm91dGUgKmhyb3JpZyA9IE5VTEw7CisJc3RydWN0IGll ZWU4MDIxMV9od21wX3JvdXRlICpocnRhcmcgPSBOVUxMOwogCXN0cnVjdCBpZWVlODAyMTFfaHdt cF9zdGF0ZSAqaHMgPSB2YXAtPml2X2h3bXA7CiAJc3RydWN0IGllZWU4MDIxMV9tZXNocHJlcF9p ZSBwcmVwOwogCkBAIC02OTIsNDYgKzY5OCw5NSBAQCBod21wX3JlY3ZfcHJlcShzdHJ1Y3QgaWVl ZTgwMjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJCXJldHVybjsKIAog CUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBuaSwKLQkgICAgInJlY2Vp dmVkIFBSRVEsIHNvdXJjZSAlcyIsIGV0aGVyX3NwcmludGYocHJlcS0+cHJlcV9vcmlnYWRkcikp OworCSAgICAicmVjZWl2ZWQgUFJFUSwgb3JpZ2luYXRvciAlcywgdGFyZ2V0ICVzIiwKKwkgICAg ZXRoZXJfc3ByaW50ZihwcmVxLT5wcmVxX29yaWdhZGRyKSwgZXRoZXJfc3ByaW50ZihQUkVRX1RB RERSKDApKSk7CiAKIAkvKgotCSAqIEFjY2VwdGFuY2UgY3JpdGVyaWE6IGlmIHRoZSBQUkVRIGlz IG5vdCBmb3IgdXMgYW5kCi0JICogZm9yd2FyZGluZyBpcyBkaXNhYmxlZCwgZGlzY2FyZCB0aGlz IFBSRVEuCisJICogQWNjZXB0YW5jZSBjcml0ZXJpYTogaWYgdGhlIFBSRVEgaXMgbm90IGZvciB1 cyBvciBub3QgYnJvYWRjYXN0CisJICogQU5EIGZvcndhcmRpbmcgaXMgZGlzYWJsZWQsIGRpc2Nh cmQgdGhpcyBQUkVRLgorCSAqIFhYWDogbmVlZCB0byBjaGVjayBQUk9YWQogCSAqLwotCWlmICgh SUVFRTgwMjExX0FERFJfRVEodmFwLT5pdl9teWFkZHIsIFBSRVFfVEFERFIoMCkpICYmCisJaWYg KCghSUVFRTgwMjExX0FERFJfRVEodmFwLT5pdl9teWFkZHIsIFBSRVFfVEFERFIoMCkpIHx8CisJ ICAgICFJRUVFODAyMTFfSVNfTVVMVElDQVNUKFBSRVFfVEFERFIoMCkpKSAmJgogCSAgICAhKG1z LT5tc19mbGFncyAmIElFRUU4MDIxMV9NRVNIRkxBR1NfRldEKSkgewogCQlJRUVFODAyMTFfRElT Q0FSRF9NQUModmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsCiAJCSAgICBwcmVxLT5wcmVxX29yaWdh ZGRyLCBOVUxMLCAiJXMiLCAibm90IGFjY2VwdGluZyBQUkVRIik7CiAJCXJldHVybjsKIAl9CisJ LyoKKwkgKiBBY2NlcHRhbmNlIGNyaXRlcmlhOiBpZiB1bmljYXN0IGFkZHJlc3NlZAorCSAqIEFO RCBubyB2YWxpZCBmb3J3YXJkaW5nIGZvciBUYXJnZXQgb2YgUFJFUSwgZGlzY2FyZCB0aGlzIFBS RVEuCisJICovCisJcnR0YXJnID0gaWVlZTgwMjExX21lc2hfcnRfZmluZCh2YXAsIFBSRVFfVEFE RFIoMCkpOworCWlmKHJ0dGFyZyAhPSBOVUxMKQorCQlocnRhcmcgPSBJRUVFODAyMTFfTUVTSF9S T1VURV9QUklWKHJ0dGFyZywKKwkJICAgIHN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0ZSk7CisJ LyogQWRkcmVzcyBtb2RlOiB1Y2FzdCAqLworCWlmKChwcmVxLT5wcmVxX2ZsYWdzICYgSUVFRTgw MjExX01FU0hQUkVRX0ZMQUdTX0FNKSA9PSAwICYmCisJICAgIHJ0dGFyZyA9PSBOVUxMICYmCisJ ICAgICFJRUVFODAyMTFfQUREUl9FUSh2YXAtPml2X215YWRkciwgUFJFUV9UQUREUigwKSkpIHsK KwkJSUVFRTgwMjExX0RJU0NBUkRfTUFDKHZhcCwgSUVFRTgwMjExX01TR19IV01QLAorCQkgICAg cHJlcS0+cHJlcV9vcmlnYWRkciwgTlVMTCwKKwkJICAgICJ1bmljYXN0IGFkZHJlc3NlZCBQUkVR IG9mIHVua25vd24gdGFyZ2V0ICVzIiwKKwkJICAgIGV0aGVyX3NwcmludGYoUFJFUV9UQUREUigw KSkpOworCQlyZXR1cm47CisJfQorCisJLyogUFJFUSBBQ0NFUFRFRCAqLworCiAJcnRvcmlnID0g aWVlZTgwMjExX21lc2hfcnRfZmluZCh2YXAsIHByZXEtPnByZXFfb3JpZ2FkZHIpOwotCWlmIChy dG9yaWcgPT0gTlVMTCkKKwlpZiAocnRvcmlnID09IE5VTEwpIHsKIAkJcnRvcmlnID0gaWVlZTgw MjExX21lc2hfcnRfYWRkKHZhcCwgcHJlcS0+cHJlcV9vcmlnYWRkcik7CisJCUlFRUU4MDIxMV9O T1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBuaSwKKwkJICAgICJhZGRpbmcgb3JpZ2luYXRv ciAlcyIsCisJCSAgICBldGhlcl9zcHJpbnRmKHByZXEtPnByZXFfb3JpZ2FkZHIpKTsKKwl9CiAJ aWYgKHJ0b3JpZyA9PSBOVUxMKSB7CiAJCS8qIFhYWCBzdGF0ICovCiAJCXJldHVybjsKIAl9CiAJ aHJvcmlnID0gSUVFRTgwMjExX01FU0hfUk9VVEVfUFJJVihydG9yaWcsIHN0cnVjdCBpZWVlODAy MTFfaHdtcF9yb3V0ZSk7Ci0JLyoKLQkgKiBTZXF1ZW5jZSBudW1iZXIgdmFsaWRhdGlvbi4KKwor CS8qIERhdGEgY3JlYXRpb24gYW5kIHVwZGF0ZSBvZiBmb3J3YXJkaW5nIGluZm9ybWF0aW9uCisJ ICogYWNjb3JkaW5nIHRvIFRhYmxlIDExQy04IGZvciBvcmlnaW5hdG9yIG1lc2ggU1RBLgogCSAq LwotCWlmIChIV01QX1NFUV9MRVEocHJlcS0+cHJlcV9pZCwgaHJvcmlnLT5ocl9wcmVxaWQpICYm Ci0JICAgIEhXTVBfU0VRX0xFUShwcmVxLT5wcmVxX29yaWdzZXEsIGhyb3JpZy0+aHJfc2VxKSkg eworCWlmKEhXTVBfU0VRX0dUKHByZXEtPnByZXFfb3JpZ3NlcSwgaHJvcmlnLT5ocl9zZXEpIHx8 CisJICAgIChIV01QX1NFUV9FUShwcmVxLT5wcmVxX29yaWdzZXEsIGhyb3JpZy0+aHJfc2VxKSAm JgorCSAgICBwcmVxLT5wcmVxX21ldHJpYyA8IHJ0b3JpZy0+cnRfbWV0cmljKSkgeworCQlocm9y aWctPmhyX3NlcSA9IHByZXEtPnByZXFfb3JpZ3NlcTsKKwkJSUVFRTgwMjExX0FERFJfQ09QWShy dG9yaWctPnJ0X25leHRob3AsIHdoLT5pX2FkZHIyKTsKKwkJcnRvcmlnLT5ydF9tZXRyaWMgPSBw cmVxLT5wcmVxX21ldHJpYyArCisJCQltcy0+bXNfcG1ldHJpYy0+bXBtX21ldHJpYyhuaSk7CisJ CXJ0b3JpZy0+cnRfbmhvcHMgID0gcHJlcS0+cHJlcV9ob3Bjb3VudCArIDE7CisJCXJ0b3JpZy0+ cnRfbGlmZXRpbWUgID0gTUVTSF9ST1VURV9MSUZFVElNRV9NQVgoCisJCSAgICBwcmVxLT5wcmVx X2xpZmV0aW1lLCBydG9yaWctPnJ0X2xpZmV0aW1lKTsKKwkJLyogcGF0aCB0byBvcmlnIGlzIHZh bGlkIG5vdyAqLworCQlydG9yaWctPnJ0X2ZsYWdzIHw9IElFRUU4MDIxMV9NRVNIUlRfRkxBR1Nf VkFMSUQ7CisJfWVsc2UgaWYoaHJ0YXJnICE9IE5VTEwgJiYKKwkJSFdNUF9TRVFfRVEoaHJ0YXJn LT5ocl9zZXEsIFBSRVFfVFNFUSgwKSkgJiYKKwkJKHJ0b3JpZy0+cnRfZmxhZ3MgJiBJRUVFODAy MTFfTUVTSFJUX0ZMQUdTX1ZBTElEKSA9PSAwKSB7CiAJCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVF RTgwMjExX01TR19IV01QLCBuaSwKLQkJICAgICJkaXNjYXJkIFBSRVEgZnJvbSAlcywgb2xkIHNl cSBubyAldSA8PSAldSIsCi0JCSAgICBldGhlcl9zcHJpbnRmKHByZXEtPnByZXFfb3JpZ2FkZHIp LAotCQkgICAgcHJlcS0+cHJlcV9vcmlnc2VxLCBocm9yaWctPmhyX3NlcSk7CisJCSAgICAicmVj ZWl2ZWQgUFJFUSwgb3JpZ2luYXRvciAlcyIsICJ1bmtub3duIik7CisJfWVsc2UgeworCQlJRUVF ODAyMTFfRElTQ0FSRF9NQUModmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsCisJCSAgICBwcmVxLT5w cmVxX29yaWdhZGRyLCBOVUxMLAorCQkgICAgIiVzLCBsYXN0IHNlZW4gb3JpZy5zZXEgJWQsIHBy ZXEgb3JpZy5zZXEgJWQiLAorCQkgICAgImRpc2NhcmRpbmcgUFJFUSIsIGhyb3JpZy0+aHJfc2Vx LCBwcmVxLT5wcmVxX29yaWdzZXEpOwogCQlyZXR1cm47CiAJfQotCWhyb3JpZy0+aHJfcHJlcWlk ID0gcHJlcS0+cHJlcV9pZDsKLQlocm9yaWctPmhyX3NlcSA9IHByZXEtPnByZXFfb3JpZ3NlcTsK KworCS8qCisJICogRm9yd2FyZGluZyBpbmZvcm1hdGlvbiBmb3IgdHJhbnNtaXR0ZXIgbWVzaCBT VEEKKwkgKiBbT1BUSU9OQUw6IGlmIG1ldHJpYyBpbXByb3ZlZF0KKwkgKi8KIAogCS8qCiAJICog Q2hlY2sgaWYgdGhlIFBSRVEgaXMgYWRkcmVzc2VkIHRvIHVzLgogCSAqLwogCWlmIChJRUVFODAy MTFfQUREUl9FUSh2YXAtPml2X215YWRkciwgUFJFUV9UQUREUigwKSkpIHsKIAkJSUVFRTgwMjEx X05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsIG5pLAotCQkgICAgInJlcGx5IHRvICVzIiwg ZXRoZXJfc3ByaW50ZihwcmVxLT5wcmVxX29yaWdhZGRyKSk7CisJCSAgICAicmVwbHkgUFJFUCwg b3JpZ2luYXRvciAlcyIsCisJCSAgICBldGhlcl9zcHJpbnRmKHByZXEtPnByZXFfb3JpZ2FkZHIp KTsKIAkJLyoKIAkJICogQnVpbGQgYW5kIHNlbmQgYSBQUkVQIGZyYW1lLgogCQkgKi8KQEAgLTgx OSwyNSArODc0LDI5IEBAIGh3bXBfcmVjdl9wcmVxKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwg c3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAkJCWlmIChwcmVxLT5wcmVxX3R0bCA+IDEgJiYK IAkJCSAgICBwcmVxLT5wcmVxX2hvcGNvdW50IDwgaHMtPmhzX21heGhvcHMpIHsKIAkJCQlJRUVF ODAyMTFfTk9URSh2YXAsIElFRUU4MDIxMV9NU0dfSFdNUCwgbmksCi0JCQkJICAgICJmb3J3YXJk IFBSRVEgZnJvbSAlcyIsCi0JCQkJICAgIGV0aGVyX3NwcmludGYocHJlcS0+cHJlcV9vcmlnYWRk cikpOworCQkJCSAgICAiZm9yd2FyZCBQUkVRLCBvcmlnaW5hdG9yICVzLCB0byAlcyIsCisJCQkJ ICAgIGV0aGVyX3NwcmludGYocHJlcS0+cHJlcV9vcmlnYWRkciksCisJCQkJICAgIGV0aGVyX3Nw cmludGYocnQtPnJ0X25leHRob3ApKTsKIAkJCQkvKgogCQkJCSAqIFByb3BhZ2F0ZSB0aGUgb3Jp Z2luYWwgUFJFUS4KKwkJCQkgKiBQUkVRIGlzIHVuaWNhc3Qgbm93IHRvIHJ0LT5ydF9uZXh0aG9w CiAJCQkJICovCisJCQkJcHByZXEucHJlcV9mbGFncyAmPQorCQkJCSAgICB+SUVFRTgwMjExX01F U0hQUkVRX0ZMQUdTX0FNOwogCQkJCXBwcmVxLnByZXFfaG9wY291bnQgKz0gMTsKIAkJCQlwcHJl cS5wcmVxX3R0bCAtPSAxOwogCQkJCXBwcmVxLnByZXFfbWV0cmljICs9CiAJCQkJICAgIG1zLT5t c19wbWV0cmljLT5tcG1fbWV0cmljKG5pKTsKIAkJCQkvKgotCQkJCSAqIFNldCBUTyBhbmQgdW5z ZXQgUkYgYml0cyBiZWNhdXNlIHdlIGFyZSBnb2luZwotCQkJCSAqIHRvIHNlbmQgYSBQUkVQIG5l eHQuCisJCQkJICogU2V0IFRPIGFuZCB1bnNldCBSRiBiaXRzIGJlY2F1c2Ugd2UgYXJlCisJCQkJ ICogZ29pbmcgdG8gc2VuZCBhIFBSRVAgbmV4dC4KIAkJCQkgKi8KIAkJCQlwcHJlcS5wcmVxX3Rh cmdldHNbMF0udGFyZ2V0X2ZsYWdzIHw9CiAJCQkJICAgIElFRUU4MDIxMV9NRVNIUFJFUV9URkxB R1NfVE87CiAJCQkJcHByZXEucHJlcV90YXJnZXRzWzBdLnRhcmdldF9mbGFncyAmPQogCQkJCSAg ICB+SUVFRTgwMjExX01FU0hQUkVRX1RGTEFHU19SRjsKIAkJCQlod21wX3NlbmRfcHJlcShuaSwg dmFwLT5pdl9teWFkZHIsCi0JCQkJICAgIGJyb2FkY2FzdGFkZHIsICZwcHJlcSk7CisJCQkJICAg IHJ0LT5ydF9uZXh0aG9wLCAmcHByZXEpOwogCQkJfQogCQkJLyoKIAkJCSAqIENoZWNrIGlmIHdl IGNhbiBzZW5kIGFuIGludGVybWVkaWF0ZSBQYXRoIFJlcGx5LApAQCAtODcwLDI2ICs5MjksMTEg QEAgaHdtcF9yZWN2X3ByZXEoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBzdHJ1Y3QgaWVlZTgw MjExX25vZGUgKm5pLAogCQkgKi8KIAkJfSBlbHNlIGlmIChwcmVxLT5wcmVxX3R0bCA+IDEgJiYK IAkJICAgIHByZXEtPnByZXFfaG9wY291bnQgPCBocy0+aHNfbWF4aG9wcykgewotCQkJaWYgKHJ0 ID09IE5VTEwpIHsKLQkJCQlydCA9IGllZWU4MDIxMV9tZXNoX3J0X2FkZCh2YXAsIFBSRVFfVEFE RFIoMCkpOwotCQkJCWlmIChydCA9PSBOVUxMKSB7Ci0JCQkJCUlFRUU4MDIxMV9OT1RFKHZhcCwg SUVFRTgwMjExX01TR19IV01QLAotCQkJCQkgICAgbmksICJ1bmFibGUgdG8gYWRkIFBSRVEgcGF0 aCB0byAlcyIsCi0JCQkJCSAgICBldGhlcl9zcHJpbnRmKFBSRVFfVEFERFIoMCkpKTsKLQkJCQkJ dmFwLT5pdl9zdGF0cy5pc19tZXNoX3J0YWRkZmFpbGVkKys7Ci0JCQkJCXJldHVybjsKLQkJCQl9 Ci0JCQl9Ci0JCQlydC0+cnRfbWV0cmljID0gcHJlcS0+cHJlcV9tZXRyaWM7Ci0JCQlydC0+cnRf bGlmZXRpbWUgPSBwcmVxLT5wcmVxX2xpZmV0aW1lOwotCQkJaHJvcmlnID0gSUVFRTgwMjExX01F U0hfUk9VVEVfUFJJVihydCwKLQkJCSAgICBzdHJ1Y3QgaWVlZTgwMjExX2h3bXBfcm91dGUpOwot CQkJaHJvcmlnLT5ocl9zZXEgPSBwcmVxLT5wcmVxX29yaWdzZXE7Ci0JCQlocm9yaWctPmhyX3By ZXFpZCA9IHByZXEtPnByZXFfaWQ7Ci0KIAkJCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjEx X01TR19IV01QLCBuaSwKLQkJCSAgICAiZm9yd2FyZCBQUkVRIGZyb20gJXMiLAotCQkJICAgIGV0 aGVyX3NwcmludGYocHJlcS0+cHJlcV9vcmlnYWRkcikpOworCQkJICAgICJicm9hZGNhc3QgUFJF USwgb3JpZ2luYXRvciAlcywgdGFyZ2V0ICVzIiwKKwkJCSAgICBldGhlcl9zcHJpbnRmKHByZXEt PnByZXFfb3JpZ2FkZHIpLAorCQkJICAgIGV0aGVyX3NwcmludGYoUFJFUV9UQUREUigwKSkpOwor CQkJcHByZXEucHJlcV9mbGFncyB8PSBJRUVFODAyMTFfTUVTSFBSRVFfRkxBR1NfQU07CiAJCQlw cHJlcS5wcmVxX2hvcGNvdW50ICs9IDE7CiAJCQlwcHJlcS5wcmVxX3R0bCAtPSAxOwogCQkJcHBy ZXEucHJlcV9tZXRyaWMgKz0gbXMtPm1zX3BtZXRyaWMtPm1wbV9tZXRyaWMobmkpOwpAQCAtODk3 LDcgKzk0MSw2IEBAIGh3bXBfcmVjdl9wcmVxKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgc3Ry dWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAkJCSAgICAmcHByZXEpOwogCQl9CiAJfQotCiB9CiAj dW5kZWYJUFJFUV9URkxBR1MKICN1bmRlZglQUkVRX1RBRERSCkBAIC05MjEsNyArOTY0LDcgQEAg aHdtcF9zZW5kX3ByZXEoc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAkvKgogCSAqIG1lc2gg cHJlcSBhY3Rpb24gZnJhbWUgZm9ybWF0CiAJICogICAgIFs2XSBkYQotCSAqICAgICBbNl0gc2Eg CisJICogICAgIFs2XSBzYQogCSAqICAgICBbNl0gYWRkcjMgPSBzYQogCSAqICAgICBbMV0gYWN0 aW9uCiAJICogICAgIFsxXSBjYXRlZ29yeQpAQCAtOTQzLDYgKzk4Niw3IEBAIGh3bXBfcmVjdl9w cmVwKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwK IAlzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9IHZhcC0+aXZfaWM7CiAJc3RydWN0IGlmbmV0ICpp ZnAgPSB2YXAtPml2X2lmcDsKIAlzdHJ1Y3QgbWJ1ZiAqbSwgKm5leHQ7CisJdWludDMyX3QgbWV0 cmljID0gMDsKIAogCS8qCiAJICogQWNjZXB0YW5jZSBjcml0ZXJpYTogaWYgdGhlIGNvcnJlc3Bv bmRpbmcgUFJFUSB3YXMgbm90IGdlbmVyYXRlZApAQCAtOTU2LDEyICsxMDAwLDE2IEBAIGh3bXBf cmVjdl9wcmVwKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2Rl ICpuaSwKIAkJcmV0dXJuOwogCiAJSUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hX TVAsIG5pLAotCSAgICAicmVjZWl2ZWQgUFJFUCBmcm9tICVzIiwgZXRoZXJfc3ByaW50ZihwcmVw LT5wcmVwX3RhcmdldGFkZHIpKTsKKwkgICAgInJlY2VpdmVkIFBSRVAsIG9yaWdpbmF0b3IgJXMs IHRhcmdldCAlcyIsCisJICAgIGV0aGVyX3NwcmludGYocHJlcC0+cHJlcF9vcmlnYWRkciksCisJ ICAgIGV0aGVyX3NwcmludGYocHJlcC0+cHJlcF90YXJnZXRhZGRyKSk7CiAKIAlydCA9IGllZWU4 MDIxMV9tZXNoX3J0X2ZpbmQodmFwLCBwcmVwLT5wcmVwX3RhcmdldGFkZHIpOwogCWlmIChydCA9 PSBOVUxMKSB7CiAJCS8qCiAJCSAqIElmIHdlIGhhdmUgbm8gZW50cnkgdGhpcyBjb3VsZCBiZSBh IHJlcGx5IHRvIGEgcm9vdCBQUkVRLgorCQkgKiBYWFg6IG5vdCB0cnVlIGFueW1vcmUgY2F1c2Ug d2UgZG9udCBjcmVhdGUgZW50cnkgZm9yIHRhcmdldAorCQkgKiAgd2hlbiBwcm9wYWdhdGluZyBQ UkVRcyBsaWtlIHRoZSBvbGQgY29kZSBkaWQuCiAJCSAqLwogCQlpZiAoaHMtPmhzX3Jvb3Rtb2Rl ICE9IElFRUU4MDIxMV9IV01QX1JPT1RNT0RFX0RJU0FCTEVEKSB7CiAJCQlydCA9IGllZWU4MDIx MV9tZXNoX3J0X2FkZCh2YXAsIHByZXAtPnByZXBfdGFyZ2V0YWRkcik7CkBAIC05NzgsMjQgKzEw MjYsMzYgQEAgaHdtcF9yZWN2X3ByZXAoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBzdHJ1Y3Qg aWVlZTgwMjExX25vZGUgKm5pLAogCQkJcnQtPnJ0X21ldHJpYyA9IHByZXAtPnByZXBfbWV0cmlj OwogCQkJcnQtPnJ0X2ZsYWdzIHw9IElFRUU4MDIxMV9NRVNIUlRfRkxBR1NfVkFMSUQ7CiAJCQlJ RUVFODAyMTFfTk9URSh2YXAsIElFRUU4MDIxMV9NU0dfSFdNUCwgbmksCi0JCQkgICAgImFkZCBy b290IHBhdGggdG8gJXMgbmhvcHMgJWQgbWV0cmljICVkIChQUkVQKSIsCisJCQkgICAgImFkZCBy b290IHBhdGggdG8gJXMgbmhvcHMgJWQgbWV0cmljICVsdSAoUFJFUCkiLAogCQkJICAgIGV0aGVy X3NwcmludGYocHJlcC0+cHJlcF90YXJnZXRhZGRyKSwKIAkJCSAgICBydC0+cnRfbmhvcHMsIHJ0 LT5ydF9tZXRyaWMpOwogCQkJcmV0dXJuOwotCQl9IAorCQl9CiAJCXJldHVybjsKIAl9CiAJLyoK IAkgKiBTZXF1ZW5jZSBudW1iZXIgdmFsaWRhdGlvbi4KIAkgKi8KIAlociA9IElFRUU4MDIxMV9N RVNIX1JPVVRFX1BSSVYocnQsIHN0cnVjdCBpZWVlODAyMTFfaHdtcF9yb3V0ZSk7Ci0JaWYgKEhX TVBfU0VRX0xFUShwcmVwLT5wcmVwX3RhcmdldHNlcSwgaHItPmhyX3NlcSkpIHsKLQkJSUVFRTgw MjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsIG5pLAotCQkgICAgImRpc2NhcmQgUFJF UCBmcm9tICVzLCBvbGQgc2VxIG5vICV1IDw9ICV1IiwKLQkJICAgIGV0aGVyX3NwcmludGYocHJl cC0+cHJlcF90YXJnZXRhZGRyKSwKLQkJICAgIHByZXAtPnByZXBfdGFyZ2V0c2VxLCBoci0+aHJf c2VxKTsKLQkJcmV0dXJuOworCS8qIEFjY2VwdCBpZiByb3V0ZSBpcyBub3QgdmFsaWQgKi8KKwlp ZigocnQtPnJ0X2ZsYWdzICYgSUVFRTgwMjExX01FU0hSVF9GTEFHU19WQUxJRCkpIHsKKwkJaWYg KEhXTVBfU0VRX0xUKHByZXAtPnByZXBfdGFyZ2V0c2VxLCBoci0+aHJfc2VxKSkgeworCQkJSUVF RTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsIG5pLAorCQkJICAgICJkaXNjYXJk IFBSRVAgZnJvbSAlcywgb2xkIHNlcSBubyAldSA8ICV1IiwKKwkJCSAgICBldGhlcl9zcHJpbnRm KHByZXAtPnByZXBfdGFyZ2V0YWRkciksCisJCQkgICAgcHJlcC0+cHJlcF90YXJnZXRzZXEsIGhy LT5ocl9zZXEpOworCQkJcmV0dXJuOworCQkvKiBJZiBzYW1lIHNlcW5vIGNvbXBhcmUgbWV0cmlj ICovCisJCX1lbHNlIGlmKEhXTVBfU0VRX0xFUShwcmVwLT5wcmVwX3RhcmdldHNlcSwgaHItPmhy X3NlcSkgJiYKKwkJICAgIHByZXAtPnByZXBfbWV0cmljID4gcnQtPnJ0X21ldHJpYykgeworCQkJ SUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsIG5pLAorCQkJICAgICJkaXNj YXJkIFBSRVAgZnJvbSAlcywgbmV3IG1ldHJpYyAldSA+ICV1IiwKKwkJCSAgICBldGhlcl9zcHJp bnRmKHByZXAtPnByZXBfdGFyZ2V0YWRkciksCisJCQkgICAgcHJlcC0+cHJlcF9tZXRyaWMsIHJ0 LT5ydF9tZXRyaWMpOworCQkJcmV0dXJuOworCQl9CiAJfQorCiAJaHItPmhyX3NlcSA9IHByZXAt PnByZXBfdGFyZ2V0c2VxOwogCS8qCiAJICogSWYgaXQncyBOT1QgZm9yIHVzLCBwcm9wYWdhdGUg dGhlIFBSRVAuCkBAIC0xMDAzLDE2ICsxMDYzLDEzIEBAIGh3bXBfcmVjdl9wcmVwKHN0cnVjdCBp ZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAlpZiAoIUlFRUU4 MDIxMV9BRERSX0VRKHZhcC0+aXZfbXlhZGRyLCBwcmVwLT5wcmVwX29yaWdhZGRyKSAmJgogCSAg ICBwcmVwLT5wcmVwX3R0bCA+IDEgJiYgcHJlcC0+cHJlcF9ob3Bjb3VudCA8IGhzLT5oc19tYXho b3BzKSB7CiAJCXN0cnVjdCBpZWVlODAyMTFfbWVzaHByZXBfaWUgcHByZXA7IC8qIHByb3BhZ2F0 ZWQgUFJFUCAqLwotCiAJCUlFRUU4MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBu aSwKIAkJICAgICJwcm9wYWdhdGUgUFJFUCBmcm9tICVzIiwKIAkJICAgIGV0aGVyX3NwcmludGYo cHJlcC0+cHJlcF90YXJnZXRhZGRyKSk7Ci0KIAkJbWVtY3B5KCZwcHJlcCwgcHJlcCwgc2l6ZW9m KHBwcmVwKSk7CiAJCXBwcmVwLnByZXBfaG9wY291bnQgKz0gMTsKIAkJcHByZXAucHJlcF90dGwg LT0gMTsKIAkJcHByZXAucHJlcF9tZXRyaWMgKz0gbXMtPm1zX3BtZXRyaWMtPm1wbV9tZXRyaWMo bmkpOwotCQlJRUVFODAyMTFfQUREUl9DT1BZKHBwcmVwLnByZXBfdGFyZ2V0YWRkciwgdmFwLT5p dl9teWFkZHIpOwogCQlod21wX3NlbmRfcHJlcChuaSwgdmFwLT5pdl9teWFkZHIsIGJyb2FkY2Fz dGFkZHIsICZwcHJlcCk7CiAJfQogCWhyID0gSUVFRTgwMjExX01FU0hfUk9VVEVfUFJJVihydCwg c3RydWN0IGllZWU4MDIxMV9od21wX3JvdXRlKTsKQEAgLTEwMjIsNyArMTA3OSw5IEBAIGh3bXBf cmVjdl9wcmVwKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2Rl ICpuaSwKIAkJICAgICJkaXNjYXJkIFBSRVAgZm9yICVzLCByb3V0ZSBpcyBtYXJrZWQgUFJPWFki LAogCQkgICAgZXRoZXJfc3ByaW50ZihwcmVwLT5wcmVwX3RhcmdldGFkZHIpKTsKIAkJdmFwLT5p dl9zdGF0cy5pc19od21wX3Byb3h5Kys7Ci0JfSBlbHNlIGlmIChwcmVwLT5wcmVwX29yaWdzZXEg PT0gaHItPmhyX29yaWdzZXEpIHsKKwkvKiBOQjogZmlyc3QgcGF0aCBkaXNjb3ZlcnkgYWx3YXlz IGZhaWxzICovCisJfSBlbHNlIGlmIChoci0+aHJfb3JpZ3NlcSA9PSAwIHx8CisJICAgIHByZXAt PnByZXBfb3JpZ3NlcSA9PSBoci0+aHJfb3JpZ3NlcSkgewogCQkvKgogCQkgKiBDaGVjayBpZiB3 ZSBhbHJlYWR5IGhhdmUgYSBwYXRoIHRvIHRoaXMgbm9kZS4KIAkJICogSWYgd2UgZG8sIGNoZWNr IGlmIHRoaXMgcGF0aCByZXBseSBjb250YWlucyBhCkBAIC0xMDMxLDMyICsxMDkwLDM1IEBAIGh3 bXBfcmVjdl9wcmVwKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9u b2RlICpuaSwKIAkJaWYgKChydC0+cnRfZmxhZ3MgJiBJRUVFODAyMTFfTUVTSFJUX0ZMQUdTX1ZB TElEKSA9PSAwIHx8CiAJCSAgICAocHJlcC0+cHJlcF9ob3Bjb3VudCA8IHJ0LT5ydF9uaG9wcyB8 fAogCQkgICAgIHByZXAtPnByZXBfbWV0cmljIDwgcnQtPnJ0X21ldHJpYykpIHsKKwkJCWhyLT5o cl9vcmlnc2VxID0gcHJlcC0+cHJlcF9vcmlnc2VxOworCQkJbWV0cmljID0gcHJlcC0+cHJlcF9t ZXRyaWMgKworCQkJICAgIG1zLT5tc19wbWV0cmljLT5tcG1fbWV0cmljKG5pKTsKIAkJCUlFRUU4 MDIxMV9OT1RFKHZhcCwgSUVFRTgwMjExX01TR19IV01QLCBuaSwKLQkJCSAgICAiJXMgcGF0aCB0 byAlcywgaG9wY291bnQgJWQ6JWQgbWV0cmljICVkOiVkIiwKKwkJCSAgICAiJXMgcGF0aCB0byAl cywgaG9wY291bnQgJWQ6JWQgbWV0cmljICVsdTolbHUiLAogCQkJICAgIHJ0LT5ydF9mbGFncyAm IElFRUU4MDIxMV9NRVNIUlRfRkxBR1NfVkFMSUQgPwotCQkJCSJwcmVmZXIiIDogInVwZGF0ZSIs Ci0JCQkgICAgZXRoZXJfc3ByaW50ZihwcmVwLT5wcmVwX29yaWdhZGRyKSwKLQkJCSAgICBydC0+ cnRfbmhvcHMsIHByZXAtPnByZXBfaG9wY291bnQsCi0JCQkgICAgcnQtPnJ0X21ldHJpYywgcHJl cC0+cHJlcF9tZXRyaWMpOworCQkJICAgICJwcmVmZXIiIDogInVwZGF0ZSIsCisJCQkgICAgZXRo ZXJfc3ByaW50ZihwcmVwLT5wcmVwX3RhcmdldGFkZHIpLAorCQkJICAgIHJ0LT5ydF9uaG9wcywg cHJlcC0+cHJlcF9ob3Bjb3VudCArIDEsCisJCQkgICAgcnQtPnJ0X21ldHJpYywgbWV0cmljKTsK IAkJCUlFRUU4MDIxMV9BRERSX0NPUFkocnQtPnJ0X25leHRob3AsIHdoLT5pX2FkZHIyKTsKLQkJ CXJ0LT5ydF9uaG9wcyA9IHByZXAtPnByZXBfaG9wY291bnQ7CisJCQlydC0+cnRfbmhvcHMgPSBw cmVwLT5wcmVwX2hvcGNvdW50ICsgMTsKIAkJCXJ0LT5ydF9saWZldGltZSA9IHByZXAtPnByZXBf bGlmZXRpbWU7Ci0JCQlydC0+cnRfbWV0cmljID0gcHJlcC0+cHJlcF9tZXRyaWM7CisJCQlydC0+ cnRfbWV0cmljID0gbWV0cmljOwogCQkJcnQtPnJ0X2ZsYWdzIHw9IElFRUU4MDIxMV9NRVNIUlRf RkxBR1NfVkFMSUQ7CiAJCX0gZWxzZSB7CiAJCQlJRUVFODAyMTFfTk9URSh2YXAsIElFRUU4MDIx MV9NU0dfSFdNUCwgbmksCi0JCQkgICAgImlnbm9yZSBQUkVQIGZvciAlcywgaG9wY291bnQgJWQ6 JWQgbWV0cmljICVkOiVkIiwKKwkJCSAgICAiaWdub3JlIFBSRVAgZm9yICVzLCBob3Bjb3VudCAl ZDolZCBtZXRyaWMgJWx1OiVsdSIsCiAJCQkgICAgZXRoZXJfc3ByaW50ZihwcmVwLT5wcmVwX3Rh cmdldGFkZHIpLAogCQkJICAgIHJ0LT5ydF9uaG9wcywgcHJlcC0+cHJlcF9ob3Bjb3VudCwKIAkJ CSAgICBydC0+cnRfbWV0cmljLCBwcmVwLT5wcmVwX21ldHJpYyk7CiAJCX0KIAl9IGVsc2Ugewog CQlJRUVFODAyMTFfTk9URSh2YXAsIElFRUU4MDIxMV9NU0dfSFdNUCwgbmksCi0JCSAgICAiZGlz Y2FyZCBQUkVQIGZvciAlcywgd3Jvbmcgc2Vxbm8gJXUgIT0gJXUiLAorCQkgICAgImRpc2NhcmQg UFJFUCBmb3IgJXMsIHdyb25nIG9yaWcgc2Vxbm8gJXUgIT0gJXUiLAogCQkgICAgZXRoZXJfc3By aW50ZihwcmVwLT5wcmVwX3RhcmdldGFkZHIpLCBwcmVwLT5wcmVwX29yaWdzZXEsCi0JCSAgICBo ci0+aHJfc2VxKTsKKwkJICAgIGhyLT5ocl9vcmlnc2VxKTsKIAkJdmFwLT5pdl9zdGF0cy5pc19o d21wX3dyb25nc2VxKys7Ci0JfSAKKwl9CiAJLyoKIAkgKiBDaGVjayBmb3IgZnJhbWVzIHF1ZXVl ZCBhd2FpdGluZyBwYXRoIGRpc2NvdmVyeS4KIAkgKiBYWFggcHJvYmFibHkgY2FuIHRlbGwgZXhh Y3RseSBhbmQgYXZvaWQgcmVtb3ZlIGNhbGwKQEAgLTEwNjQsOSArMTEyNiw5IEBAIGh3bXBfcmVj dl9wcmVwKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMV9ub2RlICpu aSwKIAkgKiAgICAgc3R1Y2sgYmFjayBvbiB0aGUgc3RhZ2VxIGJlY2F1c2UgdGhlcmUgd29uJ3Qg YmUKIAkgKiAgICAgYSBwYXRoLgogCSAqLwotCW0gPSBpZWVlODAyMTFfYWdlcV9yZW1vdmUoJmlj LT5pY19zdGFnZXEsIAorCW0gPSBpZWVlODAyMTFfYWdlcV9yZW1vdmUoJmljLT5pY19zdGFnZXEs CiAJICAgIChzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKikodWludHB0cl90KQotCQlpZWVlODAyMTFf bWFjX2hhc2goaWMsIHJ0LT5ydF9kZXN0KSk7CisJICAgIGllZWU4MDIxMV9tYWNfaGFzaChpYywg cnQtPnJ0X2Rlc3QpKTsKIAlmb3IgKDsgbSAhPSBOVUxMOyBtID0gbmV4dCkgewogCQluZXh0ID0g bS0+bV9uZXh0cGt0OwogCQltLT5tX25leHRwa3QgPSBOVUxMOwpAQCAtMTA4Nyw3ICsxMTQ5LDcg QEAgaHdtcF9zZW5kX3ByZXAoc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwKIAkvKgogCSAqIG1l c2ggcHJlcCBhY3Rpb24gZnJhbWUgZm9ybWF0CiAJICogICAgIFs2XSBkYQotCSAqICAgICBbNl0g c2EgCisJICogICAgIFs2XSBzYQogCSAqICAgICBbNl0gYWRkcjMgPSBzYQogCSAqICAgICBbMV0g YWN0aW9uCiAJICogICAgIFsxXSBjYXRlZ29yeQpAQCAtMTE0Niw3ICsxMjA4LDcgQEAgaHdtcF9y ZWN2X3BlcnIoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUg Km5pLAogCXN0cnVjdCBpZWVlODAyMTFfbWVzaF9zdGF0ZSAqbXMgPSB2YXAtPml2X21lc2g7CiAJ c3RydWN0IGllZWU4MDIxMV9tZXNoX3JvdXRlICpydCA9IE5VTEw7CiAJc3RydWN0IGllZWU4MDIx MV9od21wX3JvdXRlICpocjsKLSAJc3RydWN0IGllZWU4MDIxMV9tZXNocGVycl9pZSBwcGVycjsK KwlzdHJ1Y3QgaWVlZTgwMjExX21lc2hwZXJyX2llIHBwZXJyOwogCWludCBpLCBmb3J3YXJkID0g MDsKIAogCS8qCkBAIC0xMTY1LDcgKzEyMjcsNyBAQCBod21wX3JlY3ZfcGVycihzdHJ1Y3QgaWVl ZTgwMjExdmFwICp2YXAsIHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCiAJCWlmIChydCA9PSBO VUxMKQogCQkJY29udGludWU7CiAJCWhyID0gSUVFRTgwMjExX01FU0hfUk9VVEVfUFJJVihydCwg c3RydWN0IGllZWU4MDIxMV9od21wX3JvdXRlKTsKLQkJaWYgKCEoUEVSUl9ERkxBR1MoMCkgJiBJ RUVFODAyMTFfTUVTSFBFUlJfREZMQUdTX1VTTikgJiYgCisJCWlmICghKFBFUlJfREZMQUdTKDAp ICYgSUVFRTgwMjExX01FU0hQRVJSX0RGTEFHU19VU04pICYmCiAJCSAgICBIV01QX1NFUV9HRVEo UEVSUl9EU0VRKGkpLCBoci0+aHJfc2VxKSkgewogCQkJaWVlZTgwMjExX21lc2hfcnRfZGVsKHZh cCwgcnQtPnJ0X2Rlc3QpOwogCQkJaWVlZTgwMjExX21lc2hfcnRfZmx1c2hfcGVlcih2YXAsIHJ0 LT5ydF9kZXN0KTsKQEAgLTEyNjcsNyArMTMyOSw3IEBAIGh3bXBfc2VuZF9yYW5uKHN0cnVjdCBp ZWVlODAyMTFfbm9kZSAqbmksCiAJLyoKIAkgKiBtZXNoIHJhbm4gYWN0aW9uIGZyYW1lIGZvcm1h dAogCSAqICAgICBbNl0gZGEKLQkgKiAgICAgWzZdIHNhIAorCSAqICAgICBbNl0gc2EKIAkgKiAg ICAgWzZdIGFkZHIzID0gc2EKIAkgKiAgICAgWzFdIGFjdGlvbgogCSAqICAgICBbMV0gY2F0ZWdv cnkKQEAgLTEzMjMsMTMgKzEzODUsMTUgQEAgaHdtcF9kaXNjb3ZlcihzdHJ1Y3QgaWVlZTgwMjEx dmFwICp2YXAsCiAJCQkvKiBYWFggY2hlY2sgcHJlcSByZXRyaWVzICovCiAJCQlzZW5kcHJlcSA9 IDE7CiAJCQlJRUVFODAyMTFfTk9URV9NQUModmFwLCBJRUVFODAyMTFfTVNHX0hXTVAsIGRlc3Qs Ci0JCQkgICAgInN0YXJ0IHBhdGggZGlzY292ZXJ5IChzcmMgJXMpIiwKKwkJCSAgICAic3RhcnQg cGF0aCBkaXNjb3ZlcnkgKHNyYyAlcyksIHRhcmdldCBzZXEgJXUiLAogCQkJICAgIG0gPT0gTlVM TCA/ICI8bm9uZT4iIDogZXRoZXJfc3ByaW50ZigKLQkJCQltdG9kKG0sIHN0cnVjdCBldGhlcl9o ZWFkZXIgKiktPmV0aGVyX3Nob3N0KSk7CisJCQkgICAgbXRvZChtLCBzdHJ1Y3QgZXRoZXJfaGVh ZGVyICopLT5ldGhlcl9zaG9zdCksCisJCQkgICAgaHItPmhyX3NlcSk7CiAJCQkvKgogCQkJICog VHJ5IHRvIGRpc2NvdmVyIHRoZSBwYXRoIGZvciB0aGlzIG5vZGUuCisJCQkgKiBHcm91cCBhZGRy ZXNzZWQgUFJFUSBDYXNlIEEKIAkJCSAqLwotCQkJcHJlcS5wcmVxX2ZsYWdzID0gMDsKKwkJCXBy ZXEucHJlcV9mbGFncyA9IElFRUU4MDIxMV9NRVNIUFJFUV9GTEFHU19BTTsKIAkJCXByZXEucHJl cV9ob3Bjb3VudCA9IDA7CiAJCQlwcmVxLnByZXFfdHRsID0gbXMtPm1zX3R0bDsKIAkJCXByZXEu cHJlcV9pZCA9ICsraHMtPmhzX3ByZXFpZDsKQEAgLTEzNDUsNyArMTQwOSw3IEBAIGh3bXBfZGlz Y292ZXIoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLAogCQkJaWYgKGllZWU4MDIxMV9od21wX3Jl cGx5Zm9yd2FyZCkKIAkJCQlQUkVRX1RGTEFHUygwKSB8PSBJRUVFODAyMTFfTUVTSFBSRVFfVEZM QUdTX1JGOwogCQkJUFJFUV9URkxBR1MoMCkgfD0gSUVFRTgwMjExX01FU0hQUkVRX1RGTEFHU19V U047Ci0JCQlQUkVRX1RTRVEoMCkgPSAwOworCQkJUFJFUV9UU0VRKDApID0gaHItPmhyX3NlcTsK IAkJCS8qIFhYWCBjaGVjayByZXR1cm4gdmFsdWUgKi8KIAkJCWh3bXBfc2VuZF9wcmVxKHZhcC0+ aXZfYnNzLCB2YXAtPml2X215YWRkciwKIAkJCSAgICBicm9hZGNhc3RhZGRyLCAmcHJlcSk7CkBA IC0xMzkxLDcgKzE0NTUsNyBAQCBod21wX2lvY3RsX2dldDgwMjExKHN0cnVjdCBpZWVlODAyMTF2 YXAgKnZhcCwgc3RydWN0IGllZWU4MDIxMXJlcSAqaXJlcSkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjEx X2h3bXBfc3RhdGUgKmhzID0gdmFwLT5pdl9od21wOwogCWludCBlcnJvcjsKLSAKKwogCWlmICh2 YXAtPml2X29wbW9kZSAhPSBJRUVFODAyMTFfTV9NQlNTKQogCQlyZXR1cm4gRU5PU1lTOwogCWVy cm9yID0gMDsKZGlmZiAtLWdpdCBhL3N5cy9uZXQ4MDIxMS9pZWVlODAyMTFfaW9jdGwuYyBiL3N5 cy9uZXQ4MDIxMS9pZWVlODAyMTFfaW9jdGwuYwppbmRleCAyZTM4OGFlLi5kZjdhNzA0IDEwMDY0 NAotLS0gYS9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX2lvY3RsLmMKKysrIGIvc3lzL25ldDgwMjEx L2llZWU4MDIxMV9pb2N0bC5jCkBAIC0xMzk3LDYgKzEzOTcsMTcgQEAgc2V0bWxtZV9jb21tb24o c3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBpbnQgb3AsCiAJCQkgICAgSUVFRTgwMjExX0ZDMF9T VUJUWVBFX0RFQVVUSCwgcmVhc29uKTsKIAkJCWllZWU4MDIxMV9mcmVlX25vZGUobmkpOwogCQkJ YnJlYWs7CisJCWNhc2UgSUVFRTgwMjExX01fTUJTUzoKKwkJCUlFRUU4MDIxMV9OT0RFX0xPQ0so bnQpOworCQkJbmkgPSBpZWVlODAyMTFfZmluZF9ub2RlX2xvY2tlZChudCwgbWFjKTsKKwkJCWlm IChuaSAhPSBOVUxMKSB7CisJCQkJaWVlZTgwMjExX25vZGVfbGVhdmUobmkpOworCQkJCWllZWU4 MDIxMV9mcmVlX25vZGUobmkpOworCQkJfWVsc2V7CisJCQkJZXJyb3IgPSBFTk9FTlQ7CisJCQl9 CisJCQlJRUVFODAyMTFfTk9ERV9VTkxPQ0sobnQpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJ CQllcnJvciA9IEVJTlZBTDsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3lzL25ldDgwMjExL2ll ZWU4MDIxMV9tZXNoLmMgYi9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX21lc2guYwppbmRleCBjZmZm ZDg3Li42YWRjNDVhIDEwMDY0NAotLS0gYS9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX21lc2guYwor KysgYi9zeXMvbmV0ODAyMTEvaWVlZTgwMjExX21lc2guYwpAQCAtMzM2LDYgKzMzNiwxNCBAQCBt ZXNoX3J0X2ZsdXNoX2ludmFsaWQoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwKQogCQlpZiAoKHJ0 LT5ydF9mbGFncyAmIElFRUU4MDIxMV9NRVNIUlRfRkxBR1NfVkFMSUQpID09IDAgJiYKIAkJICAg IHRpY2tzIC0gcnQtPnJ0X2NydGltZSA+PSBtcy0+bXNfcHBhdGgtPm1wcF9pbmFjdCkKIAkJCW1l c2hfcnRfZGVsKG1zLCBydCk7CisJCWVsc2UgeworCQkJcnQtPnJ0X2xpZmV0aW1lIC09IDEwMDsg LyogZGVjcmVhc2UgbGlmZXRpbWUgKi8KKwkJCWlmKHJ0LT5ydF9saWZldGltZSA8PSAwKXsKKwkJ CQlydC0+cnRfZmxhZ3MgJj0KKwkJCQkgICAgfklFRUU4MDIxMV9NRVNIUlRfRkxBR1NfVkFMSUQ7 IC8qIGludmFsaWRhdGUgKi8KKwkJCQltZXNoX3J0X2RlbChtcywgcnQpOworCQkJfQorCQl9CiAJ fQogCU1FU0hfUlRfVU5MT0NLKG1zKTsKIH0K --14dae934053783400c04b6a127c5--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2BsBSo%2BuYa-6w8VFBMTyhWFHCNezMH5HBHJONCRvWRy6QuaCbQ>