From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 020C8C33CAA for ; Thu, 23 Jan 2020 08:55:38 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B7BCB21734 for ; Thu, 23 Jan 2020 08:55:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B7BCB21734 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iuYGe-0002xC-5H; Thu, 23 Jan 2020 08:55:12 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iuYGc-0002x7-HK for xen-devel@lists.xenproject.org; Thu, 23 Jan 2020 08:55:10 +0000 X-Inumbo-ID: 0dcd2252-3dbe-11ea-bde3-12813bfff9fa Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 0dcd2252-3dbe-11ea-bde3-12813bfff9fa; Thu, 23 Jan 2020 08:55:07 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id DCB7AAD7B; Thu, 23 Jan 2020 08:55:06 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Date: Thu, 23 Jan 2020 09:55:04 +0100 Message-Id: <20200123085504.30911-1-jgross@suse.com> X-Mailer: git-send-email 2.16.4 Subject: [Xen-devel] [PATCH] xen/sched: rework credit2 run-queue allocation X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , George Dunlap , Dario Faggioli MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Q3VycmVudGx5IHRoZSBtZW1vcnkgZm9yIGVhY2ggcnVuLXF1ZXVlIG9mIHRoZSBjcmVkaXQyIHNj aGVkdWxlciBpcwphbGxvY2F0ZWQgYXQgdGhlIHNjaGVkdWxlcidzIGluaXQgZnVuY3Rpb246IGZv ciBlYWNoIGNwdSBpbiB0aGUgc3lzdGVtCmEgc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSBp cyBiZWluZyBhbGxvY2F0ZWQsIGV2ZW4gaWYgdGhlCmN1cnJlbnQgc2NoZWR1bGVyIG9ubHkgaGFu ZGxlcyBvbmUgcGh5c2ljYWwgY3B1IG9yIGlzIGNvbmZpZ3VyZWQgdG8Kd29yayB3aXRoIGEgc2lu Z2xlIHJ1bi1xdWV1ZS4gQXMgZWFjaCBzdHJ1Y3QgY29udGFpbnMgNCBjcHVtYXNrcyB0aGlzCnN1 bXMgdXAgdG8gcmF0aGVyIGxhcmdlIG1lbW9yeSBzaXplcyBwcmV0dHkgZmFzdC4KClJld29yayB0 aGUgbWVtb3J5IGFsbG9jYXRpb24gZm9yIHJ1bi1xdWV1ZXMgdG8gYmUgZG9uZSBvbmx5IHdoZW4K bmVlZGVkLCBpLmUuIHdoZW4gYWRkaW5nIGEgcGh5c2ljYWwgY3B1IHRvIHRoZSBzY2hlZHVsZXIg cmVxdWlyaW5nIGEKbmV3IHJ1bi1xdWV1ZS4KCkluIGZhY3QgdGhpcyBmaXhlcyBhIGJ1ZyBpbiBj cmVkaXQyIHJlbGF0ZWQgdG8gcnVuLXF1ZXVlIGhhbmRsaW5nOgpjcHVfdG9fcnVucXVldWUoKSB3 aWxsIHJldHVybiB0aGUgZmlyc3QgZnJlZSBvciBtYXRjaGluZyBydW4tcXVldWUsCndoaWNoIGV2 ZXIgaXMgZm91bmQgZmlyc3QuIFNvIGluIGNhc2UgYSBjcHUgaXMgcmVtb3ZlZCBmcm9tIGNyZWRp dDIKdGhpcyBjb3VsZCByZXN1bHQgaW4gZS5nLiBydW4tcXVldWUgMCBiZWNvbWluZyBmcmVlLCBz byB3aGVuIGFub3RoZXIKY3B1IGlzIGFkZGVkIGl0IHdpbGwgaW4gYW55IGNhc2UgYmUgYXNzaWdu ZWQgdG8gdGhhdCBmcmVlIHJ1bi1xdWV1ZSwKZXZlbiBpZiBpdCB3b3VsZCBoYXZlIGZvdW5kIGFu b3RoZXIgcnVuLXF1ZXVlIG1hdGNoaW5nIGxhdGVyLgoKU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBH cm9zcyA8amdyb3NzQHN1c2UuY29tPgotLS0KIHhlbi9jb21tb24vc2NoZWQvY3JlZGl0Mi5jIHwg MzcyICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDE4NCBpbnNlcnRpb25zKCspLCAxODggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEveGVuL2NvbW1vbi9zY2hlZC9jcmVkaXQyLmMgYi94ZW4vY29tbW9uL3NjaGVkL2NyZWRpdDIu YwppbmRleCAyNTZjMWMwMWZjLi40OWEzYzU1M2YxIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3Nj aGVkL2NyZWRpdDIuYworKysgYi94ZW4vY29tbW9uL3NjaGVkL2NyZWRpdDIuYwpAQCAtNDY2LDgg KzQ2NiwxMiBAQCBjdXN0b21fcGFyYW0oImNyZWRpdDJfcnVucXVldWUiLCBwYXJzZV9jcmVkaXQy X3J1bnF1ZXVlKTsKIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgewogICAgIHNwaW5sb2Nr X3QgbG9jazsgICAgICAgICAgIC8qIExvY2sgZm9yIHRoaXMgcnVucXVldWUgICAgICAgICAgICAg ICAgICAgICAqLwogCisgICAgc3RydWN0IGxpc3RfaGVhZCBycWw7ICAgICAgLyogTGlzdCBvZiBy dW5xdWV1ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgc3RydWN0IGxpc3RfaGVh ZCBydW5xOyAgICAgLyogT3JkZXJlZCBsaXN0IG9mIHJ1bm5hYmxlIHZtcyAgICAgICAgICAgICAg ICovCisgICAgdW5zaWduZWQgaW50IHJlZmNudDsgICAgICAgLyogSG93IG1hbnkgQ1BVcyByZWZl cmVuY2UgdGhpcyBydW5xdWV1ZSAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogKGluY2x1ZGluZyBub3QgeWV0IGFjdGl2ZSBvbmVzKSAgICAgICAgICAgICovCiAgICAg dW5zaWduZWQgaW50IG5yX2NwdXM7ICAgICAgLyogSG93IG1hbnkgQ1BVcyBhcmUgc2hhcmluZyB0 aGlzIHJ1bnF1ZXVlICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG9u bHkgYWN0aXZlIG9uZXMpICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgaW50IGlkOyAg ICAgICAgICAgICAgICAgICAgLyogSUQgb2YgdGhpcyBydW5xdWV1ZSAoLTEgaWYgaW52YWxpZCkg ICAgICAgICovCiAKICAgICBpbnQgbG9hZDsgICAgICAgICAgICAgICAgICAvKiBJbnN0YW50YW5l b3VzIGxvYWQgKG51bSBvZiBub24taWRsZSB1bml0cykgKi8KQEAgLTQ5NSw4ICs0OTksOCBAQCBz dHJ1Y3QgY3NjaGVkMl9wcml2YXRlIHsKICAgICB1bnNpZ25lZCBpbnQgbG9hZF93aW5kb3dfc2hp ZnQ7ICAgIC8qIExlbmdodCBvZiBsb2FkIGRlY2F5aW5nIHdpbmRvdyAgICAgKi8KICAgICB1bnNp Z25lZCBpbnQgcmF0ZWxpbWl0X3VzOyAgICAgICAgIC8qIFJhdGUgbGltaXRpbmcgZm9yIHRoaXMg c2NoZWR1bGVyICAgKi8KIAotICAgIGNwdW1hc2tfdCBhY3RpdmVfcXVldWVzOyAgICAgICAgICAg LyogUnVucXVldWVzIHdpdGggKG1heWJlKSBhY3RpdmUgY3B1cyAqLwotICAgIHN0cnVjdCBjc2No ZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZDsgLyogRGF0YSBvZiB0aGUgdmFyaW91cyBydW5xdWV1ZXMg ICAgICAqLworICAgIHVuc2lnbmVkIGludCBhY3RpdmVfcXVldWVzOyAgICAgICAgLyogTnVtYmVy IG9mIGFjdGl2ZSBydW5xdWV1ZXMgICAgICAgICAqLworICAgIHN0cnVjdCBsaXN0X2hlYWQgcnFs OyAgICAgICAgICAgICAgLyogTGlzdCBvZiBydW5xdWV1ZXMgICAgICAgICAgICAgICAgICAqLwog CiAgICAgY3B1bWFza190IGluaXRpYWxpemVkOyAgICAgICAgICAgICAvKiBDUFVzIHBhcnQgb2Yg dGhpcyBzY2hlZHVsZXIgICAgICAgICovCiAgICAgc3RydWN0IGxpc3RfaGVhZCBzZG9tOyAgICAg ICAgICAgICAvKiBMaXN0IG9mIGRvbWFpbnMgKGZvciBkZWJ1ZyBrZXkpICAgICovCkBAIC01MDcs NyArNTExLDcgQEAgc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSB7CiAgKi8KIHN0cnVjdCBjc2NoZWQy X3BjcHUgewogICAgIGNwdW1hc2tfdCBzaWJsaW5nX21hc2s7ICAgICAgICAgICAgLyogU2libGlu Z3MgaW4gdGhlIHNhbWUgcnVucXVldWUgICAgICAqLwotICAgIGludCBydW5xX2lkOworICAgIHN0 cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZDsgLyogUnVucXVldWUgZm9yIHRoaXMgQ1BV ICAgICAgICAgICAgICAqLwogfTsKIAogLyoKQEAgLTU4NSwxNCArNTg5LDEzIEBAIHN0YXRpYyBp bmxpbmUgc3RydWN0IGNzY2hlZDJfZG9tICpjc2NoZWQyX2RvbShjb25zdCBzdHJ1Y3QgZG9tYWlu ICpkKQogLyogQ1BVIHRvIHJ1bnFfaWQgbWFjcm8gKi8KIHN0YXRpYyBpbmxpbmUgaW50IGMycih1 bnNpZ25lZCBpbnQgY3B1KQogewotICAgIHJldHVybiBjc2NoZWQyX3BjcHUoY3B1KS0+cnVucV9p ZDsKKyAgICByZXR1cm4gY3NjaGVkMl9wY3B1KGNwdSktPnJxZC0+aWQ7CiB9CiAKIC8qIENQVSB0 byBydW5xdWV1ZSBzdHJ1Y3QgbWFjcm8gKi8KLXN0YXRpYyBpbmxpbmUgc3RydWN0IGNzY2hlZDJf cnVucXVldWVfZGF0YSAqYzJycWQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg Y3B1KQorc3RhdGljIGlubGluZSBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpjMnJxZCh1 bnNpZ25lZCBpbnQgY3B1KQogewotICAgIHJldHVybiAmY3NjaGVkMl9wcml2KG9wcyktPnJxZFtj MnIoY3B1KV07CisgICAgcmV0dXJuIGNzY2hlZDJfcGNwdShjcHUpLT5ycWQ7CiB9CiAKIC8qIERv ZXMgdGhlIGRvbWFpbiBvZiB0aGlzIHVuaXQgaGF2ZSBhIGNhcD8gKi8KQEAgLTgwMywzNiArODA2 LDYgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgY3NjaGVkMl91bml0ICogcnVucV9lbGVtKHN0cnVj dCBsaXN0X2hlYWQgKmVsZW0pCiAgICAgcmV0dXJuIGxpc3RfZW50cnkoZWxlbSwgc3RydWN0IGNz Y2hlZDJfdW5pdCwgcnVucV9lbGVtKTsKIH0KIAotc3RhdGljIHZvaWQgYWN0aXZhdGVfcnVucXVl dWUoc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2LCBpbnQgcnFpKQotewotICAgIHN0cnVjdCBj c2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZDsKLQotICAgIHJxZCA9IHBydi0+cnFkICsgcnFpOwot Ci0gICAgQlVHX09OKCFjcHVtYXNrX2VtcHR5KCZycWQtPmFjdGl2ZSkpOwotCi0gICAgcnFkLT5t YXhfd2VpZ2h0ID0gMTsKLSAgICBycWQtPmlkID0gcnFpOwotICAgIElOSVRfTElTVF9IRUFEKCZy cWQtPnN2Yyk7Ci0gICAgSU5JVF9MSVNUX0hFQUQoJnJxZC0+cnVucSk7Ci0gICAgc3Bpbl9sb2Nr X2luaXQoJnJxZC0+bG9jayk7Ci0KLSAgICBfX2NwdW1hc2tfc2V0X2NwdShycWksICZwcnYtPmFj dGl2ZV9xdWV1ZXMpOwotfQotCi1zdGF0aWMgdm9pZCBkZWFjdGl2YXRlX3J1bnF1ZXVlKHN0cnVj dCBjc2NoZWQyX3ByaXZhdGUgKnBydiwgaW50IHJxaSkKLXsKLSAgICBzdHJ1Y3QgY3NjaGVkMl9y dW5xdWV1ZV9kYXRhICpycWQ7Ci0KLSAgICBycWQgPSBwcnYtPnJxZCArIHJxaTsKLQotICAgIEJV R19PTighY3B1bWFza19lbXB0eSgmcnFkLT5hY3RpdmUpKTsKLQotICAgIHJxZC0+aWQgPSAtMTsK LQotICAgIF9fY3B1bWFza19jbGVhcl9jcHUocnFpLCAmcHJ2LT5hY3RpdmVfcXVldWVzKTsKLX0K LQogc3RhdGljIGlubGluZSBib29sIHNhbWVfbm9kZSh1bnNpZ25lZCBpbnQgY3B1YSwgdW5zaWdu ZWQgaW50IGNwdWIpCiB7CiAgICAgcmV0dXJuIGNwdV90b19ub2RlKGNwdWEpID09IGNwdV90b19u b2RlKGNwdWIpOwpAQCAtODQ5LDUxICs4MjIsNzEgQEAgc3RhdGljIGlubGluZSBib29sIHNhbWVf Y29yZSh1bnNpZ25lZCBpbnQgY3B1YSwgdW5zaWduZWQgaW50IGNwdWIpCiAgICAgICAgICAgIGNw dV90b19jb3JlKGNwdWEpID09IGNwdV90b19jb3JlKGNwdWIpOwogfQogCi1zdGF0aWMgdW5zaWdu ZWQgaW50Ci1jcHVfdG9fcnVucXVldWUoY29uc3Qgc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2 LCB1bnNpZ25lZCBpbnQgY3B1KQorc3RhdGljIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEg KgorY3B1X2FkZF90b19ydW5xdWV1ZShzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYsIHVuc2ln bmVkIGludCBjcHUpCiB7Ci0gICAgY29uc3Qgc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAq cnFkOwotICAgIHVuc2lnbmVkIGludCBycWk7CisgICAgc3RydWN0IGNzY2hlZDJfcnVucXVldWVf ZGF0YSAqcnFkLCAqcnFkX25ldzsKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkICpycWRfaW5zOworICAg IHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisgICAgaW50IHJxaSA9IDA7CisgICAgYm9vbCBycWlfdW51 c2VkID0gZmFsc2UsIHJxZF92YWxpZCA9IGZhbHNlOworCisgICAgcnFkX25ldyA9IHh6YWxsb2Mo c3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSk7CiAKLSAgICBmb3IgKCBycWkgPSAwOyBycWkg PCBucl9jcHVfaWRzOyBycWkrKyApCisgICAgd3JpdGVfbG9ja19pcnFzYXZlKCZwcnYtPmxvY2ss IGZsYWdzKTsKKworICAgIHJxZF9pbnMgPSAmcHJ2LT5ycWw7CisgICAgbGlzdF9mb3JfZWFjaF9l bnRyeSAoIHJxZCwgJnBydi0+cnFsLCBycWwgKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgaW50 IHBlZXJfY3B1OwogCi0gICAgICAgIC8qCi0gICAgICAgICAqIEFzIHNvb24gYXMgd2UgY29tZSBh Y3Jvc3MgYW4gdW5pbml0aWFsaXplZCBydW5xdWV1ZSwgdXNlIGl0LgotICAgICAgICAgKiBJbiBm YWN0LCBlaXRoZXI6Ci0gICAgICAgICAqICAtIHdlIGFyZSBpbml0aWFsaXppbmcgdGhlIGZpcnN0 IGNwdSwgYW5kIHdlIGFzc2lnbiBpdCB0bwotICAgICAgICAgKiAgICBydW5xdWV1ZSAwLiBUaGlz IGlzIGhhbmR5LCBlc3BlY2lhbGx5IGlmIHdlIGFyZSBkZWFsaW5nCi0gICAgICAgICAqICAgIHdp dGggdGhlIGJvb3QgY3B1IChpZiBjcmVkaXQyIGlzIHRoZSBkZWZhdWx0IHNjaGVkdWxlciksCi0g ICAgICAgICAqICAgIGFzIHdlIHdvdWxkIG5vdCBiZSBhYmxlIHRvIHVzZSBjcHVfdG9fc29ja2V0 KCkgYW5kIHNpbWlsYXIKLSAgICAgICAgICogICAgaGVscGVycyBhbnl3YXkgKHRoZXkncmUgcmVz dWx0IG9mIHdoaWNoIGlzIG5vdCByZWxpYWJsZSB5ZXQpOwotICAgICAgICAgKiAgLSB3ZSBoYXZl IGdvbmUgdGhyb3VnaCBhbGwgdGhlIGFjdGl2ZSBydW5xdWV1ZXMsIGFuZCBoYXZlIG5vdAotICAg ICAgICAgKiAgICBmb3VuZCBhbnlvbmUgd2hvc2UgY3B1cycgdG9wb2xvZ3kgbWF0Y2hlcyB0aGUg b25lIHdlIGFyZQotICAgICAgICAgKiAgICBkZWFsaW5nIHdpdGgsIHNvIGFjdGl2YXRpbmcgYSBu ZXcgcnVucXVldWUgaXMgd2hhdCB3ZSB3YW50LgotICAgICAgICAgKi8KLSAgICAgICAgaWYgKCBw cnYtPnJxZFtycWldLmlkID09IC0xICkKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvKiBS ZW1lbWJlciBmaXJzdCB1bnVzZWQgcXVldWUgaW5kZXguICovCisgICAgICAgIGlmICggIXJxaV91 bnVzZWQgJiYgcnFkLT5pZCA+IHJxaSApCisgICAgICAgICAgICBycWlfdW51c2VkID0gdHJ1ZTsK IAotICAgICAgICBycWQgPSBwcnYtPnJxZCArIHJxaTsKLSAgICAgICAgQlVHX09OKGNwdW1hc2tf ZW1wdHkoJnJxZC0+YWN0aXZlKSk7Ci0KLSAgICAgICAgcGVlcl9jcHUgPSBjcHVtYXNrX2ZpcnN0 KCZycWQtPmFjdGl2ZSk7CisgICAgICAgIHBlZXJfY3B1ID0gcnFkLT5waWNrX2JpYXM7CiAgICAg ICAgIEJVR19PTihjcHVfdG9fc29ja2V0KGNwdSkgPT0gWEVOX0lOVkFMSURfU09DS0VUX0lEIHx8 CiAgICAgICAgICAgICAgICBjcHVfdG9fc29ja2V0KHBlZXJfY3B1KSA9PSBYRU5fSU5WQUxJRF9T T0NLRVRfSUQpOwogCi0gICAgICAgIGlmIChvcHRfcnVucXVldWUgPT0gT1BUX1JVTlFVRVVFX0NQ VSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoIG9wdF9ydW5xdWV1ZSA9PSBP UFRfUlVOUVVFVUVfQUxMIHx8CiAgICAgICAgICAgICAgKG9wdF9ydW5xdWV1ZSA9PSBPUFRfUlVO UVVFVUVfQ09SRSAmJiBzYW1lX2NvcmUocGVlcl9jcHUsIGNwdSkpIHx8CiAgICAgICAgICAgICAg KG9wdF9ydW5xdWV1ZSA9PSBPUFRfUlVOUVVFVUVfU09DS0VUICYmIHNhbWVfc29ja2V0KHBlZXJf Y3B1LCBjcHUpKSB8fAogICAgICAgICAgICAgIChvcHRfcnVucXVldWUgPT0gT1BUX1JVTlFVRVVF X05PREUgJiYgc2FtZV9ub2RlKHBlZXJfY3B1LCBjcHUpKSApCisgICAgICAgIHsKKyAgICAgICAg ICAgIHJxZF92YWxpZCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg ICAgICAgIGlmICggIXJxaV91bnVzZWQgKQorICAgICAgICB7CisgICAgICAgICAgICBycWkrKzsK KyAgICAgICAgICAgIHJxZF9pbnMgPSAmcnFkLT5ycWw7CisgICAgICAgIH0KKyAgICB9CisKKyAg ICBpZiAoICFycWRfdmFsaWQgKQorICAgIHsKKyAgICAgICAgaWYgKCAhcnFkX25ldyApCisgICAg ICAgIHsKKyAgICAgICAgICAgIHJxZCA9IEVSUl9QVFIoLUVOT01FTSk7CisgICAgICAgICAgICBn b3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBycWQgPSBycWRfbmV3OworICAgICAgICBycWRf bmV3ID0gTlVMTDsKKworICAgICAgICBsaXN0X2FkZCgmcnFkLT5ycWwsIHJxZF9pbnMpOworICAg ICAgICBycWQtPnBpY2tfYmlhcyA9IGNwdTsKKyAgICAgICAgcnFkLT5pZCA9IHJxaTsKICAgICB9 CiAKLSAgICAvKiBXZSByZWFsbHkgZXhwZWN0IHRvIGJlIGFibGUgdG8gYXNzaWduIGVhY2ggY3B1 IHRvIGEgcnVucXVldWUuICovCi0gICAgQlVHX09OKHJxaSA+PSBucl9jcHVfaWRzKTsKKyAgICBy cWQtPnJlZmNudCsrOworCisgb3V0OgorICAgIHdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZwcnYt PmxvY2ssIGZsYWdzKTsKKworICAgIHhmcmVlKHJxZF9uZXcpOwogCi0gICAgcmV0dXJuIHJxaTsK KyAgICByZXR1cm4gcnFkOwogfQogCiAvKiBGaW5kIHRoZSBkb21haW4gd2l0aCB0aGUgaGlnaGVz dCB3ZWlnaHQuICovCkBAIC05NzEsMTMgKzk2NCwxMyBAQCBfcnVucV9hc3NpZ24oc3RydWN0IGNz Y2hlZDJfdW5pdCAqc3ZjLCBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQpCiB9CiAK IHN0YXRpYyB2b2lkCi1ydW5xX2Fzc2lnbihjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGNv bnN0IHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQorcnVucV9hc3NpZ24oY29uc3Qgc3RydWN0IHNj aGVkX3VuaXQgKnVuaXQpCiB7CiAgICAgc3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjID0gdW5pdC0+ cHJpdjsKIAogICAgIEFTU0VSVChzdmMtPnJxZCA9PSBOVUxMKTsKIAotICAgIF9ydW5xX2Fzc2ln bihzdmMsIGMycnFkKG9wcywgc2NoZWRfdW5pdF9tYXN0ZXIodW5pdCkpKTsKKyAgICBfcnVucV9h c3NpZ24oc3ZjLCBjMnJxZChzY2hlZF91bml0X21hc3Rlcih1bml0KSkpOwogfQogCiBzdGF0aWMg dm9pZApAQCAtOTk4LDExICs5OTEsMTEgQEAgX3J1bnFfZGVhc3NpZ24oc3RydWN0IGNzY2hlZDJf dW5pdCAqc3ZjKQogfQogCiBzdGF0aWMgdm9pZAotcnVucV9kZWFzc2lnbihjb25zdCBzdHJ1Y3Qg c2NoZWR1bGVyICpvcHMsIGNvbnN0IHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQorcnVucV9kZWFz c2lnbihjb25zdCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKIHsKICAgICBzdHJ1Y3QgY3NjaGVk Ml91bml0ICpzdmMgPSB1bml0LT5wcml2OwogCi0gICAgQVNTRVJUKHN2Yy0+cnFkID09IGMycnFk KG9wcywgc2NoZWRfdW5pdF9tYXN0ZXIodW5pdCkpKTsKKyAgICBBU1NFUlQoc3ZjLT5ycWQgPT0g YzJycWQoc2NoZWRfdW5pdF9tYXN0ZXIodW5pdCkpKTsKIAogICAgIF9ydW5xX2RlYXNzaWduKHN2 Yyk7CiB9CkBAIC0xMjcxLDEyICsxMjY0LDExIEBAIHVwZGF0ZV9sb2FkKGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywKICAgICAgICAgdXBkYXRlX3N2Y19sb2FkKG9wcywgc3ZjLCBjaGFuZ2Us IG5vdyk7CiB9CiAKLXN0YXRpYyB2b2lkCi1ydW5xX2luc2VydChjb25zdCBzdHJ1Y3Qgc2NoZWR1 bGVyICpvcHMsIHN0cnVjdCBjc2NoZWQyX3VuaXQgKnN2YykKK3N0YXRpYyB2b2lkIHJ1bnFfaW5z ZXJ0KHN0cnVjdCBjc2NoZWQyX3VuaXQgKnN2YykKIHsKICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpp dGVyOwogICAgIHVuc2lnbmVkIGludCBjcHUgPSBzY2hlZF91bml0X21hc3RlcihzdmMtPnVuaXQp OwotICAgIHN0cnVjdCBsaXN0X2hlYWQgKiBydW5xID0gJmMycnFkKG9wcywgY3B1KS0+cnVucTsK KyAgICBzdHJ1Y3QgbGlzdF9oZWFkICpydW5xID0gJmMycnFkKGNwdSktPnJ1bnE7CiAgICAgaW50 IHBvcyA9IDA7CiAKICAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoZ2V0X3NjaGVkX3JlcyhjcHUp LT5zY2hlZHVsZV9sb2NrKSk7CkBAIC0xMzY1LDcgKzEzNTcsNyBAQCBzdGF0aWMgaW5saW5lIGJv b2wgaXNfcHJlZW1wdGFibGUoY29uc3Qgc3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjLAogc3RhdGlj IHNfdGltZV90IHRpY2tsZV9zY29yZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHNfdGlt ZV90IG5vdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGNzY2hl ZDJfdW5pdCAqbmV3LCB1bnNpZ25lZCBpbnQgY3B1KQogewotICAgIHN0cnVjdCBjc2NoZWQyX3J1 bnF1ZXVlX2RhdGEgKnJxZCA9IGMycnFkKG9wcywgY3B1KTsKKyAgICBzdHJ1Y3QgY3NjaGVkMl9y dW5xdWV1ZV9kYXRhICpycWQgPSBjMnJxZChjcHUpOwogICAgIHN0cnVjdCBjc2NoZWQyX3VuaXQg KiBjdXIgPSBjc2NoZWQyX3VuaXQoY3Vycl9vbl9jcHUoY3B1KSk7CiAgICAgY29uc3Qgc3RydWN0 IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2ID0gY3NjaGVkMl9wcml2KG9wcyk7CiAgICAgc190aW1lX3Qg c2NvcmU7CkBAIC0xNDQxLDcgKzE0MzMsNyBAQCBydW5xX3RpY2tsZShjb25zdCBzdHJ1Y3Qgc2No ZWR1bGVyICpvcHMsIHN0cnVjdCBjc2NoZWQyX3VuaXQgKm5ldywgc190aW1lX3Qgbm93KQogICAg IHNfdGltZV90IG1heCA9IDA7CiAgICAgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQgPSBuZXctPnVu aXQ7CiAgICAgdW5zaWduZWQgaW50IGJzLCBjcHUgPSBzY2hlZF91bml0X21hc3Rlcih1bml0KTsK LSAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQgPSBjMnJxZChvcHMsIGNwdSk7 CisgICAgc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFkID0gYzJycWQoY3B1KTsKICAg ICBjb25zdCBjcHVtYXNrX3QgKm9ubGluZSA9IGNwdXBvb2xfZG9tYWluX21hc3Rlcl9jcHVtYXNr KHVuaXQtPmRvbWFpbik7CiAgICAgY3B1bWFza190IG1hc2s7CiAKQEAgLTE2MTcsMTAgKzE2MDks OSBAQCBydW5xX3RpY2tsZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBjc2No ZWQyX3VuaXQgKm5ldywgc190aW1lX3Qgbm93KQogLyoKICAqIENyZWRpdC1yZWxhdGVkIGNvZGUK ICAqLwotc3RhdGljIHZvaWQgcmVzZXRfY3JlZGl0KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9w cywgaW50IGNwdSwgc190aW1lX3Qgbm93LAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBjc2NoZWQyX3VuaXQgKnNuZXh0KQorc3RhdGljIHZvaWQgcmVzZXRfY3JlZGl0KGludCBjcHUs IHNfdGltZV90IG5vdywgc3RydWN0IGNzY2hlZDJfdW5pdCAqc25leHQpCiB7Ci0gICAgc3RydWN0 IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFkID0gYzJycWQob3BzLCBjcHUpOworICAgIHN0cnVj dCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCA9IGMycnFkKGNwdSk7CiAgICAgc3RydWN0IGxp c3RfaGVhZCAqaXRlcjsKICAgICBpbnQgbTsKIApAQCAtMTkwOSw3ICsxOTAwLDcgQEAgdW5wYXJr X3BhcmtlZF91bml0cyhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBsaXN0X2hl YWQgKnVuaXRzKQogICAgICAgICAgICAgICogZm9yIHRoZSBuZXdseSByZXBsZW5pc2hlZCBidWRn ZXQuCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIEFTU0VSVCggc3ZjLT5ycWQgIT0gTlVM TCApOwotICAgICAgICAgICAgQVNTRVJUKCBjMnJxZChvcHMsIHNjaGVkX3VuaXRfbWFzdGVyKHN2 Yy0+dW5pdCkpID09IHN2Yy0+cnFkICk7CisgICAgICAgICAgICBBU1NFUlQoIGMycnFkKHNjaGVk X3VuaXRfbWFzdGVyKHN2Yy0+dW5pdCkpID09IHN2Yy0+cnFkICk7CiAgICAgICAgICAgICBfX3Nl dF9iaXQoX19DU0ZMQUdfZGVsYXllZF9ydW5xX2FkZCwgJnN2Yy0+ZmxhZ3MpOwogICAgICAgICB9 CiAgICAgICAgIGVsc2UgaWYgKCB1bml0X3J1bm5hYmxlKHN2Yy0+dW5pdCkgKQpAQCAtMTkyMiw3 ICsxOTEzLDcgQEAgdW5wYXJrX3BhcmtlZF91bml0cyhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpv cHMsIHN0cnVjdCBsaXN0X2hlYWQgKnVuaXRzKQogICAgICAgICAgICAgICovCiAgICAgICAgICAg ICBub3cgPSBOT1coKTsKICAgICAgICAgICAgIHVwZGF0ZV9sb2FkKG9wcywgc3ZjLT5ycWQsIHN2 YywgMSwgbm93KTsKLSAgICAgICAgICAgIHJ1bnFfaW5zZXJ0KG9wcywgc3ZjKTsKKyAgICAgICAg ICAgIHJ1bnFfaW5zZXJ0KHN2Yyk7CiAgICAgICAgICAgICBydW5xX3RpY2tsZShvcHMsIHN2Yywg bm93KTsKICAgICAgICAgfQogICAgICAgICBsaXN0X2RlbF9pbml0KCZzdmMtPnBhcmtlZF9lbGVt KTsKQEAgLTIwODcsNyArMjA3OCw3IEBAIGNzY2hlZDJfdW5pdF9zbGVlcChjb25zdCBzdHJ1Y3Qg c2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogICAgIH0KICAgICBlbHNl IGlmICggdW5pdF9vbl9ydW5xKHN2YykgKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHN2Yy0+cnFk ID09IGMycnFkKG9wcywgc2NoZWRfdW5pdF9tYXN0ZXIodW5pdCkpKTsKKyAgICAgICAgQVNTRVJU KHN2Yy0+cnFkID09IGMycnFkKHNjaGVkX3VuaXRfbWFzdGVyKHVuaXQpKSk7CiAgICAgICAgIHVw ZGF0ZV9sb2FkKG9wcywgc3ZjLT5ycWQsIHN2YywgLTEsIE5PVygpKTsKICAgICAgICAgcnVucV9y ZW1vdmUoc3ZjKTsKICAgICB9CkBAIC0yMTM0LDE2ICsyMTI1LDE2IEBAIGNzY2hlZDJfdW5pdF93 YWtlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQp CiAKICAgICAvKiBBZGQgaW50byB0aGUgbmV3IHJ1bnF1ZXVlIGlmIG5lY2Vzc2FyeSAqLwogICAg IGlmICggc3ZjLT5ycWQgPT0gTlVMTCApCi0gICAgICAgIHJ1bnFfYXNzaWduKG9wcywgdW5pdCk7 CisgICAgICAgIHJ1bnFfYXNzaWduKHVuaXQpOwogICAgIGVsc2UKLSAgICAgICAgQVNTRVJUKGMy cnFkKG9wcywgc2NoZWRfdW5pdF9tYXN0ZXIodW5pdCkpID09IHN2Yy0+cnFkICk7CisgICAgICAg IEFTU0VSVChjMnJxZChzY2hlZF91bml0X21hc3Rlcih1bml0KSkgPT0gc3ZjLT5ycWQgKTsKIAog ICAgIG5vdyA9IE5PVygpOwogCiAgICAgdXBkYXRlX2xvYWQob3BzLCBzdmMtPnJxZCwgc3ZjLCAx LCBub3cpOwogCiAgICAgLyogUHV0IHRoZSBVTklUIG9uIHRoZSBydW5xICovCi0gICAgcnVucV9p bnNlcnQob3BzLCBzdmMpOworICAgIHJ1bnFfaW5zZXJ0KHN2Yyk7CiAgICAgcnVucV90aWNrbGUo b3BzLCBzdmMsIG5vdyk7CiAKIG91dDoKQEAgLTIxNjcsOSArMjE1OCw5IEBAIGNzY2hlZDJfY29u dGV4dF9zYXZlZChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0 ICp1bml0KQogICAgIExJU1RfSEVBRCh3ZXJlX3BhcmtlZCk7CiAKICAgICBCVUdfT04oICFpc19p ZGxlX3VuaXQodW5pdCkgJiYKLSAgICAgICAgICAgIHN2Yy0+cnFkICE9IGMycnFkKG9wcywgc2No ZWRfdW5pdF9tYXN0ZXIodW5pdCkpKTsKKyAgICAgICAgICAgIHN2Yy0+cnFkICE9IGMycnFkKHNj aGVkX3VuaXRfbWFzdGVyKHVuaXQpKSk7CiAgICAgQVNTRVJUKGlzX2lkbGVfdW5pdCh1bml0KSB8 fAotICAgICAgICAgICBzdmMtPnJxZCA9PSBjMnJxZChvcHMsIHNjaGVkX3VuaXRfbWFzdGVyKHVu aXQpKSk7CisgICAgICAgICAgIHN2Yy0+cnFkID09IGMycnFkKHNjaGVkX3VuaXRfbWFzdGVyKHVu aXQpKSk7CiAKICAgICAvKiBUaGlzIHVuaXQgaXMgbm93IGVsaWdpYmxlIHRvIGJlIHB1dCBvbiB0 aGUgcnVucXVldWUgYWdhaW4gKi8KICAgICBfX2NsZWFyX2JpdChfX0NTRkxBR19zY2hlZHVsZWQs ICZzdmMtPmZsYWdzKTsKQEAgLTIxOTAsNyArMjE4MSw3IEBAIGNzY2hlZDJfY29udGV4dF9zYXZl ZChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQog ICAgIHsKICAgICAgICAgQVNTRVJUKCF1bml0X29uX3J1bnEoc3ZjKSk7CiAKLSAgICAgICAgcnVu cV9pbnNlcnQob3BzLCBzdmMpOworICAgICAgICBydW5xX2luc2VydChzdmMpOwogICAgICAgICBy dW5xX3RpY2tsZShvcHMsIHN2Yywgbm93KTsKICAgICB9CiAgICAgZWxzZSBpZiAoICFpc19pZGxl X3VuaXQodW5pdCkgKQpAQCAtMjIwNiwxMyArMjE5NywxMyBAQCBzdGF0aWMgc3RydWN0IHNjaGVk X3Jlc291cmNlICoKIGNzY2hlZDJfcmVzX3BpY2soY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3Bz LCBjb25zdCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKIHsKICAgICBzdHJ1Y3QgY3NjaGVkMl9w cml2YXRlICpwcnYgPSBjc2NoZWQyX3ByaXYob3BzKTsKLSAgICBpbnQgaSwgbWluX3JxaSA9IC0x LCBtaW5fc19ycWkgPSAtMTsKICAgICB1bnNpZ25lZCBpbnQgbmV3X2NwdSwgY3B1ID0gc2NoZWRf dW5pdF9tYXN0ZXIodW5pdCk7CiAgICAgc3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjID0gY3NjaGVk Ml91bml0KHVuaXQpOwogICAgIHNfdGltZV90IG1pbl9hdmdsb2FkID0gTUFYX0xPQUQsIG1pbl9z X2F2Z2xvYWQgPSBNQVhfTE9BRDsKICAgICBib29sIGhhc19zb2Z0OworICAgIHN0cnVjdCBjc2No ZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwgKm1pbl9ycWQgPSBOVUxMLCAqbWluX3NfcnFkID0gTlVM TDsKIAotICAgIEFTU0VSVCghY3B1bWFza19lbXB0eSgmcHJ2LT5hY3RpdmVfcXVldWVzKSk7Cisg ICAgQVNTRVJUKCFsaXN0X2VtcHR5KCZwcnYtPnJxbCkpOwogCiAgICAgU0NIRURfU1RBVF9DUkFO SyhwaWNrX3Jlc291cmNlKTsKIApAQCAtMjI5MCwxMyArMjI4MSwxMCBAQCBjc2NoZWQyX3Jlc19w aWNrKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgY29uc3Qgc3RydWN0IHNjaGVkX3VuaXQg KnVuaXQpCiAgICAgICogRmluZCBib3RoIHJ1bnF1ZXVlcyBpbiBvbmUgcGFzcy4KICAgICAgKi8K ICAgICBoYXNfc29mdCA9IGhhc19zb2Z0X2FmZmluaXR5KHVuaXQpOwotICAgIGZvcl9lYWNoX2Nw dShpLCAmcHJ2LT5hY3RpdmVfcXVldWVzKQorICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBycWQs ICZwcnYtPnJxbCwgcnFsICkKICAgICB7Ci0gICAgICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVl X2RhdGEgKnJxZDsKICAgICAgICAgc190aW1lX3QgcnFkX2F2Z2xvYWQgPSBNQVhfTE9BRDsKIAot ICAgICAgICBycWQgPSBwcnYtPnJxZCArIGk7Ci0KICAgICAgICAgLyoKICAgICAgICAgICogSWYg bm9uZSBvZiB0aGUgY3B1cyBvZiB0aGlzIHJ1bnF1ZXVlIGlzIGluIHN2YydzIGhhcmQtYWZmaW5p dHksCiAgICAgICAgICAqIHNraXAgdGhlIHJ1bnF1ZXVlLgpAQCAtMjMzOSwxOCArMjMyNywxOCBA QCBjc2NoZWQyX3Jlc19waWNrKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgY29uc3Qgc3Ry dWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgICAgICAgICBpZiAoIGNwdW1hc2tfaW50ZXJzZWN0 cygmbWFzaywgdW5pdC0+Y3B1X3NvZnRfYWZmaW5pdHkpICkKICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICBtaW5fc19hdmdsb2FkID0gcnFkX2F2Z2xvYWQ7Ci0gICAgICAgICAgICAgICAg bWluX3NfcnFpID0gaTsKKyAgICAgICAgICAgICAgICBtaW5fc19ycWQgPSBycWQ7CiAgICAgICAg ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLyogSW4gYW55IGNhc2UsIGtlZXAgdGhlICJoYXJk LWFmZmluaXR5IG1pbmltdW0iIHVwZGF0ZWQgdG9vLiAqLwogICAgICAgICBpZiAoIHJxZF9hdmds b2FkIDwgbWluX2F2Z2xvYWQgKQogICAgICAgICB7CiAgICAgICAgICAgICBtaW5fYXZnbG9hZCA9 IHJxZF9hdmdsb2FkOwotICAgICAgICAgICAgbWluX3JxaSA9IGk7CisgICAgICAgICAgICBtaW5f cnFkID0gcnFkOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCBoYXNfc29mdCAmJiBtaW5f c19ycWkgIT0gLTEgKQorICAgIGlmICggaGFzX3NvZnQgJiYgbWluX3NfcnFkICkKICAgICB7CiAg ICAgICAgIC8qCiAgICAgICAgICAqIFdlIGhhdmUgc29mdCBhZmZpbml0eSwgYW5kIHdlIGhhdmUg YSBjYW5kaWRhdGUgcnVucSwgc28gZ28gZm9yIGl0LgpAQCAtMjM3MCw5ICsyMzU4LDkgQEAgY3Nj aGVkMl9yZXNfcGljayhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGNvbnN0IHN0cnVjdCBz Y2hlZF91bml0ICp1bml0KQogICAgICAgICBjcHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0Y2hfY3B1 KGNwdSksIGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwKICAgICAgICAgICAgICAgICAgICAgdW5p dC0+Y3B1X3NvZnRfYWZmaW5pdHkpOwogICAgICAgICBjcHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0 Y2hfY3B1KGNwdSksIGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwKLSAgICAgICAgICAgICAgICAg ICAgJnBydi0+cnFkW21pbl9zX3JxaV0uYWN0aXZlKTsKKyAgICAgICAgICAgICAgICAgICAgJm1p bl9zX3JxZC0+YWN0aXZlKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoIG1pbl9ycWkgIT0gLTEgKQor ICAgIGVsc2UgaWYgKCBtaW5fcnFkICkKICAgICB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIEVp dGhlciB3ZSBkb24ndCBoYXZlIHNvZnQtYWZmaW5pdHksIG9yIHdlIGRvLCBidXQgd2UgZGlkIG5v dCBmaW5kCkBAIC0yMzg0LDcgKzIzNzIsNyBAQCBjc2NoZWQyX3Jlc19waWNrKGNvbnN0IHN0cnVj dCBzY2hlZHVsZXIgKm9wcywgY29uc3Qgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgICAg ICAqIHdpdGggdGhlIGNwdXMgb2YgdGhlIHJ1bnEuCiAgICAgICAgICAqLwogICAgICAgICBjcHVt YXNrX2FuZChjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSksIGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1 KSwKLSAgICAgICAgICAgICAgICAgICAgJnBydi0+cnFkW21pbl9ycWldLmFjdGl2ZSk7CisgICAg ICAgICAgICAgICAgICAgICZtaW5fcnFkLT5hY3RpdmUpOwogICAgIH0KICAgICBlbHNlCiAgICAg ewpAQCAtMjM5MywxNCArMjM4MSwxMyBAQCBjc2NoZWQyX3Jlc19waWNrKGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywgY29uc3Qgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgICAgICAq IGNvbnRlbnRpb24pLgogICAgICAgICAgKi8KICAgICAgICAgbmV3X2NwdSA9IGdldF9mYWxsYmFj a19jcHUoc3ZjKTsKLSAgICAgICAgbWluX3JxaSA9IGMycihuZXdfY3B1KTsKLSAgICAgICAgbWlu X2F2Z2xvYWQgPSBwcnYtPnJxZFttaW5fcnFpXS5iX2F2Z2xvYWQ7CisgICAgICAgIG1pbl9ycWQg PSBjMnJxZChuZXdfY3B1KTsKKyAgICAgICAgbWluX2F2Z2xvYWQgPSBtaW5fcnFkLT5iX2F2Z2xv YWQ7CiAgICAgICAgIGdvdG8gb3V0X3VwOwogICAgIH0KIAotICAgIG5ld19jcHUgPSBjcHVtYXNr X2N5Y2xlKHBydi0+cnFkW21pbl9ycWldLnBpY2tfYmlhcywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSkpOwotICAgIHBydi0+cnFkW21pbl9ycWld LnBpY2tfYmlhcyA9IG5ld19jcHU7CisgICAgbmV3X2NwdSA9IGNwdW1hc2tfY3ljbGUobWluX3Jx ZC0+cGlja19iaWFzLCBjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSkpOworICAgIG1pbl9ycWQtPnBp Y2tfYmlhcyA9IG5ld19jcHU7CiAgICAgQlVHX09OKG5ld19jcHUgPj0gbnJfY3B1X2lkcyk7CiAK ICBvdXRfdXA6CkBAIC0yNDE1LDcgKzI0MDIsNyBAQCBjc2NoZWQyX3Jlc19waWNrKGNvbnN0IHN0 cnVjdCBzY2hlZHVsZXIgKm9wcywgY29uc3Qgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAg ICAgIH0gZDsKICAgICAgICAgZC5kb20gPSB1bml0LT5kb21haW4tPmRvbWFpbl9pZDsKICAgICAg ICAgZC51bml0ID0gdW5pdC0+dW5pdF9pZDsKLSAgICAgICAgZC5ycV9pZCA9IG1pbl9ycWk7Cisg ICAgICAgIGQucnFfaWQgPSBtaW5fcnFkLT5pZDsKICAgICAgICAgZC5iX2F2Z2xvYWQgPSBtaW5f YXZnbG9hZDsKICAgICAgICAgZC5uZXdfY3B1ID0gbmV3X2NwdTsKICAgICAgICAgX190cmFjZV92 YXIoVFJDX0NTQ0hFRDJfUElDS0VEX0NQVSwgMSwKQEAgLTI1MjgsNyArMjUxNSw3IEBAIHN0YXRp YyB2b2lkIG1pZ3JhdGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLAogICAgICAgICBpZiAo IG9uX3J1bnEgKQogICAgICAgICB7CiAgICAgICAgICAgICB1cGRhdGVfbG9hZChvcHMsIHN2Yy0+ cnFkLCBOVUxMLCAxLCBub3cpOwotICAgICAgICAgICAgcnVucV9pbnNlcnQob3BzLCBzdmMpOwor ICAgICAgICAgICAgcnVucV9pbnNlcnQoc3ZjKTsKICAgICAgICAgICAgIHJ1bnFfdGlja2xlKG9w cywgc3ZjLCBub3cpOwogICAgICAgICAgICAgU0NIRURfU1RBVF9DUkFOSyhtaWdyYXRlX29uX3J1 bnEpOwogICAgICAgICB9CkBAIC0yNTU4LDkgKzI1NDUsOSBAQCBzdGF0aWMgYm9vbCB1bml0X2lz X21pZ3JhdGVhYmxlKGNvbnN0IHN0cnVjdCBjc2NoZWQyX3VuaXQgKnN2YywKIHN0YXRpYyB2b2lk IGJhbGFuY2VfbG9hZChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBjcHUsIHNfdGlt ZV90IG5vdykKIHsKICAgICBzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYgPSBjc2NoZWQyX3By aXYob3BzKTsKLSAgICBpbnQgaSwgbWF4X2RlbHRhX3JxaTsKICAgICBzdHJ1Y3QgbGlzdF9oZWFk ICpwdXNoX2l0ZXIsICpwdWxsX2l0ZXI7CiAgICAgYm9vbCBpbm5lcl9sb2FkX3VwZGF0ZWQgPSAw OworICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwgKm1heF9kZWx0YV9ycWQ7 CiAKICAgICBiYWxhbmNlX3N0YXRlX3Qgc3QgPSB7IC5iZXN0X3B1c2hfc3ZjID0gTlVMTCwgLmJl c3RfcHVsbF9zdmMgPSBOVUxMIH07CiAKQEAgLTI1NzIsMjIgKzI1NTksMjIgQEAgc3RhdGljIHZv aWQgYmFsYW5jZV9sb2FkKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgaW50IGNwdSwgc190 aW1lX3Qgbm93KQogICAgICAqLwogCiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKGdldF9zY2hl ZF9yZXMoY3B1KS0+c2NoZWR1bGVfbG9jaykpOwotICAgIHN0LmxycWQgPSBjMnJxZChvcHMsIGNw dSk7CisgICAgc3QubHJxZCA9IGMycnFkKGNwdSk7CiAKICAgICB1cGRhdGVfcnVucV9sb2FkKG9w cywgc3QubHJxZCwgMCwgbm93KTsKIAogcmV0cnk6Ci0gICAgbWF4X2RlbHRhX3JxaSA9IC0xOwor ICAgIG1heF9kZWx0YV9ycWQgPSBOVUxMOwogICAgIGlmICggIXJlYWRfdHJ5bG9jaygmcHJ2LT5s b2NrKSApCiAgICAgICAgIHJldHVybjsKIAogICAgIHN0LmxvYWRfZGVsdGEgPSAwOwogCi0gICAg Zm9yX2VhY2hfY3B1KGksICZwcnYtPmFjdGl2ZV9xdWV1ZXMpCisgICAgbGlzdF9mb3JfZWFjaF9l bnRyeSAoIHJxZCwgJnBydi0+cnFsLCBycWwgKQogICAgIHsKICAgICAgICAgc190aW1lX3QgZGVs dGE7CiAKLSAgICAgICAgc3Qub3JxZCA9IHBydi0+cnFkICsgaTsKKyAgICAgICAgc3Qub3JxZCA9 IHJxZDsKIAogICAgICAgICBpZiAoIHN0Lm9ycWQgPT0gc3QubHJxZAogICAgICAgICAgICAgIHx8 ICFzcGluX3RyeWxvY2soJnN0Lm9ycWQtPmxvY2spICkKQEAgLTI2MDIsNyArMjU4OSw3IEBAIHJl dHJ5OgogICAgICAgICBpZiAoIGRlbHRhID4gc3QubG9hZF9kZWx0YSApCiAgICAgICAgIHsKICAg ICAgICAgICAgIHN0LmxvYWRfZGVsdGEgPSBkZWx0YTsKLSAgICAgICAgICAgIG1heF9kZWx0YV9y cWkgPSBpOworICAgICAgICAgICAgbWF4X2RlbHRhX3JxZCA9IHJxZDsKICAgICAgICAgfQogCiAg ICAgICAgIHNwaW5fdW5sb2NrKCZzdC5vcnFkLT5sb2NrKTsKQEAgLTI2MTAsNyArMjU5Nyw3IEBA IHJldHJ5OgogCiAgICAgLyogTWluaW1pemUgaG9sZGluZyB0aGUgcHJpdmF0ZSBzY2hlZHVsZXIg bG9jay4gKi8KICAgICByZWFkX3VubG9jaygmcHJ2LT5sb2NrKTsKLSAgICBpZiAoIG1heF9kZWx0 YV9ycWkgPT0gLTEgKQorICAgIGlmICggIW1heF9kZWx0YV9ycWQgKQogICAgICAgICBnb3RvIG91 dDsKIAogICAgIHsKQEAgLTI2MjIsMTAgKzI2MDksNyBAQCByZXRyeToKICAgICAgICAgaWYgKCBz dC5vcnFkLT5iX2F2Z2xvYWQgPiBsb2FkX21heCApCiAgICAgICAgICAgICBsb2FkX21heCA9IHN0 Lm9ycWQtPmJfYXZnbG9hZDsKIAotICAgICAgICBjcHVzX21heCA9IHN0LmxycWQtPm5yX2NwdXM7 Ci0gICAgICAgIGkgPSBzdC5vcnFkLT5ucl9jcHVzOwotICAgICAgICBpZiAoIGkgPiBjcHVzX21h eCApCi0gICAgICAgICAgICBjcHVzX21heCA9IGk7CisgICAgICAgIGNwdXNfbWF4ID0gbWF4KHN0 LmxycWQtPm5yX2NwdXMsIHN0Lm9ycWQtPm5yX2NwdXMpOwogCiAgICAgICAgIGlmICggdW5saWtl bHkodGJfaW5pdF9kb25lKSApCiAgICAgICAgIHsKQEAgLTI2NjEsNyArMjY0NSw3IEBAIHJldHJ5 OgogICAgICAqIG1lYW50aW1lLCB0cnkgdGhlIHByb2Nlc3Mgb3ZlciBhZ2Fpbi4gIFRoaXMgY2Fu J3QgZGVhZGxvY2sKICAgICAgKiBiZWNhdXNlIGlmIGl0IGRvZXNuJ3QgZ2V0IGFueSBvdGhlciBy cWQgbG9ja3MsIGl0IHdpbGwgc2ltcGx5CiAgICAgICogZ2l2ZSB1cCBhbmQgcmV0dXJuLiAqLwot ICAgIHN0Lm9ycWQgPSBwcnYtPnJxZCArIG1heF9kZWx0YV9ycWk7CisgICAgc3Qub3JxZCA9IG1h eF9kZWx0YV9ycWQ7CiAgICAgaWYgKCAhc3Bpbl90cnlsb2NrKCZzdC5vcnFkLT5sb2NrKSApCiAg ICAgICAgIGdvdG8gcmV0cnk7CiAKQEAgLTI3NTIsNyArMjczNiw3IEBAIGNzY2hlZDJfdW5pdF9t aWdyYXRlKAogICAgIEFTU0VSVChjcHVtYXNrX3Rlc3RfY3B1KG5ld19jcHUsICZjc2NoZWQyX3By aXYob3BzKS0+aW5pdGlhbGl6ZWQpKTsKICAgICBBU1NFUlQoY3B1bWFza190ZXN0X2NwdShuZXdf Y3B1LCB1bml0LT5jcHVfaGFyZF9hZmZpbml0eSkpOwogCi0gICAgdHJxZCA9IGMycnFkKG9wcywg bmV3X2NwdSk7CisgICAgdHJxZCA9IGMycnFkKG5ld19jcHUpOwogCiAgICAgLyoKICAgICAgKiBE byB0aGUgYWN0dWFsIG1vdmVtZW50IHRvd2FyZCBuZXdfY3B1LCBhbmQgdXBkYXRlIHZjLT5wcm9j ZXNzb3IuCkBAIC0yODE2LDcgKzI4MDAsNyBAQCBjc2NoZWQyX2RvbV9jbnRsKAogICAgICAgICAg ICAgICAgIHN0cnVjdCBjc2NoZWQyX3VuaXQgKnN2YyA9IGNzY2hlZDJfdW5pdCh1bml0KTsKICAg ICAgICAgICAgICAgICBzcGlubG9ja190ICpsb2NrID0gdW5pdF9zY2hlZHVsZV9sb2NrKHVuaXQp OwogCi0gICAgICAgICAgICAgICAgQVNTRVJUKHN2Yy0+cnFkID09IGMycnFkKG9wcywgc2NoZWRf dW5pdF9tYXN0ZXIodW5pdCkpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc3ZjLT5ycWQgPT0g YzJycWQoc2NoZWRfdW5pdF9tYXN0ZXIodW5pdCkpKTsKIAogICAgICAgICAgICAgICAgIHN2Yy0+ d2VpZ2h0ID0gc2RvbS0+d2VpZ2h0OwogICAgICAgICAgICAgICAgIHVwZGF0ZV9tYXhfd2VpZ2h0 KHN2Yy0+cnFkLCBzdmMtPndlaWdodCwgb2xkX3dlaWdodCk7CkBAIC0yODk5LDcgKzI4ODMsNyBA QCBjc2NoZWQyX2RvbV9jbnRsKAogICAgICAgICAgICAgICAgICAgICBpZiAoIHVuaXQtPmlzX3J1 bm5pbmcgKQogICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgY3B1ID0gc2NoZWRfdW5pdF9tYXN0ZXIodW5pdCk7Ci0gICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQgPSBjMnJxZChvcHMs IGNwdSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9k YXRhICpycWQgPSBjMnJxZChjcHUpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo Y3Vycl9vbl9jcHUoY3B1KSA9PSB1bml0KTsKIApAQCAtMzA5NCw3ICszMDc4LDcgQEAgY3NjaGVk Ml91bml0X2luc2VydChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91 bml0ICp1bml0KQogICAgIGxvY2sgPSB1bml0X3NjaGVkdWxlX2xvY2tfaXJxKHVuaXQpOwogCiAg ICAgLyogQWRkIHVuaXQgdG8gcnVucXVldWUgb2YgaW5pdGlhbCBwcm9jZXNzb3IgKi8KLSAgICBy dW5xX2Fzc2lnbihvcHMsIHVuaXQpOworICAgIHJ1bnFfYXNzaWduKHVuaXQpOwogCiAgICAgdW5p dF9zY2hlZHVsZV91bmxvY2tfaXJxKGxvY2ssIHVuaXQpOwogCkBAIC0zMTI3LDcgKzMxMTEsNyBA QCBjc2NoZWQyX3VuaXRfcmVtb3ZlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0 IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgLyogUmVtb3ZlIGZyb20gcnVucXVldWUgKi8KICAgICBs b2NrID0gdW5pdF9zY2hlZHVsZV9sb2NrX2lycSh1bml0KTsKIAotICAgIHJ1bnFfZGVhc3NpZ24o b3BzLCB1bml0KTsKKyAgICBydW5xX2RlYXNzaWduKHVuaXQpOwogCiAgICAgdW5pdF9zY2hlZHVs ZV91bmxvY2tfaXJxKGxvY2ssIHVuaXQpOwogCkBAIC0zMTQxLDcgKzMxMjUsNyBAQCBjc2NoZWQy X3J1bnRpbWUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBpbnQgY3B1LAogewogICAgIHNf dGltZV90IHRpbWUsIG1pbl90aW1lOwogICAgIGludCBydF9jcmVkaXQ7IC8qIFByb3Bvc2VkIHJ1 bnRpbWUgbWVhc3VyZWQgaW4gY3JlZGl0cyAqLwotICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVl X2RhdGEgKnJxZCA9IGMycnFkKG9wcywgY3B1KTsKKyAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1 ZV9kYXRhICpycWQgPSBjMnJxZChjcHUpOwogICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJ1bnEgPSAm cnFkLT5ydW5xOwogICAgIGNvbnN0IHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IGNzY2hl ZDJfcHJpdihvcHMpOwogCkBAIC0zNDM4LDcgKzM0MjIsNyBAQCBzdGF0aWMgdm9pZCBjc2NoZWQy X3NjaGVkdWxlKAogCiAgICAgQlVHX09OKCFjcHVtYXNrX3Rlc3RfY3B1KHNjaGVkX2NwdSwgJmNz Y2hlZDJfcHJpdihvcHMpLT5pbml0aWFsaXplZCkpOwogCi0gICAgcnFkID0gYzJycWQob3BzLCBz Y2hlZF9jcHUpOworICAgIHJxZCA9IGMycnFkKHNjaGVkX2NwdSk7CiAgICAgQlVHX09OKCFjcHVt YXNrX3Rlc3RfY3B1KHNjaGVkX2NwdSwgJnJxZC0+YWN0aXZlKSk7CiAKICAgICBBU1NFUlQoc3Bp bl9pc19sb2NrZWQoZ2V0X3NjaGVkX3JlcyhzY2hlZF9jcHUpLT5zY2hlZHVsZV9sb2NrKSk7CkBA IC0zNTUyLDcgKzM1MzYsNyBAQCBzdGF0aWMgdm9pZCBjc2NoZWQyX3NjaGVkdWxlKAogICAgICAg ICAgKi8KICAgICAgICAgaWYgKCBza2lwcGVkX3VuaXRzID09IDAgJiYgc25leHQtPmNyZWRpdCA8 PSBDU0NIRUQyX0NSRURJVF9SRVNFVCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc2V0X2Ny ZWRpdChvcHMsIHNjaGVkX2NwdSwgbm93LCBzbmV4dCk7CisgICAgICAgICAgICByZXNldF9jcmVk aXQoc2NoZWRfY3B1LCBub3csIHNuZXh0KTsKICAgICAgICAgICAgIGJhbGFuY2VfbG9hZChvcHMs IHNjaGVkX2NwdSwgbm93KTsKICAgICAgICAgfQogCkBAIC0zNjUxLDcgKzM2MzUsOCBAQCBjc2No ZWQyX2R1bXAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzKQogICAgIHN0cnVjdCBsaXN0X2hl YWQgKml0ZXJfc2RvbTsKICAgICBzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYgPSBjc2NoZWQy X3ByaXYob3BzKTsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwotICAgIHVuc2lnbmVkIGludCBp LCBqLCBsb29wOworICAgIHVuc2lnbmVkIGludCBqLCBsb29wOworICAgIHN0cnVjdCBjc2NoZWQy X3J1bnF1ZXVlX2RhdGEgKnJxZDsKIAogICAgIC8qCiAgICAgICogV2UgbmVlZCB0aGUgcHJpdmF0 ZSBzY2hlZHVsZXIgbG9jayBhcyB3ZSBhY2Nlc3MgZ2xvYmFsCkBAIC0zNjYxLDEzICszNjQ2LDEz IEBAIGNzY2hlZDJfZHVtcChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCiAKICAgICBwcmlu dGsoIkFjdGl2ZSBxdWV1ZXM6ICVkXG4iCiAgICAgICAgICAgICJcdGRlZmF1bHQtd2VpZ2h0ICAg ICA9ICVkXG4iLAotICAgICAgICAgICBjcHVtYXNrX3dlaWdodCgmcHJ2LT5hY3RpdmVfcXVldWVz KSwKKyAgICAgICAgICAgcHJ2LT5hY3RpdmVfcXVldWVzLAogICAgICAgICAgICBDU0NIRUQyX0RF RkFVTFRfV0VJR0hUKTsKLSAgICBmb3JfZWFjaF9jcHUoaSwgJnBydi0+YWN0aXZlX3F1ZXVlcykK KyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcnFkLCAmcHJ2LT5ycWwsIHJxbCApCiAgICAgewog ICAgICAgICBzX3RpbWVfdCBmcmFjdGlvbjsKIAotICAgICAgICBmcmFjdGlvbiA9IChwcnYtPnJx ZFtpXS5hdmdsb2FkICogMTAwKSA+PiBwcnYtPmxvYWRfcHJlY2lzaW9uX3NoaWZ0OworICAgICAg ICBmcmFjdGlvbiA9IChycWQtPmF2Z2xvYWQgKiAxMDApID4+IHBydi0+bG9hZF9wcmVjaXNpb25f c2hpZnQ7CiAKICAgICAgICAgcHJpbnRrKCJSdW5xdWV1ZSAlZDpcbiIKICAgICAgICAgICAgICAg ICJcdG5jcHVzICAgICAgICAgICAgICA9ICV1XG4iCkBAIC0zNjc2LDIxICszNjYxLDIxIEBAIGNz Y2hlZDJfZHVtcChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCiAgICAgICAgICAgICAgICAi XHRwaWNrX2JpYXMgICAgICAgICAgPSAldVxuIgogICAgICAgICAgICAgICAgIlx0aW5zdGxvYWQg ICAgICAgICAgID0gJWRcbiIKICAgICAgICAgICAgICAgICJcdGF2ZWxvYWQgICAgICAgICAgICA9 ICUiUFJJX3N0aW1lIiAofiUiUFJJX3N0aW1lIiUlKVxuIiwKLSAgICAgICAgICAgICAgIGksCi0g ICAgICAgICAgICAgICBwcnYtPnJxZFtpXS5ucl9jcHVzLAotICAgICAgICAgICAgICAgQ1BVTUFT S19QUigmcHJ2LT5ycWRbaV0uYWN0aXZlKSwKLSAgICAgICAgICAgICAgIHBydi0+cnFkW2ldLm1h eF93ZWlnaHQsCi0gICAgICAgICAgICAgICBwcnYtPnJxZFtpXS5waWNrX2JpYXMsCi0gICAgICAg ICAgICAgICBwcnYtPnJxZFtpXS5sb2FkLAotICAgICAgICAgICAgICAgcHJ2LT5ycWRbaV0uYXZn bG9hZCwKKyAgICAgICAgICAgICAgIHJxZC0+aWQsCisgICAgICAgICAgICAgICBycWQtPm5yX2Nw dXMsCisgICAgICAgICAgICAgICBDUFVNQVNLX1BSKCZycWQtPmFjdGl2ZSksCisgICAgICAgICAg ICAgICBycWQtPm1heF93ZWlnaHQsCisgICAgICAgICAgICAgICBycWQtPnBpY2tfYmlhcywKKyAg ICAgICAgICAgICAgIHJxZC0+bG9hZCwKKyAgICAgICAgICAgICAgIHJxZC0+YXZnbG9hZCwKICAg ICAgICAgICAgICAgIGZyYWN0aW9uKTsKIAogICAgICAgICBwcmludGsoIlx0aWRsZXJzOiAlKnBi XG4iCiAgICAgICAgICAgICAgICAiXHR0aWNrbGVkOiAlKnBiXG4iCiAgICAgICAgICAgICAgICAi XHRmdWxseSBpZGxlIGNvcmVzOiAlKnBiXG4iLAotICAgICAgICAgICAgICAgQ1BVTUFTS19QUigm cHJ2LT5ycWRbaV0uaWRsZSksCi0gICAgICAgICAgICAgICBDUFVNQVNLX1BSKCZwcnYtPnJxZFtp XS50aWNrbGVkKSwKLSAgICAgICAgICAgICAgIENQVU1BU0tfUFIoJnBydi0+cnFkW2ldLnNtdF9p ZGxlKSk7CisgICAgICAgICAgICAgICBDUFVNQVNLX1BSKCZycWQtPmlkbGUpLAorICAgICAgICAg ICAgICAgQ1BVTUFTS19QUigmcnFkLT50aWNrbGVkKSwKKyAgICAgICAgICAgICAgIENQVU1BU0tf UFIoJnJxZC0+c210X2lkbGUpKTsKICAgICB9CiAKICAgICBwcmludGsoIkRvbWFpbiBpbmZvOlxu Iik7CkBAIC0zNzIyLDE2ICszNzA3LDE1IEBAIGNzY2hlZDJfZHVtcChjb25zdCBzdHJ1Y3Qgc2No ZWR1bGVyICpvcHMpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBmb3JfZWFjaF9jcHUoaSwgJnBy di0+YWN0aXZlX3F1ZXVlcykKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcnFkLCAmcHJ2LT5y cWwsIHJxbCApCiAgICAgewotICAgICAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpy cWQgPSBwcnYtPnJxZCArIGk7CiAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKml0ZXIsICpydW5x ID0gJnJxZC0+cnVucTsKICAgICAgICAgaW50IGxvb3AgPSAwOwogCiAgICAgICAgIC8qIFdlIG5l ZWQgdGhlIGxvY2sgdG8gc2NhbiB0aGUgcnVucXVldWUuICovCiAgICAgICAgIHNwaW5fbG9jaygm cnFkLT5sb2NrKTsKIAotICAgICAgICBwcmludGsoIlJ1bnF1ZXVlICVkOlxuIiwgaSk7CisgICAg ICAgIHByaW50aygiUnVucXVldWUgJWQ6XG4iLCBycWQtPmlkKTsKIAogICAgICAgICBmb3JfZWFj aF9jcHUoaiwgJnJxZC0+YWN0aXZlKQogICAgICAgICAgICAgZHVtcF9wY3B1KG9wcywgaik7CkBA IC0zNzU2LDIwICszNzQwLDI4IEBAIGNzY2hlZDJfZHVtcChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVy ICpvcHMpCiBzdGF0aWMgdm9pZCAqCiBjc2NoZWQyX2FsbG9jX3BkYXRhKGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywgaW50IGNwdSkKIHsKKyAgICBzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpw cnYgPSBjc2NoZWQyX3ByaXYob3BzKTsKICAgICBzdHJ1Y3QgY3NjaGVkMl9wY3B1ICpzcGM7Cisg ICAgc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFkOwogCiAgICAgc3BjID0geHphbGxv YyhzdHJ1Y3QgY3NjaGVkMl9wY3B1KTsKICAgICBpZiAoIHNwYyA9PSBOVUxMICkKICAgICAgICAg cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAKLSAgICAvKiBOb3QgaW4gYW55IHJ1bnF1ZXVlIHll dCAqLwotICAgIHNwYy0+cnVucV9pZCA9IC0xOworICAgIHJxZCA9IGNwdV9hZGRfdG9fcnVucXVl dWUocHJ2LCBjcHUpOworICAgIGlmICggSVNfRVJSKHJxZCkgKQorICAgIHsKKyAgICAgICAgeGZy ZWUoc3BjKTsKKyAgICAgICAgcmV0dXJuIHJxZDsKKyAgICB9CisKKyAgICBzcGMtPnJxZCA9IHJx ZDsKIAogICAgIHJldHVybiBzcGM7CiB9CiAKIC8qIFJldHVybnMgdGhlIElEIG9mIHRoZSBydW5x dWV1ZSB0aGUgY3B1IGlzIGFzc2lnbmVkIHRvLiAqLwotc3RhdGljIHVuc2lnbmVkCitzdGF0aWMg c3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqCiBpbml0X3BkYXRhKHN0cnVjdCBjc2NoZWQy X3ByaXZhdGUgKnBydiwgc3RydWN0IGNzY2hlZDJfcGNwdSAqc3BjLAogICAgICAgICAgICB1bnNp Z25lZCBpbnQgY3B1KQogewpAQCAtMzc3OSwxOCArMzc3MSwyMyBAQCBpbml0X3BkYXRhKHN0cnVj dCBjc2NoZWQyX3ByaXZhdGUgKnBydiwgc3RydWN0IGNzY2hlZDJfcGNwdSAqc3BjLAogICAgIEFT U0VSVChyd19pc193cml0ZV9sb2NrZWQoJnBydi0+bG9jaykpOwogICAgIEFTU0VSVCghY3B1bWFz a190ZXN0X2NwdShjcHUsICZwcnYtPmluaXRpYWxpemVkKSk7CiAgICAgLyogQ1BVIGRhdGEgbmVl ZHMgdG8gYmUgYWxsb2NhdGVkLCBidXQgc3RpbGwgdW5pbml0aWFsaXplZC4gKi8KLSAgICBBU1NF UlQoc3BjICYmIHNwYy0+cnVucV9pZCA9PSAtMSk7CisgICAgQVNTRVJUKHNwYyk7CiAKLSAgICAv KiBGaWd1cmUgb3V0IHdoaWNoIHJ1bnF1ZXVlIHRvIHB1dCBpdCBpbiAqLwotICAgIHNwYy0+cnVu cV9pZCA9IGNwdV90b19ydW5xdWV1ZShwcnYsIGNwdSk7CisgICAgcnFkID0gc3BjLT5ycWQ7CiAK LSAgICBycWQgPSBwcnYtPnJxZCArIHNwYy0+cnVucV9pZDsKKyAgICBBU1NFUlQocnFkICYmICFj cHVtYXNrX3Rlc3RfY3B1KGNwdSwgJnNwYy0+cnFkLT5hY3RpdmUpKTsKIAotICAgIHByaW50ayhY RU5MT0dfSU5GTyAiQWRkaW5nIGNwdSAlZCB0byBydW5xdWV1ZSAlZFxuIiwgY3B1LCBzcGMtPnJ1 bnFfaWQpOwotICAgIGlmICggISBjcHVtYXNrX3Rlc3RfY3B1KHNwYy0+cnVucV9pZCwgJnBydi0+ YWN0aXZlX3F1ZXVlcykgKQorICAgIHByaW50ayhYRU5MT0dfSU5GTyAiQWRkaW5nIGNwdSAlZCB0 byBydW5xdWV1ZSAlZFxuIiwgY3B1LCBycWQtPmlkKTsKKyAgICBpZiAoICFycWQtPm5yX2NwdXMg KQogICAgIHsKICAgICAgICAgcHJpbnRrKFhFTkxPR19JTkZPICIgRmlyc3QgY3B1IG9uIHJ1bnF1 ZXVlLCBhY3RpdmF0aW5nXG4iKTsKLSAgICAgICAgYWN0aXZhdGVfcnVucXVldWUocHJ2LCBzcGMt PnJ1bnFfaWQpOworCisgICAgICAgIEJVR19PTighY3B1bWFza19lbXB0eSgmcnFkLT5hY3RpdmUp KTsKKyAgICAgICAgcnFkLT5tYXhfd2VpZ2h0ID0gMTsKKyAgICAgICAgSU5JVF9MSVNUX0hFQUQo JnJxZC0+c3ZjKTsKKyAgICAgICAgSU5JVF9MSVNUX0hFQUQoJnJxZC0+cnVucSk7CisgICAgICAg IHNwaW5fbG9ja19pbml0KCZycWQtPmxvY2spOworICAgICAgICBwcnYtPmFjdGl2ZV9xdWV1ZXMr KzsKICAgICB9CiAKICAgICBfX2NwdW1hc2tfc2V0X2NwdShjcHUsICZzcGMtPnNpYmxpbmdfbWFz ayk7CkBAIC0zODE0LDcgKzM4MTEsNyBAQCBpbml0X3BkYXRhKHN0cnVjdCBjc2NoZWQyX3ByaXZh dGUgKnBydiwgc3RydWN0IGNzY2hlZDJfcGNwdSAqc3BjLAogICAgIGlmICggcnFkLT5ucl9jcHVz ID09IDEgKQogICAgICAgICBycWQtPnBpY2tfYmlhcyA9IGNwdTsKIAotICAgIHJldHVybiBzcGMt PnJ1bnFfaWQ7CisgICAgcmV0dXJuIHJxZDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTM4MjMsMTQg KzM4MjAsMTQgQEAgY3NjaGVkMl9pbml0X3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9w cywgdm9pZCAqcGRhdGEsIGludCBjcHUpCiAgICAgc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2 ID0gY3NjaGVkMl9wcml2KG9wcyk7CiAgICAgc3BpbmxvY2tfdCAqb2xkX2xvY2s7CiAgICAgdW5z aWduZWQgbG9uZyBmbGFnczsKLSAgICB1bnNpZ25lZCBycWk7CisgICAgc3RydWN0IGNzY2hlZDJf cnVucXVldWVfZGF0YSAqcnFkOwogCiAgICAgd3JpdGVfbG9ja19pcnFzYXZlKCZwcnYtPmxvY2ss IGZsYWdzKTsKICAgICBvbGRfbG9jayA9IHBjcHVfc2NoZWR1bGVfbG9jayhjcHUpOwogCi0gICAg cnFpID0gaW5pdF9wZGF0YShwcnYsIHBkYXRhLCBjcHUpOworICAgIHJxZCA9IGluaXRfcGRhdGEo cHJ2LCBwZGF0YSwgY3B1KTsKICAgICAvKiBNb3ZlIHRoZSBzY2hlZHVsZXIgbG9jayB0byB0aGUg bmV3IHJ1bnEgbG9jay4gKi8KLSAgICBnZXRfc2NoZWRfcmVzKGNwdSktPnNjaGVkdWxlX2xvY2sg PSAmcHJ2LT5ycWRbcnFpXS5sb2NrOworICAgIGdldF9zY2hlZF9yZXMoY3B1KS0+c2NoZWR1bGVf bG9jayA9ICZycWQtPmxvY2s7CiAKICAgICAvKiBfTm90XyBwY3B1X3NjaGVkdWxlX3VubG9jaygp OiBzY2hlZHVsZV9sb2NrIG1heSBoYXZlIGNoYW5nZWQhICovCiAgICAgc3Bpbl91bmxvY2sob2xk X2xvY2spOwpAQCAtMzg0NCw3ICszODQxLDcgQEAgY3NjaGVkMl9zd2l0Y2hfc2NoZWQoc3RydWN0 IHNjaGVkdWxlciAqbmV3X29wcywgdW5zaWduZWQgaW50IGNwdSwKIHsKICAgICBzdHJ1Y3QgY3Nj aGVkMl9wcml2YXRlICpwcnYgPSBjc2NoZWQyX3ByaXYobmV3X29wcyk7CiAgICAgc3RydWN0IGNz Y2hlZDJfdW5pdCAqc3ZjID0gdmRhdGE7Ci0gICAgdW5zaWduZWQgcnFpOworICAgIHN0cnVjdCBj c2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZDsKIAogICAgIEFTU0VSVChwZGF0YSAmJiBzdmMgJiYg aXNfaWRsZV91bml0KHN2Yy0+dW5pdCkpOwogCkBAIC0zODYxLDcgKzM4NTgsNyBAQCBjc2NoZWQy X3N3aXRjaF9zY2hlZChzdHJ1Y3Qgc2NoZWR1bGVyICpuZXdfb3BzLCB1bnNpZ25lZCBpbnQgY3B1 LAogCiAgICAgc2NoZWRfaWRsZV91bml0KGNwdSktPnByaXYgPSB2ZGF0YTsKIAotICAgIHJxaSA9 IGluaXRfcGRhdGEocHJ2LCBwZGF0YSwgY3B1KTsKKyAgICBycWQgPSBpbml0X3BkYXRhKHBydiwg cGRhdGEsIGNwdSk7CiAKICAgICAvKgogICAgICAqIE5vdyB0aGF0IHdlIGtub3cgd2hhdCBydW5x dWV1ZSB3ZSdsbCBnbyBpbiwgZG91YmxlIGNoZWNrIHdoYXQncyBzYWlkCkBAIC0zODY5LDExICsz ODY2LDExIEBAIGNzY2hlZDJfc3dpdGNoX3NjaGVkKHN0cnVjdCBzY2hlZHVsZXIgKm5ld19vcHMs IHVuc2lnbmVkIGludCBjcHUsCiAgICAgICogdGhpcyBzY2hlZHVsZXIsIGFuZCBzbyBpdCdzIHNh ZmUgdG8gaGF2ZSB0YWtlbiBpdCAvYmVmb3JlLyBvdXIKICAgICAgKiBwcml2YXRlIGdsb2JhbCBs b2NrLgogICAgICAqLwotICAgIEFTU0VSVChnZXRfc2NoZWRfcmVzKGNwdSktPnNjaGVkdWxlX2xv Y2sgIT0gJnBydi0+cnFkW3JxaV0ubG9jayk7CisgICAgQVNTRVJUKGdldF9zY2hlZF9yZXMoY3B1 KS0+c2NoZWR1bGVfbG9jayAhPSAmcnFkLT5sb2NrKTsKIAogICAgIHdyaXRlX3VubG9jaygmcHJ2 LT5sb2NrKTsKIAotICAgIHJldHVybiAmcHJ2LT5ycWRbcnFpXS5sb2NrOworICAgIHJldHVybiAm cnFkLT5sb2NrOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMzg5OSwxNiArMzg5NiwxNiBAQCBjc2No ZWQyX2RlaW5pdF9wZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHZvaWQgKnBjcHUs IGludCBjcHUpCiAgICAgICogIDIuIGluaXRfcGRhdGEgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIG9u IHRoaXMgY3B1LCBhbmQgZGVpbml0X3BkYXRhCiAgICAgICogICAgICh1cyEpIG11c3Qgbm90IGhh dmUgYmVlbiBjYWxsZWQgb24gaXQgYWxyZWFkeS4KICAgICAgKi8KLSAgICBBU1NFUlQoc3BjICYm IHNwYy0+cnVucV9pZCAhPSAtMSk7CisgICAgQVNTRVJUKHNwYyAmJiBzcGMtPnJxZCk7CiAgICAg QVNTRVJUKGNwdW1hc2tfdGVzdF9jcHUoY3B1LCAmcHJ2LT5pbml0aWFsaXplZCkpOwogCiAgICAg LyogRmluZCB0aGUgb2xkIHJ1bnF1ZXVlIGFuZCByZW1vdmUgdGhpcyBjcHUgZnJvbSBpdCAqLwot ICAgIHJxZCA9IHBydi0+cnFkICsgc3BjLT5ydW5xX2lkOworICAgIHJxZCA9IHNwYy0+cnFkOwog CiAgICAgLyogTm8gbmVlZCB0byBzYXZlIElSUXMgaGVyZSwgdGhleSdyZSBhbHJlYWR5IGRpc2Fi bGVkICovCiAgICAgc3Bpbl9sb2NrKCZycWQtPmxvY2spOwogCi0gICAgcHJpbnRrKFhFTkxPR19J TkZPICJSZW1vdmluZyBjcHUgJWQgZnJvbSBydW5xdWV1ZSAlZFxuIiwgY3B1LCBzcGMtPnJ1bnFf aWQpOworICAgIHByaW50ayhYRU5MT0dfSU5GTyAiUmVtb3ZpbmcgY3B1ICVkIGZyb20gcnVucXVl dWUgJWRcbiIsIGNwdSwgcnFkLT5pZCk7CiAKICAgICBfX2NwdW1hc2tfY2xlYXJfY3B1KGNwdSwg JnJxZC0+aWRsZSk7CiAgICAgX19jcHVtYXNrX2NsZWFyX2NwdShjcHUsICZycWQtPnNtdF9pZGxl KTsKQEAgLTM5MjMsMTMgKzM5MjAsMTMgQEAgY3NjaGVkMl9kZWluaXRfcGRhdGEoY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCB2b2lkICpwY3B1LCBpbnQgY3B1KQogICAgIGlmICggcnFkLT5u cl9jcHVzID09IDAgKQogICAgIHsKICAgICAgICAgcHJpbnRrKFhFTkxPR19JTkZPICIgTm8gY3B1 cyBsZWZ0IG9uIHJ1bnF1ZXVlLCBkaXNhYmxpbmdcbiIpOwotICAgICAgICBkZWFjdGl2YXRlX3J1 bnF1ZXVlKHBydiwgc3BjLT5ydW5xX2lkKTsKKworICAgICAgICBCVUdfT04oIWNwdW1hc2tfZW1w dHkoJnJxZC0+YWN0aXZlKSk7CisgICAgICAgIHBydi0+YWN0aXZlX3F1ZXVlcy0tOwogICAgIH0K ICAgICBlbHNlIGlmICggcnFkLT5waWNrX2JpYXMgPT0gY3B1ICkKICAgICAgICAgcnFkLT5waWNr X2JpYXMgPSBjcHVtYXNrX2ZpcnN0KCZycWQtPmFjdGl2ZSk7CiAKLSAgICBzcGMtPnJ1bnFfaWQg PSAtMTsKLQogICAgIHNwaW5fdW5sb2NrKCZycWQtPmxvY2spOwogCiAgICAgX19jcHVtYXNrX2Ns ZWFyX2NwdShjcHUsICZwcnYtPmluaXRpYWxpemVkKTsKQEAgLTM5NDIsMTggKzM5MzksMjkgQEAg Y3NjaGVkMl9kZWluaXRfcGRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCB2b2lkICpw Y3B1LCBpbnQgY3B1KQogc3RhdGljIHZvaWQKIGNzY2hlZDJfZnJlZV9wZGF0YShjb25zdCBzdHJ1 Y3Qgc2NoZWR1bGVyICpvcHMsIHZvaWQgKnBjcHUsIGludCBjcHUpCiB7CisgICAgc3RydWN0IGNz Y2hlZDJfcHJpdmF0ZSAqcHJ2ID0gY3NjaGVkMl9wcml2KG9wcyk7CiAgICAgc3RydWN0IGNzY2hl ZDJfcGNwdSAqc3BjID0gcGNwdTsKKyAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpy cWQ7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKIAotICAgIC8qCi0gICAgICogcGNwdSBlaXRo ZXIgcG9pbnRzIHRvIGEgdmFsaWQgc3RydWN0IGNzY2hlZDJfcGNwdSwgb3IgaXMgTlVMTCAoaWYK LSAgICAgKiBDUFUgYnJpbmd1cCBmYWlsZWQsIGFuZCB3ZSdyZSBiZWVpbmcgY2FsbGVkIGZyb20g Q1BVX1VQX0NBTkNFTExFRCkuCi0gICAgICogeGZyZWUoKSBkb2VzIG5vdCByZWFsbHkgbWluZCwg YnV0IHdlIHdhbnQgdG8gYmUgc3VyZSB0aGF0IGVpdGhlcgotICAgICAqIGluaXRfcGRhdGEgaGFz IG5ldmVyIGJlZW4gY2FsbGVkLCBvciBkZWluaXRfcGRhdGEgaGFzIGJlZW4gY2FsbGVkCi0gICAg ICogYWxyZWFkeS4KLSAgICAgKi8KLSAgICBBU1NFUlQoIXBjcHUgfHwgc3BjLT5ydW5xX2lkID09 IC0xKTsKLSAgICBBU1NFUlQoIWNwdW1hc2tfdGVzdF9jcHUoY3B1LCAmY3NjaGVkMl9wcml2KG9w cyktPmluaXRpYWxpemVkKSk7CisgICAgaWYgKCAhc3BjICkKKyAgICAgICAgcmV0dXJuOworCisg ICAgd3JpdGVfbG9ja19pcnFzYXZlKCZwcnYtPmxvY2ssIGZsYWdzKTsKKworICAgIHJxZCA9IHNw Yy0+cnFkOworICAgIEFTU0VSVChycWQgJiYgcnFkLT5yZWZjbnQpOworICAgIEFTU0VSVCghY3B1 bWFza190ZXN0X2NwdShjcHUsICZwcnYtPmluaXRpYWxpemVkKSk7CisKKyAgICBycWQtPnJlZmNu dC0tOworICAgIGlmICggIXJxZC0+cmVmY250ICkKKyAgICAgICAgbGlzdF9kZWwoJnJxZC0+cnFs KTsKKyAgICBlbHNlCisgICAgICAgIHJxZCA9IE5VTEw7CisKKyAgICB3cml0ZV91bmxvY2tfaXJx cmVzdG9yZSgmcHJ2LT5sb2NrLCBmbGFncyk7CiAKKyAgICB4ZnJlZShycWQpOwogICAgIHhmcmVl KHBjcHUpOwogfQogCkBAIC0zOTg3LDcgKzM5OTUsNiBAQCBjc2NoZWQyX2dsb2JhbF9pbml0KHZv aWQpCiBzdGF0aWMgaW50CiBjc2NoZWQyX2luaXQoc3RydWN0IHNjaGVkdWxlciAqb3BzKQogewot ICAgIGludCBpOwogICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydjsKIAogICAgIHByaW50 aygiSW5pdGlhbGl6aW5nIENyZWRpdDIgc2NoZWR1bGVyXG4iKTsKQEAgLTQwMjAsMTggKzQwMjcs OSBAQCBjc2NoZWQyX2luaXQoc3RydWN0IHNjaGVkdWxlciAqb3BzKQogICAgIG9wcy0+c2NoZWRf ZGF0YSA9IHBydjsKIAogICAgIHJ3bG9ja19pbml0KCZwcnYtPmxvY2spOworICAgIElOSVRfTElT VF9IRUFEKCZwcnYtPnJxbCk7CiAgICAgSU5JVF9MSVNUX0hFQUQoJnBydi0+c2RvbSk7CiAKLSAg ICAvKiBBbGxvY2F0ZSBhbGwgcnVucXVldWVzIGFuZCBtYXJrIHRoZW0gYXMgdW4taW5pdGlhbGl6 ZWQgKi8KLSAgICBwcnYtPnJxZCA9IHh6YWxsb2NfYXJyYXkoc3RydWN0IGNzY2hlZDJfcnVucXVl dWVfZGF0YSwgbnJfY3B1X2lkcyk7Ci0gICAgaWYgKCAhcHJ2LT5ycWQgKQotICAgIHsKLSAgICAg ICAgeGZyZWUocHJ2KTsKLSAgICAgICAgcmV0dXJuIC1FTk9NRU07Ci0gICAgfQotICAgIGZvciAo IGkgPSAwOyBpIDwgbnJfY3B1X2lkczsgaSsrICkKLSAgICAgICAgcHJ2LT5ycWRbaV0uaWQgPSAt MTsKLQogICAgIC8qIGluaXRpYWxpemUgcmF0ZWxpbWl0ICovCiAgICAgcHJ2LT5yYXRlbGltaXRf dXMgPSBzY2hlZF9yYXRlbGltaXRfdXM7CiAKQEAgLTQwNDksOCArNDA0Nyw2IEBAIGNzY2hlZDJf ZGVpbml0KHN0cnVjdCBzY2hlZHVsZXIgKm9wcykKIAogICAgIHBydiA9IGNzY2hlZDJfcHJpdihv cHMpOwogICAgIG9wcy0+c2NoZWRfZGF0YSA9IE5VTEw7Ci0gICAgaWYgKCBwcnYgKQotICAgICAg ICB4ZnJlZShwcnYtPnJxZCk7CiAgICAgeGZyZWUocHJ2KTsKIH0KIAotLSAKMi4xNi40CgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54 ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==