From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sedat Dilek Subject: Re: ia64 dies in slab code on next-20120906 Date: Thu, 6 Sep 2012 22:13:24 +0200 Message-ID: References: Reply-To: sedat.dilek@gmail.com Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=f46d04016c23a36c8704c90e1fee Return-path: Received: from mail-lpp01m010-f46.google.com ([209.85.215.46]:41112 "EHLO mail-lpp01m010-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757870Ab2IFUN0 (ORCPT ); Thu, 6 Sep 2012 16:13:26 -0400 Received: by lagy9 with SMTP id y9so1381021lag.19 for ; Thu, 06 Sep 2012 13:13:24 -0700 (PDT) In-Reply-To: Sender: linux-next-owner@vger.kernel.org List-ID: To: Tony Luck Cc: linux-next@vger.kernel.org, Christoph Lameter , Pekka Enberg --f46d04016c23a36c8704c90e1fee Content-Type: text/plain; charset=UTF-8 On Thu, Sep 6, 2012 at 9:39 PM, Sedat Dilek wrote: > On Thu, Sep 6, 2012 at 8:39 PM, Tony Luck wrote: >> Worked fine yesterday on next-20120905, crashes today. First sign of trouble >> was an unaligned access, then a NULL dereference. SL*B related bits of >> my config: >> >> CONFIG_SLUB_DEBUG=y >> # CONFIG_SLAB is not set >> CONFIG_SLUB=y >> CONFIG_SLABINFO=y >> # CONFIG_SLUB_DEBUG_ON is not set >> # CONFIG_SLUB_STATS is not set >> > > I fell over the same issue, comparing the diff between next-20120905 > and next-20120906 shows the culprit lies in the > "slab/common-for-cgroups" GIT branch. > That stuff was in "slab/next" and came to today's linux-next, but now removed. > > I try with reverting all commits came with "slab/common-for-cgroups" > in next-20120906. > Confirmed, with the attached patch (with 15 reverted commits from "slab/common-for-cgroups") I can boot my Ubuntu/precise AMD64 machine, again. > - Sedat - > > [1] http://git.kernel.org/?p=linux/kernel/git/penberg/linux.git;a=shortlog;h=refs/heads/slab/common-for-cgroups > [2] http://git.kernel.org/?p=linux/kernel/git/penberg/linux.git;a=shortlog;h=refs/heads/slab/next > >> And he console log. >> >> PID hash table entries: 4096 (order: 1, 32768 bytes) >> Dentry cache hash table entries: 262144 (order: 7, 2097152 bytes) >> Inode-cache hash table entries: 131072 (order: 6, 1048576 bytes) >> Memory: 2047920k/2086064k available (13992k code, 38144k reserved, >> 6012k data, 880k init) >> kernel unaligned access to 0xca2ffc55fb373e95, ip=0xa0000001001be550 >> swapper[0]: error during unaligned kernel access >> -1 [1] >> Modules linked in: >> >> Pid: 0, CPU 0, comm: swapper >> psr : 00001010084a2018 ifs : 800000000000060f ip : >> [] Not tainted (3.6.0-rc4-zx1-smp-next-20120906) >> ip is at new_slab+0x90/0x680 >> unat: 0000000000000000 pfs : 000000000000060f rsc : 0000000000000003 >> rnat: 9666960159966a59 bsps: a0000001001441c0 pr : 9666960159965a59 >> ldrs: 0000000000000000 ccv : 0000000000000000 fpsr: 0009804c8a70433f >> csd : 0000000000000000 ssd : 0000000000000000 >> b0 : a0000001001be500 b6 : a00000010112cb20 b7 : a0000001011660a0 >> f6 : 0fff7f0f0f0f0e54f0000 f7 : 0ffe8c5c1000000000000 >> f8 : 1000d8000000000000000 f9 : 100068800000000000000 >> f10 : 10005f0f0f0f0e54f0000 f11 : 1003e0000000000000078 >> r1 : a00000010155eef0 r2 : 0000000000000000 r3 : fffffffffffc1638 >> r8 : e0000040600081b8 r9 : ca2ffc55fb373e95 r10 : 0000000000000000 >> r11 : e000004040001646 r12 : a000000101287e20 r13 : a000000101280000 >> r14 : 0000000000004000 r15 : 0000000000000078 r16 : ca2ffc55fb373e75 >> r17 : e000004040040000 r18 : fffffffffffc1646 r19 : e000004040001646 >> r20 : fffffffffffc15f8 r21 : 000000000000004d r22 : a00000010132fa68 >> r23 : 00000000000000ed r24 : 0000000000000000 r25 : 0000000000000000 >> r26 : 0000000000000001 r27 : a0000001012b8500 r28 : a00000010135f4a0 >> r29 : 0000000000000000 r30 : 0000000000000000 r31 : 0000000000000001 >> Unable to handle kernel NULL pointer dereference (address 0000000000000018) >> swapper[0]: Oops 11003706212352 [2] >> Modules linked in: >> >> Pid: 0, CPU 0, comm: swapper >> psr : 0000121008022018 ifs : 800000000000cc18 ip : >> [] Not tainted (3.6.0-rc4-zx1-smp-next-20120906) >> ip is at __copy_user+0x891/0x960 >> unat: 0000000000000000 pfs : 0000000000000813 rsc : 0000000000000003 >> rnat: 0000000000000000 bsps: 0000000000000000 pr : 9666960159961765 >> ldrs: 0000000000000000 ccv : 0000000000000000 fpsr: 0009804c0270033f >> csd : 0000000000000000 ssd : 0000000000000000 >> b0 : a00000010004b550 b6 : a00000010004b740 b7 : a00000010000c750 >> f6 : 000000000000000000000 f7 : 1003e9e3779b97f4a7c16 >> f8 : 1003e0a00000010001550 f9 : 100068800000000000000 >> f10 : 10005f0f0f0f0e54f0000 f11 : 1003e0000000000000078 >> r1 : a00000010155eef0 r2 : a0000001012870b0 r3 : a0000001012870b8 >> r8 : 0000000000000298 r9 : 0000000000000013 r10 : 0000000000000000 >> r11 : 9666960159961a65 r12 : a000000101287010 r13 : a000000101280000 >> r14 : a000000101287068 r15 : a000000101287080 r16 : 0000000000000298 >> r17 : 0000000000000010 r18 : 0000000000000018 r19 : a000000101287310 >> r20 : 0000000000000290 r21 : 0000000000000000 r22 : 0000000000000000 >> r23 : a000000101386f58 r24 : 0000000000000000 r25 : 000000007fffffff >> r26 : a000000101287078 r27 : a0000001013c69b0 r28 : 0000000000000000 >> r29 : 0000000000000014 r30 : 0000000000000000 r31 : 0000000000000813 >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-next" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html --f46d04016c23a36c8704c90e1fee Content-Type: application/octet-stream; name="3.6.0-rc4-next20120906-2-iniza-generic.patch" Content-Disposition: attachment; filename="3.6.0-rc4-next20120906-2-iniza-generic.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h6sammj30 U2VkYXQgRGlsZWsgKDIxKToKICAgICAga2J1aWxkLCBkZWItcGtnOiBUcnkgdG8gZGV0ZXJtaW5l IGRpc3RyaWJ1dGlvbgogICAgICBrYnVpbGQsIGRlYi1wa2c6IEJ1bXAgeWVhciBpbiBkZWJpYW4v Y29weXJpZ2h0IGZpbGUKICAgICAga2J1aWxkLCBkZWItcGtnOiBVcGRhdGUgZ2l0IHJlcG9zaXRv cnkgVVJMIGluIGRlYmlhbi9jb3B5cmlnaHQgZmlsZQogICAgICBNZXJnZSB0YWcgJ25leHQtMjAx MjA5MDYnIG9mIGdpdDovL2dpdC5rZXJuZWwub3JnLy4uLi9uZXh0L2xpbnV4LW5leHQgaW50byBM aW51eC1OZXh0LXYyMDEyMDkwNgogICAgICBSZXZlcnQgIlJldmVydCAibW0vc2xbYW91XWI6IE1v dmUgc3lzZnNfc2xhYl9hZGQgdG8gY29tbW9uIiIKICAgICAgUmV2ZXJ0ICJtbS9zbFthb3VdYjog TW92ZSBrbWVtX2NhY2hlIHJlZmNvdW50aW5nIHRvIGNvbW1vbiBjb2RlIgogICAgICBSZXZlcnQg Im1tL3NsW2FvdV1iOiBTaHJpbmsgX19rbWVtX2NhY2hlX2NyZWF0ZSgpIHBhcmFtZXRlciBsaXN0 cyIKICAgICAgUmV2ZXJ0ICJtbS9zbFthb3VdYjogTW92ZSBrbWVtX2NhY2hlIGFsbG9jYXRpb25z IGludG8gY29tbW9uIGNvZGUiCiAgICAgIFJldmVydCAibW0vc2xbYW91XWI6IE1vdmUgc3lzZnNf c2xhYl9hZGQgdG8gY29tbW9uIgogICAgICBSZXZlcnQgIm1tL3NsW2FvdV1iOiBEbyBzbGFiIGFs aWFzaW5nIGNhbGwgZnJvbSBjb21tb24gY29kZSIKICAgICAgUmV2ZXJ0ICJtbS9zbFthb3VdYjog TW92ZSBkdXBpbmcgb2Ygc2xhYiBuYW1lIHRvIHNsYWJfY29tbW9uLmMiCiAgICAgIFJldmVydCAi bW0vc2xbYW91XWI6IEdldCByaWQgb2YgX19rbWVtX2NhY2hlX2Rlc3Ryb3kiCiAgICAgIFJldmVy dCAibW0vc2xbYW91XWI6IE1vdmUgZnJlZWluZyBvZiBrbWVtX2NhY2hlIHN0cnVjdHVyZSB0byBj b21tb24gY29kZSIKICAgICAgUmV2ZXJ0ICJtbS9zbFthb3VdYjogVXNlICJrbWVtX2NhY2hlIiBu YW1lIGZvciBzbGFiIGNhY2hlIHdpdGgga21lbV9jYWNoZSBzdHJ1Y3QiCiAgICAgIFJldmVydCAi bW0vc2xbYW91XWI6IEV4dHJhY3QgYSBjb21tb24gZnVuY3Rpb24gZm9yIGttZW1fY2FjaGVfZGVz dHJveSIKICAgICAgUmV2ZXJ0ICJtbS9zbFthb3VdYjogTW92ZSBsaXN0X2FkZCgpIHRvIHNsYWJf Y29tbW9uLmMiCiAgICAgIFJldmVydCAibW0vc2xhYl9jb21tb246IEltcHJvdmUgZXJyb3IgaGFu ZGxpbmcgaW4ga21lbV9jYWNoZV9jcmVhdGUiCiAgICAgIFJldmVydCAibW0vc2x1YjogVXNlIGtt ZW1fY2FjaGUgZm9yIHRoZSBrbWVtX2NhY2hlIHN0cnVjdHVyZSIKICAgICAgUmV2ZXJ0ICJtbS9z bHViOiBBZGQgZGVidWdnaW5nIHRvIHZlcmlmeSBjb3JyZWN0IGNhY2hlIHVzZSBvbiBrbWVtX2Nh Y2hlX2ZyZWUoKSIKICAgICAgTWVyZ2UgYnJhbmNoICdkZWItcGtnLWZpeGVzJyBpbnRvIDMuNi4w LXJjNC1uZXh0MjAxMjA5MDYtMi1pbml6YS1nZW5lcmljCiAgICAgIE1lcmdlIGJyYW5jaCAnc2xh Yi1uZXh0LWZpeGVzJyBpbnRvIDMuNi4wLXJjNC1uZXh0MjAxMjA5MDYtMi1pbml6YS1nZW5lcmlj CgogbW0vc2xhYi5jICAgICAgICAgICAgICAgIHwgIDI1MSArKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiBtbS9zbGFiLmggICAgICAgICAgICAgICAgfCAgIDE5 ICstLS0KIG1tL3NsYWJfY29tbW9uLmMgICAgICAgICB8ICAgODAgKy0tLS0tLS0tLS0tLS0tCiBt bS9zbG9iLmMgICAgICAgICAgICAgICAgfCAgIDYwICsrKysrKy0tLS0tCiBtbS9zbHViLmMgICAg ICAgICAgICAgICAgfCAgMTQzICsrKysrKysrKysrKysrKystLS0tLS0tLS0tCiBzY3JpcHRzL3Bh Y2thZ2UvYnVpbGRkZWIgfCAgIDE5ICsrKy0KIDYgZmlsZXMgY2hhbmdlZCwgMjkyIGluc2VydGlv bnMoKyksIDI4MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9tbS9zbGFiLmMgYi9tbS9zbGFi LmMKaW5kZXggOGZkNjg1Mi4uYzg2YjA2ZCAxMDA2NDQKLS0tIGEvbW0vc2xhYi5jCisrKyBiL21t L3NsYWIuYwpAQCAtNTc4LDkgKzU3OCw5IEBAIHN0YXRpYyBzdHJ1Y3QgYXJyYXljYWNoZV9pbml0 IGluaXRhcnJheV9nZW5lcmljID0KICAgICB7IHswLCBCT09UX0NQVUNBQ0hFX0VOVFJJRVMsIDEs IDB9IH07CiAKIC8qIGludGVybmFsIGNhY2hlIG9mIGNhY2hlIGRlc2NyaXB0aW9uIG9ianMgKi8K LXN0YXRpYyBzdHJ1Y3Qga21lbV9saXN0MyAqa21lbV9jYWNoZV9ub2RlbGlzdHNbTUFYX05VTU5P REVTXTsKLXN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSBrbWVtX2NhY2hlX2Jvb3QgPSB7Ci0JLm5v ZGVsaXN0cyA9IGttZW1fY2FjaGVfbm9kZWxpc3RzLAorc3RhdGljIHN0cnVjdCBrbWVtX2xpc3Qz ICpjYWNoZV9jYWNoZV9ub2RlbGlzdHNbTUFYX05VTU5PREVTXTsKK3N0YXRpYyBzdHJ1Y3Qga21l bV9jYWNoZSBjYWNoZV9jYWNoZSA9IHsKKwkubm9kZWxpc3RzID0gY2FjaGVfY2FjaGVfbm9kZWxp c3RzLAogCS5iYXRjaGNvdW50ID0gMSwKIAkubGltaXQgPSBCT09UX0NQVUNBQ0hFX0VOVFJJRVMs CiAJLnNoYXJlZCA9IDEsCkBAIC0xNTk0LDE3ICsxNTk0LDE1IEBAIHZvaWQgX19pbml0IGttZW1f Y2FjaGVfaW5pdCh2b2lkKQogCWludCBvcmRlcjsKIAlpbnQgbm9kZTsKIAotCWttZW1fY2FjaGUg PSAma21lbV9jYWNoZV9ib290OwotCiAJaWYgKG51bV9wb3NzaWJsZV9ub2RlcygpID09IDEpCiAJ CXVzZV9hbGllbl9jYWNoZXMgPSAwOwogCiAJZm9yIChpID0gMDsgaSA8IE5VTV9JTklUX0xJU1RT OyBpKyspIHsKIAkJa21lbV9saXN0M19pbml0KCZpbml0a21lbV9saXN0M1tpXSk7CiAJCWlmIChp IDwgTUFYX05VTU5PREVTKQotCQkJa21lbV9jYWNoZS0+bm9kZWxpc3RzW2ldID0gTlVMTDsKKwkJ CWNhY2hlX2NhY2hlLm5vZGVsaXN0c1tpXSA9IE5VTEw7CiAJfQotCXNldF91cF9saXN0M3Moa21l bV9jYWNoZSwgQ0FDSEVfQ0FDSEUpOworCXNldF91cF9saXN0M3MoJmNhY2hlX2NhY2hlLCBDQUNI RV9DQUNIRSk7CiAKIAkvKgogCSAqIEZyYWdtZW50YXRpb24gcmVzaXN0YW5jZSBvbiBsb3cgbWVt b3J5IC0gb25seSB1c2UgYmlnZ2VyCkBAIC0xNjE2LDkgKzE2MTQsOSBAQCB2b2lkIF9faW5pdCBr bWVtX2NhY2hlX2luaXQodm9pZCkKIAogCS8qIEJvb3RzdHJhcCBpcyB0cmlja3ksIGJlY2F1c2Ug c2V2ZXJhbCBvYmplY3RzIGFyZSBhbGxvY2F0ZWQKIAkgKiBmcm9tIGNhY2hlcyB0aGF0IGRvIG5v dCBleGlzdCB5ZXQ6Ci0JICogMSkgaW5pdGlhbGl6ZSB0aGUga21lbV9jYWNoZSBjYWNoZTogaXQg Y29udGFpbnMgdGhlIHN0cnVjdAotCSAqICAgIGttZW1fY2FjaGUgc3RydWN0dXJlcyBvZiBhbGwg Y2FjaGVzLCBleGNlcHQga21lbV9jYWNoZSBpdHNlbGY6Ci0JICogICAga21lbV9jYWNoZSBpcyBz dGF0aWNhbGx5IGFsbG9jYXRlZC4KKwkgKiAxKSBpbml0aWFsaXplIHRoZSBjYWNoZV9jYWNoZSBj YWNoZTogaXQgY29udGFpbnMgdGhlIHN0cnVjdAorCSAqICAgIGttZW1fY2FjaGUgc3RydWN0dXJl cyBvZiBhbGwgY2FjaGVzLCBleGNlcHQgY2FjaGVfY2FjaGUgaXRzZWxmOgorCSAqICAgIGNhY2hl X2NhY2hlIGlzIHN0YXRpY2FsbHkgYWxsb2NhdGVkLgogCSAqICAgIEluaXRpYWxseSBhbiBfX2lu aXQgZGF0YSBhcmVhIGlzIHVzZWQgZm9yIHRoZSBoZWFkIGFycmF5IGFuZCB0aGUKIAkgKiAgICBr bWVtX2xpc3QzIHN0cnVjdHVyZXMsIGl0J3MgcmVwbGFjZWQgd2l0aCBhIGttYWxsb2MgYWxsb2Nh dGVkCiAJICogICAgYXJyYXkgYXQgdGhlIGVuZCBvZiB0aGUgYm9vdHN0cmFwLgpAQCAtMTYyNyw0 MyArMTYyNSw0MyBAQCB2b2lkIF9faW5pdCBrbWVtX2NhY2hlX2luaXQodm9pZCkKIAkgKiAgICBB biBfX2luaXQgZGF0YSBhcmVhIGlzIHVzZWQgZm9yIHRoZSBoZWFkIGFycmF5LgogCSAqIDMpIENy ZWF0ZSB0aGUgcmVtYWluaW5nIGttYWxsb2MgY2FjaGVzLCB3aXRoIG1pbmltYWxseSBzaXplZAog CSAqICAgIGhlYWQgYXJyYXlzLgotCSAqIDQpIFJlcGxhY2UgdGhlIF9faW5pdCBkYXRhIGhlYWQg YXJyYXlzIGZvciBrbWVtX2NhY2hlIGFuZCB0aGUgZmlyc3QKKwkgKiA0KSBSZXBsYWNlIHRoZSBf X2luaXQgZGF0YSBoZWFkIGFycmF5cyBmb3IgY2FjaGVfY2FjaGUgYW5kIHRoZSBmaXJzdAogCSAq ICAgIGttYWxsb2MgY2FjaGUgd2l0aCBrbWFsbG9jIGFsbG9jYXRlZCBhcnJheXMuCi0JICogNSkg UmVwbGFjZSB0aGUgX19pbml0IGRhdGEgZm9yIGttZW1fbGlzdDMgZm9yIGttZW1fY2FjaGUgYW5k CisJICogNSkgUmVwbGFjZSB0aGUgX19pbml0IGRhdGEgZm9yIGttZW1fbGlzdDMgZm9yIGNhY2hl X2NhY2hlIGFuZAogCSAqICAgIHRoZSBvdGhlciBjYWNoZSdzIHdpdGgga21hbGxvYyBhbGxvY2F0 ZWQgbWVtb3J5LgogCSAqIDYpIFJlc2l6ZSB0aGUgaGVhZCBhcnJheXMgb2YgdGhlIGttYWxsb2Mg Y2FjaGVzIHRvIHRoZWlyIGZpbmFsIHNpemVzLgogCSAqLwogCiAJbm9kZSA9IG51bWFfbWVtX2lk KCk7CiAKLQkvKiAxKSBjcmVhdGUgdGhlIGttZW1fY2FjaGUgKi8KKwkvKiAxKSBjcmVhdGUgdGhl IGNhY2hlX2NhY2hlICovCiAJSU5JVF9MSVNUX0hFQUQoJnNsYWJfY2FjaGVzKTsKLQlsaXN0X2Fk ZCgma21lbV9jYWNoZS0+bGlzdCwgJnNsYWJfY2FjaGVzKTsKLQlrbWVtX2NhY2hlLT5jb2xvdXJf b2ZmID0gY2FjaGVfbGluZV9zaXplKCk7Ci0Ja21lbV9jYWNoZS0+YXJyYXlbc21wX3Byb2Nlc3Nv cl9pZCgpXSA9ICZpbml0YXJyYXlfY2FjaGUuY2FjaGU7Ci0Ja21lbV9jYWNoZS0+bm9kZWxpc3Rz W25vZGVdID0gJmluaXRrbWVtX2xpc3QzW0NBQ0hFX0NBQ0hFICsgbm9kZV07CisJbGlzdF9hZGQo JmNhY2hlX2NhY2hlLmxpc3QsICZzbGFiX2NhY2hlcyk7CisJY2FjaGVfY2FjaGUuY29sb3VyX29m ZiA9IGNhY2hlX2xpbmVfc2l6ZSgpOworCWNhY2hlX2NhY2hlLmFycmF5W3NtcF9wcm9jZXNzb3Jf aWQoKV0gPSAmaW5pdGFycmF5X2NhY2hlLmNhY2hlOworCWNhY2hlX2NhY2hlLm5vZGVsaXN0c1tu b2RlXSA9ICZpbml0a21lbV9saXN0M1tDQUNIRV9DQUNIRSArIG5vZGVdOwogCiAJLyoKIAkgKiBz dHJ1Y3Qga21lbV9jYWNoZSBzaXplIGRlcGVuZHMgb24gbnJfbm9kZV9pZHMgJiBucl9jcHVfaWRz CiAJICovCi0Ja21lbV9jYWNoZS0+c2l6ZSA9IG9mZnNldG9mKHN0cnVjdCBrbWVtX2NhY2hlLCBh cnJheVtucl9jcHVfaWRzXSkgKworCWNhY2hlX2NhY2hlLnNpemUgPSBvZmZzZXRvZihzdHJ1Y3Qg a21lbV9jYWNoZSwgYXJyYXlbbnJfY3B1X2lkc10pICsKIAkJCQkgIG5yX25vZGVfaWRzICogc2l6 ZW9mKHN0cnVjdCBrbWVtX2xpc3QzICopOwotCWttZW1fY2FjaGUtPm9iamVjdF9zaXplID0ga21l bV9jYWNoZS0+c2l6ZTsKLQlrbWVtX2NhY2hlLT5zaXplID0gQUxJR04oa21lbV9jYWNoZS0+b2Jq ZWN0X3NpemUsCisJY2FjaGVfY2FjaGUub2JqZWN0X3NpemUgPSBjYWNoZV9jYWNoZS5zaXplOwor CWNhY2hlX2NhY2hlLnNpemUgPSBBTElHTihjYWNoZV9jYWNoZS5zaXplLAogCQkJCQljYWNoZV9s aW5lX3NpemUoKSk7Ci0Ja21lbV9jYWNoZS0+cmVjaXByb2NhbF9idWZmZXJfc2l6ZSA9Ci0JCXJl Y2lwcm9jYWxfdmFsdWUoa21lbV9jYWNoZS0+c2l6ZSk7CisJY2FjaGVfY2FjaGUucmVjaXByb2Nh bF9idWZmZXJfc2l6ZSA9CisJCXJlY2lwcm9jYWxfdmFsdWUoY2FjaGVfY2FjaGUuc2l6ZSk7CiAK IAlmb3IgKG9yZGVyID0gMDsgb3JkZXIgPCBNQVhfT1JERVI7IG9yZGVyKyspIHsKLQkJY2FjaGVf ZXN0aW1hdGUob3JkZXIsIGttZW1fY2FjaGUtPnNpemUsCi0JCQljYWNoZV9saW5lX3NpemUoKSwg MCwgJmxlZnRfb3ZlciwgJmttZW1fY2FjaGUtPm51bSk7Ci0JCWlmIChrbWVtX2NhY2hlLT5udW0p CisJCWNhY2hlX2VzdGltYXRlKG9yZGVyLCBjYWNoZV9jYWNoZS5zaXplLAorCQkJY2FjaGVfbGlu ZV9zaXplKCksIDAsICZsZWZ0X292ZXIsICZjYWNoZV9jYWNoZS5udW0pOworCQlpZiAoY2FjaGVf Y2FjaGUubnVtKQogCQkJYnJlYWs7CiAJfQotCUJVR19PTigha21lbV9jYWNoZS0+bnVtKTsKLQlr bWVtX2NhY2hlLT5nZnBvcmRlciA9IG9yZGVyOwotCWttZW1fY2FjaGUtPmNvbG91ciA9IGxlZnRf b3ZlciAvIGttZW1fY2FjaGUtPmNvbG91cl9vZmY7Ci0Ja21lbV9jYWNoZS0+c2xhYl9zaXplID0g QUxJR04oa21lbV9jYWNoZS0+bnVtICogc2l6ZW9mKGttZW1fYnVmY3RsX3QpICsKKwlCVUdfT04o IWNhY2hlX2NhY2hlLm51bSk7CisJY2FjaGVfY2FjaGUuZ2Zwb3JkZXIgPSBvcmRlcjsKKwljYWNo ZV9jYWNoZS5jb2xvdXIgPSBsZWZ0X292ZXIgLyBjYWNoZV9jYWNoZS5jb2xvdXJfb2ZmOworCWNh Y2hlX2NhY2hlLnNsYWJfc2l6ZSA9IEFMSUdOKGNhY2hlX2NhY2hlLm51bSAqIHNpemVvZihrbWVt X2J1ZmN0bF90KSArCiAJCQkJICAgICAgc2l6ZW9mKHN0cnVjdCBzbGFiKSwgY2FjaGVfbGluZV9z aXplKCkpOwogCiAJLyogMiszKSBjcmVhdGUgdGhlIGttYWxsb2MgY2FjaGVzICovCkBAIC0xNjc2 LDIyICsxNjc0LDE5IEBAIHZvaWQgX19pbml0IGttZW1fY2FjaGVfaW5pdCh2b2lkKQogCSAqIGJ1 Zy4KIAkgKi8KIAotCXNpemVzW0lOREVYX0FDXS5jc19jYWNoZXAgPSBrbWVtX2NhY2hlX3phbGxv YyhrbWVtX2NhY2hlLCBHRlBfTk9XQUlUKTsKLQlzaXplc1tJTkRFWF9BQ10uY3NfY2FjaGVwLT5u YW1lID0gbmFtZXNbSU5ERVhfQUNdLm5hbWU7Ci0Jc2l6ZXNbSU5ERVhfQUNdLmNzX2NhY2hlcC0+ c2l6ZSA9IHNpemVzW0lOREVYX0FDXS5jc19zaXplOwotCXNpemVzW0lOREVYX0FDXS5jc19jYWNo ZXAtPm9iamVjdF9zaXplID0gc2l6ZXNbSU5ERVhfQUNdLmNzX3NpemU7Ci0Jc2l6ZXNbSU5ERVhf QUNdLmNzX2NhY2hlcC0+YWxpZ24gPSBBUkNIX0tNQUxMT0NfTUlOQUxJR047Ci0JX19rbWVtX2Nh Y2hlX2NyZWF0ZShzaXplc1tJTkRFWF9BQ10uY3NfY2FjaGVwLCBBUkNIX0tNQUxMT0NfRkxBR1N8 U0xBQl9QQU5JQyk7Ci0JbGlzdF9hZGQoJnNpemVzW0lOREVYX0FDXS5jc19jYWNoZXAtPmxpc3Qs ICZzbGFiX2NhY2hlcyk7CisJc2l6ZXNbSU5ERVhfQUNdLmNzX2NhY2hlcCA9IF9fa21lbV9jYWNo ZV9jcmVhdGUobmFtZXNbSU5ERVhfQUNdLm5hbWUsCisJCQkJCXNpemVzW0lOREVYX0FDXS5jc19z aXplLAorCQkJCQlBUkNIX0tNQUxMT0NfTUlOQUxJR04sCisJCQkJCUFSQ0hfS01BTExPQ19GTEFH U3xTTEFCX1BBTklDLAorCQkJCQlOVUxMKTsKIAogCWlmIChJTkRFWF9BQyAhPSBJTkRFWF9MMykg ewotCQlzaXplc1tJTkRFWF9MM10uY3NfY2FjaGVwID0ga21lbV9jYWNoZV96YWxsb2Moa21lbV9j YWNoZSwgR0ZQX05PV0FJVCk7Ci0JCXNpemVzW0lOREVYX0wzXS5jc19jYWNoZXAtPm5hbWUgPSBu YW1lc1tJTkRFWF9MM10ubmFtZTsKLQkJc2l6ZXNbSU5ERVhfTDNdLmNzX2NhY2hlcC0+c2l6ZSA9 IHNpemVzW0lOREVYX0wzXS5jc19zaXplOwotCQlzaXplc1tJTkRFWF9MM10uY3NfY2FjaGVwLT5v YmplY3Rfc2l6ZSA9IHNpemVzW0lOREVYX0wzXS5jc19zaXplOwotCQlzaXplc1tJTkRFWF9MM10u Y3NfY2FjaGVwLT5hbGlnbiA9IEFSQ0hfS01BTExPQ19NSU5BTElHTjsKLQkJX19rbWVtX2NhY2hl X2NyZWF0ZShzaXplc1tJTkRFWF9MM10uY3NfY2FjaGVwLCBBUkNIX0tNQUxMT0NfRkxBR1N8U0xB Ql9QQU5JQyk7Ci0JCWxpc3RfYWRkKCZzaXplc1tJTkRFWF9MM10uY3NfY2FjaGVwLT5saXN0LCAm c2xhYl9jYWNoZXMpOworCQlzaXplc1tJTkRFWF9MM10uY3NfY2FjaGVwID0KKwkJCV9fa21lbV9j YWNoZV9jcmVhdGUobmFtZXNbSU5ERVhfTDNdLm5hbWUsCisJCQkJc2l6ZXNbSU5ERVhfTDNdLmNz X3NpemUsCisJCQkJQVJDSF9LTUFMTE9DX01JTkFMSUdOLAorCQkJCUFSQ0hfS01BTExPQ19GTEFH U3xTTEFCX1BBTklDLAorCQkJCU5VTEwpOwogCX0KIAogCXNsYWJfZWFybHlfaW5pdCA9IDA7CkBA IC0xNzA1LDIzICsxNzAwLDIwIEBAIHZvaWQgX19pbml0IGttZW1fY2FjaGVfaW5pdCh2b2lkKQog CQkgKiBhbGxvdyB0aWdodGVyIHBhY2tpbmcgb2YgdGhlIHNtYWxsZXIgY2FjaGVzLgogCQkgKi8K IAkJaWYgKCFzaXplcy0+Y3NfY2FjaGVwKSB7Ci0JCQlzaXplcy0+Y3NfY2FjaGVwID0ga21lbV9j YWNoZV96YWxsb2Moa21lbV9jYWNoZSwgR0ZQX05PV0FJVCk7Ci0JCQlzaXplcy0+Y3NfY2FjaGVw LT5uYW1lID0gbmFtZXMtPm5hbWU7Ci0JCQlzaXplcy0+Y3NfY2FjaGVwLT5zaXplID0gc2l6ZXMt PmNzX3NpemU7Ci0JCQlzaXplcy0+Y3NfY2FjaGVwLT5vYmplY3Rfc2l6ZSA9IHNpemVzLT5jc19z aXplOwotCQkJc2l6ZXMtPmNzX2NhY2hlcC0+YWxpZ24gPSBBUkNIX0tNQUxMT0NfTUlOQUxJR047 Ci0JCQlfX2ttZW1fY2FjaGVfY3JlYXRlKHNpemVzLT5jc19jYWNoZXAsIEFSQ0hfS01BTExPQ19G TEFHU3xTTEFCX1BBTklDKTsKLQkJCWxpc3RfYWRkKCZzaXplcy0+Y3NfY2FjaGVwLT5saXN0LCAm c2xhYl9jYWNoZXMpOworCQkJc2l6ZXMtPmNzX2NhY2hlcCA9IF9fa21lbV9jYWNoZV9jcmVhdGUo bmFtZXMtPm5hbWUsCisJCQkJCXNpemVzLT5jc19zaXplLAorCQkJCQlBUkNIX0tNQUxMT0NfTUlO QUxJR04sCisJCQkJCUFSQ0hfS01BTExPQ19GTEFHU3xTTEFCX1BBTklDLAorCQkJCQlOVUxMKTsK IAkJfQogI2lmZGVmIENPTkZJR19aT05FX0RNQQotCQlzaXplcy0+Y3NfZG1hY2FjaGVwID0ga21l bV9jYWNoZV96YWxsb2Moa21lbV9jYWNoZSwgR0ZQX05PV0FJVCk7Ci0JCXNpemVzLT5jc19kbWFj YWNoZXAtPm5hbWUgPSBuYW1lcy0+bmFtZV9kbWE7Ci0JCXNpemVzLT5jc19kbWFjYWNoZXAtPnNp emUgPSBzaXplcy0+Y3Nfc2l6ZTsKLQkJc2l6ZXMtPmNzX2RtYWNhY2hlcC0+b2JqZWN0X3NpemUg PSBzaXplcy0+Y3Nfc2l6ZTsKLQkJc2l6ZXMtPmNzX2RtYWNhY2hlcC0+YWxpZ24gPSBBUkNIX0tN QUxMT0NfTUlOQUxJR047Ci0JCV9fa21lbV9jYWNoZV9jcmVhdGUoc2l6ZXMtPmNzX2RtYWNhY2hl cCwKLQkJCSAgICAgICBBUkNIX0tNQUxMT0NfRkxBR1N8U0xBQl9DQUNIRV9ETUF8IFNMQUJfUEFO SUMpOwotCQlsaXN0X2FkZCgmc2l6ZXMtPmNzX2RtYWNhY2hlcC0+bGlzdCwgJnNsYWJfY2FjaGVz KTsKKwkJc2l6ZXMtPmNzX2RtYWNhY2hlcCA9IF9fa21lbV9jYWNoZV9jcmVhdGUoCisJCQkJCW5h bWVzLT5uYW1lX2RtYSwKKwkJCQkJc2l6ZXMtPmNzX3NpemUsCisJCQkJCUFSQ0hfS01BTExPQ19N SU5BTElHTiwKKwkJCQkJQVJDSF9LTUFMTE9DX0ZMQUdTfFNMQUJfQ0FDSEVfRE1BfAorCQkJCQkJ U0xBQl9QQU5JQywKKwkJCQkJTlVMTCk7CiAjZW5kaWYKIAkJc2l6ZXMrKzsKIAkJbmFtZXMrKzsK QEAgLTE3MzIsMTUgKzE3MjQsMTUgQEAgdm9pZCBfX2luaXQga21lbV9jYWNoZV9pbml0KHZvaWQp CiAKIAkJcHRyID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGFycmF5Y2FjaGVfaW5pdCksIEdGUF9O T1dBSVQpOwogCi0JCUJVR19PTihjcHVfY2FjaGVfZ2V0KGttZW1fY2FjaGUpICE9ICZpbml0YXJy YXlfY2FjaGUuY2FjaGUpOwotCQltZW1jcHkocHRyLCBjcHVfY2FjaGVfZ2V0KGttZW1fY2FjaGUp LAorCQlCVUdfT04oY3B1X2NhY2hlX2dldCgmY2FjaGVfY2FjaGUpICE9ICZpbml0YXJyYXlfY2Fj aGUuY2FjaGUpOworCQltZW1jcHkocHRyLCBjcHVfY2FjaGVfZ2V0KCZjYWNoZV9jYWNoZSksCiAJ CSAgICAgICBzaXplb2Yoc3RydWN0IGFycmF5Y2FjaGVfaW5pdCkpOwogCQkvKgogCQkgKiBEbyBu b3QgYXNzdW1lIHRoYXQgc3BpbmxvY2tzIGNhbiBiZSBpbml0aWFsaXplZCB2aWEgbWVtY3B5Ogog CQkgKi8KIAkJc3Bpbl9sb2NrX2luaXQoJnB0ci0+bG9jayk7CiAKLQkJa21lbV9jYWNoZS0+YXJy YXlbc21wX3Byb2Nlc3Nvcl9pZCgpXSA9IHB0cjsKKwkJY2FjaGVfY2FjaGUuYXJyYXlbc21wX3By b2Nlc3Nvcl9pZCgpXSA9IHB0cjsKIAogCQlwdHIgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgYXJy YXljYWNoZV9pbml0KSwgR0ZQX05PV0FJVCk7CiAKQEAgLTE3NjEsNyArMTc1Myw3IEBAIHZvaWQg X19pbml0IGttZW1fY2FjaGVfaW5pdCh2b2lkKQogCQlpbnQgbmlkOwogCiAJCWZvcl9lYWNoX29u bGluZV9ub2RlKG5pZCkgewotCQkJaW5pdF9saXN0KGttZW1fY2FjaGUsICZpbml0a21lbV9saXN0 M1tDQUNIRV9DQUNIRSArIG5pZF0sIG5pZCk7CisJCQlpbml0X2xpc3QoJmNhY2hlX2NhY2hlLCAm aW5pdGttZW1fbGlzdDNbQ0FDSEVfQ0FDSEUgKyBuaWRdLCBuaWQpOwogCiAJCQlpbml0X2xpc3Qo bWFsbG9jX3NpemVzW0lOREVYX0FDXS5jc19jYWNoZXAsCiAJCQkJICAmaW5pdGttZW1fbGlzdDNb U0laRV9BQyArIG5pZF0sIG5pZCk7CkBAIC0yMjEwLDYgKzIyMDIsMjcgQEAgc3RhdGljIHZvaWQg c2xhYl9kZXN0cm95KHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZXAsIHN0cnVjdCBzbGFiICpzbGFi cCkKIAl9CiB9CiAKK3N0YXRpYyB2b2lkIF9fa21lbV9jYWNoZV9kZXN0cm95KHN0cnVjdCBrbWVt X2NhY2hlICpjYWNoZXApCit7CisJaW50IGk7CisJc3RydWN0IGttZW1fbGlzdDMgKmwzOworCisJ Zm9yX2VhY2hfb25saW5lX2NwdShpKQorCSAgICBrZnJlZShjYWNoZXAtPmFycmF5W2ldKTsKKwor CS8qIE5VTUE6IGZyZWUgdGhlIGxpc3QzIHN0cnVjdHVyZXMgKi8KKwlmb3JfZWFjaF9vbmxpbmVf bm9kZShpKSB7CisJCWwzID0gY2FjaGVwLT5ub2RlbGlzdHNbaV07CisJCWlmIChsMykgeworCQkJ a2ZyZWUobDMtPnNoYXJlZCk7CisJCQlmcmVlX2FsaWVuX2NhY2hlKGwzLT5hbGllbik7CisJCQlr ZnJlZShsMyk7CisJCX0KKwl9CisJa21lbV9jYWNoZV9mcmVlKCZjYWNoZV9jYWNoZSwgY2FjaGVw KTsKK30KKworCiAvKioKICAqIGNhbGN1bGF0ZV9zbGFiX29yZGVyIC0gY2FsY3VsYXRlIHNpemUg KHBhZ2Ugb3JkZXIpIG9mIHNsYWJzCiAgKiBAY2FjaGVwOiBwb2ludGVyIHRvIHRoZSBjYWNoZSB0 aGF0IGlzIGJlaW5nIGNyZWF0ZWQKQEAgLTIzNDYsNiArMjM1OSw5IEBAIHN0YXRpYyBpbnQgX19p bml0X3JlZm9rIHNldHVwX2NwdV9jYWNoZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGVwLCBnZnBf dCBnZnApCiAgKiBDYW5ub3QgYmUgY2FsbGVkIHdpdGhpbiBhIGludCwgYnV0IGNhbiBiZSBpbnRl cnJ1cHRlZC4KICAqIFRoZSBAY3RvciBpcyBydW4gd2hlbiBuZXcgcGFnZXMgYXJlIGFsbG9jYXRl ZCBieSB0aGUgY2FjaGUuCiAgKgorICogQG5hbWUgbXVzdCBiZSB2YWxpZCB1bnRpbCB0aGUgY2Fj aGUgaXMgZGVzdHJveWVkLiBUaGlzIGltcGxpZXMgdGhhdAorICogdGhlIG1vZHVsZSBjYWxsaW5n IHRoaXMgaGFzIHRvIGRlc3Ryb3kgdGhlIGNhY2hlIGJlZm9yZSBnZXR0aW5nIHVubG9hZGVkLgor ICoKICAqIFRoZSBmbGFncyBhcmUKICAqCiAgKiAlU0xBQl9QT0lTT04gLSBQb2lzb24gdGhlIHNs YWIgd2l0aCBhIGtub3duIHRlc3QgcGF0dGVybiAoYTVhNWE1YTUpCkBAIC0yMzU4LDEzICsyMzc0 LDEzIEBAIHN0YXRpYyBpbnQgX19pbml0X3JlZm9rIHNldHVwX2NwdV9jYWNoZShzdHJ1Y3Qga21l bV9jYWNoZSAqY2FjaGVwLCBnZnBfdCBnZnApCiAgKiBjYWNoZWxpbmUuICBUaGlzIGNhbiBiZSBi ZW5lZmljaWFsIGlmIHlvdSdyZSBjb3VudGluZyBjeWNsZXMgYXMgY2xvc2VseQogICogYXMgZGF2 ZW0uCiAgKi8KLWludAotX19rbWVtX2NhY2hlX2NyZWF0ZSAoc3RydWN0IGttZW1fY2FjaGUgKmNh Y2hlcCwgdW5zaWduZWQgbG9uZyBmbGFncykKK3N0cnVjdCBrbWVtX2NhY2hlICoKK19fa21lbV9j YWNoZV9jcmVhdGUgKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ24s CisJdW5zaWduZWQgbG9uZyBmbGFncywgdm9pZCAoKmN0b3IpKHZvaWQgKikpCiB7CiAJc2l6ZV90 IGxlZnRfb3Zlciwgc2xhYl9zaXplLCByYWxpZ247CisJc3RydWN0IGttZW1fY2FjaGUgKmNhY2hl cCA9IE5VTEw7CiAJZ2ZwX3QgZ2ZwOwotCWludCBlcnI7Ci0Jc2l6ZV90IHNpemUgPSBjYWNoZXAt PnNpemU7CiAKICNpZiBERUJVRwogI2lmIEZPUkNFRF9ERUJVRwpAQCAtMjQzNiw4ICsyNDUyLDgg QEAgX19rbWVtX2NhY2hlX2NyZWF0ZSAoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlcCwgdW5zaWdu ZWQgbG9uZyBmbGFncykKIAkJcmFsaWduID0gQVJDSF9TTEFCX01JTkFMSUdOOwogCX0KIAkvKiAz KSBjYWxsZXIgbWFuZGF0ZWQgYWxpZ25tZW50ICovCi0JaWYgKHJhbGlnbiA8IGNhY2hlcC0+YWxp Z24pIHsKLQkJcmFsaWduID0gY2FjaGVwLT5hbGlnbjsKKwlpZiAocmFsaWduIDwgYWxpZ24pIHsK KwkJcmFsaWduID0gYWxpZ247CiAJfQogCS8qIGRpc2FibGUgZGVidWcgaWYgbmVjZXNzYXJ5ICov CiAJaWYgKHJhbGlnbiA+IF9fYWxpZ25vZl9fKHVuc2lnbmVkIGxvbmcgbG9uZykpCkBAIC0yNDQ1 LDE0ICsyNDYxLDIxIEBAIF9fa21lbV9jYWNoZV9jcmVhdGUgKHN0cnVjdCBrbWVtX2NhY2hlICpj YWNoZXAsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiAJLyoKIAkgKiA0KSBTdG9yZSBpdC4KIAkgKi8K LQljYWNoZXAtPmFsaWduID0gcmFsaWduOworCWFsaWduID0gcmFsaWduOwogCiAJaWYgKHNsYWJf aXNfYXZhaWxhYmxlKCkpCiAJCWdmcCA9IEdGUF9LRVJORUw7CiAJZWxzZQogCQlnZnAgPSBHRlBf Tk9XQUlUOwogCisJLyogR2V0IGNhY2hlJ3MgZGVzY3JpcHRpb24gb2JqLiAqLworCWNhY2hlcCA9 IGttZW1fY2FjaGVfemFsbG9jKCZjYWNoZV9jYWNoZSwgZ2ZwKTsKKwlpZiAoIWNhY2hlcCkKKwkJ cmV0dXJuIE5VTEw7CisKIAljYWNoZXAtPm5vZGVsaXN0cyA9IChzdHJ1Y3Qga21lbV9saXN0MyAq KikmY2FjaGVwLT5hcnJheVtucl9jcHVfaWRzXTsKKwljYWNoZXAtPm9iamVjdF9zaXplID0gc2l6 ZTsKKwljYWNoZXAtPmFsaWduID0gYWxpZ247CiAjaWYgREVCVUcKIAogCS8qCkBAIC0yNDk3LDE1 ICsyNTIwLDE4IEBAIF9fa21lbV9jYWNoZV9jcmVhdGUgKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNo ZXAsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiAJCSAqLwogCQlmbGFncyB8PSBDRkxHU19PRkZfU0xB QjsKIAotCXNpemUgPSBBTElHTihzaXplLCBjYWNoZXAtPmFsaWduKTsKLQotCWxlZnRfb3ZlciA9 IGNhbGN1bGF0ZV9zbGFiX29yZGVyKGNhY2hlcCwgc2l6ZSwgY2FjaGVwLT5hbGlnbiwgZmxhZ3Mp OworCXNpemUgPSBBTElHTihzaXplLCBhbGlnbik7CiAKLQlpZiAoIWNhY2hlcC0+bnVtKQotCQly ZXR1cm4gLUUyQklHOworCWxlZnRfb3ZlciA9IGNhbGN1bGF0ZV9zbGFiX29yZGVyKGNhY2hlcCwg c2l6ZSwgYWxpZ24sIGZsYWdzKTsKIAorCWlmICghY2FjaGVwLT5udW0pIHsKKwkJcHJpbnRrKEtF Uk5fRVJSCisJCSAgICAgICAia21lbV9jYWNoZV9jcmVhdGU6IGNvdWxkbid0IGNyZWF0ZSBjYWNo ZSAlcy5cbiIsIG5hbWUpOworCQlrbWVtX2NhY2hlX2ZyZWUoJmNhY2hlX2NhY2hlLCBjYWNoZXAp OworCQlyZXR1cm4gTlVMTDsKKwl9CiAJc2xhYl9zaXplID0gQUxJR04oY2FjaGVwLT5udW0gKiBz aXplb2Yoa21lbV9idWZjdGxfdCkKLQkJCSAgKyBzaXplb2Yoc3RydWN0IHNsYWIpLCBjYWNoZXAt PmFsaWduKTsKKwkJCSAgKyBzaXplb2Yoc3RydWN0IHNsYWIpLCBhbGlnbik7CiAKIAkvKgogCSAq IElmIHRoZSBzbGFiIGhhcyBiZWVuIHBsYWNlZCBvZmYtc2xhYiwgYW5kIHdlIGhhdmUgZW5vdWdo IHNwYWNlIHRoZW4KQEAgLTI1MzMsOCArMjU1OSw4IEBAIF9fa21lbV9jYWNoZV9jcmVhdGUgKHN0 cnVjdCBrbWVtX2NhY2hlICpjYWNoZXAsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiAKIAljYWNoZXAt PmNvbG91cl9vZmYgPSBjYWNoZV9saW5lX3NpemUoKTsKIAkvKiBPZmZzZXQgbXVzdCBiZSBhIG11 bHRpcGxlIG9mIHRoZSBhbGlnbm1lbnQuICovCi0JaWYgKGNhY2hlcC0+Y29sb3VyX29mZiA8IGNh Y2hlcC0+YWxpZ24pCi0JCWNhY2hlcC0+Y29sb3VyX29mZiA9IGNhY2hlcC0+YWxpZ247CisJaWYg KGNhY2hlcC0+Y29sb3VyX29mZiA8IGFsaWduKQorCQljYWNoZXAtPmNvbG91cl9vZmYgPSBhbGln bjsKIAljYWNoZXAtPmNvbG91ciA9IGxlZnRfb3ZlciAvIGNhY2hlcC0+Y29sb3VyX29mZjsKIAlj YWNoZXAtPnNsYWJfc2l6ZSA9IHNsYWJfc2l6ZTsKIAljYWNoZXAtPmZsYWdzID0gZmxhZ3M7CkBA IC0yNTU1LDExICsyNTgxLDEyIEBAIF9fa21lbV9jYWNoZV9jcmVhdGUgKHN0cnVjdCBrbWVtX2Nh Y2hlICpjYWNoZXAsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiAJCSAqLwogCQlCVUdfT04oWkVST19P Ul9OVUxMX1BUUihjYWNoZXAtPnNsYWJwX2NhY2hlKSk7CiAJfQorCWNhY2hlcC0+Y3RvciA9IGN0 b3I7CisJY2FjaGVwLT5uYW1lID0gbmFtZTsKIAotCWVyciA9IHNldHVwX2NwdV9jYWNoZShjYWNo ZXAsIGdmcCk7Ci0JaWYgKGVycikgewotCQlfX2ttZW1fY2FjaGVfc2h1dGRvd24oY2FjaGVwKTsK LQkJcmV0dXJuIGVycjsKKwlpZiAoc2V0dXBfY3B1X2NhY2hlKGNhY2hlcCwgZ2ZwKSkgeworCQlf X2ttZW1fY2FjaGVfZGVzdHJveShjYWNoZXApOworCQlyZXR1cm4gTlVMTDsKIAl9CiAKIAlpZiAo ZmxhZ3MgJiBTTEFCX0RFQlVHX09CSkVDVFMpIHsKQEAgLTI1NzIsNyArMjU5OSw5IEBAIF9fa21l bV9jYWNoZV9jcmVhdGUgKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZXAsIHVuc2lnbmVkIGxvbmcg ZmxhZ3MpCiAJCXNsYWJfc2V0X2RlYnVnb2JqX2xvY2tfY2xhc3NlcyhjYWNoZXApOwogCX0KIAot CXJldHVybiAwOworCS8qIGNhY2hlIHNldHVwIGNvbXBsZXRlZCwgbGluayBpdCBpbnRvIHRoZSBs aXN0ICovCisJbGlzdF9hZGQoJmNhY2hlcC0+bGlzdCwgJnNsYWJfY2FjaGVzKTsKKwlyZXR1cm4g Y2FjaGVwOwogfQogCiAjaWYgREVCVUcKQEAgLTI3MzEsMjkgKzI3NjAsNDkgQEAgaW50IGttZW1f Y2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZXApCiB9CiBFWFBPUlRfU1lNQk9M KGttZW1fY2FjaGVfc2hyaW5rKTsKIAotaW50IF9fa21lbV9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qg a21lbV9jYWNoZSAqY2FjaGVwKQorLyoqCisgKiBrbWVtX2NhY2hlX2Rlc3Ryb3kgLSBkZWxldGUg YSBjYWNoZQorICogQGNhY2hlcDogdGhlIGNhY2hlIHRvIGRlc3Ryb3kKKyAqCisgKiBSZW1vdmUg YSAmc3RydWN0IGttZW1fY2FjaGUgb2JqZWN0IGZyb20gdGhlIHNsYWIgY2FjaGUuCisgKgorICog SXQgaXMgZXhwZWN0ZWQgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBieSBhIG1vZHVsZSB3 aGVuIGl0IGlzCisgKiB1bmxvYWRlZC4gIFRoaXMgd2lsbCByZW1vdmUgdGhlIGNhY2hlIGNvbXBs ZXRlbHksIGFuZCBhdm9pZCBhIGR1cGxpY2F0ZQorICogY2FjaGUgYmVpbmcgYWxsb2NhdGVkIGVh Y2ggdGltZSBhIG1vZHVsZSBpcyBsb2FkZWQgYW5kIHVubG9hZGVkLCBpZiB0aGUKKyAqIG1vZHVs ZSBkb2Vzbid0IGhhdmUgcGVyc2lzdGVudCBpbi1rZXJuZWwgc3RvcmFnZSBhY3Jvc3MgbG9hZHMg YW5kIHVubG9hZHMuCisgKgorICogVGhlIGNhY2hlIG11c3QgYmUgZW1wdHkgYmVmb3JlIGNhbGxp bmcgdGhpcyBmdW5jdGlvbi4KKyAqCisgKiBUaGUgY2FsbGVyIG11c3QgZ3VhcmFudGVlIHRoYXQg bm8gb25lIHdpbGwgYWxsb2NhdGUgbWVtb3J5IGZyb20gdGhlIGNhY2hlCisgKiBkdXJpbmcgdGhl IGttZW1fY2FjaGVfZGVzdHJveSgpLgorICovCit2b2lkIGttZW1fY2FjaGVfZGVzdHJveShzdHJ1 Y3Qga21lbV9jYWNoZSAqY2FjaGVwKQogewotCWludCBpOwotCXN0cnVjdCBrbWVtX2xpc3QzICps MzsKLQlpbnQgcmMgPSBfX2NhY2hlX3NocmluayhjYWNoZXApOworCUJVR19PTighY2FjaGVwIHx8 IGluX2ludGVycnVwdCgpKTsKIAotCWlmIChyYykKLQkJcmV0dXJuIHJjOworCS8qIEZpbmQgdGhl IGNhY2hlIGluIHRoZSBjaGFpbiBvZiBjYWNoZXMuICovCisJZ2V0X29ubGluZV9jcHVzKCk7CisJ bXV0ZXhfbG9jaygmc2xhYl9tdXRleCk7CisJLyoKKwkgKiB0aGUgY2hhaW4gaXMgbmV2ZXIgZW1w dHksIGNhY2hlX2NhY2hlIGlzIG5ldmVyIGRlc3Ryb3llZAorCSAqLworCWxpc3RfZGVsKCZjYWNo ZXAtPmxpc3QpOworCWlmIChfX2NhY2hlX3NocmluayhjYWNoZXApKSB7CisJCXNsYWJfZXJyb3Io Y2FjaGVwLCAiQ2FuJ3QgZnJlZSBhbGwgb2JqZWN0cyIpOworCQlsaXN0X2FkZCgmY2FjaGVwLT5s aXN0LCAmc2xhYl9jYWNoZXMpOworCQltdXRleF91bmxvY2soJnNsYWJfbXV0ZXgpOworCQlwdXRf b25saW5lX2NwdXMoKTsKKwkJcmV0dXJuOworCX0KIAotCWZvcl9lYWNoX29ubGluZV9jcHUoaSkK LQkgICAga2ZyZWUoY2FjaGVwLT5hcnJheVtpXSk7CisJaWYgKHVubGlrZWx5KGNhY2hlcC0+Zmxh Z3MgJiBTTEFCX0RFU1RST1lfQllfUkNVKSkKKwkJcmN1X2JhcnJpZXIoKTsKIAotCS8qIE5VTUE6 IGZyZWUgdGhlIGxpc3QzIHN0cnVjdHVyZXMgKi8KLQlmb3JfZWFjaF9vbmxpbmVfbm9kZShpKSB7 Ci0JCWwzID0gY2FjaGVwLT5ub2RlbGlzdHNbaV07Ci0JCWlmIChsMykgewotCQkJa2ZyZWUobDMt PnNoYXJlZCk7Ci0JCQlmcmVlX2FsaWVuX2NhY2hlKGwzLT5hbGllbik7Ci0JCQlrZnJlZShsMyk7 Ci0JCX0KLQl9Ci0JcmV0dXJuIDA7CisJX19rbWVtX2NhY2hlX2Rlc3Ryb3koY2FjaGVwKTsKKwlt dXRleF91bmxvY2soJnNsYWJfbXV0ZXgpOworCXB1dF9vbmxpbmVfY3B1cygpOwogfQorRVhQT1JU X1NZTUJPTChrbWVtX2NhY2hlX2Rlc3Ryb3kpOwogCiAvKgogICogR2V0IHRoZSBtZW1vcnkgZm9y IGEgc2xhYiBtYW5hZ2VtZW50IG9iai4KQEAgLTMyODcsNyArMzMzNiw3IEBAIHN0YXRpYyB2b2lk ICpjYWNoZV9hbGxvY19kZWJ1Z2NoZWNrX2FmdGVyKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZXAs CiAKIHN0YXRpYyBib29sIHNsYWJfc2hvdWxkX2ZhaWxzbGFiKHN0cnVjdCBrbWVtX2NhY2hlICpj YWNoZXAsIGdmcF90IGZsYWdzKQogewotCWlmIChjYWNoZXAgPT0ga21lbV9jYWNoZSkKKwlpZiAo Y2FjaGVwID09ICZjYWNoZV9jYWNoZSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJcmV0dXJuIHNob3Vs ZF9mYWlsc2xhYihjYWNoZXAtPm9iamVjdF9zaXplLCBmbGFncywgY2FjaGVwLT5mbGFncyk7CmRp ZmYgLS1naXQgYS9tbS9zbGFiLmggYi9tbS9zbGFiLmgKaW5kZXggN2RlZWI0NC4uZGI3ODQ4YyAx MDA2NDQKLS0tIGEvbW0vc2xhYi5oCisrKyBiL21tL3NsYWIuaApAQCAtMjUsMjYgKzI1LDkgQEAg ZXh0ZXJuIGVudW0gc2xhYl9zdGF0ZSBzbGFiX3N0YXRlOwogCiAvKiBUaGUgc2xhYiBjYWNoZSBt dXRleCBwcm90ZWN0cyB0aGUgbWFuYWdlbWVudCBzdHJ1Y3R1cmVzIGR1cmluZyBjaGFuZ2VzICov CiBleHRlcm4gc3RydWN0IG11dGV4IHNsYWJfbXV0ZXg7Ci0KLS8qIFRoZSBsaXN0IG9mIGFsbCBz bGFiIGNhY2hlcyBvbiB0aGUgc3lzdGVtICovCiBleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBzbGFi X2NhY2hlczsKIAotLyogVGhlIHNsYWIgY2FjaGUgdGhhdCBtYW5hZ2VzIHNsYWIgY2FjaGUgaW5m b3JtYXRpb24gKi8KLWV4dGVybiBzdHJ1Y3Qga21lbV9jYWNoZSAqa21lbV9jYWNoZTsKLQotLyog RnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHRoZSBzbGFiIGFsbG9jYXRvcnMgKi8KLWV4dGVybiBpbnQg X19rbWVtX2NhY2hlX2NyZWF0ZShzdHJ1Y3Qga21lbV9jYWNoZSAqLCB1bnNpZ25lZCBsb25nIGZs YWdzKTsKLQotI2lmZGVmIENPTkZJR19TTFVCCi1zdHJ1Y3Qga21lbV9jYWNoZSAqX19rbWVtX2Nh Y2hlX2FsaWFzKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplLAorc3RydWN0IGttZW1fY2Fj aGUgKl9fa21lbV9jYWNoZV9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgc2l6ZV90IHNpemUsCiAJ c2l6ZV90IGFsaWduLCB1bnNpZ25lZCBsb25nIGZsYWdzLCB2b2lkICgqY3Rvcikodm9pZCAqKSk7 Ci0jZWxzZQotc3RhdGljIGlubGluZSBzdHJ1Y3Qga21lbV9jYWNoZSAqX19rbWVtX2NhY2hlX2Fs aWFzKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplLAotCXNpemVfdCBhbGlnbiwgdW5zaWdu ZWQgbG9uZyBmbGFncywgdm9pZCAoKmN0b3IpKHZvaWQgKikpCi17IHJldHVybiBOVUxMOyB9Ci0j ZW5kaWYKLQotCi1pbnQgX19rbWVtX2NhY2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICop OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL21tL3NsYWJfY29tbW9uLmMgYi9tbS9zbGFiX2NvbW1v bi5jCmluZGV4IDljMjE3MjUuLjhjZjhiNDkgMTAwNjQ0Ci0tLSBhL21tL3NsYWJfY29tbW9uLmMK KysrIGIvbW0vc2xhYl9jb21tb24uYwpAQCAtMjIsNyArMjIsNiBAQAogZW51bSBzbGFiX3N0YXRl IHNsYWJfc3RhdGU7CiBMSVNUX0hFQUQoc2xhYl9jYWNoZXMpOwogREVGSU5FX01VVEVYKHNsYWJf bXV0ZXgpOwotc3RydWN0IGttZW1fY2FjaGUgKmttZW1fY2FjaGU7CiAKICNpZmRlZiBDT05GSUdf REVCVUdfVk0KIHN0YXRpYyBpbnQga21lbV9jYWNoZV9zYW5pdHlfY2hlY2soY29uc3QgY2hhciAq bmFtZSwgc2l6ZV90IHNpemUpCkBAIC05OSw5MiArOTgsMjEgQEAgc3RydWN0IGttZW1fY2FjaGUg KmttZW1fY2FjaGVfY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplLCBzaXplX3Qg YWxpZ24KIAkJdW5zaWduZWQgbG9uZyBmbGFncywgdm9pZCAoKmN0b3IpKHZvaWQgKikpCiB7CiAJ c3RydWN0IGttZW1fY2FjaGUgKnMgPSBOVUxMOwotCWludCBlcnIgPSAwOwogCiAJZ2V0X29ubGlu ZV9jcHVzKCk7CiAJbXV0ZXhfbG9jaygmc2xhYl9tdXRleCk7Ci0KLQlpZiAoIWttZW1fY2FjaGVf c2FuaXR5X2NoZWNrKG5hbWUsIHNpemUpID09IDApCi0JCWdvdG8gb3V0X2xvY2tlZDsKLQotCi0J cyA9IF9fa21lbV9jYWNoZV9hbGlhcyhuYW1lLCBzaXplLCBhbGlnbiwgZmxhZ3MsIGN0b3IpOwot CWlmIChzKQotCQlnb3RvIG91dF9sb2NrZWQ7Ci0KLQlzID0ga21lbV9jYWNoZV96YWxsb2Moa21l bV9jYWNoZSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKHMpIHsKLQkJcy0+b2JqZWN0X3NpemUgPSBzLT5z aXplID0gc2l6ZTsKLQkJcy0+YWxpZ24gPSBhbGlnbjsKLQkJcy0+Y3RvciA9IGN0b3I7Ci0JCXMt Pm5hbWUgPSBrc3RyZHVwKG5hbWUsIEdGUF9LRVJORUwpOwotCQlpZiAoIXMtPm5hbWUpIHsKLQkJ CWttZW1fY2FjaGVfZnJlZShrbWVtX2NhY2hlLCBzKTsKLQkJCWVyciA9IC1FTk9NRU07Ci0JCQln b3RvIG91dF9sb2NrZWQ7Ci0JCX0KLQotCQllcnIgPSBfX2ttZW1fY2FjaGVfY3JlYXRlKHMsIGZs YWdzKTsKLQkJaWYgKCFlcnIpIHsKLQotCQkJcy0+cmVmY291bnQgPSAxOwotCQkJbGlzdF9hZGQo JnMtPmxpc3QsICZzbGFiX2NhY2hlcyk7Ci0KLQkJfSBlbHNlIHsKLQkJCWtmcmVlKHMtPm5hbWUp OwotCQkJa21lbV9jYWNoZV9mcmVlKGttZW1fY2FjaGUsIHMpOwotCQl9Ci0JfSBlbHNlCi0JCWVy ciA9IC1FTk9NRU07Ci0KLW91dF9sb2NrZWQ6CisJaWYgKGttZW1fY2FjaGVfc2FuaXR5X2NoZWNr KG5hbWUsIHNpemUpID09IDApCisJCXMgPSBfX2ttZW1fY2FjaGVfY3JlYXRlKG5hbWUsIHNpemUs IGFsaWduLCBmbGFncywgY3Rvcik7CiAJbXV0ZXhfdW5sb2NrKCZzbGFiX211dGV4KTsKIAlwdXRf b25saW5lX2NwdXMoKTsKIAotCWlmIChlcnIpIHsKLQotCQlpZiAoZmxhZ3MgJiBTTEFCX1BBTklD KQotCQkJcGFuaWMoImttZW1fY2FjaGVfY3JlYXRlOiBGYWlsZWQgdG8gY3JlYXRlIHNsYWIgJyVz Jy4gRXJyb3IgJWRcbiIsCi0JCQkJbmFtZSwgZXJyKTsKLQkJZWxzZSB7Ci0JCQlwcmludGsoS0VS Tl9XQVJOSU5HICJrbWVtX2NhY2hlX2NyZWF0ZSglcykgZmFpbGVkIHdpdGggZXJyb3IgJWQiLAot CQkJCW5hbWUsIGVycik7Ci0JCQlkdW1wX3N0YWNrKCk7Ci0JCX0KLQotCQlyZXR1cm4gTlVMTDsK LQl9CisJaWYgKCFzICYmIChmbGFncyAmIFNMQUJfUEFOSUMpKQorCQlwYW5pYygia21lbV9jYWNo ZV9jcmVhdGU6IEZhaWxlZCB0byBjcmVhdGUgc2xhYiAnJXMnXG4iLCBuYW1lKTsKIAogCXJldHVy biBzOwogfQogRVhQT1JUX1NZTUJPTChrbWVtX2NhY2hlX2NyZWF0ZSk7CiAKLXZvaWQga21lbV9j YWNoZV9kZXN0cm95KHN0cnVjdCBrbWVtX2NhY2hlICpzKQotewotCWdldF9vbmxpbmVfY3B1cygp OwotCW11dGV4X2xvY2soJnNsYWJfbXV0ZXgpOwotCXMtPnJlZmNvdW50LS07Ci0JaWYgKCFzLT5y ZWZjb3VudCkgewotCQlsaXN0X2RlbCgmcy0+bGlzdCk7Ci0KLQkJaWYgKCFfX2ttZW1fY2FjaGVf c2h1dGRvd24ocykpIHsKLQkJCWlmIChzLT5mbGFncyAmIFNMQUJfREVTVFJPWV9CWV9SQ1UpCi0J CQkJcmN1X2JhcnJpZXIoKTsKLQotCQkJa2ZyZWUocy0+bmFtZSk7Ci0JCQlrbWVtX2NhY2hlX2Zy ZWUoa21lbV9jYWNoZSwgcyk7Ci0JCX0gZWxzZSB7Ci0JCQlsaXN0X2FkZCgmcy0+bGlzdCwgJnNs YWJfY2FjaGVzKTsKLQkJCXByaW50ayhLRVJOX0VSUiAia21lbV9jYWNoZV9kZXN0cm95ICVzOiBT bGFiIGNhY2hlIHN0aWxsIGhhcyBvYmplY3RzXG4iLAotCQkJCXMtPm5hbWUpOwotCQkJZHVtcF9z dGFjaygpOwotCQl9Ci0JfQotCW11dGV4X3VubG9jaygmc2xhYl9tdXRleCk7Ci0JcHV0X29ubGlu ZV9jcHVzKCk7Ci19Ci1FWFBPUlRfU1lNQk9MKGttZW1fY2FjaGVfZGVzdHJveSk7Ci0KIGludCBz bGFiX2lzX2F2YWlsYWJsZSh2b2lkKQogewogCXJldHVybiBzbGFiX3N0YXRlID49IFVQOwpkaWZm IC0tZ2l0IGEvbW0vc2xvYi5jIGIvbW0vc2xvYi5jCmluZGV4IDNlZGZlYWEuLjQ1ZDRjYTcgMTAw NjQ0Ci0tLSBhL21tL3Nsb2IuYworKysgYi9tbS9zbG9iLmMKQEAgLTUwOCwyNCArNTA4LDQ0IEBA IHNpemVfdCBrc2l6ZShjb25zdCB2b2lkICpibG9jaykKIH0KIEVYUE9SVF9TWU1CT0woa3NpemUp OwogCi1pbnQgX19rbWVtX2NhY2hlX2NyZWF0ZShzdHJ1Y3Qga21lbV9jYWNoZSAqYywgdW5zaWdu ZWQgbG9uZyBmbGFncykKK3N0cnVjdCBrbWVtX2NhY2hlICpfX2ttZW1fY2FjaGVfY3JlYXRlKGNv bnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplLAorCXNpemVfdCBhbGlnbiwgdW5zaWduZWQgbG9u ZyBmbGFncywgdm9pZCAoKmN0b3IpKHZvaWQgKikpCiB7Ci0Jc2l6ZV90IGFsaWduID0gYy0+c2l6 ZTsKKwlzdHJ1Y3Qga21lbV9jYWNoZSAqYzsKIAotCWlmIChmbGFncyAmIFNMQUJfREVTVFJPWV9C WV9SQ1UpIHsKLQkJLyogbGVhdmUgcm9vbSBmb3IgcmN1IGZvb3RlciBhdCB0aGUgZW5kIG9mIG9i amVjdCAqLwotCQljLT5zaXplICs9IHNpemVvZihzdHJ1Y3Qgc2xvYl9yY3UpOworCWMgPSBzbG9i X2FsbG9jKHNpemVvZihzdHJ1Y3Qga21lbV9jYWNoZSksCisJCUdGUF9LRVJORUwsIEFSQ0hfS01B TExPQ19NSU5BTElHTiwgLTEpOworCisJaWYgKGMpIHsKKwkJYy0+bmFtZSA9IG5hbWU7CisJCWMt PnNpemUgPSBzaXplOworCQlpZiAoZmxhZ3MgJiBTTEFCX0RFU1RST1lfQllfUkNVKSB7CisJCQkv KiBsZWF2ZSByb29tIGZvciByY3UgZm9vdGVyIGF0IHRoZSBlbmQgb2Ygb2JqZWN0ICovCisJCQlj LT5zaXplICs9IHNpemVvZihzdHJ1Y3Qgc2xvYl9yY3UpOworCQl9CisJCWMtPmZsYWdzID0gZmxh Z3M7CisJCWMtPmN0b3IgPSBjdG9yOworCQkvKiBpZ25vcmUgYWxpZ25tZW50IHVubGVzcyBpdCdz IGZvcmNlZCAqLworCQljLT5hbGlnbiA9IChmbGFncyAmIFNMQUJfSFdDQUNIRV9BTElHTikgPyBT TE9CX0FMSUdOIDogMDsKKwkJaWYgKGMtPmFsaWduIDwgQVJDSF9TTEFCX01JTkFMSUdOKQorCQkJ Yy0+YWxpZ24gPSBBUkNIX1NMQUJfTUlOQUxJR047CisJCWlmIChjLT5hbGlnbiA8IGFsaWduKQor CQkJYy0+YWxpZ24gPSBhbGlnbjsKKworCQlrbWVtbGVha19hbGxvYyhjLCBzaXplb2Yoc3RydWN0 IGttZW1fY2FjaGUpLCAxLCBHRlBfS0VSTkVMKTsKKwkJYy0+cmVmY291bnQgPSAxOwogCX0KLQlj LT5mbGFncyA9IGZsYWdzOwotCS8qIGlnbm9yZSBhbGlnbm1lbnQgdW5sZXNzIGl0J3MgZm9yY2Vk ICovCi0JYy0+YWxpZ24gPSAoZmxhZ3MgJiBTTEFCX0hXQ0FDSEVfQUxJR04pID8gU0xPQl9BTElH TiA6IDA7Ci0JaWYgKGMtPmFsaWduIDwgQVJDSF9TTEFCX01JTkFMSUdOKQotCQljLT5hbGlnbiA9 IEFSQ0hfU0xBQl9NSU5BTElHTjsKLQlpZiAoYy0+YWxpZ24gPCBhbGlnbikKLQkJYy0+YWxpZ24g PSBhbGlnbjsKKwlyZXR1cm4gYzsKK30KIAotCXJldHVybiAwOwordm9pZCBrbWVtX2NhY2hlX2Rl c3Ryb3koc3RydWN0IGttZW1fY2FjaGUgKmMpCit7CisJa21lbWxlYWtfZnJlZShjKTsKKwlpZiAo Yy0+ZmxhZ3MgJiBTTEFCX0RFU1RST1lfQllfUkNVKQorCQlyY3VfYmFycmllcigpOworCXNsb2Jf ZnJlZShjLCBzaXplb2Yoc3RydWN0IGttZW1fY2FjaGUpKTsKIH0KK0VYUE9SVF9TWU1CT0woa21l bV9jYWNoZV9kZXN0cm95KTsKIAogdm9pZCAqa21lbV9jYWNoZV9hbGxvY19ub2RlKHN0cnVjdCBr bWVtX2NhY2hlICpjLCBnZnBfdCBmbGFncywgaW50IG5vZGUpCiB7CkBAIC01OTMsMjggKzYxMywx NCBAQCB1bnNpZ25lZCBpbnQga21lbV9jYWNoZV9zaXplKHN0cnVjdCBrbWVtX2NhY2hlICpjKQog fQogRVhQT1JUX1NZTUJPTChrbWVtX2NhY2hlX3NpemUpOwogCi1pbnQgX19rbWVtX2NhY2hlX3No dXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpjKQotewotCS8qIE5vIHdheSB0byBjaGVjayBmb3Ig cmVtYWluaW5nIG9iamVjdHMgKi8KLQlyZXR1cm4gMDsKLX0KLQogaW50IGttZW1fY2FjaGVfc2hy aW5rKHN0cnVjdCBrbWVtX2NhY2hlICpkKQogewogCXJldHVybiAwOwogfQogRVhQT1JUX1NZTUJP TChrbWVtX2NhY2hlX3Nocmluayk7CiAKLXN0cnVjdCBrbWVtX2NhY2hlIGttZW1fY2FjaGVfYm9v dCA9IHsKLQkubmFtZSA9ICJrbWVtX2NhY2hlIiwKLQkuc2l6ZSA9IHNpemVvZihzdHJ1Y3Qga21l bV9jYWNoZSksCi0JLmZsYWdzID0gU0xBQl9QQU5JQywKLQkuYWxpZ24gPSBBUkNIX0tNQUxMT0Nf TUlOQUxJR04sCi19OwotCiB2b2lkIF9faW5pdCBrbWVtX2NhY2hlX2luaXQodm9pZCkKIHsKLQlr bWVtX2NhY2hlID0gJmttZW1fY2FjaGVfYm9vdDsKIAlzbGFiX3N0YXRlID0gVVA7CiB9CiAKZGlm ZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuYwppbmRleCBkYWZkNDY1Li5jNjdiZDBhIDEw MDY0NAotLS0gYS9tbS9zbHViLmMKKysrIGIvbW0vc2x1Yi5jCkBAIC0yMTAsNyArMjEwLDExIEBA IHN0YXRpYyB2b2lkIHN5c2ZzX3NsYWJfcmVtb3ZlKHN0cnVjdCBrbWVtX2NhY2hlICopOwogc3Rh dGljIGlubGluZSBpbnQgc3lzZnNfc2xhYl9hZGQoc3RydWN0IGttZW1fY2FjaGUgKnMpIHsgcmV0 dXJuIDA7IH0KIHN0YXRpYyBpbmxpbmUgaW50IHN5c2ZzX3NsYWJfYWxpYXMoc3RydWN0IGttZW1f Y2FjaGUgKnMsIGNvbnN0IGNoYXIgKnApCiAJCQkJCQkJeyByZXR1cm4gMDsgfQotc3RhdGljIGlu bGluZSB2b2lkIHN5c2ZzX3NsYWJfcmVtb3ZlKHN0cnVjdCBrbWVtX2NhY2hlICpzKSB7IH0KK3N0 YXRpYyBpbmxpbmUgdm9pZCBzeXNmc19zbGFiX3JlbW92ZShzdHJ1Y3Qga21lbV9jYWNoZSAqcykK K3sKKwlrZnJlZShzLT5uYW1lKTsKKwlrZnJlZShzKTsKK30KIAogI2VuZGlmCiAKQEAgLTYyMCw3 ICs2MjQsNyBAQCBzdGF0aWMgdm9pZCBvYmplY3RfZXJyKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBz dHJ1Y3QgcGFnZSAqcGFnZSwKIAlwcmludF90cmFpbGVyKHMsIHBhZ2UsIG9iamVjdCk7CiB9CiAK LXN0YXRpYyB2b2lkIHNsYWJfZXJyKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3QgcGFnZSAq cGFnZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCitzdGF0aWMgdm9pZCBzbGFiX2VycihzdHJ1Y3Qg a21lbV9jYWNoZSAqcywgc3RydWN0IHBhZ2UgKnBhZ2UsIGNoYXIgKmZtdCwgLi4uKQogewogCXZh X2xpc3QgYXJnczsKIAljaGFyIGJ1ZlsxMDBdOwpAQCAtMjYxMCwxMyArMjYxNCw2IEBAIHZvaWQg a21lbV9jYWNoZV9mcmVlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICp4KQogCiAJcGFnZSA9 IHZpcnRfdG9faGVhZF9wYWdlKHgpOwogCi0JaWYgKGttZW1fY2FjaGVfZGVidWcocykgJiYgcGFn ZS0+c2xhYiAhPSBzKSB7Ci0JCXByX2Vycigia21lbV9jYWNoZV9mcmVlOiBXcm9uZyBzbGFiIGNh Y2hlLiAlcyBidXQgb2JqZWN0IgotCQkJIiBpcyBmcm9tICAlc1xuIiwgcGFnZS0+c2xhYi0+bmFt ZSwgcy0+bmFtZSk7Ci0JCVdBUk5fT05fT05DRSgxKTsKLQkJcmV0dXJuOwotCX0KLQogCXNsYWJf ZnJlZShzLCBwYWdlLCB4LCBfUkVUX0lQXyk7CiAKIAl0cmFjZV9rbWVtX2NhY2hlX2ZyZWUoX1JF VF9JUF8sIHgpOwpAQCAtMzAzMSw5ICszMDI4LDE3IEBAIHN0YXRpYyBpbnQgY2FsY3VsYXRlX3Np emVzKHN0cnVjdCBrbWVtX2NhY2hlICpzLCBpbnQgZm9yY2VkX29yZGVyKQogCiB9CiAKLXN0YXRp YyBpbnQga21lbV9jYWNoZV9vcGVuKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB1bnNpZ25lZCBsb25n IGZsYWdzKQorc3RhdGljIGludCBrbWVtX2NhY2hlX29wZW4oc3RydWN0IGttZW1fY2FjaGUgKnMs CisJCWNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplLAorCQlzaXplX3QgYWxpZ24sIHVuc2ln bmVkIGxvbmcgZmxhZ3MsCisJCXZvaWQgKCpjdG9yKSh2b2lkICopKQogewotCXMtPmZsYWdzID0g a21lbV9jYWNoZV9mbGFncyhzLT5zaXplLCBmbGFncywgcy0+bmFtZSwgcy0+Y3Rvcik7CisJbWVt c2V0KHMsIDAsIGttZW1fc2l6ZSk7CisJcy0+bmFtZSA9IG5hbWU7CisJcy0+Y3RvciA9IGN0b3I7 CisJcy0+b2JqZWN0X3NpemUgPSBzaXplOworCXMtPmFsaWduID0gYWxpZ247CisJcy0+ZmxhZ3Mg PSBrbWVtX2NhY2hlX2ZsYWdzKHNpemUsIGZsYWdzLCBuYW1lLCBjdG9yKTsKIAlzLT5yZXNlcnZl ZCA9IDA7CiAKIAlpZiAobmVlZF9yZXNlcnZlX3NsYWJfcmN1ICYmIChzLT5mbGFncyAmIFNMQUJf REVTVFJPWV9CWV9SQ1UpKQpAQCAtMzA5NSw2ICszMTAwLDcgQEAgc3RhdGljIGludCBrbWVtX2Nh Y2hlX29wZW4oc3RydWN0IGttZW1fY2FjaGUgKnMsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiAJZWxz ZQogCQlzLT5jcHVfcGFydGlhbCA9IDMwOwogCisJcy0+cmVmY291bnQgPSAxOwogI2lmZGVmIENP TkZJR19OVU1BCiAJcy0+cmVtb3RlX25vZGVfZGVmcmFnX3JhdGlvID0gMTAwMDsKICNlbmRpZgpA QCAtMzEwMiwxNiArMzEwOCwxNiBAQCBzdGF0aWMgaW50IGttZW1fY2FjaGVfb3BlbihzdHJ1Y3Qg a21lbV9jYWNoZSAqcywgdW5zaWduZWQgbG9uZyBmbGFncykKIAkJZ290byBlcnJvcjsKIAogCWlm IChhbGxvY19rbWVtX2NhY2hlX2NwdXMocykpCi0JCXJldHVybiAwOworCQlyZXR1cm4gMTsKIAog CWZyZWVfa21lbV9jYWNoZV9ub2RlcyhzKTsKIGVycm9yOgogCWlmIChmbGFncyAmIFNMQUJfUEFO SUMpCiAJCXBhbmljKCJDYW5ub3QgY3JlYXRlIHNsYWIgJXMgc2l6ZT0lbHUgcmVhbHNpemU9JXUg IgogCQkJIm9yZGVyPSV1IG9mZnNldD0ldSBmbGFncz0lbHhcbiIsCi0JCQlzLT5uYW1lLCAodW5z aWduZWQgbG9uZylzLT5zaXplLCBzLT5zaXplLCBvb19vcmRlcihzLT5vbyksCisJCQlzLT5uYW1l LCAodW5zaWduZWQgbG9uZylzaXplLCBzLT5zaXplLCBvb19vcmRlcihzLT5vbyksCiAJCQlzLT5v ZmZzZXQsIGZsYWdzKTsKLQlyZXR1cm4gLUVJTlZBTDsKKwlyZXR1cm4gMDsKIH0KIAogLyoKQEAg LTMxMzMsNyArMzEzOSw3IEBAIHN0YXRpYyB2b2lkIGxpc3Rfc2xhYl9vYmplY3RzKHN0cnVjdCBr bWVtX2NhY2hlICpzLCBzdHJ1Y3QgcGFnZSAqcGFnZSwKIAkJCQkgICAgIHNpemVvZihsb25nKSwg R0ZQX0FUT01JQyk7CiAJaWYgKCFtYXApCiAJCXJldHVybjsKLQlzbGFiX2VycihzLCBwYWdlLCB0 ZXh0LCBzLT5uYW1lKTsKKwlzbGFiX2VycihzLCBwYWdlLCAiJXMiLCB0ZXh0KTsKIAlzbGFiX2xv Y2socGFnZSk7CiAKIAlnZXRfbWFwKHMsIHBhZ2UsIG1hcCk7CkBAIC0zMTY1LDcgKzMxNzEsNyBA QCBzdGF0aWMgdm9pZCBmcmVlX3BhcnRpYWwoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBr bWVtX2NhY2hlX25vZGUgKm4pCiAJCQlkaXNjYXJkX3NsYWIocywgcGFnZSk7CiAJCX0gZWxzZSB7 CiAJCQlsaXN0X3NsYWJfb2JqZWN0cyhzLCBwYWdlLAotCQkJIk9iamVjdHMgcmVtYWluaW5nIGlu ICVzIG9uIGttZW1fY2FjaGVfY2xvc2UoKSIpOworCQkJCSJPYmplY3RzIHJlbWFpbmluZyBvbiBr bWVtX2NhY2hlX2Nsb3NlKCkiKTsKIAkJfQogCX0KIH0KQEAgLTMxNzgsNiArMzE4NCw3IEBAIHN0 YXRpYyBpbmxpbmUgaW50IGttZW1fY2FjaGVfY2xvc2Uoc3RydWN0IGttZW1fY2FjaGUgKnMpCiAJ aW50IG5vZGU7CiAKIAlmbHVzaF9hbGwocyk7CisJZnJlZV9wZXJjcHUocy0+Y3B1X3NsYWIpOwog CS8qIEF0dGVtcHQgdG8gZnJlZSBhbGwgb2JqZWN0cyAqLwogCWZvcl9lYWNoX25vZGVfc3RhdGUo bm9kZSwgTl9OT1JNQUxfTUVNT1JZKSB7CiAJCXN0cnVjdCBrbWVtX2NhY2hlX25vZGUgKm4gPSBn ZXRfbm9kZShzLCBub2RlKTsKQEAgLTMxODYsMjAgKzMxOTMsMzMgQEAgc3RhdGljIGlubGluZSBp bnQga21lbV9jYWNoZV9jbG9zZShzdHJ1Y3Qga21lbV9jYWNoZSAqcykKIAkJaWYgKG4tPm5yX3Bh cnRpYWwgfHwgc2xhYnNfbm9kZShzLCBub2RlKSkKIAkJCXJldHVybiAxOwogCX0KLQlmcmVlX3Bl cmNwdShzLT5jcHVfc2xhYik7CiAJZnJlZV9rbWVtX2NhY2hlX25vZGVzKHMpOwogCXJldHVybiAw OwogfQogCi1pbnQgX19rbWVtX2NhY2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpzKQor LyoKKyAqIENsb3NlIGEgY2FjaGUgYW5kIHJlbGVhc2UgdGhlIGttZW1fY2FjaGUgc3RydWN0dXJl CisgKiAobXVzdCBiZSB1c2VkIGZvciBjYWNoZXMgY3JlYXRlZCB1c2luZyBrbWVtX2NhY2hlX2Ny ZWF0ZSkKKyAqLwordm9pZCBrbWVtX2NhY2hlX2Rlc3Ryb3koc3RydWN0IGttZW1fY2FjaGUgKnMp CiB7Ci0JaW50IHJjID0ga21lbV9jYWNoZV9jbG9zZShzKTsKLQotCWlmICghcmMpCisJbXV0ZXhf bG9jaygmc2xhYl9tdXRleCk7CisJcy0+cmVmY291bnQtLTsKKwlpZiAoIXMtPnJlZmNvdW50KSB7 CisJCWxpc3RfZGVsKCZzLT5saXN0KTsKKwkJbXV0ZXhfdW5sb2NrKCZzbGFiX211dGV4KTsKKwkJ aWYgKGttZW1fY2FjaGVfY2xvc2UocykpIHsKKwkJCXByaW50ayhLRVJOX0VSUiAiU0xVQiAlczog JXMgY2FsbGVkIGZvciBjYWNoZSB0aGF0ICIKKwkJCQkic3RpbGwgaGFzIG9iamVjdHMuXG4iLCBz LT5uYW1lLCBfX2Z1bmNfXyk7CisJCQlkdW1wX3N0YWNrKCk7CisJCX0KKwkJaWYgKHMtPmZsYWdz ICYgU0xBQl9ERVNUUk9ZX0JZX1JDVSkKKwkJCXJjdV9iYXJyaWVyKCk7CiAJCXN5c2ZzX3NsYWJf cmVtb3ZlKHMpOwotCi0JcmV0dXJuIHJjOworCX0gZWxzZQorCQltdXRleF91bmxvY2soJnNsYWJf bXV0ZXgpOwogfQorRVhQT1JUX1NZTUJPTChrbWVtX2NhY2hlX2Rlc3Ryb3kpOwogCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKICAqCQlLbWFsbG9jIHN1YnN5c3RlbQpAQCAtMzIwOCw2ICszMjI4LDggQEAgaW50IF9f a21lbV9jYWNoZV9zaHV0ZG93bihzdHJ1Y3Qga21lbV9jYWNoZSAqcykKIHN0cnVjdCBrbWVtX2Nh Y2hlICprbWFsbG9jX2NhY2hlc1tTTFVCX1BBR0VfU0hJRlRdOwogRVhQT1JUX1NZTUJPTChrbWFs bG9jX2NhY2hlcyk7CiAKK3N0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqa21lbV9jYWNoZTsKKwog I2lmZGVmIENPTkZJR19aT05FX0RNQQogc3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICprbWFsbG9j X2RtYV9jYWNoZXNbU0xVQl9QQUdFX1NISUZUXTsKICNlbmRpZgpAQCAtMzI1MywxNyArMzI3NSwx NCBAQCBzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKl9faW5pdCBjcmVhdGVfa21hbGxvY19jYWNo ZShjb25zdCBjaGFyICpuYW1lLAogewogCXN0cnVjdCBrbWVtX2NhY2hlICpzOwogCi0JcyA9IGtt ZW1fY2FjaGVfemFsbG9jKGttZW1fY2FjaGUsIEdGUF9OT1dBSVQpOwotCi0Jcy0+bmFtZSA9IG5h bWU7Ci0Jcy0+c2l6ZSA9IHMtPm9iamVjdF9zaXplID0gc2l6ZTsKLQlzLT5hbGlnbiA9IEFSQ0hf S01BTExPQ19NSU5BTElHTjsKKwlzID0ga21lbV9jYWNoZV9hbGxvYyhrbWVtX2NhY2hlLCBHRlBf Tk9XQUlUKTsKIAogCS8qCiAJICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBJUlFzIGRp c2FibGVkIGR1cmluZyBlYXJseS1ib290IG9uCiAJICogc2luZ2xlIENQVSBzbyB0aGVyZSdzIG5v IG5lZWQgdG8gdGFrZSBzbGFiX211dGV4IGhlcmUuCiAJICovCi0JaWYgKGttZW1fY2FjaGVfb3Bl bihzLCBmbGFncykpCisJaWYgKCFrbWVtX2NhY2hlX29wZW4ocywgbmFtZSwgc2l6ZSwgQVJDSF9L TUFMTE9DX01JTkFMSUdOLAorCQkJCQkJCQlmbGFncywgTlVMTCkpCiAJCWdvdG8gcGFuaWM7CiAK IAlsaXN0X2FkZCgmcy0+bGlzdCwgJnNsYWJfY2FjaGVzKTsKQEAgLTM3MDIsNyArMzcyMSw3IEBA IHZvaWQgX19pbml0IGttZW1fY2FjaGVfaW5pdCh2b2lkKQogCQlzbHViX21heF9vcmRlciA9IDA7 CiAKIAlrbWVtX3NpemUgPSBvZmZzZXRvZihzdHJ1Y3Qga21lbV9jYWNoZSwgbm9kZSkgKwotCQkJ bnJfbm9kZV9pZHMgKiBzaXplb2Yoc3RydWN0IGttZW1fY2FjaGVfbm9kZSAqKTsKKwkJCQlucl9u b2RlX2lkcyAqIHNpemVvZihzdHJ1Y3Qga21lbV9jYWNoZV9ub2RlICopOwogCiAJLyogQWxsb2Nh dGUgdHdvIGttZW1fY2FjaGVzIGZyb20gdGhlIHBhZ2UgYWxsb2NhdG9yICovCiAJa21hbGxvY19z aXplID0gQUxJR04oa21lbV9zaXplLCBjYWNoZV9saW5lX3NpemUoKSk7CkBAIC0zNzE2LDEwICsz NzM1LDkgQEAgdm9pZCBfX2luaXQga21lbV9jYWNoZV9pbml0KHZvaWQpCiAJICovCiAJa21lbV9j YWNoZV9ub2RlID0gKHZvaWQgKilrbWVtX2NhY2hlICsga21hbGxvY19zaXplOwogCi0Ja21lbV9j YWNoZV9ub2RlLT5uYW1lID0gImttZW1fY2FjaGVfbm9kZSI7Ci0Ja21lbV9jYWNoZV9ub2RlLT5z aXplID0ga21lbV9jYWNoZV9ub2RlLT5vYmplY3Rfc2l6ZSA9Ci0JCXNpemVvZihzdHJ1Y3Qga21l bV9jYWNoZV9ub2RlKTsKLQlrbWVtX2NhY2hlX29wZW4oa21lbV9jYWNoZV9ub2RlLCBTTEFCX0hX Q0FDSEVfQUxJR04gfCBTTEFCX1BBTklDKTsKKwlrbWVtX2NhY2hlX29wZW4oa21lbV9jYWNoZV9u b2RlLCAia21lbV9jYWNoZV9ub2RlIiwKKwkJc2l6ZW9mKHN0cnVjdCBrbWVtX2NhY2hlX25vZGUp LAorCQkwLCBTTEFCX0hXQ0FDSEVfQUxJR04gfCBTTEFCX1BBTklDLCBOVUxMKTsKIAogCWhvdHBs dWdfbWVtb3J5X25vdGlmaWVyKHNsYWJfbWVtb3J5X2NhbGxiYWNrLCBTTEFCX0NBTExCQUNLX1BS SSk7CiAKQEAgLTM3MjcsMTAgKzM3NDUsOCBAQCB2b2lkIF9faW5pdCBrbWVtX2NhY2hlX2luaXQo dm9pZCkKIAlzbGFiX3N0YXRlID0gUEFSVElBTDsKIAogCXRlbXBfa21lbV9jYWNoZSA9IGttZW1f Y2FjaGU7Ci0Ja21lbV9jYWNoZS0+bmFtZSA9ICJrbWVtX2NhY2hlIjsKLQlrbWVtX2NhY2hlLT5z aXplID0ga21lbV9jYWNoZS0+b2JqZWN0X3NpemUgPSBrbWVtX3NpemU7Ci0Ja21lbV9jYWNoZV9v cGVuKGttZW1fY2FjaGUsIFNMQUJfSFdDQUNIRV9BTElHTiB8IFNMQUJfUEFOSUMpOwotCisJa21l bV9jYWNoZV9vcGVuKGttZW1fY2FjaGUsICJrbWVtX2NhY2hlIiwga21lbV9zaXplLAorCQkwLCBT TEFCX0hXQ0FDSEVfQUxJR04gfCBTTEFCX1BBTklDLCBOVUxMKTsKIAlrbWVtX2NhY2hlID0ga21l bV9jYWNoZV9hbGxvYyhrbWVtX2NhY2hlLCBHRlBfTk9XQUlUKTsKIAltZW1jcHkoa21lbV9jYWNo ZSwgdGVtcF9rbWVtX2NhY2hlLCBrbWVtX3NpemUpOwogCkBAIC0zOTE5LDEwICszOTM1LDExIEBA IHN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqZmluZF9tZXJnZWFibGUoc2l6ZV90IHNpemUsCiAJ cmV0dXJuIE5VTEw7CiB9CiAKLXN0cnVjdCBrbWVtX2NhY2hlICpfX2ttZW1fY2FjaGVfYWxpYXMo Y29uc3QgY2hhciAqbmFtZSwgc2l6ZV90IHNpemUsCitzdHJ1Y3Qga21lbV9jYWNoZSAqX19rbWVt X2NhY2hlX2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLCBzaXplX3Qgc2l6ZSwKIAkJc2l6ZV90IGFs aWduLCB1bnNpZ25lZCBsb25nIGZsYWdzLCB2b2lkICgqY3Rvcikodm9pZCAqKSkKIHsKIAlzdHJ1 Y3Qga21lbV9jYWNoZSAqczsKKwljaGFyICpuOwogCiAJcyA9IGZpbmRfbWVyZ2VhYmxlKHNpemUs IGFsaWduLCBmbGFncywgbmFtZSwgY3Rvcik7CiAJaWYgKHMpIHsKQEAgLTM5MzYsMjkgKzM5NTMs MzYgQEAgc3RydWN0IGttZW1fY2FjaGUgKl9fa21lbV9jYWNoZV9hbGlhcyhjb25zdCBjaGFyICpu YW1lLCBzaXplX3Qgc2l6ZSwKIAogCQlpZiAoc3lzZnNfc2xhYl9hbGlhcyhzLCBuYW1lKSkgewog CQkJcy0+cmVmY291bnQtLTsKLQkJCXMgPSBOVUxMOworCQkJcmV0dXJuIE5VTEw7CiAJCX0KKwkJ cmV0dXJuIHM7CiAJfQogCi0JcmV0dXJuIHM7Ci19Ci0KLWludCBfX2ttZW1fY2FjaGVfY3JlYXRl KHN0cnVjdCBrbWVtX2NhY2hlICpzLCB1bnNpZ25lZCBsb25nIGZsYWdzKQotewotCWludCBlcnI7 CisJbiA9IGtzdHJkdXAobmFtZSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFuKQorCQlyZXR1cm4gTlVM TDsKIAotCWVyciA9IGttZW1fY2FjaGVfb3BlbihzLCBmbGFncyk7Ci0JaWYgKGVycikKLQkJcmV0 dXJuIGVycjsKKwlzID0ga21hbGxvYyhrbWVtX3NpemUsIEdGUF9LRVJORUwpOworCWlmIChzKSB7 CisJCWlmIChrbWVtX2NhY2hlX29wZW4ocywgbiwKKwkJCQlzaXplLCBhbGlnbiwgZmxhZ3MsIGN0 b3IpKSB7CisJCQlpbnQgcjsKIAotCW11dGV4X3VubG9jaygmc2xhYl9tdXRleCk7Ci0JZXJyID0g c3lzZnNfc2xhYl9hZGQocyk7Ci0JbXV0ZXhfbG9jaygmc2xhYl9tdXRleCk7CisJCQlsaXN0X2Fk ZCgmcy0+bGlzdCwgJnNsYWJfY2FjaGVzKTsKKwkJCW11dGV4X3VubG9jaygmc2xhYl9tdXRleCk7 CisJCQlyID0gc3lzZnNfc2xhYl9hZGQocyk7CisJCQltdXRleF9sb2NrKCZzbGFiX211dGV4KTsK IAotCWlmIChlcnIpCi0JCWttZW1fY2FjaGVfY2xvc2Uocyk7CisJCQlpZiAoIXIpCisJCQkJcmV0 dXJuIHM7CiAKLQlyZXR1cm4gZXJyOworCQkJbGlzdF9kZWwoJnMtPmxpc3QpOworCQkJa21lbV9j YWNoZV9jbG9zZShzKTsKKwkJfQorCQlrZnJlZShzKTsKKwl9CisJa2ZyZWUobik7CisJcmV0dXJu IE5VTEw7CiB9CiAKICNpZmRlZiBDT05GSUdfU01QCkBAIC01MTg4LDYgKzUyMTIsMTQgQEAgc3Rh dGljIHNzaXplX3Qgc2xhYl9hdHRyX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLAogCXJldHVy biBlcnI7CiB9CiAKK3N0YXRpYyB2b2lkIGttZW1fY2FjaGVfcmVsZWFzZShzdHJ1Y3Qga29iamVj dCAqa29iaikKK3sKKwlzdHJ1Y3Qga21lbV9jYWNoZSAqcyA9IHRvX3NsYWIoa29iaik7CisKKwlr ZnJlZShzLT5uYW1lKTsKKwlrZnJlZShzKTsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBzeXNm c19vcHMgc2xhYl9zeXNmc19vcHMgPSB7CiAJLnNob3cgPSBzbGFiX2F0dHJfc2hvdywKIAkuc3Rv cmUgPSBzbGFiX2F0dHJfc3RvcmUsCkBAIC01MTk1LDYgKzUyMjcsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHN5c2ZzX29wcyBzbGFiX3N5c2ZzX29wcyA9IHsKIAogc3RhdGljIHN0cnVjdCBrb2Jq X3R5cGUgc2xhYl9rdHlwZSA9IHsKIAkuc3lzZnNfb3BzID0gJnNsYWJfc3lzZnNfb3BzLAorCS5y ZWxlYXNlID0ga21lbV9jYWNoZV9yZWxlYXNlCiB9OwogCiBzdGF0aWMgaW50IHVldmVudF9maWx0 ZXIoc3RydWN0IGtzZXQgKmtzZXQsIHN0cnVjdCBrb2JqZWN0ICprb2JqKQpkaWZmIC0tZ2l0IGEv c2NyaXB0cy9wYWNrYWdlL2J1aWxkZGViIGIvc2NyaXB0cy9wYWNrYWdlL2J1aWxkZGViCmluZGV4 IGFjYjg2NTAuLjU4NmU3NDggMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvcGFja2FnZS9idWlsZGRlYgor KysgYi9zY3JpcHRzL3BhY2thZ2UvYnVpbGRkZWIKQEAgLTE3Miw5ICsxNzIsMjIgQEAgZWxzZQog ZmkKIG1haW50YWluZXI9IiRuYW1lIDwkZW1haWw+IgogCisjIFRyeSB0byBkZXRlcm1pbmUgZGlz dHJpYnV0aW9uCitpZiBbIC1lICQod2hpY2ggbHNiX3JlbGVhc2UpIF07IHRoZW4KKyAgICAgICBj b2RlbmFtZT0kKGxzYl9yZWxlYXNlIC0tY29kZW5hbWUgLS1zaG9ydCkKKyAgICAgICBpZiBbICIk Y29kZW5hbWUiICE9ICIiIF07IHRoZW4KKwkJZGlzdHJpYnV0aW9uPSRjb2RlbmFtZQorICAgICAg IGVsc2UKKwkJZGlzdHJpYnV0aW9uPSJVTlJFTEVBU0VEIgorCQllY2hvICJXQVJOSU5HOiBUaGUg ZGlzdHJpYnV0aW9uIGNvdWxkIE5PVCBiZSBkZXRlcm1pbmVkISIKKyAgICAgICBmaQorZWxzZQor ICAgICAgIGVjaG8gIkhJTlQ6IEluc3RhbGwgbHNiX3JlbGVhc2UgYmluYXJ5LCB0aGlzIGhlbHBz IHRvIGlkZW50aWZ5IHlvdXIgZGlzdHJpYnV0aW9uISIKK2ZpCisKICMgR2VuZXJhdGUgYSBzaW1w bGUgY2hhbmdlbG9nIHRlbXBsYXRlCiBjYXQgPDxFT0YgPiBkZWJpYW4vY2hhbmdlbG9nCi1saW51 eC11cHN0cmVhbSAoJHBhY2thZ2V2ZXJzaW9uKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKK2xpbnV4 LXVwc3RyZWFtICgkcGFja2FnZXZlcnNpb24pICRkaXN0cmlidXRpb247IHVyZ2VuY3k9bG93CiAK ICAgKiBDdXN0b20gYnVpbHQgTGludXgga2VybmVsLgogCkBAIC0xODgsMTAgKzIwMSwxMCBAQCBU aGlzIGlzIGEgcGFja2Fja2VkIHVwc3RyZWFtIHZlcnNpb24gb2YgdGhlIExpbnV4IGtlcm5lbC4K IFRoZSBzb3VyY2VzIG1heSBiZSBmb3VuZCBhdCBtb3N0IExpbnV4IGZ0cCBzaXRlcywgaW5jbHVk aW5nOgogZnRwOi8vZnRwLmtlcm5lbC5vcmcvcHViL2xpbnV4L2tlcm5lbAogCi1Db3B5cmlnaHQ6 IDE5OTEgLSAyMDA5IExpbnVzIFRvcnZhbGRzIGFuZCBvdGhlcnMuCitDb3B5cmlnaHQ6IDE5OTEg LSAyMDEyIExpbnVzIFRvcnZhbGRzIGFuZCBvdGhlcnMuCiAKIFRoZSBnaXQgcmVwb3NpdG9yeSBm b3IgbWFpbmxpbmUga2VybmVsIGRldmVsb3BtZW50IGlzIGF0OgotZ2l0Oi8vZ2l0Lmtlcm5lbC5v cmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LTIuNi5naXQKK2dpdDov L2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5n aXQKIAogICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK --f46d04016c23a36c8704c90e1fee--