From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi0-f69.google.com (mail-oi0-f69.google.com [209.85.218.69]) by kanga.kvack.org (Postfix) with ESMTP id 6B15A28024B for ; Sat, 24 Sep 2016 16:47:40 -0400 (EDT) Received: by mail-oi0-f69.google.com with SMTP id r126so384866007oib.2 for ; Sat, 24 Sep 2016 13:47:40 -0700 (PDT) Received: from mail-oi0-x241.google.com (mail-oi0-x241.google.com. [2607:f8b0:4003:c06::241]) by mx.google.com with ESMTPS id j8si9609427oia.209.2016.09.24.13.47.39 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 24 Sep 2016 13:47:39 -0700 (PDT) Received: by mail-oi0-x241.google.com with SMTP id n202so11153144oig.2 for ; Sat, 24 Sep 2016 13:47:39 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: <1474570415-14938-1-git-send-email-mawilcox@linuxonhyperv.com> <1474570415-14938-3-git-send-email-mawilcox@linuxonhyperv.com> From: Linus Torvalds Date: Sat, 24 Sep 2016 13:47:38 -0700 Message-ID: Subject: Re: [PATCH 2/2] radix-tree: Fix optimisation problem Content-Type: multipart/mixed; boundary=001a113d4ee06e3ee2053d470198 Sender: owner-linux-mm@kvack.org List-ID: To: Matthew Wilcox Cc: Matthew Wilcox , "Kirill A. Shutemov" , Andrew Morton , Konstantin Khlebnikov , Ross Zwisler , Linux Kernel Mailing List , linux-mm , linux-fsdevel --001a113d4ee06e3ee2053d470198 Content-Type: text/plain; charset=UTF-8 On Sat, Sep 24, 2016 at 1:21 PM, Linus Torvalds wrote: > > That said, if this code isn't even used, as Konstantin says (THP > selects it - doesn't THP use it?), then the fix really should be to > just remove the odd code instead of adding to it. > > Looking around for uses that set "order" to anything but zero, I > really don't see it. So maybe we should just do *that* trivial thing > instead, and remove CONFIG_RADIX_TREE_MULTIORDER, since it's appears > to be buggy and always has been. IOW, a patch something like this? NOTE! This is entirely untested. Things still seem to compile with it, at least with some configurations. That's all I can say. I do like this part: 11 files changed, 29 insertions(+), 518 deletions(-) although admittedly 2/3rds of the deletions were for the multiorder tests. But even if you ignore the test side, it's just fairly clean removal of code that is apparently not used, and that was buggy. Linus --001a113d4ee06e3ee2053d470198 Content-Type: text/x-patch; charset=US-ASCII; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_itho3ftf0 IGluY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oICAgICAgICAgICAgICAgICAgICB8ICA0OCArLS0t CiBsaWIvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgLQog bGliL3JhZGl4LXRyZWUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAwICstLS0t LS0tCiBtbS9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg LQogbW0vZmlsZW1hcC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICst CiB0b29scy90ZXN0aW5nL3JhZGl4LXRyZWUvTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDIgKy0K IHRvb2xzL3Rlc3RpbmcvcmFkaXgtdHJlZS9nZW5lcmF0ZWQvYXV0b2NvbmYuaCB8ICAgMSAtCiB0 b29scy90ZXN0aW5nL3JhZGl4LXRyZWUvbWFpbi5jICAgICAgICAgICAgICAgfCAgMzQgKy0tCiB0 b29scy90ZXN0aW5nL3JhZGl4LXRyZWUvbXVsdGlvcmRlci5jICAgICAgICAgfCAzMzcgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KIHRvb2xzL3Rlc3RpbmcvcmFkaXgtdHJlZS90ZXN0LmMgICAg ICAgICAgICAgICB8ICAxNCArLQogdG9vbHMvdGVzdGluZy9yYWRpeC10cmVlL3Rlc3QuaCAgICAg ICAgICAgICAgIHwgICA1IC0KIDExIGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDUx OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaCBi L2luY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oCmluZGV4IDRjNDUxMDVkZWNlMy4uYWM1NDZiYWE2 MDRjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaAorKysgYi9pbmNsdWRl L2xpbnV4L3JhZGl4LXRyZWUuaApAQCAtMjYzLDE1ICsyNjMsOSBAQCBzdGF0aWMgaW5saW5lIHZv aWQgcmFkaXhfdHJlZV9yZXBsYWNlX3Nsb3Qodm9pZCAqKnBzbG90LCB2b2lkICppdGVtKQogfQog CiBpbnQgX19yYWRpeF90cmVlX2NyZWF0ZShzdHJ1Y3QgcmFkaXhfdHJlZV9yb290ICpyb290LCB1 bnNpZ25lZCBsb25nIGluZGV4LAotCQkJdW5zaWduZWQgb3JkZXIsIHN0cnVjdCByYWRpeF90cmVl X25vZGUgKipub2RlcCwKKwkJCXN0cnVjdCByYWRpeF90cmVlX25vZGUgKipub2RlcCwKIAkJCXZv aWQgKioqc2xvdHApOwotaW50IF9fcmFkaXhfdHJlZV9pbnNlcnQoc3RydWN0IHJhZGl4X3RyZWVf cm9vdCAqLCB1bnNpZ25lZCBsb25nIGluZGV4LAotCQkJdW5zaWduZWQgb3JkZXIsIHZvaWQgKik7 Ci1zdGF0aWMgaW5saW5lIGludCByYWRpeF90cmVlX2luc2VydChzdHJ1Y3QgcmFkaXhfdHJlZV9y b290ICpyb290LAotCQkJdW5zaWduZWQgbG9uZyBpbmRleCwgdm9pZCAqZW50cnkpCi17Ci0JcmV0 dXJuIF9fcmFkaXhfdHJlZV9pbnNlcnQocm9vdCwgaW5kZXgsIDAsIGVudHJ5KTsKLX0KK2ludCBy YWRpeF90cmVlX2luc2VydChzdHJ1Y3QgcmFkaXhfdHJlZV9yb290ICosIHVuc2lnbmVkIGxvbmcg aW5kZXgsIHZvaWQgKik7CiB2b2lkICpfX3JhZGl4X3RyZWVfbG9va3VwKHN0cnVjdCByYWRpeF90 cmVlX3Jvb3QgKnJvb3QsIHVuc2lnbmVkIGxvbmcgaW5kZXgsCiAJCQkgIHN0cnVjdCByYWRpeF90 cmVlX25vZGUgKipub2RlcCwgdm9pZCAqKipzbG90cCk7CiB2b2lkICpyYWRpeF90cmVlX2xvb2t1 cChzdHJ1Y3QgcmFkaXhfdHJlZV9yb290ICosIHVuc2lnbmVkIGxvbmcpOwpAQCAtMzM4LDIwICsz MzIsOCBAQCBzdHJ1Y3QgcmFkaXhfdHJlZV9pdGVyIHsKIAl1bnNpZ25lZCBsb25nCWluZGV4Owog CXVuc2lnbmVkIGxvbmcJbmV4dF9pbmRleDsKIAl1bnNpZ25lZCBsb25nCXRhZ3M7Ci0jaWZkZWYg Q09ORklHX1JBRElYX1RSRUVfTVVMVElPUkRFUgotCXVuc2lnbmVkIGludAlzaGlmdDsKLSNlbmRp ZgogfTsKIAotc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaXRlcl9zaGlmdChzdHJ1Y3QgcmFk aXhfdHJlZV9pdGVyICppdGVyKQotewotI2lmZGVmIENPTkZJR19SQURJWF9UUkVFX01VTFRJT1JE RVIKLQlyZXR1cm4gaXRlci0+c2hpZnQ7Ci0jZWxzZQotCXJldHVybiAwOwotI2VuZGlmCi19Ci0K ICNkZWZpbmUgUkFESVhfVFJFRV9JVEVSX1RBR19NQVNLCTB4MDBGRgkvKiB0YWcgaW5kZXggaW4g bG93ZXIgYnl0ZSAqLwogI2RlZmluZSBSQURJWF9UUkVFX0lURVJfVEFHR0VECQkweDAxMDAJLyog bG9va3VwIHRhZ2dlZCBzbG90cyAqLwogI2RlZmluZSBSQURJWF9UUkVFX0lURVJfQ09OVElHCQkw eDAyMDAJLyogc3RvcCBhdCBmaXJzdCBob2xlICovCkBAIC00MTUsNyArMzk3LDcgQEAgdm9pZCAq KnJhZGl4X3RyZWVfaXRlcl9yZXRyeShzdHJ1Y3QgcmFkaXhfdHJlZV9pdGVyICppdGVyKQogc3Rh dGljIGlubGluZSB1bnNpZ25lZCBsb25nCiBfX3JhZGl4X3RyZWVfaXRlcl9hZGQoc3RydWN0IHJh ZGl4X3RyZWVfaXRlciAqaXRlciwgdW5zaWduZWQgbG9uZyBzbG90cykKIHsKLQlyZXR1cm4gaXRl ci0+aW5kZXggKyAoc2xvdHMgPDwgaXRlcl9zaGlmdChpdGVyKSk7CisJcmV0dXJuIGl0ZXItPmlu ZGV4ICsgc2xvdHM7CiB9CiAKIC8qKgpAQCAtNDQzLDcgKzQyNSw3IEBAIHZvaWQgKipyYWRpeF90 cmVlX2l0ZXJfbmV4dChzdHJ1Y3QgcmFkaXhfdHJlZV9pdGVyICppdGVyKQogc3RhdGljIF9fYWx3 YXlzX2lubGluZSBsb25nCiByYWRpeF90cmVlX2NodW5rX3NpemUoc3RydWN0IHJhZGl4X3RyZWVf aXRlciAqaXRlcikKIHsKLQlyZXR1cm4gKGl0ZXItPm5leHRfaW5kZXggLSBpdGVyLT5pbmRleCkg Pj4gaXRlcl9zaGlmdChpdGVyKTsKKwlyZXR1cm4gaXRlci0+bmV4dF9pbmRleCAtIGl0ZXItPmlu ZGV4OwogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCByYWRpeF90cmVlX25vZGUgKmVudHJ5X3Rv X25vZGUodm9pZCAqcHRyKQpAQCAtNDY2LDIyICs0NDgsOSBAQCBzdGF0aWMgX19hbHdheXNfaW5s aW5lIHZvaWQgKioKIHJhZGl4X3RyZWVfbmV4dF9zbG90KHZvaWQgKipzbG90LCBzdHJ1Y3QgcmFk aXhfdHJlZV9pdGVyICppdGVyLCB1bnNpZ25lZCBmbGFncykKIHsKIAlpZiAoZmxhZ3MgJiBSQURJ WF9UUkVFX0lURVJfVEFHR0VEKSB7Ci0JCXZvaWQgKmNhbm9uID0gc2xvdDsKLQogCQlpdGVyLT50 YWdzID4+PSAxOwogCQlpZiAodW5saWtlbHkoIWl0ZXItPnRhZ3MpKQogCQkJcmV0dXJuIE5VTEw7 Ci0JCXdoaWxlIChJU19FTkFCTEVEKENPTkZJR19SQURJWF9UUkVFX01VTFRJT1JERVIpICYmCi0J CQkJCXJhZGl4X3RyZWVfaXNfaW50ZXJuYWxfbm9kZShzbG90WzFdKSkgewotCQkJaWYgKGVudHJ5 X3RvX25vZGUoc2xvdFsxXSkgPT0gY2Fub24pIHsKLQkJCQlpdGVyLT50YWdzID4+PSAxOwotCQkJ CWl0ZXItPmluZGV4ID0gX19yYWRpeF90cmVlX2l0ZXJfYWRkKGl0ZXIsIDEpOwotCQkJCXNsb3Qr KzsKLQkJCQljb250aW51ZTsKLQkJCX0KLQkJCWl0ZXItPm5leHRfaW5kZXggPSBfX3JhZGl4X3Ry ZWVfaXRlcl9hZGQoaXRlciwgMSk7Ci0JCQlyZXR1cm4gTlVMTDsKLQkJfQogCQlpZiAobGlrZWx5 KGl0ZXItPnRhZ3MgJiAxdWwpKSB7CiAJCQlpdGVyLT5pbmRleCA9IF9fcmFkaXhfdHJlZV9pdGVy X2FkZChpdGVyLCAxKTsKIAkJCXJldHVybiBzbG90ICsgMTsKQEAgLTQ5NSwyMCArNDY0LDExIEBA IHJhZGl4X3RyZWVfbmV4dF9zbG90KHZvaWQgKipzbG90LCBzdHJ1Y3QgcmFkaXhfdHJlZV9pdGVy ICppdGVyLCB1bnNpZ25lZCBmbGFncykKIAkJfQogCX0gZWxzZSB7CiAJCWxvbmcgY291bnQgPSBy YWRpeF90cmVlX2NodW5rX3NpemUoaXRlcik7Ci0JCXZvaWQgKmNhbm9uID0gc2xvdDsKIAogCQl3 aGlsZSAoLS1jb3VudCA+IDApIHsKIAkJCXNsb3QrKzsKIAkJCWl0ZXItPmluZGV4ID0gX19yYWRp eF90cmVlX2l0ZXJfYWRkKGl0ZXIsIDEpOwogCi0JCQlpZiAoSVNfRU5BQkxFRChDT05GSUdfUkFE SVhfVFJFRV9NVUxUSU9SREVSKSAmJgotCQkJICAgIHJhZGl4X3RyZWVfaXNfaW50ZXJuYWxfbm9k ZSgqc2xvdCkpIHsKLQkJCQlpZiAoZW50cnlfdG9fbm9kZSgqc2xvdCkgPT0gY2Fub24pCi0JCQkJ CWNvbnRpbnVlOwotCQkJCWl0ZXItPm5leHRfaW5kZXggPSBpdGVyLT5pbmRleDsKLQkJCQlicmVh azsKLQkJCX0KLQogCQkJaWYgKGxpa2VseSgqc2xvdCkpCiAJCQkJcmV0dXJuIHNsb3Q7CiAJCQlp ZiAoZmxhZ3MgJiBSQURJWF9UUkVFX0lURVJfQ09OVElHKSB7CmRpZmYgLS1naXQgYS9saWIvS2Nv bmZpZyBiL2xpYi9LY29uZmlnCmluZGV4IGQ3OTkwOWRjMDFlYy4uNjFkNTViZDBlZDg5IDEwMDY0 NAotLS0gYS9saWIvS2NvbmZpZworKysgYi9saWIvS2NvbmZpZwpAQCAtMzYyLDkgKzM2Miw2IEBA IGNvbmZpZyBJTlRFUlZBTF9UUkVFCiAKIAkgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCi1jb25m aWcgUkFESVhfVFJFRV9NVUxUSU9SREVSCi0JYm9vbAotCiBjb25maWcgQVNTT0NJQVRJVkVfQVJS QVkKIAlib29sCiAJaGVscApkaWZmIC0tZ2l0IGEvbGliL3JhZGl4LXRyZWUuYyBiL2xpYi9yYWRp eC10cmVlLmMKaW5kZXggMWI3YmY3MzE0MTQxLi5iOGIxMjE3MmJiNjAgMTAwNjQ0Ci0tLSBhL2xp Yi9yYWRpeC10cmVlLmMKKysrIGIvbGliL3JhZGl4LXRyZWUuYwpAQCAtNzYsMjEgKzc2LDYgQEAg c3RhdGljIGlubGluZSB2b2lkICpub2RlX3RvX2VudHJ5KHZvaWQgKnB0cikKIAogI2RlZmluZSBS QURJWF9UUkVFX1JFVFJZCW5vZGVfdG9fZW50cnkoTlVMTCkKIAotI2lmZGVmIENPTkZJR19SQURJ WF9UUkVFX01VTFRJT1JERVIKLS8qIFNpYmxpbmcgc2xvdHMgcG9pbnQgZGlyZWN0bHkgdG8gYW5v dGhlciBzbG90IGluIHRoZSBzYW1lIG5vZGUgKi8KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc19zaWJs aW5nX2VudHJ5KHN0cnVjdCByYWRpeF90cmVlX25vZGUgKnBhcmVudCwgdm9pZCAqbm9kZSkKLXsK LQl2b2lkICoqcHRyID0gbm9kZTsKLQlyZXR1cm4gKHBhcmVudC0+c2xvdHMgPD0gcHRyKSAmJgot CQkJKHB0ciA8IHBhcmVudC0+c2xvdHMgKyBSQURJWF9UUkVFX01BUF9TSVpFKTsKLX0KLSNlbHNl Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNfc2libGluZ19lbnRyeShzdHJ1Y3QgcmFkaXhfdHJlZV9u b2RlICpwYXJlbnQsIHZvaWQgKm5vZGUpCi17Ci0JcmV0dXJuIGZhbHNlOwotfQotI2VuZGlmCi0K IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBnZXRfc2xvdF9vZmZzZXQoc3RydWN0IHJhZGl4 X3RyZWVfbm9kZSAqcGFyZW50LAogCQkJCQkJIHZvaWQgKipzbG90KQogewpAQCAtMTAzLDE2ICs4 OCw2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgcmFkaXhfdHJlZV9kZXNjZW5kKHN0cnVjdCByYWRp eF90cmVlX25vZGUgKnBhcmVudCwKIAl1bnNpZ25lZCBpbnQgb2Zmc2V0ID0gKGluZGV4ID4+IHBh cmVudC0+c2hpZnQpICYgUkFESVhfVFJFRV9NQVBfTUFTSzsKIAl2b2lkICoqZW50cnkgPSByY3Vf ZGVyZWZlcmVuY2VfcmF3KHBhcmVudC0+c2xvdHNbb2Zmc2V0XSk7CiAKLSNpZmRlZiBDT05GSUdf UkFESVhfVFJFRV9NVUxUSU9SREVSCi0JaWYgKHJhZGl4X3RyZWVfaXNfaW50ZXJuYWxfbm9kZShl bnRyeSkpIHsKLQkJdW5zaWduZWQgbG9uZyBzaWJvZmYgPSBnZXRfc2xvdF9vZmZzZXQocGFyZW50 LCBlbnRyeSk7Ci0JCWlmIChzaWJvZmYgPCBSQURJWF9UUkVFX01BUF9TSVpFKSB7Ci0JCQlvZmZz ZXQgPSBzaWJvZmY7Ci0JCQllbnRyeSA9IHJjdV9kZXJlZmVyZW5jZV9yYXcocGFyZW50LT5zbG90 c1tvZmZzZXRdKTsKLQkJfQotCX0KLSNlbmRpZgotCiAJKm5vZGVwID0gKHZvaWQgKillbnRyeTsK IAlyZXR1cm4gb2Zmc2V0OwogfQpAQCAtMjMxLDEyICsyMDYsNyBAQCBzdGF0aWMgdm9pZCBkdW1w X25vZGUoc3RydWN0IHJhZGl4X3RyZWVfbm9kZSAqbm9kZSwgdW5zaWduZWQgbG9uZyBpbmRleCkK IAkJdm9pZCAqZW50cnkgPSBub2RlLT5zbG90c1tpXTsKIAkJaWYgKCFlbnRyeSkKIAkJCWNvbnRp bnVlOwotCQlpZiAoaXNfc2libGluZ19lbnRyeShub2RlLCBlbnRyeSkpIHsKLQkJCXByX2RlYnVn KCJyYWRpeCBzYmxuZyAlcCBvZmZzZXQgJWxkIHZhbCAlcCBpbmRpY2VzICVsZC0lbGRcbiIsCi0J CQkJCWVudHJ5LCBpLAotCQkJCQkqKHZvaWQgKiopZW50cnlfdG9fbm9kZShlbnRyeSksCi0JCQkJ CWZpcnN0LCBsYXN0KTsKLQkJfSBlbHNlIGlmICghcmFkaXhfdHJlZV9pc19pbnRlcm5hbF9ub2Rl KGVudHJ5KSkgeworCQlpZiAoIXJhZGl4X3RyZWVfaXNfaW50ZXJuYWxfbm9kZShlbnRyeSkpIHsK IAkJCXByX2RlYnVnKCJyYWRpeCBlbnRyeSAlcCBvZmZzZXQgJWxkIGluZGljZXMgJWxkLSVsZFxu IiwKIAkJCQkJZW50cnksIGksIGZpcnN0LCBsYXN0KTsKIAkJfSBlbHNlIHsKQEAgLTU1MSwyOSAr NTIxLDI4IEBAIG91dDoKICAqCVJldHVybnMgLUVOT01FTSwgb3IgMCBmb3Igc3VjY2Vzcy4KICAq LwogaW50IF9fcmFkaXhfdHJlZV9jcmVhdGUoc3RydWN0IHJhZGl4X3RyZWVfcm9vdCAqcm9vdCwg dW5zaWduZWQgbG9uZyBpbmRleCwKLQkJCXVuc2lnbmVkIG9yZGVyLCBzdHJ1Y3QgcmFkaXhfdHJl ZV9ub2RlICoqbm9kZXAsCisJCQlzdHJ1Y3QgcmFkaXhfdHJlZV9ub2RlICoqbm9kZXAsCiAJCQl2 b2lkICoqKnNsb3RwKQogewogCXN0cnVjdCByYWRpeF90cmVlX25vZGUgKm5vZGUgPSBOVUxMLCAq Y2hpbGQ7CiAJdm9pZCAqKnNsb3QgPSAodm9pZCAqKikmcm9vdC0+cm5vZGU7CiAJdW5zaWduZWQg bG9uZyBtYXhpbmRleDsKIAl1bnNpZ25lZCBpbnQgc2hpZnQsIG9mZnNldCA9IDA7Ci0JdW5zaWdu ZWQgbG9uZyBtYXggPSBpbmRleCB8ICgoMVVMIDw8IG9yZGVyKSAtIDEpOwogCiAJc2hpZnQgPSBy YWRpeF90cmVlX2xvYWRfcm9vdChyb290LCAmY2hpbGQsICZtYXhpbmRleCk7CiAKIAkvKiBNYWtl IHN1cmUgdGhlIHRyZWUgaXMgaGlnaCBlbm91Z2guICAqLwotCWlmIChtYXggPiBtYXhpbmRleCkg ewotCQlpbnQgZXJyb3IgPSByYWRpeF90cmVlX2V4dGVuZChyb290LCBtYXgsIHNoaWZ0KTsKKwlp ZiAoaW5kZXggPiBtYXhpbmRleCkgeworCQlpbnQgZXJyb3IgPSByYWRpeF90cmVlX2V4dGVuZChy b290LCBpbmRleCwgc2hpZnQpOwogCQlpZiAoZXJyb3IgPCAwKQogCQkJcmV0dXJuIGVycm9yOwog CQlzaGlmdCA9IGVycm9yOwogCQljaGlsZCA9IHJvb3QtPnJub2RlOwotCQlpZiAob3JkZXIgPT0g c2hpZnQpCisJCWlmICghc2hpZnQpCiAJCQlzaGlmdCArPSBSQURJWF9UUkVFX01BUF9TSElGVDsK IAl9CiAKLQl3aGlsZSAoc2hpZnQgPiBvcmRlcikgeworCXdoaWxlIChzaGlmdCA+IDApIHsKIAkJ c2hpZnQgLT0gUkFESVhfVFJFRV9NQVBfU0hJRlQ7CiAJCWlmIChjaGlsZCA9PSBOVUxMKSB7CiAJ CQkvKiBIYXZlIHRvIGFkZCBhIGNoaWxkIG5vZGUuICAqLwpAQCAtNTk1LDI1ICs1NjQsNiBAQCBp bnQgX19yYWRpeF90cmVlX2NyZWF0ZShzdHJ1Y3QgcmFkaXhfdHJlZV9yb290ICpyb290LCB1bnNp Z25lZCBsb25nIGluZGV4LAogCQlzbG90ID0gJm5vZGUtPnNsb3RzW29mZnNldF07CiAJfQogCi0j aWZkZWYgQ09ORklHX1JBRElYX1RSRUVfTVVMVElPUkRFUgotCS8qIEluc2VydCBwb2ludGVycyB0 byB0aGUgY2Fub25pY2FsIGVudHJ5ICovCi0JaWYgKG9yZGVyID4gc2hpZnQpIHsKLQkJdW5zaWdu ZWQgaSwgbiA9IDEgPDwgKG9yZGVyIC0gc2hpZnQpOwotCQlvZmZzZXQgPSBvZmZzZXQgJiB+KG4g LSAxKTsKLQkJc2xvdCA9ICZub2RlLT5zbG90c1tvZmZzZXRdOwotCQljaGlsZCA9IG5vZGVfdG9f ZW50cnkoc2xvdCk7Ci0JCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkJCWlmIChzbG90W2ld KQotCQkJCXJldHVybiAtRUVYSVNUOwotCQl9Ci0KLQkJZm9yIChpID0gMTsgaSA8IG47IGkrKykg ewotCQkJcmN1X2Fzc2lnbl9wb2ludGVyKHNsb3RbaV0sIGNoaWxkKTsKLQkJCW5vZGUtPmNvdW50 Kys7Ci0JCX0KLQl9Ci0jZW5kaWYKLQogCWlmIChub2RlcCkKIAkJKm5vZGVwID0gbm9kZTsKIAlp ZiAoc2xvdHApCkBAIC02MzAsOCArNTgwLDcgQEAgaW50IF9fcmFkaXhfdHJlZV9jcmVhdGUoc3Ry dWN0IHJhZGl4X3RyZWVfcm9vdCAqcm9vdCwgdW5zaWduZWQgbG9uZyBpbmRleCwKICAqCiAgKglJ bnNlcnQgYW4gaXRlbSBpbnRvIHRoZSByYWRpeCB0cmVlIGF0IHBvc2l0aW9uIEBpbmRleC4KICAq LwotaW50IF9fcmFkaXhfdHJlZV9pbnNlcnQoc3RydWN0IHJhZGl4X3RyZWVfcm9vdCAqcm9vdCwg dW5zaWduZWQgbG9uZyBpbmRleCwKLQkJCXVuc2lnbmVkIG9yZGVyLCB2b2lkICppdGVtKQoraW50 IHJhZGl4X3RyZWVfaW5zZXJ0KHN0cnVjdCByYWRpeF90cmVlX3Jvb3QgKnJvb3QsIHVuc2lnbmVk IGxvbmcgaW5kZXgsIHZvaWQgKml0ZW0pCiB7CiAJc3RydWN0IHJhZGl4X3RyZWVfbm9kZSAqbm9k ZTsKIAl2b2lkICoqc2xvdDsKQEAgLTYzOSw3ICs1ODgsNyBAQCBpbnQgX19yYWRpeF90cmVlX2lu c2VydChzdHJ1Y3QgcmFkaXhfdHJlZV9yb290ICpyb290LCB1bnNpZ25lZCBsb25nIGluZGV4LAog CiAJQlVHX09OKHJhZGl4X3RyZWVfaXNfaW50ZXJuYWxfbm9kZShpdGVtKSk7CiAKLQllcnJvciA9 IF9fcmFkaXhfdHJlZV9jcmVhdGUocm9vdCwgaW5kZXgsIG9yZGVyLCAmbm9kZSwgJnNsb3QpOwor CWVycm9yID0gX19yYWRpeF90cmVlX2NyZWF0ZShyb290LCBpbmRleCwgJm5vZGUsICZzbG90KTsK IAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKIAlpZiAoKnNsb3QgIT0gTlVMTCkKQEAgLTY1 OCw3ICs2MDcsNyBAQCBpbnQgX19yYWRpeF90cmVlX2luc2VydChzdHJ1Y3QgcmFkaXhfdHJlZV9y b290ICpyb290LCB1bnNpZ25lZCBsb25nIGluZGV4LAogCiAJcmV0dXJuIDA7CiB9Ci1FWFBPUlRf U1lNQk9MKF9fcmFkaXhfdHJlZV9pbnNlcnQpOworRVhQT1JUX1NZTUJPTChyYWRpeF90cmVlX2lu c2VydCk7CiAKIC8qKgogICoJX19yYWRpeF90cmVlX2xvb2t1cAktCWxvb2t1cCBhbiBpdGVtIGlu IGEgcmFkaXggdHJlZQpAQCAtODk0LDE0ICs4NDMsNiBAQCBpbnQgcmFkaXhfdHJlZV90YWdfZ2V0 KHN0cnVjdCByYWRpeF90cmVlX3Jvb3QgKnJvb3QsCiB9CiBFWFBPUlRfU1lNQk9MKHJhZGl4X3Ry ZWVfdGFnX2dldCk7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBfX3NldF9pdGVyX3NoaWZ0KHN0cnVj dCByYWRpeF90cmVlX2l0ZXIgKml0ZXIsCi0JCQkJCXVuc2lnbmVkIGludCBzaGlmdCkKLXsKLSNp ZmRlZiBDT05GSUdfUkFESVhfVFJFRV9NVUxUSU9SREVSCi0JaXRlci0+c2hpZnQgPSBzaGlmdDsK LSNlbmRpZgotfQotCiAvKioKICAqIHJhZGl4X3RyZWVfbmV4dF9jaHVuayAtIGZpbmQgbmV4dCBj aHVuayBvZiBzbG90cyBmb3IgaXRlcmF0aW9uCiAgKgpAQCAtOTQ1LDcgKzg4Niw2IEBAIHZvaWQg KipyYWRpeF90cmVlX25leHRfY2h1bmsoc3RydWN0IHJhZGl4X3RyZWVfcm9vdCAqcm9vdCwKIAkJ aXRlci0+aW5kZXggPSBpbmRleDsKIAkJaXRlci0+bmV4dF9pbmRleCA9IG1heGluZGV4ICsgMTsK IAkJaXRlci0+dGFncyA9IDE7Ci0JCV9fc2V0X2l0ZXJfc2hpZnQoaXRlciwgMCk7CiAJCXJldHVy biAodm9pZCAqKikmcm9vdC0+cm5vZGU7CiAJfQogCkBAIC05NjcsOCArOTA3LDYgQEAgdm9pZCAq KnJhZGl4X3RyZWVfbmV4dF9jaHVuayhzdHJ1Y3QgcmFkaXhfdHJlZV9yb290ICpyb290LAogCQkJ ZWxzZQogCQkJCXdoaWxlICgrK29mZnNldAk8IFJBRElYX1RSRUVfTUFQX1NJWkUpIHsKIAkJCQkJ dm9pZCAqc2xvdCA9IG5vZGUtPnNsb3RzW29mZnNldF07Ci0JCQkJCWlmIChpc19zaWJsaW5nX2Vu dHJ5KG5vZGUsIHNsb3QpKQotCQkJCQkJY29udGludWU7CiAJCQkJCWlmIChzbG90KQogCQkJCQkJ YnJlYWs7CiAJCQkJfQpAQCAtOTg5LDcgKzkyNyw2IEBAIHZvaWQgKipyYWRpeF90cmVlX25leHRf Y2h1bmsoc3RydWN0IHJhZGl4X3RyZWVfcm9vdCAqcm9vdCwKIAkvKiBVcGRhdGUgdGhlIGl0ZXJh dG9yIHN0YXRlICovCiAJaXRlci0+aW5kZXggPSAoaW5kZXggJn4gbm9kZV9tYXhpbmRleChub2Rl KSkgfCAob2Zmc2V0IDw8IG5vZGUtPnNoaWZ0KTsKIAlpdGVyLT5uZXh0X2luZGV4ID0gKGluZGV4 IHwgbm9kZV9tYXhpbmRleChub2RlKSkgKyAxOwotCV9fc2V0X2l0ZXJfc2hpZnQoaXRlciwgbm9k ZS0+c2hpZnQpOwogCiAJLyogQ29uc3RydWN0IGl0ZXItPnRhZ3MgYml0LW1hc2sgZnJvbSBub2Rl LT50YWdzW3RhZ10gYXJyYXkgKi8KIAlpZiAoZmxhZ3MgJiBSQURJWF9UUkVFX0lURVJfVEFHR0VE KSB7CkBAIC0xMTEyLDggKzEwNDksNiBAQCB1bnNpZ25lZCBsb25nIHJhZGl4X3RyZWVfcmFuZ2Vf dGFnX2lmX3RhZ2dlZChzdHJ1Y3QgcmFkaXhfdHJlZV9yb290ICpyb290LAogCQkJbm9kZSA9IG5v ZGUtPnBhcmVudDsKIAkJCW9mZnNldCA9IChpbmRleCA+PiBub2RlLT5zaGlmdCkgJiBSQURJWF9U UkVFX01BUF9NQVNLOwogCQl9Ci0JCWlmIChpc19zaWJsaW5nX2VudHJ5KG5vZGUsIG5vZGUtPnNs b3RzW29mZnNldF0pKQotCQkJZ290byBuZXh0OwogCQlpZiAodGFnZ2VkID49IG5yX3RvX3RhZykK IAkJCWJyZWFrOwogCX0KQEAgLTEzMjksOCArMTI2NCw2IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25n IF9fbG9jYXRlKHN0cnVjdCByYWRpeF90cmVlX25vZGUgKnNsb3QsIHZvaWQgKml0ZW0sCiAJCQkJ Y29udGludWU7CiAJCQl9CiAJCQlub2RlID0gZW50cnlfdG9fbm9kZShub2RlKTsKLQkJCWlmIChp c19zaWJsaW5nX2VudHJ5KHNsb3QsIG5vZGUpKQotCQkJCWNvbnRpbnVlOwogCQkJc2xvdCA9IG5v ZGU7CiAJCQlicmVhazsKIAkJfQpAQCAtMTUwNSwyMCArMTQzOCw2IEBAIGJvb2wgX19yYWRpeF90 cmVlX2RlbGV0ZV9ub2RlKHN0cnVjdCByYWRpeF90cmVlX3Jvb3QgKnJvb3QsCiAJcmV0dXJuIGRl bGV0ZWQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBkZWxldGVfc2libGluZ19lbnRyaWVzKHN0 cnVjdCByYWRpeF90cmVlX25vZGUgKm5vZGUsCi0JCQkJCXZvaWQgKnB0ciwgdW5zaWduZWQgb2Zm c2V0KQotewotI2lmZGVmIENPTkZJR19SQURJWF9UUkVFX01VTFRJT1JERVIKLQlpbnQgaTsKLQlm b3IgKGkgPSAxOyBvZmZzZXQgKyBpIDwgUkFESVhfVFJFRV9NQVBfU0laRTsgaSsrKSB7Ci0JCWlm IChub2RlLT5zbG90c1tvZmZzZXQgKyBpXSAhPSBwdHIpCi0JCQlicmVhazsKLQkJbm9kZS0+c2xv dHNbb2Zmc2V0ICsgaV0gPSBOVUxMOwotCQlub2RlLT5jb3VudC0tOwotCX0KLSNlbmRpZgotfQot CiAvKioKICAqCXJhZGl4X3RyZWVfZGVsZXRlX2l0ZW0gICAgLSAgICBkZWxldGUgYW4gaXRlbSBm cm9tIGEgcmFkaXggdHJlZQogICoJQHJvb3Q6CQlyYWRpeCB0cmVlIHJvb3QKQEAgLTE1NTgsNyAr MTQ3Nyw2IEBAIHZvaWQgKnJhZGl4X3RyZWVfZGVsZXRlX2l0ZW0oc3RydWN0IHJhZGl4X3RyZWVf cm9vdCAqcm9vdCwKIAlmb3IgKHRhZyA9IDA7IHRhZyA8IFJBRElYX1RSRUVfTUFYX1RBR1M7IHRh ZysrKQogCQlub2RlX3RhZ19jbGVhcihyb290LCBub2RlLCB0YWcsIG9mZnNldCk7CiAKLQlkZWxl dGVfc2libGluZ19lbnRyaWVzKG5vZGUsIG5vZGVfdG9fZW50cnkoc2xvdCksIG9mZnNldCk7CiAJ bm9kZS0+c2xvdHNbb2Zmc2V0XSA9IE5VTEw7CiAJbm9kZS0+Y291bnQtLTsKIApkaWZmIC0tZ2l0 IGEvbW0vS2NvbmZpZyBiL21tL0tjb25maWcKaW5kZXggYmUwZWUxMWZhMGQ5Li41N2ZhZDcyNjJj NDIgMTAwNjQ0Ci0tLSBhL21tL0tjb25maWcKKysrIGIvbW0vS2NvbmZpZwpAQCAtNDEyLDcgKzQx Miw2IEBAIGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRQogCWJvb2wgIlRyYW5zcGFyZW50IEh1 Z2VwYWdlIFN1cHBvcnQiCiAJZGVwZW5kcyBvbiBIQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBB R0UKIAlzZWxlY3QgQ09NUEFDVElPTgotCXNlbGVjdCBSQURJWF9UUkVFX01VTFRJT1JERVIKIAlo ZWxwCiAJICBUcmFuc3BhcmVudCBIdWdlcGFnZXMgYWxsb3dzIHRoZSBrZXJuZWwgdG8gdXNlIGh1 Z2UgcGFnZXMgYW5kCiAJICBodWdlIHRsYiB0cmFuc3BhcmVudGx5IHRvIHRoZSBhcHBsaWNhdGlv bnMgd2hlbmV2ZXIgcG9zc2libGUuCmRpZmYgLS1naXQgYS9tbS9maWxlbWFwLmMgYi9tbS9maWxl bWFwLmMKaW5kZXggOGEyODdkZmM1MzcyLi4zMDQ2ZDc1ODMyNjcgMTAwNjQ0Ci0tLSBhL21tL2Zp bGVtYXAuYworKysgYi9tbS9maWxlbWFwLmMKQEAgLTU5MSw3ICs1OTEsNyBAQCBzdGF0aWMgaW50 IHBhZ2VfY2FjaGVfdHJlZV9pbnNlcnQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJ dm9pZCAqKnNsb3Q7CiAJaW50IGVycm9yOwogCi0JZXJyb3IgPSBfX3JhZGl4X3RyZWVfY3JlYXRl KCZtYXBwaW5nLT5wYWdlX3RyZWUsIHBhZ2UtPmluZGV4LCAwLAorCWVycm9yID0gX19yYWRpeF90 cmVlX2NyZWF0ZSgmbWFwcGluZy0+cGFnZV90cmVlLCBwYWdlLT5pbmRleCwKIAkJCQkgICAgJm5v ZGUsICZzbG90KTsKIAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKZGlmZiAtLWdpdCBhL3Rv b2xzL3Rlc3RpbmcvcmFkaXgtdHJlZS9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3RpbmcvcmFkaXgtdHJl ZS9NYWtlZmlsZQppbmRleCAzYjUzMDQ2NzE0OGUuLjQzZmViYmE4NjRiZCAxMDA2NDQKLS0tIGEv dG9vbHMvdGVzdGluZy9yYWRpeC10cmVlL01ha2VmaWxlCisrKyBiL3Rvb2xzL3Rlc3RpbmcvcmFk aXgtdHJlZS9NYWtlZmlsZQpAQCAtMyw3ICszLDcgQEAgQ0ZMQUdTICs9IC1JLiAtZyAtV2FsbCAt RF9MR1BMX1NPVVJDRQogTERGTEFHUyArPSAtbHB0aHJlYWQgLWx1cmN1CiBUQVJHRVRTID0gbWFp bgogT0ZJTEVTID0gbWFpbi5vIHJhZGl4LXRyZWUubyBsaW51eC5vIHRlc3QubyB0YWdfY2hlY2su byBmaW5kX25leHRfYml0Lm8gXAotCSByZWdyZXNzaW9uMS5vIHJlZ3Jlc3Npb24yLm8gcmVncmVz c2lvbjMubyBtdWx0aW9yZGVyLm8KKwkgcmVncmVzc2lvbjEubyByZWdyZXNzaW9uMi5vIHJlZ3Jl c3Npb24zLm8KIAogdGFyZ2V0czogJChUQVJHRVRTKQogCmRpZmYgLS1naXQgYS90b29scy90ZXN0 aW5nL3JhZGl4LXRyZWUvZ2VuZXJhdGVkL2F1dG9jb25mLmggYi90b29scy90ZXN0aW5nL3JhZGl4 LXRyZWUvZ2VuZXJhdGVkL2F1dG9jb25mLmgKaW5kZXggYWQxOGNmNWEyYTNhLi5hNmI1ZmJhNGMz ZTAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3RpbmcvcmFkaXgtdHJlZS9nZW5lcmF0ZWQvYXV0b2Nv bmYuaAorKysgYi90b29scy90ZXN0aW5nL3JhZGl4LXRyZWUvZ2VuZXJhdGVkL2F1dG9jb25mLmgK QEAgLTEsMyArMSwyIEBACi0jZGVmaW5lIENPTkZJR19SQURJWF9UUkVFX01VTFRJT1JERVIgMQog I2RlZmluZSBDT05GSUdfU0hNRU0gMQogI2RlZmluZSBDT05GSUdfU1dBUCAxCmRpZmYgLS1naXQg YS90b29scy90ZXN0aW5nL3JhZGl4LXRyZWUvbWFpbi5jIGIvdG9vbHMvdGVzdGluZy9yYWRpeC10 cmVlL21haW4uYwppbmRleCBiNzYxOWZmM2I1NTIuLmJkZWUwOTk0MTBmMCAxMDA2NDQKLS0tIGEv dG9vbHMvdGVzdGluZy9yYWRpeC10cmVlL21haW4uYworKysgYi90b29scy90ZXN0aW5nL3JhZGl4 LXRyZWUvbWFpbi5jCkBAIC0yMzIsMTggKzIzMiwxNyBAQCB2b2lkIGNvcHlfdGFnX2NoZWNrKHZv aWQpCiAJaXRlbV9raWxsX3RyZWUoJnRyZWUpOwogfQogCi1zdGF0aWMgdm9pZCBfX2xvY2F0ZV9j aGVjayhzdHJ1Y3QgcmFkaXhfdHJlZV9yb290ICp0cmVlLCB1bnNpZ25lZCBsb25nIGluZGV4LAot CQkJdW5zaWduZWQgb3JkZXIpCitzdGF0aWMgdm9pZCBfX2xvY2F0ZV9jaGVjayhzdHJ1Y3QgcmFk aXhfdHJlZV9yb290ICp0cmVlLCB1bnNpZ25lZCBsb25nIGluZGV4KQogewogCXN0cnVjdCBpdGVt ICppdGVtOwogCXVuc2lnbmVkIGxvbmcgaW5kZXgyOwogCi0JaXRlbV9pbnNlcnRfb3JkZXIodHJl ZSwgaW5kZXgsIG9yZGVyKTsKKwlpdGVtX2luc2VydCh0cmVlLCBpbmRleCk7CiAJaXRlbSA9IGl0 ZW1fbG9va3VwKHRyZWUsIGluZGV4KTsKIAlpbmRleDIgPSByYWRpeF90cmVlX2xvY2F0ZV9pdGVt KHRyZWUsIGl0ZW0pOwogCWlmIChpbmRleCAhPSBpbmRleDIpIHsKLQkJcHJpbnRmKCJpbmRleCAl bGQgb3JkZXIgJWQgaW5zZXJ0ZWQ7IGZvdW5kICVsZFxuIiwKLQkJCWluZGV4LCBvcmRlciwgaW5k ZXgyKTsKKwkJcHJpbnRmKCJpbmRleCAlbGQgaW5zZXJ0ZWQ7IGZvdW5kICVsZFxuIiwKKwkJCWlu ZGV4LCBpbmRleDIpOwogCQlhYm9ydCgpOwogCX0KIH0KQEAgLTI1NCw3ICsyNTMsNyBAQCBzdGF0 aWMgdm9pZCBfX29yZGVyXzBfbG9jYXRlX2NoZWNrKHZvaWQpCiAJaW50IGk7CiAKIAlmb3IgKGkg PSAwOyBpIDwgNTA7IGkrKykKLQkJX19sb2NhdGVfY2hlY2soJnRyZWUsIHJhbmQoKSAlIElOVF9N QVgsIDApOworCQlfX2xvY2F0ZV9jaGVjaygmdHJlZSwgcmFuZCgpICUgSU5UX01BWCk7CiAKIAlp dGVtX2tpbGxfdHJlZSgmdHJlZSk7CiB9CkBAIC0yNjIsMjggKzI2MSwyMyBAQCBzdGF0aWMgdm9p ZCBfX29yZGVyXzBfbG9jYXRlX2NoZWNrKHZvaWQpCiBzdGF0aWMgdm9pZCBsb2NhdGVfY2hlY2so dm9pZCkKIHsKIAlSQURJWF9UUkVFKHRyZWUsIEdGUF9LRVJORUwpOwotCXVuc2lnbmVkIG9yZGVy OwogCXVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBpbmRleDsKIAogCV9fb3JkZXJfMF9sb2NhdGVfY2hl Y2soKTsKIAotCWZvciAob3JkZXIgPSAwOyBvcmRlciA8IDIwOyBvcmRlcisrKSB7Ci0JCWZvciAo b2Zmc2V0ID0gMDsgb2Zmc2V0IDwgKDEgPDwgKG9yZGVyICsgMykpOwotCQkgICAgIG9mZnNldCAr PSAoMVVMIDw8IG9yZGVyKSkgewotCQkJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgKDFVTCA8PCAo b3JkZXIgKyA1KSk7Ci0JCQkgICAgIGluZGV4ICs9ICgxVUwgPDwgb3JkZXIpKSB7Ci0JCQkJX19s b2NhdGVfY2hlY2soJnRyZWUsIGluZGV4ICsgb2Zmc2V0LCBvcmRlcik7Ci0JCQl9Ci0JCQlpZiAo cmFkaXhfdHJlZV9sb2NhdGVfaXRlbSgmdHJlZSwgJnRyZWUpICE9IC0xKQotCQkJCWFib3J0KCk7 Ci0KLQkJCWl0ZW1fa2lsbF90cmVlKCZ0cmVlKTsKKwlmb3IgKG9mZnNldCA9IDA7IG9mZnNldCA8 ICgxIDw8IDMpOyBvZmZzZXQrKykgeworCQlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCAoMVVMIDw8 IDUpOyBpbmRleCsrKSB7CisJCQlfX2xvY2F0ZV9jaGVjaygmdHJlZSwgaW5kZXggKyBvZmZzZXQp OwogCQl9CisJCWlmIChyYWRpeF90cmVlX2xvY2F0ZV9pdGVtKCZ0cmVlLCAmdHJlZSkgIT0gLTEp CisJCQlhYm9ydCgpOworCisJCWl0ZW1fa2lsbF90cmVlKCZ0cmVlKTsKIAl9CiAKIAlpZiAocmFk aXhfdHJlZV9sb2NhdGVfaXRlbSgmdHJlZSwgJnRyZWUpICE9IC0xKQogCQlhYm9ydCgpOwotCV9f bG9jYXRlX2NoZWNrKCZ0cmVlLCAtMSwgMCk7CisJX19sb2NhdGVfY2hlY2soJnRyZWUsIC0xKTsK IAlpZiAocmFkaXhfdHJlZV9sb2NhdGVfaXRlbSgmdHJlZSwgJnRyZWUpICE9IC0xKQogCQlhYm9y dCgpOwogCWl0ZW1fa2lsbF90cmVlKCZ0cmVlKTsKQEAgLTI5NCw4ICsyODgsNiBAQCBzdGF0aWMg dm9pZCBzaW5nbGVfdGhyZWFkX3Rlc3RzKGJvb2wgbG9uZ19ydW4pCiAJaW50IGk7CiAKIAlwcmlu dGYoInN0YXJ0aW5nIHNpbmdsZV90aHJlYWRfdGVzdHM6ICVkIGFsbG9jYXRlZFxuIiwgbnJfYWxs b2NhdGVkKTsKLQltdWx0aW9yZGVyX2NoZWNrcygpOwotCXByaW50ZigiYWZ0ZXIgbXVsdGlvcmRl cl9jaGVjazogJWQgYWxsb2NhdGVkXG4iLCBucl9hbGxvY2F0ZWQpOwogCWxvY2F0ZV9jaGVjaygp OwogCXByaW50ZigiYWZ0ZXIgbG9jYXRlX2NoZWNrOiAlZCBhbGxvY2F0ZWRcbiIsIG5yX2FsbG9j YXRlZCk7CiAJdGFnX2NoZWNrKCk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3JhZGl4LXRy ZWUvbXVsdGlvcmRlci5jIGIvdG9vbHMvdGVzdGluZy9yYWRpeC10cmVlL211bHRpb3JkZXIuYwpk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzlkOWI5NTY4ZmUyLi4wMDAwMDAwMDAwMDAK LS0tIGEvdG9vbHMvdGVzdGluZy9yYWRpeC10cmVlL211bHRpb3JkZXIuYworKysgL2Rldi9udWxs CkBAIC0xLDMzNyArMCwwIEBACi0vKgotICogbXVsdGlvcmRlci5jOiBNdWx0aS1vcmRlciByYWRp eCB0cmVlIGVudHJ5IHRlc3RpbmcKLSAqIENvcHlyaWdodCAoYykgMjAxNiBJbnRlbCBDb3Jwb3Jh dGlvbgotICogQXV0aG9yOiBSb3NzIFp3aXNsZXIgPHJvc3Muendpc2xlckBsaW51eC5pbnRlbC5j b20+Ci0gKiBBdXRob3I6IE1hdHRoZXcgV2lsY294IDxtYXR0aGV3LnIud2lsY294QGludGVsLmNv bT4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRp b25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKLSAqIHZlcnNpb24gMiwgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0gKgotICogVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQg V0lUSE9VVAotICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCi0gKiBtb3JlIGRl dGFpbHMuCi0gKi8KLSNpbmNsdWRlIDxsaW51eC9yYWRpeC10cmVlLmg+Ci0jaW5jbHVkZSA8bGlu dXgvc2xhYi5oPgotI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+Ci0KLSNpbmNsdWRlICJ0ZXN0Lmgi Ci0KLSNkZWZpbmUgZm9yX2VhY2hfaW5kZXgoaSwgYmFzZSwgb3JkZXIpIFwKLQlmb3IgKGkgPSBi YXNlOyBpIDwgYmFzZSArICgxIDw8IG9yZGVyKTsgaSsrKQotCi1zdGF0aWMgdm9pZCBfX211bHRp b3JkZXJfdGFnX3Rlc3QoaW50IGluZGV4LCBpbnQgb3JkZXIpCi17Ci0JUkFESVhfVFJFRSh0cmVl LCBHRlBfS0VSTkVMKTsKLQlpbnQgYmFzZSwgZXJyLCBpOwotCXVuc2lnbmVkIGxvbmcgZmlyc3Qg PSAwOwotCi0JLyogb3VyIGNhbm9uaWNhbCBlbnRyeSAqLwotCWJhc2UgPSBpbmRleCAmIH4oKDEg PDwgb3JkZXIpIC0gMSk7Ci0KLQlwcmludGYoIk11bHRpb3JkZXIgdGFnIHRlc3Qgd2l0aCBpbmRl eCAlZCwgY2Fub25pY2FsIGVudHJ5ICVkXG4iLAotCQkJaW5kZXgsIGJhc2UpOwotCi0JZXJyID0g aXRlbV9pbnNlcnRfb3JkZXIoJnRyZWUsIGluZGV4LCBvcmRlcik7Ci0JYXNzZXJ0KCFlcnIpOwot Ci0JLyoKLQkgKiBWZXJpZnkgd2UgZ2V0IGNvbGxpc2lvbnMgZm9yIGNvdmVyZWQgaW5kaWNlcy4g IFdlIHRyeSBhbmQgZmFpbCB0bwotCSAqIGluc2VydCBhbiBleGNlcHRpb25hbCBlbnRyeSBzbyB3 ZSBkb24ndCBsZWFrIG1lbW9yeSB2aWEKLQkgKiBpdGVtX2luc2VydF9vcmRlcigpLgotCSAqLwot CWZvcl9lYWNoX2luZGV4KGksIGJhc2UsIG9yZGVyKSB7Ci0JCWVyciA9IF9fcmFkaXhfdHJlZV9p bnNlcnQoJnRyZWUsIGksIG9yZGVyLAotCQkJCSh2b2lkICopKDB4QTAgfCBSQURJWF9UUkVFX0VY Q0VQVElPTkFMX0VOVFJZKSk7Ci0JCWFzc2VydChlcnIgPT0gLUVFWElTVCk7Ci0JfQotCi0JZm9y X2VhY2hfaW5kZXgoaSwgYmFzZSwgb3JkZXIpIHsKLQkJYXNzZXJ0KCFyYWRpeF90cmVlX3RhZ19n ZXQoJnRyZWUsIGksIDApKTsKLQkJYXNzZXJ0KCFyYWRpeF90cmVlX3RhZ19nZXQoJnRyZWUsIGks IDEpKTsKLQl9Ci0KLQlhc3NlcnQocmFkaXhfdHJlZV90YWdfc2V0KCZ0cmVlLCBpbmRleCwgMCkp OwotCi0JZm9yX2VhY2hfaW5kZXgoaSwgYmFzZSwgb3JkZXIpIHsKLQkJYXNzZXJ0KHJhZGl4X3Ry ZWVfdGFnX2dldCgmdHJlZSwgaSwgMCkpOwotCQlhc3NlcnQoIXJhZGl4X3RyZWVfdGFnX2dldCgm dHJlZSwgaSwgMSkpOwotCX0KLQotCWFzc2VydChyYWRpeF90cmVlX3JhbmdlX3RhZ19pZl90YWdn ZWQoJnRyZWUsICZmaXJzdCwgfjBVTCwgMTAsIDAsIDEpID09IDEpOwotCWFzc2VydChyYWRpeF90 cmVlX3RhZ19jbGVhcigmdHJlZSwgaW5kZXgsIDApKTsKLQotCWZvcl9lYWNoX2luZGV4KGksIGJh c2UsIG9yZGVyKSB7Ci0JCWFzc2VydCghcmFkaXhfdHJlZV90YWdfZ2V0KCZ0cmVlLCBpLCAwKSk7 Ci0JCWFzc2VydChyYWRpeF90cmVlX3RhZ19nZXQoJnRyZWUsIGksIDEpKTsKLQl9Ci0KLQlhc3Nl cnQocmFkaXhfdHJlZV90YWdfY2xlYXIoJnRyZWUsIGluZGV4LCAxKSk7Ci0KLQlhc3NlcnQoIXJh ZGl4X3RyZWVfdGFnZ2VkKCZ0cmVlLCAwKSk7Ci0JYXNzZXJ0KCFyYWRpeF90cmVlX3RhZ2dlZCgm dHJlZSwgMSkpOwotCi0JaXRlbV9raWxsX3RyZWUoJnRyZWUpOwotfQotCi1zdGF0aWMgdm9pZCBt dWx0aW9yZGVyX3RhZ190ZXN0cyh2b2lkKQotewotCS8qIHRlc3QgbXVsdGktb3JkZXIgZW50cnkg Zm9yIGluZGljZXMgMC03IHdpdGggbm8gc2libGluZyBwb2ludGVycyAqLwotCV9fbXVsdGlvcmRl cl90YWdfdGVzdCgwLCAzKTsKLQlfX211bHRpb3JkZXJfdGFnX3Rlc3QoNSwgMyk7Ci0KLQkvKiB0 ZXN0IG11bHRpLW9yZGVyIGVudHJ5IGZvciBpbmRpY2VzIDgtMTUgd2l0aCBubyBzaWJsaW5nIHBv aW50ZXJzICovCi0JX19tdWx0aW9yZGVyX3RhZ190ZXN0KDgsIDMpOwotCV9fbXVsdGlvcmRlcl90 YWdfdGVzdCgxNSwgMyk7Ci0KLQkvKgotCSAqIE91ciBvcmRlciA1IGVudHJ5IGNvdmVycyBpbmRp Y2VzIDAtMzEgaW4gYSB0cmVlIHdpdGggaGVpZ2h0PTIuCi0JICogVGhpcyBpcyBicm9rZW4gdXAg YXMgZm9sbG93czoKLQkgKiAwLTc6CQljYW5vbmljYWwgZW50cnkKLQkgKiA4LTE1OglzaWJsaW5n IDEKLQkgKiAxNi0yMzoJc2libGluZyAyCi0JICogMjQtMzE6CXNpYmxpbmcgMwotCSAqLwotCV9f bXVsdGlvcmRlcl90YWdfdGVzdCgwLCA1KTsKLQlfX211bHRpb3JkZXJfdGFnX3Rlc3QoMjksIDUp OwotCi0JLyogc2FtZSB0ZXN0LCBidXQgd2l0aCBpbmRpY2VzIDMyLTYzICovCi0JX19tdWx0aW9y ZGVyX3RhZ190ZXN0KDMyLCA1KTsKLQlfX211bHRpb3JkZXJfdGFnX3Rlc3QoNDQsIDUpOwotCi0J LyoKLQkgKiBPdXIgb3JkZXIgOCBlbnRyeSBjb3ZlcnMgaW5kaWNlcyAwLTI1NSBpbiBhIHRyZWUg d2l0aCBoZWlnaHQ9My4KLQkgKiBUaGlzIGlzIGJyb2tlbiB1cCBhcyBmb2xsb3dzOgotCSAqIDAt NjM6CWNhbm9uaWNhbCBlbnRyeQotCSAqIDY0LTEyNzoJc2libGluZyAxCi0JICogMTI4LTE5MToJ c2libGluZyAyCi0JICogMTkyLTI1NToJc2libGluZyAzCi0JICovCi0JX19tdWx0aW9yZGVyX3Rh Z190ZXN0KDAsIDgpOwotCV9fbXVsdGlvcmRlcl90YWdfdGVzdCgxOTAsIDgpOwotCi0JLyogc2Ft ZSB0ZXN0LCBidXQgd2l0aCBpbmRpY2VzIDI1Ni01MTEgKi8KLQlfX211bHRpb3JkZXJfdGFnX3Rl c3QoMjU2LCA4KTsKLQlfX211bHRpb3JkZXJfdGFnX3Rlc3QoMzAwLCA4KTsKLQotCV9fbXVsdGlv cmRlcl90YWdfdGVzdCgweDEyMzQ1Njc4VUwsIDgpOwotfQotCi1zdGF0aWMgdm9pZCBtdWx0aW9y ZGVyX2NoZWNrKHVuc2lnbmVkIGxvbmcgaW5kZXgsIGludCBvcmRlcikKLXsKLQl1bnNpZ25lZCBs b25nIGk7Ci0JdW5zaWduZWQgbG9uZyBtaW4gPSBpbmRleCAmIH4oKDFVTCA8PCBvcmRlcikgLSAx KTsKLQl1bnNpZ25lZCBsb25nIG1heCA9IG1pbiArICgxVUwgPDwgb3JkZXIpOwotCVJBRElYX1RS RUUodHJlZSwgR0ZQX0tFUk5FTCk7Ci0KLQlwcmludGYoIk11bHRpb3JkZXIgaW5kZXggJWxkLCBv cmRlciAlZFxuIiwgaW5kZXgsIG9yZGVyKTsKLQotCWFzc2VydChpdGVtX2luc2VydF9vcmRlcigm dHJlZSwgaW5kZXgsIG9yZGVyKSA9PSAwKTsKLQotCWZvciAoaSA9IG1pbjsgaSA8IG1heDsgaSsr KSB7Ci0JCXN0cnVjdCBpdGVtICppdGVtID0gaXRlbV9sb29rdXAoJnRyZWUsIGkpOwotCQlhc3Nl cnQoaXRlbSAhPSAwKTsKLQkJYXNzZXJ0KGl0ZW0tPmluZGV4ID09IGluZGV4KTsKLQl9Ci0JZm9y IChpID0gMDsgaSA8IG1pbjsgaSsrKQotCQlpdGVtX2NoZWNrX2Fic2VudCgmdHJlZSwgaSk7Ci0J Zm9yIChpID0gbWF4OyBpIDwgMiptYXg7IGkrKykKLQkJaXRlbV9jaGVja19hYnNlbnQoJnRyZWUs IGkpOwotCWZvciAoaSA9IG1pbjsgaSA8IG1heDsgaSsrKSB7Ci0JCXN0YXRpYyB2b2lkICplbnRy eSA9ICh2b2lkICopCi0JCQkJCSgweEEwIHwgUkFESVhfVFJFRV9FWENFUFRJT05BTF9FTlRSWSk7 Ci0JCWFzc2VydChyYWRpeF90cmVlX2luc2VydCgmdHJlZSwgaSwgZW50cnkpID09IC1FRVhJU1Qp OwotCX0KLQotCWFzc2VydChpdGVtX2RlbGV0ZSgmdHJlZSwgaW5kZXgpICE9IDApOwotCi0JZm9y IChpID0gMDsgaSA8IDIqbWF4OyBpKyspCi0JCWl0ZW1fY2hlY2tfYWJzZW50KCZ0cmVlLCBpKTsK LX0KLQotc3RhdGljIHZvaWQgbXVsdGlvcmRlcl9zaHJpbmsodW5zaWduZWQgbG9uZyBpbmRleCwg aW50IG9yZGVyKQotewotCXVuc2lnbmVkIGxvbmcgaTsKLQl1bnNpZ25lZCBsb25nIG1heCA9IDEg PDwgb3JkZXI7Ci0JUkFESVhfVFJFRSh0cmVlLCBHRlBfS0VSTkVMKTsKLQlzdHJ1Y3QgcmFkaXhf dHJlZV9ub2RlICpub2RlOwotCi0JcHJpbnRmKCJNdWx0aW9yZGVyIHNocmluayBpbmRleCAlbGQs IG9yZGVyICVkXG4iLCBpbmRleCwgb3JkZXIpOwotCi0JYXNzZXJ0KGl0ZW1faW5zZXJ0X29yZGVy KCZ0cmVlLCAwLCBvcmRlcikgPT0gMCk7Ci0KLQlub2RlID0gdHJlZS5ybm9kZTsKLQotCWFzc2Vy dChpdGVtX2luc2VydCgmdHJlZSwgaW5kZXgpID09IDApOwotCWFzc2VydChub2RlICE9IHRyZWUu cm5vZGUpOwotCi0JYXNzZXJ0KGl0ZW1fZGVsZXRlKCZ0cmVlLCBpbmRleCkgIT0gMCk7Ci0JYXNz ZXJ0KG5vZGUgPT0gdHJlZS5ybm9kZSk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbWF4OyBpKyspIHsK LQkJc3RydWN0IGl0ZW0gKml0ZW0gPSBpdGVtX2xvb2t1cCgmdHJlZSwgaSk7Ci0JCWFzc2VydChp dGVtICE9IDApOwotCQlhc3NlcnQoaXRlbS0+aW5kZXggPT0gMCk7Ci0JfQotCWZvciAoaSA9IG1h eDsgaSA8IDIqbWF4OyBpKyspCi0JCWl0ZW1fY2hlY2tfYWJzZW50KCZ0cmVlLCBpKTsKLQotCWlm ICghaXRlbV9kZWxldGUoJnRyZWUsIDApKSB7Ci0JCXByaW50ZigiZmFpbGVkIHRvIGRlbGV0ZSBp bmRleCAlbGQgKG9yZGVyICVkKVxuIiwgaW5kZXgsIG9yZGVyKTsJCWFib3J0KCk7Ci0JfQotCi0J Zm9yIChpID0gMDsgaSA8IDIqbWF4OyBpKyspCi0JCWl0ZW1fY2hlY2tfYWJzZW50KCZ0cmVlLCBp KTsKLX0KLQotc3RhdGljIHZvaWQgbXVsdGlvcmRlcl9pbnNlcnRfYnVnKHZvaWQpCi17Ci0JUkFE SVhfVFJFRSh0cmVlLCBHRlBfS0VSTkVMKTsKLQotCWl0ZW1faW5zZXJ0KCZ0cmVlLCAwKTsKLQly YWRpeF90cmVlX3RhZ19zZXQoJnRyZWUsIDAsIDApOwotCWl0ZW1faW5zZXJ0X29yZGVyKCZ0cmVl LCAzIDw8IDYsIDYpOwotCi0JaXRlbV9raWxsX3RyZWUoJnRyZWUpOwotfQotCi12b2lkIG11bHRp b3JkZXJfaXRlcmF0aW9uKHZvaWQpCi17Ci0JUkFESVhfVFJFRSh0cmVlLCBHRlBfS0VSTkVMKTsK LQlzdHJ1Y3QgcmFkaXhfdHJlZV9pdGVyIGl0ZXI7Ci0Jdm9pZCAqKnNsb3Q7Ci0JaW50IGksIGos IGVycjsKLQotCXByaW50ZigiTXVsdGlvcmRlciBpdGVyYXRpb24gdGVzdFxuIik7Ci0KLSNkZWZp bmUgTlVNX0VOVFJJRVMgMTEKLQlpbnQgaW5kZXhbTlVNX0VOVFJJRVNdID0gezAsIDIsIDQsIDgs IDE2LCAzMiwgMzQsIDM2LCA2NCwgNzIsIDEyOH07Ci0JaW50IG9yZGVyW05VTV9FTlRSSUVTXSA9 IHsxLCAxLCAyLCAzLCAgNCwgIDEsICAwLCAgMSwgIDMsICAwLCA3fTsKLQotCWZvciAoaSA9IDA7 IGkgPCBOVU1fRU5UUklFUzsgaSsrKSB7Ci0JCWVyciA9IGl0ZW1faW5zZXJ0X29yZGVyKCZ0cmVl LCBpbmRleFtpXSwgb3JkZXJbaV0pOwotCQlhc3NlcnQoIWVycik7Ci0JfQotCi0JZm9yIChqID0g MDsgaiA8IDI1NjsgaisrKSB7Ci0JCWZvciAoaSA9IDA7IGkgPCBOVU1fRU5UUklFUzsgaSsrKQot CQkJaWYgKGogPD0gKGluZGV4W2ldIHwgKCgxIDw8IG9yZGVyW2ldKSAtIDEpKSkKLQkJCQlicmVh azsKLQotCQlyYWRpeF90cmVlX2Zvcl9lYWNoX3Nsb3Qoc2xvdCwgJnRyZWUsICZpdGVyLCBqKSB7 Ci0JCQlpbnQgaGVpZ2h0ID0gb3JkZXJbaV0gLyBSQURJWF9UUkVFX01BUF9TSElGVDsKLQkJCWlu dCBzaGlmdCA9IGhlaWdodCAqIFJBRElYX1RSRUVfTUFQX1NISUZUOwotCQkJaW50IG1hc2sgPSAo MSA8PCBvcmRlcltpXSkgLSAxOwotCi0JCQlhc3NlcnQoaXRlci5pbmRleCA+PSAoaW5kZXhbaV0g Jn4gbWFzaykpOwotCQkJYXNzZXJ0KGl0ZXIuaW5kZXggPD0gKGluZGV4W2ldIHwgbWFzaykpOwot CQkJYXNzZXJ0KGl0ZXIuc2hpZnQgPT0gc2hpZnQpOwotCQkJaSsrOwotCQl9Ci0JfQotCi0JaXRl bV9raWxsX3RyZWUoJnRyZWUpOwotfQotCi12b2lkIG11bHRpb3JkZXJfdGFnZ2VkX2l0ZXJhdGlv bih2b2lkKQotewotCVJBRElYX1RSRUUodHJlZSwgR0ZQX0tFUk5FTCk7Ci0Jc3RydWN0IHJhZGl4 X3RyZWVfaXRlciBpdGVyOwotCXZvaWQgKipzbG90OwotCXVuc2lnbmVkIGxvbmcgZmlyc3QgPSAw OwotCWludCBpLCBqOwotCi0JcHJpbnRmKCJNdWx0aW9yZGVyIHRhZ2dlZCBpdGVyYXRpb24gdGVz dFxuIik7Ci0KLSNkZWZpbmUgTVRfTlVNX0VOVFJJRVMgOQotCWludCBpbmRleFtNVF9OVU1fRU5U UklFU10gPSB7MCwgMiwgNCwgMTYsIDMyLCA0MCwgNjQsIDcyLCAxMjh9OwotCWludCBvcmRlcltN VF9OVU1fRU5UUklFU10gPSB7MSwgMCwgMiwgNCwgIDMsICAxLCAgMywgIDAsICAgN307Ci0KLSNk ZWZpbmUgVEFHX0VOVFJJRVMgNwotCWludCB0YWdfaW5kZXhbVEFHX0VOVFJJRVNdID0gezAsIDQs IDE2LCA0MCwgNjQsIDcyLCAxMjh9OwotCi0JZm9yIChpID0gMDsgaSA8IE1UX05VTV9FTlRSSUVT OyBpKyspCi0JCWFzc2VydCghaXRlbV9pbnNlcnRfb3JkZXIoJnRyZWUsIGluZGV4W2ldLCBvcmRl cltpXSkpOwotCi0JYXNzZXJ0KCFyYWRpeF90cmVlX3RhZ2dlZCgmdHJlZSwgMSkpOwotCi0JZm9y IChpID0gMDsgaSA8IFRBR19FTlRSSUVTOyBpKyspCi0JCWFzc2VydChyYWRpeF90cmVlX3RhZ19z ZXQoJnRyZWUsIHRhZ19pbmRleFtpXSwgMSkpOwotCi0JZm9yIChqID0gMDsgaiA8IDI1Njsgaisr KSB7Ci0JCWludCBtYXNrLCBrOwotCi0JCWZvciAoaSA9IDA7IGkgPCBUQUdfRU5UUklFUzsgaSsr KSB7Ci0JCQlmb3IgKGsgPSBpOyBpbmRleFtrXSA8IHRhZ19pbmRleFtpXTsgaysrKQotCQkJCTsK LQkJCWlmIChqIDw9IChpbmRleFtrXSB8ICgoMSA8PCBvcmRlcltrXSkgLSAxKSkpCi0JCQkJYnJl YWs7Ci0JCX0KLQotCQlyYWRpeF90cmVlX2Zvcl9lYWNoX3RhZ2dlZChzbG90LCAmdHJlZSwgJml0 ZXIsIGosIDEpIHsKLQkJCWZvciAoayA9IGk7IGluZGV4W2tdIDwgdGFnX2luZGV4W2ldOyBrKysp Ci0JCQkJOwotCQkJbWFzayA9ICgxIDw8IG9yZGVyW2tdKSAtIDE7Ci0KLQkJCWFzc2VydChpdGVy LmluZGV4ID49ICh0YWdfaW5kZXhbaV0gJn4gbWFzaykpOwotCQkJYXNzZXJ0KGl0ZXIuaW5kZXgg PD0gKHRhZ19pbmRleFtpXSB8IG1hc2spKTsKLQkJCWkrKzsKLQkJfQotCX0KLQotCXJhZGl4X3Ry ZWVfcmFuZ2VfdGFnX2lmX3RhZ2dlZCgmdHJlZSwgJmZpcnN0LCB+MFVMLAotCQkJCQlNVF9OVU1f RU5UUklFUywgMSwgMik7Ci0KLQlmb3IgKGogPSAwOyBqIDwgMjU2OyBqKyspIHsKLQkJaW50IG1h c2ssIGs7Ci0KLQkJZm9yIChpID0gMDsgaSA8IFRBR19FTlRSSUVTOyBpKyspIHsKLQkJCWZvciAo ayA9IGk7IGluZGV4W2tdIDwgdGFnX2luZGV4W2ldOyBrKyspCi0JCQkJOwotCQkJaWYgKGogPD0g KGluZGV4W2tdIHwgKCgxIDw8IG9yZGVyW2tdKSAtIDEpKSkKLQkJCQlicmVhazsKLQkJfQotCi0J CXJhZGl4X3RyZWVfZm9yX2VhY2hfdGFnZ2VkKHNsb3QsICZ0cmVlLCAmaXRlciwgaiwgMikgewot CQkJZm9yIChrID0gaTsgaW5kZXhba10gPCB0YWdfaW5kZXhbaV07IGsrKykKLQkJCQk7Ci0JCQlt YXNrID0gKDEgPDwgb3JkZXJba10pIC0gMTsKLQotCQkJYXNzZXJ0KGl0ZXIuaW5kZXggPj0gKHRh Z19pbmRleFtpXSAmfiBtYXNrKSk7Ci0JCQlhc3NlcnQoaXRlci5pbmRleCA8PSAodGFnX2luZGV4 W2ldIHwgbWFzaykpOwotCQkJaSsrOwotCQl9Ci0JfQotCi0JZmlyc3QgPSAxOwotCXJhZGl4X3Ry ZWVfcmFuZ2VfdGFnX2lmX3RhZ2dlZCgmdHJlZSwgJmZpcnN0LCB+MFVMLAotCQkJCQlNVF9OVU1f RU5UUklFUywgMSwgMCk7Ci0JaSA9IDA7Ci0JcmFkaXhfdHJlZV9mb3JfZWFjaF90YWdnZWQoc2xv dCwgJnRyZWUsICZpdGVyLCAwLCAwKSB7Ci0JCWFzc2VydChpdGVyLmluZGV4ID09IHRhZ19pbmRl eFtpXSk7Ci0JCWkrKzsKLQl9Ci0KLQlpdGVtX2tpbGxfdHJlZSgmdHJlZSk7Ci19Ci0KLXZvaWQg bXVsdGlvcmRlcl9jaGVja3Modm9pZCkKLXsKLQlpbnQgaTsKLQotCWZvciAoaSA9IDA7IGkgPCAy MDsgaSsrKSB7Ci0JCW11bHRpb3JkZXJfY2hlY2soMjAwLCBpKTsKLQkJbXVsdGlvcmRlcl9jaGVj aygwLCBpKTsKLQkJbXVsdGlvcmRlcl9jaGVjaygoMVVMIDw8IGkpICsgMSwgaSk7Ci0JfQotCi0J Zm9yIChpID0gMDsgaSA8IDE1OyBpKyspCi0JCW11bHRpb3JkZXJfc2hyaW5rKCgxVUwgPDwgKGkg KyBSQURJWF9UUkVFX01BUF9TSElGVCkpLCBpKTsKLQotCW11bHRpb3JkZXJfaW5zZXJ0X2J1Zygp OwotCW11bHRpb3JkZXJfdGFnX3Rlc3RzKCk7Ci0JbXVsdGlvcmRlcl9pdGVyYXRpb24oKTsKLQlt dWx0aW9yZGVyX3RhZ2dlZF9pdGVyYXRpb24oKTsKLX0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rp bmcvcmFkaXgtdHJlZS90ZXN0LmMgYi90b29scy90ZXN0aW5nL3JhZGl4LXRyZWUvdGVzdC5jCmlu ZGV4IGE2ZTgwOTllYWY0Zi4uODEzNzdiNDBhZjc5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5n L3JhZGl4LXRyZWUvdGVzdC5jCisrKyBiL3Rvb2xzL3Rlc3RpbmcvcmFkaXgtdHJlZS90ZXN0LmMK QEAgLTI0LDIxICsyNCw5IEBAIGludCBpdGVtX3RhZ19nZXQoc3RydWN0IHJhZGl4X3RyZWVfcm9v dCAqcm9vdCwgdW5zaWduZWQgbG9uZyBpbmRleCwgaW50IHRhZykKIAlyZXR1cm4gcmFkaXhfdHJl ZV90YWdfZ2V0KHJvb3QsIGluZGV4LCB0YWcpOwogfQogCi1pbnQgX19pdGVtX2luc2VydChzdHJ1 Y3QgcmFkaXhfdHJlZV9yb290ICpyb290LCBzdHJ1Y3QgaXRlbSAqaXRlbSwKLQkJCXVuc2lnbmVk IG9yZGVyKQotewotCXJldHVybiBfX3JhZGl4X3RyZWVfaW5zZXJ0KHJvb3QsIGl0ZW0tPmluZGV4 LCBvcmRlciwgaXRlbSk7Ci19Ci0KIGludCBpdGVtX2luc2VydChzdHJ1Y3QgcmFkaXhfdHJlZV9y b290ICpyb290LCB1bnNpZ25lZCBsb25nIGluZGV4KQogewotCXJldHVybiBfX2l0ZW1faW5zZXJ0 KHJvb3QsIGl0ZW1fY3JlYXRlKGluZGV4KSwgMCk7Ci19Ci0KLWludCBpdGVtX2luc2VydF9vcmRl cihzdHJ1Y3QgcmFkaXhfdHJlZV9yb290ICpyb290LCB1bnNpZ25lZCBsb25nIGluZGV4LAotCQkJ dW5zaWduZWQgb3JkZXIpCi17Ci0JcmV0dXJuIF9faXRlbV9pbnNlcnQocm9vdCwgaXRlbV9jcmVh dGUoaW5kZXgpLCBvcmRlcik7CisJcmV0dXJuIHJhZGl4X3RyZWVfaW5zZXJ0KHJvb3QsIGluZGV4 LCBpdGVtX2NyZWF0ZShpbmRleCkpOwogfQogCiBpbnQgaXRlbV9kZWxldGUoc3RydWN0IHJhZGl4 X3RyZWVfcm9vdCAqcm9vdCwgdW5zaWduZWQgbG9uZyBpbmRleCkKZGlmZiAtLWdpdCBhL3Rvb2xz L3Rlc3RpbmcvcmFkaXgtdHJlZS90ZXN0LmggYi90b29scy90ZXN0aW5nL3JhZGl4LXRyZWUvdGVz dC5oCmluZGV4IGU4NTEzMTM2OTcyMy4uN2MyZTI5MGU0YzNlIDEwMDY0NAotLS0gYS90b29scy90 ZXN0aW5nL3JhZGl4LXRyZWUvdGVzdC5oCisrKyBiL3Rvb2xzL3Rlc3RpbmcvcmFkaXgtdHJlZS90 ZXN0LmgKQEAgLTgsMTEgKzgsNyBAQCBzdHJ1Y3QgaXRlbSB7CiB9OwogCiBzdHJ1Y3QgaXRlbSAq aXRlbV9jcmVhdGUodW5zaWduZWQgbG9uZyBpbmRleCk7Ci1pbnQgX19pdGVtX2luc2VydChzdHJ1 Y3QgcmFkaXhfdHJlZV9yb290ICpyb290LCBzdHJ1Y3QgaXRlbSAqaXRlbSwKLQkJCXVuc2lnbmVk IG9yZGVyKTsKIGludCBpdGVtX2luc2VydChzdHJ1Y3QgcmFkaXhfdHJlZV9yb290ICpyb290LCB1 bnNpZ25lZCBsb25nIGluZGV4KTsKLWludCBpdGVtX2luc2VydF9vcmRlcihzdHJ1Y3QgcmFkaXhf dHJlZV9yb290ICpyb290LCB1bnNpZ25lZCBsb25nIGluZGV4LAotCQkJdW5zaWduZWQgb3JkZXIp OwogaW50IGl0ZW1fZGVsZXRlKHN0cnVjdCByYWRpeF90cmVlX3Jvb3QgKnJvb3QsIHVuc2lnbmVk IGxvbmcgaW5kZXgpOwogc3RydWN0IGl0ZW0gKml0ZW1fbG9va3VwKHN0cnVjdCByYWRpeF90cmVl X3Jvb3QgKnJvb3QsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogCkBAIC0yNiw3ICsyMiw2IEBAIHZv aWQgaXRlbV9mdWxsX3NjYW4oc3RydWN0IHJhZGl4X3RyZWVfcm9vdCAqcm9vdCwgdW5zaWduZWQg bG9uZyBzdGFydCwKIHZvaWQgaXRlbV9raWxsX3RyZWUoc3RydWN0IHJhZGl4X3RyZWVfcm9vdCAq cm9vdCk7CiAKIHZvaWQgdGFnX2NoZWNrKHZvaWQpOwotdm9pZCBtdWx0aW9yZGVyX2NoZWNrcyh2 b2lkKTsKIAogc3RydWN0IGl0ZW0gKgogaXRlbV90YWdfc2V0KHN0cnVjdCByYWRpeF90cmVlX3Jv b3QgKnJvb3QsIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGludCB0YWcpOwo= --001a113d4ee06e3ee2053d470198-- -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org