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 2679EC11D05 for ; Thu, 20 Feb 2020 13:40:17 +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 DE18620658 for ; Thu, 20 Feb 2020 13:40:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DE18620658 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 1j4m3X-0006XQ-8t; Thu, 20 Feb 2020 13:39:55 +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 1j4m3V-0006XL-Qt for xen-devel@lists.xenproject.org; Thu, 20 Feb 2020 13:39:53 +0000 X-Inumbo-ID: 785ad3a6-53e6-11ea-852c-12813bfff9fa Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 785ad3a6-53e6-11ea-852c-12813bfff9fa; Thu, 20 Feb 2020 13:39:52 +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 23C3DAD68; Thu, 20 Feb 2020 13:39:51 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Date: Thu, 20 Feb 2020 14:39:49 +0100 Message-Id: <20200220133949.29832-1-jgross@suse.com> X-Mailer: git-send-email 2.16.4 Subject: [Xen-devel] [PATCH v2] 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 cm9zcyA8amdyb3NzQHN1c2UuY29tPgotLS0KVjI6Ci0gYWRkZWQgdHdvIGNvbW1lbnRzIChEYXJp byBGYWdnaW9saSkKLS0tCiB4ZW4vY29tbW9uL3NjaGVkL2NyZWRpdDIuYyB8IDM3MSArKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAx ODMgaW5zZXJ0aW9ucygrKSwgMTg4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9jb21t b24vc2NoZWQvY3JlZGl0Mi5jIGIveGVuL2NvbW1vbi9zY2hlZC9jcmVkaXQyLmMKaW5kZXggN2Qx MDRmMTVkMC4uOGFlM2I4MGQyZSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zY2hlZC9jcmVkaXQy LmMKKysrIGIveGVuL2NvbW1vbi9zY2hlZC9jcmVkaXQyLmMKQEAgLTQ2Nyw4ICs0NjcsMTIgQEAg Y3VzdG9tX3BhcmFtKCJjcmVkaXQyX3J1bnF1ZXVlIiwgcGFyc2VfY3JlZGl0Ml9ydW5xdWV1ZSk7 CiBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhIHsKICAgICBzcGlubG9ja190IGxvY2s7ICAg ICAgICAgICAvKiBMb2NrIGZvciB0aGlzIHJ1bnF1ZXVlICAgICAgICAgICAgICAgICAgICAgKi8K IAorICAgIHN0cnVjdCBsaXN0X2hlYWQgcnFsOyAgICAgIC8qIExpc3Qgb2YgcnVucXVldWVzICAg ICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgIHN0cnVjdCBsaXN0X2hlYWQgcnVucTsgICAg IC8qIE9yZGVyZWQgbGlzdCBvZiBydW5uYWJsZSB2bXMgICAgICAgICAgICAgICAqLworICAgIHVu c2lnbmVkIGludCByZWZjbnQ7ICAgICAgIC8qIEhvdyBtYW55IENQVXMgcmVmZXJlbmNlIHRoaXMg cnVucXVldWUgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpbmNs dWRpbmcgbm90IHlldCBhY3RpdmUgb25lcykgICAgICAgICAgICAqLwogICAgIHVuc2lnbmVkIGlu dCBucl9jcHVzOyAgICAgIC8qIEhvdyBtYW55IENQVXMgYXJlIHNoYXJpbmcgdGhpcyBydW5xdWV1 ZSAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvbmx5IGFjdGl2ZSBv bmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgIGludCBpZDsgICAgICAgICAgICAg ICAgICAgIC8qIElEIG9mIHRoaXMgcnVucXVldWUgKC0xIGlmIGludmFsaWQpICAgICAgICAqLwog CiAgICAgaW50IGxvYWQ7ICAgICAgICAgICAgICAgICAgLyogSW5zdGFudGFuZW91cyBsb2FkIChu dW0gb2Ygbm9uLWlkbGUgdW5pdHMpICovCkBAIC00OTYsOCArNTAwLDggQEAgc3RydWN0IGNzY2hl ZDJfcHJpdmF0ZSB7CiAgICAgdW5zaWduZWQgaW50IGxvYWRfd2luZG93X3NoaWZ0OyAgICAvKiBM ZW5naHQgb2YgbG9hZCBkZWNheWluZyB3aW5kb3cgICAgICovCiAgICAgdW5zaWduZWQgaW50IHJh dGVsaW1pdF91czsgICAgICAgICAvKiBSYXRlIGxpbWl0aW5nIGZvciB0aGlzIHNjaGVkdWxlciAg ICovCiAKLSAgICBjcHVtYXNrX3QgYWN0aXZlX3F1ZXVlczsgICAgICAgICAgIC8qIFJ1bnF1ZXVl cyB3aXRoIChtYXliZSkgYWN0aXZlIGNwdXMgKi8KLSAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1 ZV9kYXRhICpycWQ7IC8qIERhdGEgb2YgdGhlIHZhcmlvdXMgcnVucXVldWVzICAgICAgKi8KKyAg ICB1bnNpZ25lZCBpbnQgYWN0aXZlX3F1ZXVlczsgICAgICAgIC8qIE51bWJlciBvZiBhY3RpdmUg cnVucXVldWVzICAgICAgICAgKi8KKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIHJxbDsgICAgICAgICAg ICAgIC8qIExpc3Qgb2YgcnVucXVldWVzICAgICAgICAgICAgICAgICAgKi8KIAogICAgIGNwdW1h c2tfdCBpbml0aWFsaXplZDsgICAgICAgICAgICAgLyogQ1BVcyBwYXJ0IG9mIHRoaXMgc2NoZWR1 bGVyICAgICAgICAqLwogICAgIHN0cnVjdCBsaXN0X2hlYWQgc2RvbTsgICAgICAgICAgICAgLyog TGlzdCBvZiBkb21haW5zIChmb3IgZGVidWcga2V5KSAgICAqLwpAQCAtNTA4LDcgKzUxMiw3IEBA IHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgewogICovCiBzdHJ1Y3QgY3NjaGVkMl9wY3B1IHsKICAg ICBjcHVtYXNrX3Qgc2libGluZ19tYXNrOyAgICAgICAgICAgIC8qIFNpYmxpbmdzIGluIHRoZSBz YW1lIHJ1bnF1ZXVlICAgICAgKi8KLSAgICBpbnQgcnVucV9pZDsKKyAgICBzdHJ1Y3QgY3NjaGVk Ml9ydW5xdWV1ZV9kYXRhICpycWQ7IC8qIFJ1bnF1ZXVlIGZvciB0aGlzIENQVSAgICAgICAgICAg ICAgKi8KIH07CiAKIC8qCkBAIC01ODYsMTQgKzU5MCwxMyBAQCBzdGF0aWMgaW5saW5lIHN0cnVj dCBjc2NoZWQyX2RvbSAqY3NjaGVkMl9kb20oY29uc3Qgc3RydWN0IGRvbWFpbiAqZCkKIC8qIENQ VSB0byBydW5xX2lkIG1hY3JvICovCiBzdGF0aWMgaW5saW5lIGludCBjMnIodW5zaWduZWQgaW50 IGNwdSkKIHsKLSAgICByZXR1cm4gY3NjaGVkMl9wY3B1KGNwdSktPnJ1bnFfaWQ7CisgICAgcmV0 dXJuIGNzY2hlZDJfcGNwdShjcHUpLT5ycWQtPmlkOwogfQogCiAvKiBDUFUgdG8gcnVucXVldWUg c3RydWN0IG1hY3JvICovCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2Rh dGEgKmMycnFkKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNwdSkKK3N0YXRp YyBpbmxpbmUgc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqYzJycWQodW5zaWduZWQgaW50 IGNwdSkKIHsKLSAgICByZXR1cm4gJmNzY2hlZDJfcHJpdihvcHMpLT5ycWRbYzJyKGNwdSldOwor ICAgIHJldHVybiBjc2NoZWQyX3BjcHUoY3B1KS0+cnFkOwogfQogCiAvKiBEb2VzIHRoZSBkb21h aW4gb2YgdGhpcyB1bml0IGhhdmUgYSBjYXA/ICovCkBAIC04MDQsMzYgKzgwNyw2IEBAIHN0YXRp YyBpbmxpbmUgc3RydWN0IGNzY2hlZDJfdW5pdCAqIHJ1bnFfZWxlbShzdHJ1Y3QgbGlzdF9oZWFk ICplbGVtKQogICAgIHJldHVybiBsaXN0X2VudHJ5KGVsZW0sIHN0cnVjdCBjc2NoZWQyX3VuaXQs IHJ1bnFfZWxlbSk7CiB9CiAKLXN0YXRpYyB2b2lkIGFjdGl2YXRlX3J1bnF1ZXVlKHN0cnVjdCBj c2NoZWQyX3ByaXZhdGUgKnBydiwgaW50IHJxaSkKLXsKLSAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5x dWV1ZV9kYXRhICpycWQ7Ci0KLSAgICBycWQgPSBwcnYtPnJxZCArIHJxaTsKLQotICAgIEJVR19P TighY3B1bWFza19lbXB0eSgmcnFkLT5hY3RpdmUpKTsKLQotICAgIHJxZC0+bWF4X3dlaWdodCA9 IDE7Ci0gICAgcnFkLT5pZCA9IHJxaTsKLSAgICBJTklUX0xJU1RfSEVBRCgmcnFkLT5zdmMpOwot ICAgIElOSVRfTElTVF9IRUFEKCZycWQtPnJ1bnEpOwotICAgIHNwaW5fbG9ja19pbml0KCZycWQt PmxvY2spOwotCi0gICAgX19jcHVtYXNrX3NldF9jcHUocnFpLCAmcHJ2LT5hY3RpdmVfcXVldWVz KTsKLX0KLQotc3RhdGljIHZvaWQgZGVhY3RpdmF0ZV9ydW5xdWV1ZShzdHJ1Y3QgY3NjaGVkMl9w cml2YXRlICpwcnYsIGludCBycWkpCi17Ci0gICAgc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0 YSAqcnFkOwotCi0gICAgcnFkID0gcHJ2LT5ycWQgKyBycWk7Ci0KLSAgICBCVUdfT04oIWNwdW1h c2tfZW1wdHkoJnJxZC0+YWN0aXZlKSk7Ci0KLSAgICBycWQtPmlkID0gLTE7Ci0KLSAgICBfX2Nw dW1hc2tfY2xlYXJfY3B1KHJxaSwgJnBydi0+YWN0aXZlX3F1ZXVlcyk7Ci19Ci0KIHN0YXRpYyBp bmxpbmUgYm9vbCBzYW1lX25vZGUodW5zaWduZWQgaW50IGNwdWEsIHVuc2lnbmVkIGludCBjcHVi KQogewogICAgIHJldHVybiBjcHVfdG9fbm9kZShjcHVhKSA9PSBjcHVfdG9fbm9kZShjcHViKTsK QEAgLTg1MCw1MSArODIzLDczIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzYW1lX2NvcmUodW5zaWdu ZWQgaW50IGNwdWEsIHVuc2lnbmVkIGludCBjcHViKQogICAgICAgICAgICBjcHVfdG9fY29yZShj cHVhKSA9PSBjcHVfdG9fY29yZShjcHViKTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGludAotY3B1 X3RvX3J1bnF1ZXVlKGNvbnN0IHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiwgdW5zaWduZWQg aW50IGNwdSkKK3N0YXRpYyBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICoKK2NwdV9hZGRf dG9fcnVucXVldWUoc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2LCB1bnNpZ25lZCBpbnQgY3B1 KQogewotICAgIGNvbnN0IHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZDsKLSAgICB1 bnNpZ25lZCBpbnQgcnFpOworICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwg KnJxZF9uZXc7CisgICAgc3RydWN0IGxpc3RfaGVhZCAqcnFkX2luczsKKyAgICB1bnNpZ25lZCBs b25nIGZsYWdzOworICAgIGludCBycWkgPSAwOworICAgIGJvb2wgcnFpX3VudXNlZCA9IGZhbHNl LCBycWRfdmFsaWQgPSBmYWxzZTsKIAotICAgIGZvciAoIHJxaSA9IDA7IHJxaSA8IG5yX2NwdV9p ZHM7IHJxaSsrICkKKyAgICAvKiBQcmVhbGxvYyBpbiBjYXNlIHdlIG5lZWQgaXQgLSBub3QgYWxs b3dlZCB3aXRoIGludGVycnVwdHMgb2ZmLiAqLworICAgIHJxZF9uZXcgPSB4emFsbG9jKHN0cnVj dCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEpOworCisgICAgd3JpdGVfbG9ja19pcnFzYXZlKCZwcnYt PmxvY2ssIGZsYWdzKTsKKworICAgIHJxZF9pbnMgPSAmcHJ2LT5ycWw7CisgICAgbGlzdF9mb3Jf ZWFjaF9lbnRyeSAoIHJxZCwgJnBydi0+cnFsLCBycWwgKQogICAgIHsKICAgICAgICAgdW5zaWdu ZWQgaW50IHBlZXJfY3B1OwogCi0gICAgICAgIC8qCi0gICAgICAgICAqIEFzIHNvb24gYXMgd2Ug Y29tZSBhY3Jvc3MgYW4gdW5pbml0aWFsaXplZCBydW5xdWV1ZSwgdXNlIGl0LgotICAgICAgICAg KiBJbiBmYWN0LCBlaXRoZXI6Ci0gICAgICAgICAqICAtIHdlIGFyZSBpbml0aWFsaXppbmcgdGhl IGZpcnN0IGNwdSwgYW5kIHdlIGFzc2lnbiBpdCB0bwotICAgICAgICAgKiAgICBydW5xdWV1ZSAw LiBUaGlzIGlzIGhhbmR5LCBlc3BlY2lhbGx5IGlmIHdlIGFyZSBkZWFsaW5nCi0gICAgICAgICAq ICAgIHdpdGggdGhlIGJvb3QgY3B1IChpZiBjcmVkaXQyIGlzIHRoZSBkZWZhdWx0IHNjaGVkdWxl ciksCi0gICAgICAgICAqICAgIGFzIHdlIHdvdWxkIG5vdCBiZSBhYmxlIHRvIHVzZSBjcHVfdG9f c29ja2V0KCkgYW5kIHNpbWlsYXIKLSAgICAgICAgICogICAgaGVscGVycyBhbnl3YXkgKHRoZXkn cmUgcmVzdWx0IG9mIHdoaWNoIGlzIG5vdCByZWxpYWJsZSB5ZXQpOwotICAgICAgICAgKiAgLSB3 ZSBoYXZlIGdvbmUgdGhyb3VnaCBhbGwgdGhlIGFjdGl2ZSBydW5xdWV1ZXMsIGFuZCBoYXZlIG5v dAotICAgICAgICAgKiAgICBmb3VuZCBhbnlvbmUgd2hvc2UgY3B1cycgdG9wb2xvZ3kgbWF0Y2hl cyB0aGUgb25lIHdlIGFyZQotICAgICAgICAgKiAgICBkZWFsaW5nIHdpdGgsIHNvIGFjdGl2YXRp bmcgYSBuZXcgcnVucXVldWUgaXMgd2hhdCB3ZSB3YW50LgotICAgICAgICAgKi8KLSAgICAgICAg aWYgKCBwcnYtPnJxZFtycWldLmlkID09IC0xICkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg ICAgIHJxZCA9IHBydi0+cnFkICsgcnFpOwotICAgICAgICBCVUdfT04oY3B1bWFza19lbXB0eSgm cnFkLT5hY3RpdmUpKTsKKyAgICAgICAgLyogUmVtZW1iZXIgZmlyc3QgdW51c2VkIHF1ZXVlIGlu ZGV4LiAqLworICAgICAgICBpZiAoICFycWlfdW51c2VkICYmIHJxZC0+aWQgPiBycWkgKQorICAg ICAgICAgICAgcnFpX3VudXNlZCA9IHRydWU7CiAKLSAgICAgICAgcGVlcl9jcHUgPSBjcHVtYXNr X2ZpcnN0KCZycWQtPmFjdGl2ZSk7CisgICAgICAgIHBlZXJfY3B1ID0gcnFkLT5waWNrX2JpYXM7 CiAgICAgICAgIEJVR19PTihjcHVfdG9fc29ja2V0KGNwdSkgPT0gWEVOX0lOVkFMSURfU09DS0VU X0lEIHx8CiAgICAgICAgICAgICAgICBjcHVfdG9fc29ja2V0KHBlZXJfY3B1KSA9PSBYRU5fSU5W QUxJRF9TT0NLRVRfSUQpOwogCi0gICAgICAgIGlmIChvcHRfcnVucXVldWUgPT0gT1BUX1JVTlFV RVVFX0NQVSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAvKiBPUFRfUlVOUVVFVUVf Q1BVIHdpbGwgbmV2ZXIgZmluZCBhbiBleGlzdGluZyBydW5xdWV1ZS4gKi8KICAgICAgICAgaWYg KCBvcHRfcnVucXVldWUgPT0gT1BUX1JVTlFVRVVFX0FMTCB8fAogICAgICAgICAgICAgIChvcHRf cnVucXVldWUgPT0gT1BUX1JVTlFVRVVFX0NPUkUgJiYgc2FtZV9jb3JlKHBlZXJfY3B1LCBjcHUp KSB8fAogICAgICAgICAgICAgIChvcHRfcnVucXVldWUgPT0gT1BUX1JVTlFVRVVFX1NPQ0tFVCAm JiBzYW1lX3NvY2tldChwZWVyX2NwdSwgY3B1KSkgfHwKICAgICAgICAgICAgICAob3B0X3J1bnF1 ZXVlID09IE9QVF9SVU5RVUVVRV9OT0RFICYmIHNhbWVfbm9kZShwZWVyX2NwdSwgY3B1KSkgKQor ICAgICAgICB7CisgICAgICAgICAgICBycWRfdmFsaWQgPSB0cnVlOwogICAgICAgICAgICAgYnJl YWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoICFycWlfdW51c2VkICkKKyAgICAgICAgewor ICAgICAgICAgICAgcnFpKys7CisgICAgICAgICAgICBycWRfaW5zID0gJnJxZC0+cnFsOworICAg ICAgICB9CisgICAgfQorCisgICAgaWYgKCAhcnFkX3ZhbGlkICkKKyAgICB7CisgICAgICAgIGlm ICggIXJxZF9uZXcgKQorICAgICAgICB7CisgICAgICAgICAgICBycWQgPSBFUlJfUFRSKC1FTk9N RU0pOworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICAgICAgcnFkID0gcnFk X25ldzsKKyAgICAgICAgcnFkX25ldyA9IE5VTEw7CisKKyAgICAgICAgbGlzdF9hZGQoJnJxZC0+ cnFsLCBycWRfaW5zKTsKKyAgICAgICAgcnFkLT5waWNrX2JpYXMgPSBjcHU7CisgICAgICAgIHJx ZC0+aWQgPSBycWk7CiAgICAgfQogCi0gICAgLyogV2UgcmVhbGx5IGV4cGVjdCB0byBiZSBhYmxl IHRvIGFzc2lnbiBlYWNoIGNwdSB0byBhIHJ1bnF1ZXVlLiAqLwotICAgIEJVR19PTihycWkgPj0g bnJfY3B1X2lkcyk7CisgICAgcnFkLT5yZWZjbnQrKzsKIAotICAgIHJldHVybiBycWk7Cisgb3V0 OgorICAgIHdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZwcnYtPmxvY2ssIGZsYWdzKTsKKworICAg IHhmcmVlKHJxZF9uZXcpOworCisgICAgcmV0dXJuIHJxZDsKIH0KIAogLyogRmluZCB0aGUgZG9t YWluIHdpdGggdGhlIGhpZ2hlc3Qgd2VpZ2h0LiAqLwpAQCAtOTcyLDEzICs5NjcsMTMgQEAgX3J1 bnFfYXNzaWduKHN0cnVjdCBjc2NoZWQyX3VuaXQgKnN2Yywgc3RydWN0IGNzY2hlZDJfcnVucXVl dWVfZGF0YSAqcnFkKQogfQogCiBzdGF0aWMgdm9pZAotcnVucV9hc3NpZ24oY29uc3Qgc3RydWN0 IHNjaGVkdWxlciAqb3BzLCBjb25zdCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKK3J1bnFfYXNz aWduKGNvbnN0IHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogewogICAgIHN0cnVjdCBjc2NoZWQy X3VuaXQgKnN2YyA9IHVuaXQtPnByaXY7CiAKICAgICBBU1NFUlQoc3ZjLT5ycWQgPT0gTlVMTCk7 CiAKLSAgICBfcnVucV9hc3NpZ24oc3ZjLCBjMnJxZChvcHMsIHNjaGVkX3VuaXRfbWFzdGVyKHVu aXQpKSk7CisgICAgX3J1bnFfYXNzaWduKHN2YywgYzJycWQoc2NoZWRfdW5pdF9tYXN0ZXIodW5p dCkpKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTk5OSwxMSArOTk0LDExIEBAIF9ydW5xX2RlYXNz aWduKHN0cnVjdCBjc2NoZWQyX3VuaXQgKnN2YykKIH0KIAogc3RhdGljIHZvaWQKLXJ1bnFfZGVh c3NpZ24oY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBjb25zdCBzdHJ1Y3Qgc2NoZWRfdW5p dCAqdW5pdCkKK3J1bnFfZGVhc3NpZ24oY29uc3Qgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiB7 CiAgICAgc3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjID0gdW5pdC0+cHJpdjsKIAotICAgIEFTU0VS VChzdmMtPnJxZCA9PSBjMnJxZChvcHMsIHNjaGVkX3VuaXRfbWFzdGVyKHVuaXQpKSk7CisgICAg QVNTRVJUKHN2Yy0+cnFkID09IGMycnFkKHNjaGVkX3VuaXRfbWFzdGVyKHVuaXQpKSk7CiAKICAg ICBfcnVucV9kZWFzc2lnbihzdmMpOwogfQpAQCAtMTI3MiwxMiArMTI2NywxMSBAQCB1cGRhdGVf bG9hZChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsCiAgICAgICAgIHVwZGF0ZV9zdmNfbG9h ZChvcHMsIHN2YywgY2hhbmdlLCBub3cpOwogfQogCi1zdGF0aWMgdm9pZAotcnVucV9pbnNlcnQo Y29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgY3NjaGVkMl91bml0ICpzdmMpCitz dGF0aWMgdm9pZCBydW5xX2luc2VydChzdHJ1Y3QgY3NjaGVkMl91bml0ICpzdmMpCiB7CiAgICAg c3RydWN0IGxpc3RfaGVhZCAqaXRlcjsKICAgICB1bnNpZ25lZCBpbnQgY3B1ID0gc2NoZWRfdW5p dF9tYXN0ZXIoc3ZjLT51bml0KTsKLSAgICBzdHJ1Y3QgbGlzdF9oZWFkICogcnVucSA9ICZjMnJx ZChvcHMsIGNwdSktPnJ1bnE7CisgICAgc3RydWN0IGxpc3RfaGVhZCAqcnVucSA9ICZjMnJxZChj cHUpLT5ydW5xOwogICAgIGludCBwb3MgPSAwOwogCiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2Vk KGdldF9zY2hlZF9yZXMoY3B1KS0+c2NoZWR1bGVfbG9jaykpOwpAQCAtMTM2Niw3ICsxMzYwLDcg QEAgc3RhdGljIGlubGluZSBib29sIGlzX3ByZWVtcHRhYmxlKGNvbnN0IHN0cnVjdCBjc2NoZWQy X3VuaXQgKnN2YywKIHN0YXRpYyBzX3RpbWVfdCB0aWNrbGVfc2NvcmUoY29uc3Qgc3RydWN0IHNj aGVkdWxlciAqb3BzLCBzX3RpbWVfdCBub3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCBjc2NoZWQyX3VuaXQgKm5ldywgdW5zaWduZWQgaW50IGNwdSkKIHsKLSAg ICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQgPSBjMnJxZChvcHMsIGNwdSk7Cisg ICAgc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFkID0gYzJycWQoY3B1KTsKICAgICBz dHJ1Y3QgY3NjaGVkMl91bml0ICogY3VyID0gY3NjaGVkMl91bml0KGN1cnJfb25fY3B1KGNwdSkp OwogICAgIGNvbnN0IHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IGNzY2hlZDJfcHJpdihv cHMpOwogICAgIHNfdGltZV90IHNjb3JlOwpAQCAtMTQ0Miw3ICsxNDM2LDcgQEAgcnVucV90aWNr bGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgY3NjaGVkMl91bml0ICpuZXcs IHNfdGltZV90IG5vdykKICAgICBzX3RpbWVfdCBtYXggPSAwOwogICAgIHN0cnVjdCBzY2hlZF91 bml0ICp1bml0ID0gbmV3LT51bml0OwogICAgIHVuc2lnbmVkIGludCBicywgY3B1ID0gc2NoZWRf dW5pdF9tYXN0ZXIodW5pdCk7Ci0gICAgc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFk ID0gYzJycWQob3BzLCBjcHUpOworICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJx ZCA9IGMycnFkKGNwdSk7CiAgICAgY29uc3QgY3B1bWFza190ICpvbmxpbmUgPSBjcHVwb29sX2Rv bWFpbl9tYXN0ZXJfY3B1bWFzayh1bml0LT5kb21haW4pOwogICAgIGNwdW1hc2tfdCBtYXNrOwog CkBAIC0xNjE4LDEwICsxNjEyLDkgQEAgcnVucV90aWNrbGUoY29uc3Qgc3RydWN0IHNjaGVkdWxl ciAqb3BzLCBzdHJ1Y3QgY3NjaGVkMl91bml0ICpuZXcsIHNfdGltZV90IG5vdykKIC8qCiAgKiBD cmVkaXQtcmVsYXRlZCBjb2RlCiAgKi8KLXN0YXRpYyB2b2lkIHJlc2V0X2NyZWRpdChjb25zdCBz dHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBjcHUsIHNfdGltZV90IG5vdywKLSAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgY3NjaGVkMl91bml0ICpzbmV4dCkKK3N0YXRpYyB2b2lkIHJl c2V0X2NyZWRpdChpbnQgY3B1LCBzX3RpbWVfdCBub3csIHN0cnVjdCBjc2NoZWQyX3VuaXQgKnNu ZXh0KQogewotICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCA9IGMycnFkKG9w cywgY3B1KTsKKyAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQgPSBjMnJxZChj cHUpOwogICAgIHN0cnVjdCBsaXN0X2hlYWQgKml0ZXI7CiAgICAgaW50IG07CiAKQEAgLTE5MTAs NyArMTkwMyw3IEBAIHVucGFya19wYXJrZWRfdW5pdHMoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAq b3BzLCBzdHJ1Y3QgbGlzdF9oZWFkICp1bml0cykKICAgICAgICAgICAgICAqIGZvciB0aGUgbmV3 bHkgcmVwbGVuaXNoZWQgYnVkZ2V0LgogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBBU1NF UlQoIHN2Yy0+cnFkICE9IE5VTEwgKTsKLSAgICAgICAgICAgIEFTU0VSVCggYzJycWQob3BzLCBz Y2hlZF91bml0X21hc3RlcihzdmMtPnVuaXQpKSA9PSBzdmMtPnJxZCApOworICAgICAgICAgICAg QVNTRVJUKCBjMnJxZChzY2hlZF91bml0X21hc3RlcihzdmMtPnVuaXQpKSA9PSBzdmMtPnJxZCAp OwogICAgICAgICAgICAgX19zZXRfYml0KF9fQ1NGTEFHX2RlbGF5ZWRfcnVucV9hZGQsICZzdmMt PmZsYWdzKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICggdW5pdF9ydW5uYWJsZShzdmMt PnVuaXQpICkKQEAgLTE5MjMsNyArMTkxNiw3IEBAIHVucGFya19wYXJrZWRfdW5pdHMoY29uc3Qg c3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgbGlzdF9oZWFkICp1bml0cykKICAgICAgICAg ICAgICAqLwogICAgICAgICAgICAgbm93ID0gTk9XKCk7CiAgICAgICAgICAgICB1cGRhdGVfbG9h ZChvcHMsIHN2Yy0+cnFkLCBzdmMsIDEsIG5vdyk7Ci0gICAgICAgICAgICBydW5xX2luc2VydChv cHMsIHN2Yyk7CisgICAgICAgICAgICBydW5xX2luc2VydChzdmMpOwogICAgICAgICAgICAgcnVu cV90aWNrbGUob3BzLCBzdmMsIG5vdyk7CiAgICAgICAgIH0KICAgICAgICAgbGlzdF9kZWxfaW5p dCgmc3ZjLT5wYXJrZWRfZWxlbSk7CkBAIC0yMDg4LDcgKzIwODEsNyBAQCBjc2NoZWQyX3VuaXRf c2xlZXAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5p dCkKICAgICB9CiAgICAgZWxzZSBpZiAoIHVuaXRfb25fcnVucShzdmMpICkKICAgICB7Ci0gICAg ICAgIEFTU0VSVChzdmMtPnJxZCA9PSBjMnJxZChvcHMsIHNjaGVkX3VuaXRfbWFzdGVyKHVuaXQp KSk7CisgICAgICAgIEFTU0VSVChzdmMtPnJxZCA9PSBjMnJxZChzY2hlZF91bml0X21hc3Rlcih1 bml0KSkpOwogICAgICAgICB1cGRhdGVfbG9hZChvcHMsIHN2Yy0+cnFkLCBzdmMsIC0xLCBOT1co KSk7CiAgICAgICAgIHJ1bnFfcmVtb3ZlKHN2Yyk7CiAgICAgfQpAQCAtMjEzNSwxNiArMjEyOCwx NiBAQCBjc2NoZWQyX3VuaXRfd2FrZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVj dCBzY2hlZF91bml0ICp1bml0KQogCiAgICAgLyogQWRkIGludG8gdGhlIG5ldyBydW5xdWV1ZSBp ZiBuZWNlc3NhcnkgKi8KICAgICBpZiAoIHN2Yy0+cnFkID09IE5VTEwgKQotICAgICAgICBydW5x X2Fzc2lnbihvcHMsIHVuaXQpOworICAgICAgICBydW5xX2Fzc2lnbih1bml0KTsKICAgICBlbHNl Ci0gICAgICAgIEFTU0VSVChjMnJxZChvcHMsIHNjaGVkX3VuaXRfbWFzdGVyKHVuaXQpKSA9PSBz dmMtPnJxZCApOworICAgICAgICBBU1NFUlQoYzJycWQoc2NoZWRfdW5pdF9tYXN0ZXIodW5pdCkp ID09IHN2Yy0+cnFkICk7CiAKICAgICBub3cgPSBOT1coKTsKIAogICAgIHVwZGF0ZV9sb2FkKG9w cywgc3ZjLT5ycWQsIHN2YywgMSwgbm93KTsKIAogICAgIC8qIFB1dCB0aGUgVU5JVCBvbiB0aGUg cnVucSAqLwotICAgIHJ1bnFfaW5zZXJ0KG9wcywgc3ZjKTsKKyAgICBydW5xX2luc2VydChzdmMp OwogICAgIHJ1bnFfdGlja2xlKG9wcywgc3ZjLCBub3cpOwogCiBvdXQ6CkBAIC0yMTY4LDcgKzIx NjEsNyBAQCBjc2NoZWQyX2NvbnRleHRfc2F2ZWQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3Bz LCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKICAgICBMSVNUX0hFQUQod2VyZV9wYXJrZWQpOwog CiAgICAgQVNTRVJUKGlzX2lkbGVfdW5pdCh1bml0KSB8fAotICAgICAgICAgICBzdmMtPnJxZCA9 PSBjMnJxZChvcHMsIHNjaGVkX3VuaXRfbWFzdGVyKHVuaXQpKSk7CisgICAgICAgICAgIHN2Yy0+ cnFkID09IGMycnFkKHNjaGVkX3VuaXRfbWFzdGVyKHVuaXQpKSk7CiAKICAgICAvKiBUaGlzIHVu aXQgaXMgbm93IGVsaWdpYmxlIHRvIGJlIHB1dCBvbiB0aGUgcnVucXVldWUgYWdhaW4gKi8KICAg ICBfX2NsZWFyX2JpdChfX0NTRkxBR19zY2hlZHVsZWQsICZzdmMtPmZsYWdzKTsKQEAgLTIxODks NyArMjE4Miw3IEBAIGNzY2hlZDJfY29udGV4dF9zYXZlZChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVy ICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogICAgIHsKICAgICAgICAgQVNTRVJUKCF1 bml0X29uX3J1bnEoc3ZjKSk7CiAKLSAgICAgICAgcnVucV9pbnNlcnQob3BzLCBzdmMpOworICAg ICAgICBydW5xX2luc2VydChzdmMpOwogICAgICAgICBydW5xX3RpY2tsZShvcHMsIHN2Yywgbm93 KTsKICAgICB9CiAgICAgZWxzZSBpZiAoICFpc19pZGxlX3VuaXQodW5pdCkgKQpAQCAtMjIwNSwx MyArMjE5OCwxMyBAQCBzdGF0aWMgc3RydWN0IHNjaGVkX3Jlc291cmNlICoKIGNzY2hlZDJfcmVz X3BpY2soY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBjb25zdCBzdHJ1Y3Qgc2NoZWRfdW5p dCAqdW5pdCkKIHsKICAgICBzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYgPSBjc2NoZWQyX3By aXYob3BzKTsKLSAgICBpbnQgaSwgbWluX3JxaSA9IC0xLCBtaW5fc19ycWkgPSAtMTsKICAgICB1 bnNpZ25lZCBpbnQgbmV3X2NwdSwgY3B1ID0gc2NoZWRfdW5pdF9tYXN0ZXIodW5pdCk7CiAgICAg c3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjID0gY3NjaGVkMl91bml0KHVuaXQpOwogICAgIHNfdGlt ZV90IG1pbl9hdmdsb2FkID0gTUFYX0xPQUQsIG1pbl9zX2F2Z2xvYWQgPSBNQVhfTE9BRDsKICAg ICBib29sIGhhc19zb2Z0OworICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwg Km1pbl9ycWQgPSBOVUxMLCAqbWluX3NfcnFkID0gTlVMTDsKIAotICAgIEFTU0VSVCghY3B1bWFz a19lbXB0eSgmcHJ2LT5hY3RpdmVfcXVldWVzKSk7CisgICAgQVNTRVJUKCFsaXN0X2VtcHR5KCZw cnYtPnJxbCkpOwogCiAgICAgU0NIRURfU1RBVF9DUkFOSyhwaWNrX3Jlc291cmNlKTsKIApAQCAt MjI4OSwxMyArMjI4MiwxMCBAQCBjc2NoZWQyX3Jlc19waWNrKGNvbnN0IHN0cnVjdCBzY2hlZHVs ZXIgKm9wcywgY29uc3Qgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgICogRmluZCBib3Ro IHJ1bnF1ZXVlcyBpbiBvbmUgcGFzcy4KICAgICAgKi8KICAgICBoYXNfc29mdCA9IGhhc19zb2Z0 X2FmZmluaXR5KHVuaXQpOwotICAgIGZvcl9lYWNoX2NwdShpLCAmcHJ2LT5hY3RpdmVfcXVldWVz KQorICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBycWQsICZwcnYtPnJxbCwgcnFsICkKICAgICB7 Ci0gICAgICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZDsKICAgICAgICAgc190 aW1lX3QgcnFkX2F2Z2xvYWQgPSBNQVhfTE9BRDsKIAotICAgICAgICBycWQgPSBwcnYtPnJxZCAr IGk7Ci0KICAgICAgICAgLyoKICAgICAgICAgICogSWYgbm9uZSBvZiB0aGUgY3B1cyBvZiB0aGlz IHJ1bnF1ZXVlIGlzIGluIHN2YydzIGhhcmQtYWZmaW5pdHksCiAgICAgICAgICAqIHNraXAgdGhl IHJ1bnF1ZXVlLgpAQCAtMjMzOCwxOCArMjMyOCwxOCBAQCBjc2NoZWQyX3Jlc19waWNrKGNvbnN0 IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgY29uc3Qgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAg ICAgICAgICAgICBpZiAoIGNwdW1hc2tfaW50ZXJzZWN0cygmbWFzaywgdW5pdC0+Y3B1X3NvZnRf YWZmaW5pdHkpICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBtaW5fc19hdmdsb2Fk ID0gcnFkX2F2Z2xvYWQ7Ci0gICAgICAgICAgICAgICAgbWluX3NfcnFpID0gaTsKKyAgICAgICAg ICAgICAgICBtaW5fc19ycWQgPSBycWQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg ICAgLyogSW4gYW55IGNhc2UsIGtlZXAgdGhlICJoYXJkLWFmZmluaXR5IG1pbmltdW0iIHVwZGF0 ZWQgdG9vLiAqLwogICAgICAgICBpZiAoIHJxZF9hdmdsb2FkIDwgbWluX2F2Z2xvYWQgKQogICAg ICAgICB7CiAgICAgICAgICAgICBtaW5fYXZnbG9hZCA9IHJxZF9hdmdsb2FkOwotICAgICAgICAg ICAgbWluX3JxaSA9IGk7CisgICAgICAgICAgICBtaW5fcnFkID0gcnFkOwogICAgICAgICB9CiAg ICAgfQogCi0gICAgaWYgKCBoYXNfc29mdCAmJiBtaW5fc19ycWkgIT0gLTEgKQorICAgIGlmICgg aGFzX3NvZnQgJiYgbWluX3NfcnFkICkKICAgICB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIFdl IGhhdmUgc29mdCBhZmZpbml0eSwgYW5kIHdlIGhhdmUgYSBjYW5kaWRhdGUgcnVucSwgc28gZ28g Zm9yIGl0LgpAQCAtMjM2OSw5ICsyMzU5LDkgQEAgY3NjaGVkMl9yZXNfcGljayhjb25zdCBzdHJ1 Y3Qgc2NoZWR1bGVyICpvcHMsIGNvbnN0IHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogICAgICAg ICBjcHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSksIGNwdW1hc2tfc2NyYXRjaF9j cHUoY3B1KSwKICAgICAgICAgICAgICAgICAgICAgdW5pdC0+Y3B1X3NvZnRfYWZmaW5pdHkpOwog ICAgICAgICBjcHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSksIGNwdW1hc2tfc2Ny YXRjaF9jcHUoY3B1KSwKLSAgICAgICAgICAgICAgICAgICAgJnBydi0+cnFkW21pbl9zX3JxaV0u YWN0aXZlKTsKKyAgICAgICAgICAgICAgICAgICAgJm1pbl9zX3JxZC0+YWN0aXZlKTsKICAgICB9 Ci0gICAgZWxzZSBpZiAoIG1pbl9ycWkgIT0gLTEgKQorICAgIGVsc2UgaWYgKCBtaW5fcnFkICkK ICAgICB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIEVpdGhlciB3ZSBkb24ndCBoYXZlIHNvZnQt YWZmaW5pdHksIG9yIHdlIGRvLCBidXQgd2UgZGlkIG5vdCBmaW5kCkBAIC0yMzgzLDcgKzIzNzMs NyBAQCBjc2NoZWQyX3Jlc19waWNrKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgY29uc3Qg c3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgICAgICAqIHdpdGggdGhlIGNwdXMgb2YgdGhl IHJ1bnEuCiAgICAgICAgICAqLwogICAgICAgICBjcHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0Y2hf Y3B1KGNwdSksIGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwKLSAgICAgICAgICAgICAgICAgICAg JnBydi0+cnFkW21pbl9ycWldLmFjdGl2ZSk7CisgICAgICAgICAgICAgICAgICAgICZtaW5fcnFk LT5hY3RpdmUpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMjM5MiwxNCArMjM4MiwxMyBA QCBjc2NoZWQyX3Jlc19waWNrKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgY29uc3Qgc3Ry dWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgICAgICAqIGNvbnRlbnRpb24pLgogICAgICAgICAg Ki8KICAgICAgICAgbmV3X2NwdSA9IGdldF9mYWxsYmFja19jcHUoc3ZjKTsKLSAgICAgICAgbWlu X3JxaSA9IGMycihuZXdfY3B1KTsKLSAgICAgICAgbWluX2F2Z2xvYWQgPSBwcnYtPnJxZFttaW5f cnFpXS5iX2F2Z2xvYWQ7CisgICAgICAgIG1pbl9ycWQgPSBjMnJxZChuZXdfY3B1KTsKKyAgICAg ICAgbWluX2F2Z2xvYWQgPSBtaW5fcnFkLT5iX2F2Z2xvYWQ7CiAgICAgICAgIGdvdG8gb3V0X3Vw OwogICAgIH0KIAotICAgIG5ld19jcHUgPSBjcHVtYXNrX2N5Y2xlKHBydi0+cnFkW21pbl9ycWld LnBpY2tfYmlhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVtYXNrX3NjcmF0Y2hf Y3B1KGNwdSkpOwotICAgIHBydi0+cnFkW21pbl9ycWldLnBpY2tfYmlhcyA9IG5ld19jcHU7Cisg ICAgbmV3X2NwdSA9IGNwdW1hc2tfY3ljbGUobWluX3JxZC0+cGlja19iaWFzLCBjcHVtYXNrX3Nj cmF0Y2hfY3B1KGNwdSkpOworICAgIG1pbl9ycWQtPnBpY2tfYmlhcyA9IG5ld19jcHU7CiAgICAg QlVHX09OKG5ld19jcHUgPj0gbnJfY3B1X2lkcyk7CiAKICBvdXRfdXA6CkBAIC0yNDE0LDcgKzI0 MDMsNyBAQCBjc2NoZWQyX3Jlc19waWNrKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgY29u c3Qgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgICAgIH0gZDsKICAgICAgICAgZC5kb20g PSB1bml0LT5kb21haW4tPmRvbWFpbl9pZDsKICAgICAgICAgZC51bml0ID0gdW5pdC0+dW5pdF9p ZDsKLSAgICAgICAgZC5ycV9pZCA9IG1pbl9ycWk7CisgICAgICAgIGQucnFfaWQgPSBtaW5fcnFk LT5pZDsKICAgICAgICAgZC5iX2F2Z2xvYWQgPSBtaW5fYXZnbG9hZDsKICAgICAgICAgZC5uZXdf Y3B1ID0gbmV3X2NwdTsKICAgICAgICAgX190cmFjZV92YXIoVFJDX0NTQ0hFRDJfUElDS0VEX0NQ VSwgMSwKQEAgLTI1MjcsNyArMjUxNiw3IEBAIHN0YXRpYyB2b2lkIG1pZ3JhdGUoY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLAogICAgICAgICBpZiAoIG9uX3J1bnEgKQogICAgICAgICB7CiAg ICAgICAgICAgICB1cGRhdGVfbG9hZChvcHMsIHN2Yy0+cnFkLCBOVUxMLCAxLCBub3cpOwotICAg ICAgICAgICAgcnVucV9pbnNlcnQob3BzLCBzdmMpOworICAgICAgICAgICAgcnVucV9pbnNlcnQo c3ZjKTsKICAgICAgICAgICAgIHJ1bnFfdGlja2xlKG9wcywgc3ZjLCBub3cpOwogICAgICAgICAg ICAgU0NIRURfU1RBVF9DUkFOSyhtaWdyYXRlX29uX3J1bnEpOwogICAgICAgICB9CkBAIC0yNTU3 LDkgKzI1NDYsOSBAQCBzdGF0aWMgYm9vbCB1bml0X2lzX21pZ3JhdGVhYmxlKGNvbnN0IHN0cnVj dCBjc2NoZWQyX3VuaXQgKnN2YywKIHN0YXRpYyB2b2lkIGJhbGFuY2VfbG9hZChjb25zdCBzdHJ1 Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBjcHUsIHNfdGltZV90IG5vdykKIHsKICAgICBzdHJ1Y3Qg Y3NjaGVkMl9wcml2YXRlICpwcnYgPSBjc2NoZWQyX3ByaXYob3BzKTsKLSAgICBpbnQgaSwgbWF4 X2RlbHRhX3JxaTsKICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwdXNoX2l0ZXIsICpwdWxsX2l0ZXI7 CiAgICAgYm9vbCBpbm5lcl9sb2FkX3VwZGF0ZWQgPSAwOworICAgIHN0cnVjdCBjc2NoZWQyX3J1 bnF1ZXVlX2RhdGEgKnJxZCwgKm1heF9kZWx0YV9ycWQ7CiAKICAgICBiYWxhbmNlX3N0YXRlX3Qg c3QgPSB7IC5iZXN0X3B1c2hfc3ZjID0gTlVMTCwgLmJlc3RfcHVsbF9zdmMgPSBOVUxMIH07CiAK QEAgLTI1NzEsMjIgKzI1NjAsMjIgQEAgc3RhdGljIHZvaWQgYmFsYW5jZV9sb2FkKGNvbnN0IHN0 cnVjdCBzY2hlZHVsZXIgKm9wcywgaW50IGNwdSwgc190aW1lX3Qgbm93KQogICAgICAqLwogCiAg ICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKGdldF9zY2hlZF9yZXMoY3B1KS0+c2NoZWR1bGVfbG9j aykpOwotICAgIHN0LmxycWQgPSBjMnJxZChvcHMsIGNwdSk7CisgICAgc3QubHJxZCA9IGMycnFk KGNwdSk7CiAKICAgICB1cGRhdGVfcnVucV9sb2FkKG9wcywgc3QubHJxZCwgMCwgbm93KTsKIAog cmV0cnk6Ci0gICAgbWF4X2RlbHRhX3JxaSA9IC0xOworICAgIG1heF9kZWx0YV9ycWQgPSBOVUxM OwogICAgIGlmICggIXJlYWRfdHJ5bG9jaygmcHJ2LT5sb2NrKSApCiAgICAgICAgIHJldHVybjsK IAogICAgIHN0LmxvYWRfZGVsdGEgPSAwOwogCi0gICAgZm9yX2VhY2hfY3B1KGksICZwcnYtPmFj dGl2ZV9xdWV1ZXMpCisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHJxZCwgJnBydi0+cnFsLCBy cWwgKQogICAgIHsKICAgICAgICAgc190aW1lX3QgZGVsdGE7CiAKLSAgICAgICAgc3Qub3JxZCA9 IHBydi0+cnFkICsgaTsKKyAgICAgICAgc3Qub3JxZCA9IHJxZDsKIAogICAgICAgICBpZiAoIHN0 Lm9ycWQgPT0gc3QubHJxZAogICAgICAgICAgICAgIHx8ICFzcGluX3RyeWxvY2soJnN0Lm9ycWQt PmxvY2spICkKQEAgLTI2MDEsNyArMjU5MCw3IEBAIHJldHJ5OgogICAgICAgICBpZiAoIGRlbHRh ID4gc3QubG9hZF9kZWx0YSApCiAgICAgICAgIHsKICAgICAgICAgICAgIHN0LmxvYWRfZGVsdGEg PSBkZWx0YTsKLSAgICAgICAgICAgIG1heF9kZWx0YV9ycWkgPSBpOworICAgICAgICAgICAgbWF4 X2RlbHRhX3JxZCA9IHJxZDsKICAgICAgICAgfQogCiAgICAgICAgIHNwaW5fdW5sb2NrKCZzdC5v cnFkLT5sb2NrKTsKQEAgLTI2MDksNyArMjU5OCw3IEBAIHJldHJ5OgogCiAgICAgLyogTWluaW1p emUgaG9sZGluZyB0aGUgcHJpdmF0ZSBzY2hlZHVsZXIgbG9jay4gKi8KICAgICByZWFkX3VubG9j aygmcHJ2LT5sb2NrKTsKLSAgICBpZiAoIG1heF9kZWx0YV9ycWkgPT0gLTEgKQorICAgIGlmICgg IW1heF9kZWx0YV9ycWQgKQogICAgICAgICBnb3RvIG91dDsKIAogICAgIHsKQEAgLTI2MjEsMTAg KzI2MTAsNyBAQCByZXRyeToKICAgICAgICAgaWYgKCBzdC5vcnFkLT5iX2F2Z2xvYWQgPiBsb2Fk X21heCApCiAgICAgICAgICAgICBsb2FkX21heCA9IHN0Lm9ycWQtPmJfYXZnbG9hZDsKIAotICAg ICAgICBjcHVzX21heCA9IHN0LmxycWQtPm5yX2NwdXM7Ci0gICAgICAgIGkgPSBzdC5vcnFkLT5u cl9jcHVzOwotICAgICAgICBpZiAoIGkgPiBjcHVzX21heCApCi0gICAgICAgICAgICBjcHVzX21h eCA9IGk7CisgICAgICAgIGNwdXNfbWF4ID0gbWF4KHN0LmxycWQtPm5yX2NwdXMsIHN0Lm9ycWQt Pm5yX2NwdXMpOwogCiAgICAgICAgIGlmICggdW5saWtlbHkodGJfaW5pdF9kb25lKSApCiAgICAg ICAgIHsKQEAgLTI2NjAsNyArMjY0Niw3IEBAIHJldHJ5OgogICAgICAqIG1lYW50aW1lLCB0cnkg dGhlIHByb2Nlc3Mgb3ZlciBhZ2Fpbi4gIFRoaXMgY2FuJ3QgZGVhZGxvY2sKICAgICAgKiBiZWNh dXNlIGlmIGl0IGRvZXNuJ3QgZ2V0IGFueSBvdGhlciBycWQgbG9ja3MsIGl0IHdpbGwgc2ltcGx5 CiAgICAgICogZ2l2ZSB1cCBhbmQgcmV0dXJuLiAqLwotICAgIHN0Lm9ycWQgPSBwcnYtPnJxZCAr IG1heF9kZWx0YV9ycWk7CisgICAgc3Qub3JxZCA9IG1heF9kZWx0YV9ycWQ7CiAgICAgaWYgKCAh c3Bpbl90cnlsb2NrKCZzdC5vcnFkLT5sb2NrKSApCiAgICAgICAgIGdvdG8gcmV0cnk7CiAKQEAg LTI3NTEsNyArMjczNyw3IEBAIGNzY2hlZDJfdW5pdF9taWdyYXRlKAogICAgIEFTU0VSVChjcHVt YXNrX3Rlc3RfY3B1KG5ld19jcHUsICZjc2NoZWQyX3ByaXYob3BzKS0+aW5pdGlhbGl6ZWQpKTsK ICAgICBBU1NFUlQoY3B1bWFza190ZXN0X2NwdShuZXdfY3B1LCB1bml0LT5jcHVfaGFyZF9hZmZp bml0eSkpOwogCi0gICAgdHJxZCA9IGMycnFkKG9wcywgbmV3X2NwdSk7CisgICAgdHJxZCA9IGMy cnFkKG5ld19jcHUpOwogCiAgICAgLyoKICAgICAgKiBEbyB0aGUgYWN0dWFsIG1vdmVtZW50IHRv d2FyZCBuZXdfY3B1LCBhbmQgdXBkYXRlIHZjLT5wcm9jZXNzb3IuCkBAIC0yODE1LDcgKzI4MDEs NyBAQCBjc2NoZWQyX2RvbV9jbnRsKAogICAgICAgICAgICAgICAgIHN0cnVjdCBjc2NoZWQyX3Vu aXQgKnN2YyA9IGNzY2hlZDJfdW5pdCh1bml0KTsKICAgICAgICAgICAgICAgICBzcGlubG9ja190 ICpsb2NrID0gdW5pdF9zY2hlZHVsZV9sb2NrKHVuaXQpOwogCi0gICAgICAgICAgICAgICAgQVNT RVJUKHN2Yy0+cnFkID09IGMycnFkKG9wcywgc2NoZWRfdW5pdF9tYXN0ZXIodW5pdCkpKTsKKyAg ICAgICAgICAgICAgICBBU1NFUlQoc3ZjLT5ycWQgPT0gYzJycWQoc2NoZWRfdW5pdF9tYXN0ZXIo dW5pdCkpKTsKIAogICAgICAgICAgICAgICAgIHN2Yy0+d2VpZ2h0ID0gc2RvbS0+d2VpZ2h0Owog ICAgICAgICAgICAgICAgIHVwZGF0ZV9tYXhfd2VpZ2h0KHN2Yy0+cnFkLCBzdmMtPndlaWdodCwg b2xkX3dlaWdodCk7CkBAIC0yODk4LDcgKzI4ODQsNyBAQCBjc2NoZWQyX2RvbV9jbnRsKAogICAg ICAgICAgICAgICAgICAgICBpZiAoIHVuaXQtPmlzX3J1bm5pbmcgKQogICAgICAgICAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY3B1ID0gc2NoZWRf dW5pdF9tYXN0ZXIodW5pdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3NjaGVk Ml9ydW5xdWV1ZV9kYXRhICpycWQgPSBjMnJxZChvcHMsIGNwdSk7CisgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQgPSBjMnJxZChjcHUpOwog CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY3Vycl9vbl9jcHUoY3B1KSA9PSB1bml0 KTsKIApAQCAtMzA5Myw3ICszMDc5LDcgQEAgY3NjaGVkMl91bml0X2luc2VydChjb25zdCBzdHJ1 Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogICAgIGxvY2sgPSB1 bml0X3NjaGVkdWxlX2xvY2tfaXJxKHVuaXQpOwogCiAgICAgLyogQWRkIHVuaXQgdG8gcnVucXVl dWUgb2YgaW5pdGlhbCBwcm9jZXNzb3IgKi8KLSAgICBydW5xX2Fzc2lnbihvcHMsIHVuaXQpOwor ICAgIHJ1bnFfYXNzaWduKHVuaXQpOwogCiAgICAgdW5pdF9zY2hlZHVsZV91bmxvY2tfaXJxKGxv Y2ssIHVuaXQpOwogCkBAIC0zMTI2LDcgKzMxMTIsNyBAQCBjc2NoZWQyX3VuaXRfcmVtb3ZlKGNv bnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAg LyogUmVtb3ZlIGZyb20gcnVucXVldWUgKi8KICAgICBsb2NrID0gdW5pdF9zY2hlZHVsZV9sb2Nr X2lycSh1bml0KTsKIAotICAgIHJ1bnFfZGVhc3NpZ24ob3BzLCB1bml0KTsKKyAgICBydW5xX2Rl YXNzaWduKHVuaXQpOwogCiAgICAgdW5pdF9zY2hlZHVsZV91bmxvY2tfaXJxKGxvY2ssIHVuaXQp OwogCkBAIC0zMTQwLDcgKzMxMjYsNyBAQCBjc2NoZWQyX3J1bnRpbWUoY29uc3Qgc3RydWN0IHNj aGVkdWxlciAqb3BzLCBpbnQgY3B1LAogewogICAgIHNfdGltZV90IHRpbWUsIG1pbl90aW1lOwog ICAgIGludCBydF9jcmVkaXQ7IC8qIFByb3Bvc2VkIHJ1bnRpbWUgbWVhc3VyZWQgaW4gY3JlZGl0 cyAqLwotICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCA9IGMycnFkKG9wcywg Y3B1KTsKKyAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQgPSBjMnJxZChjcHUp OwogICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJ1bnEgPSAmcnFkLT5ydW5xOwogICAgIGNvbnN0IHN0 cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IGNzY2hlZDJfcHJpdihvcHMpOwogCkBAIC0zNDM3 LDcgKzM0MjMsNyBAQCBzdGF0aWMgdm9pZCBjc2NoZWQyX3NjaGVkdWxlKAogCiAgICAgQlVHX09O KCFjcHVtYXNrX3Rlc3RfY3B1KHNjaGVkX2NwdSwgJmNzY2hlZDJfcHJpdihvcHMpLT5pbml0aWFs aXplZCkpOwogCi0gICAgcnFkID0gYzJycWQob3BzLCBzY2hlZF9jcHUpOworICAgIHJxZCA9IGMy cnFkKHNjaGVkX2NwdSk7CiAgICAgQlVHX09OKCFjcHVtYXNrX3Rlc3RfY3B1KHNjaGVkX2NwdSwg JnJxZC0+YWN0aXZlKSk7CiAKICAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoZ2V0X3NjaGVkX3Jl cyhzY2hlZF9jcHUpLT5zY2hlZHVsZV9sb2NrKSk7CkBAIC0zNTUxLDcgKzM1MzcsNyBAQCBzdGF0 aWMgdm9pZCBjc2NoZWQyX3NjaGVkdWxlKAogICAgICAgICAgKi8KICAgICAgICAgaWYgKCBza2lw cGVkX3VuaXRzID09IDAgJiYgc25leHQtPmNyZWRpdCA8PSBDU0NIRUQyX0NSRURJVF9SRVNFVCAp CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc2V0X2NyZWRpdChvcHMsIHNjaGVkX2NwdSwgbm93 LCBzbmV4dCk7CisgICAgICAgICAgICByZXNldF9jcmVkaXQoc2NoZWRfY3B1LCBub3csIHNuZXh0 KTsKICAgICAgICAgICAgIGJhbGFuY2VfbG9hZChvcHMsIHNjaGVkX2NwdSwgbm93KTsKICAgICAg ICAgfQogCkBAIC0zNjUwLDcgKzM2MzYsOCBAQCBjc2NoZWQyX2R1bXAoY29uc3Qgc3RydWN0IHNj aGVkdWxlciAqb3BzKQogICAgIHN0cnVjdCBsaXN0X2hlYWQgKml0ZXJfc2RvbTsKICAgICBzdHJ1 Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYgPSBjc2NoZWQyX3ByaXYob3BzKTsKICAgICB1bnNpZ25l ZCBsb25nIGZsYWdzOwotICAgIHVuc2lnbmVkIGludCBpLCBqLCBsb29wOworICAgIHVuc2lnbmVk IGludCBqLCBsb29wOworICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZDsKIAog ICAgIC8qCiAgICAgICogV2UgbmVlZCB0aGUgcHJpdmF0ZSBzY2hlZHVsZXIgbG9jayBhcyB3ZSBh Y2Nlc3MgZ2xvYmFsCkBAIC0zNjYwLDEzICszNjQ3LDEzIEBAIGNzY2hlZDJfZHVtcChjb25zdCBz dHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCiAKICAgICBwcmludGsoIkFjdGl2ZSBxdWV1ZXM6ICVkXG4i CiAgICAgICAgICAgICJcdGRlZmF1bHQtd2VpZ2h0ICAgICA9ICVkXG4iLAotICAgICAgICAgICBj cHVtYXNrX3dlaWdodCgmcHJ2LT5hY3RpdmVfcXVldWVzKSwKKyAgICAgICAgICAgcHJ2LT5hY3Rp dmVfcXVldWVzLAogICAgICAgICAgICBDU0NIRUQyX0RFRkFVTFRfV0VJR0hUKTsKLSAgICBmb3Jf ZWFjaF9jcHUoaSwgJnBydi0+YWN0aXZlX3F1ZXVlcykKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5 ICggcnFkLCAmcHJ2LT5ycWwsIHJxbCApCiAgICAgewogICAgICAgICBzX3RpbWVfdCBmcmFjdGlv bjsKIAotICAgICAgICBmcmFjdGlvbiA9IChwcnYtPnJxZFtpXS5hdmdsb2FkICogMTAwKSA+PiBw cnYtPmxvYWRfcHJlY2lzaW9uX3NoaWZ0OworICAgICAgICBmcmFjdGlvbiA9IChycWQtPmF2Z2xv YWQgKiAxMDApID4+IHBydi0+bG9hZF9wcmVjaXNpb25fc2hpZnQ7CiAKICAgICAgICAgcHJpbnRr KCJSdW5xdWV1ZSAlZDpcbiIKICAgICAgICAgICAgICAgICJcdG5jcHVzICAgICAgICAgICAgICA9 ICV1XG4iCkBAIC0zNjc1LDIxICszNjYyLDIxIEBAIGNzY2hlZDJfZHVtcChjb25zdCBzdHJ1Y3Qg c2NoZWR1bGVyICpvcHMpCiAgICAgICAgICAgICAgICAiXHRwaWNrX2JpYXMgICAgICAgICAgPSAl dVxuIgogICAgICAgICAgICAgICAgIlx0aW5zdGxvYWQgICAgICAgICAgID0gJWRcbiIKICAgICAg ICAgICAgICAgICJcdGF2ZWxvYWQgICAgICAgICAgICA9ICUiUFJJX3N0aW1lIiAofiUiUFJJX3N0 aW1lIiUlKVxuIiwKLSAgICAgICAgICAgICAgIGksCi0gICAgICAgICAgICAgICBwcnYtPnJxZFtp XS5ucl9jcHVzLAotICAgICAgICAgICAgICAgQ1BVTUFTS19QUigmcHJ2LT5ycWRbaV0uYWN0aXZl KSwKLSAgICAgICAgICAgICAgIHBydi0+cnFkW2ldLm1heF93ZWlnaHQsCi0gICAgICAgICAgICAg ICBwcnYtPnJxZFtpXS5waWNrX2JpYXMsCi0gICAgICAgICAgICAgICBwcnYtPnJxZFtpXS5sb2Fk LAotICAgICAgICAgICAgICAgcHJ2LT5ycWRbaV0uYXZnbG9hZCwKKyAgICAgICAgICAgICAgIHJx ZC0+aWQsCisgICAgICAgICAgICAgICBycWQtPm5yX2NwdXMsCisgICAgICAgICAgICAgICBDUFVN QVNLX1BSKCZycWQtPmFjdGl2ZSksCisgICAgICAgICAgICAgICBycWQtPm1heF93ZWlnaHQsCisg ICAgICAgICAgICAgICBycWQtPnBpY2tfYmlhcywKKyAgICAgICAgICAgICAgIHJxZC0+bG9hZCwK KyAgICAgICAgICAgICAgIHJxZC0+YXZnbG9hZCwKICAgICAgICAgICAgICAgIGZyYWN0aW9uKTsK IAogICAgICAgICBwcmludGsoIlx0aWRsZXJzOiAlKnBiXG4iCiAgICAgICAgICAgICAgICAiXHR0 aWNrbGVkOiAlKnBiXG4iCiAgICAgICAgICAgICAgICAiXHRmdWxseSBpZGxlIGNvcmVzOiAlKnBi XG4iLAotICAgICAgICAgICAgICAgQ1BVTUFTS19QUigmcHJ2LT5ycWRbaV0uaWRsZSksCi0gICAg ICAgICAgICAgICBDUFVNQVNLX1BSKCZwcnYtPnJxZFtpXS50aWNrbGVkKSwKLSAgICAgICAgICAg ICAgIENQVU1BU0tfUFIoJnBydi0+cnFkW2ldLnNtdF9pZGxlKSk7CisgICAgICAgICAgICAgICBD UFVNQVNLX1BSKCZycWQtPmlkbGUpLAorICAgICAgICAgICAgICAgQ1BVTUFTS19QUigmcnFkLT50 aWNrbGVkKSwKKyAgICAgICAgICAgICAgIENQVU1BU0tfUFIoJnJxZC0+c210X2lkbGUpKTsKICAg ICB9CiAKICAgICBwcmludGsoIkRvbWFpbiBpbmZvOlxuIik7CkBAIC0zNzIxLDE2ICszNzA4LDE1 IEBAIGNzY2hlZDJfZHVtcChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCiAgICAgICAgIH0K ICAgICB9CiAKLSAgICBmb3JfZWFjaF9jcHUoaSwgJnBydi0+YWN0aXZlX3F1ZXVlcykKKyAgICBs aXN0X2Zvcl9lYWNoX2VudHJ5ICggcnFkLCAmcHJ2LT5ycWwsIHJxbCApCiAgICAgewotICAgICAg ICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQgPSBwcnYtPnJxZCArIGk7CiAgICAg ICAgIHN0cnVjdCBsaXN0X2hlYWQgKml0ZXIsICpydW5xID0gJnJxZC0+cnVucTsKICAgICAgICAg aW50IGxvb3AgPSAwOwogCiAgICAgICAgIC8qIFdlIG5lZWQgdGhlIGxvY2sgdG8gc2NhbiB0aGUg cnVucXVldWUuICovCiAgICAgICAgIHNwaW5fbG9jaygmcnFkLT5sb2NrKTsKIAotICAgICAgICBw cmludGsoIlJ1bnF1ZXVlICVkOlxuIiwgaSk7CisgICAgICAgIHByaW50aygiUnVucXVldWUgJWQ6 XG4iLCBycWQtPmlkKTsKIAogICAgICAgICBmb3JfZWFjaF9jcHUoaiwgJnJxZC0+YWN0aXZlKQog ICAgICAgICAgICAgZHVtcF9wY3B1KG9wcywgaik7CkBAIC0zNzU1LDIwICszNzQxLDI4IEBAIGNz Y2hlZDJfZHVtcChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCiBzdGF0aWMgdm9pZCAqCiBj c2NoZWQyX2FsbG9jX3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgaW50IGNwdSkK IHsKKyAgICBzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYgPSBjc2NoZWQyX3ByaXYob3BzKTsK ICAgICBzdHJ1Y3QgY3NjaGVkMl9wY3B1ICpzcGM7CisgICAgc3RydWN0IGNzY2hlZDJfcnVucXVl dWVfZGF0YSAqcnFkOwogCiAgICAgc3BjID0geHphbGxvYyhzdHJ1Y3QgY3NjaGVkMl9wY3B1KTsK ICAgICBpZiAoIHNwYyA9PSBOVUxMICkKICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7 CiAKLSAgICAvKiBOb3QgaW4gYW55IHJ1bnF1ZXVlIHlldCAqLwotICAgIHNwYy0+cnVucV9pZCA9 IC0xOworICAgIHJxZCA9IGNwdV9hZGRfdG9fcnVucXVldWUocHJ2LCBjcHUpOworICAgIGlmICgg SVNfRVJSKHJxZCkgKQorICAgIHsKKyAgICAgICAgeGZyZWUoc3BjKTsKKyAgICAgICAgcmV0dXJu IHJxZDsKKyAgICB9CisKKyAgICBzcGMtPnJxZCA9IHJxZDsKIAogICAgIHJldHVybiBzcGM7CiB9 CiAKIC8qIFJldHVybnMgdGhlIElEIG9mIHRoZSBydW5xdWV1ZSB0aGUgY3B1IGlzIGFzc2lnbmVk IHRvLiAqLwotc3RhdGljIHVuc2lnbmVkCitzdGF0aWMgc3RydWN0IGNzY2hlZDJfcnVucXVldWVf ZGF0YSAqCiBpbml0X3BkYXRhKHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiwgc3RydWN0IGNz Y2hlZDJfcGNwdSAqc3BjLAogICAgICAgICAgICB1bnNpZ25lZCBpbnQgY3B1KQogewpAQCAtMzc3 OCwxOCArMzc3MiwyMyBAQCBpbml0X3BkYXRhKHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiwg c3RydWN0IGNzY2hlZDJfcGNwdSAqc3BjLAogICAgIEFTU0VSVChyd19pc193cml0ZV9sb2NrZWQo JnBydi0+bG9jaykpOwogICAgIEFTU0VSVCghY3B1bWFza190ZXN0X2NwdShjcHUsICZwcnYtPmlu aXRpYWxpemVkKSk7CiAgICAgLyogQ1BVIGRhdGEgbmVlZHMgdG8gYmUgYWxsb2NhdGVkLCBidXQg c3RpbGwgdW5pbml0aWFsaXplZC4gKi8KLSAgICBBU1NFUlQoc3BjICYmIHNwYy0+cnVucV9pZCA9 PSAtMSk7CisgICAgQVNTRVJUKHNwYyk7CiAKLSAgICAvKiBGaWd1cmUgb3V0IHdoaWNoIHJ1bnF1 ZXVlIHRvIHB1dCBpdCBpbiAqLwotICAgIHNwYy0+cnVucV9pZCA9IGNwdV90b19ydW5xdWV1ZShw cnYsIGNwdSk7CisgICAgcnFkID0gc3BjLT5ycWQ7CiAKLSAgICBycWQgPSBwcnYtPnJxZCArIHNw Yy0+cnVucV9pZDsKKyAgICBBU1NFUlQocnFkICYmICFjcHVtYXNrX3Rlc3RfY3B1KGNwdSwgJnNw Yy0+cnFkLT5hY3RpdmUpKTsKIAotICAgIHByaW50ayhYRU5MT0dfSU5GTyAiQWRkaW5nIGNwdSAl ZCB0byBydW5xdWV1ZSAlZFxuIiwgY3B1LCBzcGMtPnJ1bnFfaWQpOwotICAgIGlmICggISBjcHVt YXNrX3Rlc3RfY3B1KHNwYy0+cnVucV9pZCwgJnBydi0+YWN0aXZlX3F1ZXVlcykgKQorICAgIHBy aW50ayhYRU5MT0dfSU5GTyAiQWRkaW5nIGNwdSAlZCB0byBydW5xdWV1ZSAlZFxuIiwgY3B1LCBy cWQtPmlkKTsKKyAgICBpZiAoICFycWQtPm5yX2NwdXMgKQogICAgIHsKICAgICAgICAgcHJpbnRr KFhFTkxPR19JTkZPICIgRmlyc3QgY3B1IG9uIHJ1bnF1ZXVlLCBhY3RpdmF0aW5nXG4iKTsKLSAg ICAgICAgYWN0aXZhdGVfcnVucXVldWUocHJ2LCBzcGMtPnJ1bnFfaWQpOworCisgICAgICAgIEJV R19PTighY3B1bWFza19lbXB0eSgmcnFkLT5hY3RpdmUpKTsKKyAgICAgICAgcnFkLT5tYXhfd2Vp Z2h0ID0gMTsKKyAgICAgICAgSU5JVF9MSVNUX0hFQUQoJnJxZC0+c3ZjKTsKKyAgICAgICAgSU5J VF9MSVNUX0hFQUQoJnJxZC0+cnVucSk7CisgICAgICAgIHNwaW5fbG9ja19pbml0KCZycWQtPmxv Y2spOworICAgICAgICBwcnYtPmFjdGl2ZV9xdWV1ZXMrKzsKICAgICB9CiAKICAgICBfX2NwdW1h c2tfc2V0X2NwdShjcHUsICZzcGMtPnNpYmxpbmdfbWFzayk7CkBAIC0zODEzLDcgKzM4MTIsNyBA QCBpbml0X3BkYXRhKHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiwgc3RydWN0IGNzY2hlZDJf cGNwdSAqc3BjLAogICAgIGlmICggcnFkLT5ucl9jcHVzID09IDEgKQogICAgICAgICBycWQtPnBp Y2tfYmlhcyA9IGNwdTsKIAotICAgIHJldHVybiBzcGMtPnJ1bnFfaWQ7CisgICAgcmV0dXJuIHJx ZDsKIH0KIAogLyogQ2hhbmdlIHRoZSBzY2hlZHVsZXIgb2YgY3B1IHRvIHVzIChDcmVkaXQyKS4g Ki8KQEAgLTM4MjMsNyArMzgyMiw3IEBAIGNzY2hlZDJfc3dpdGNoX3NjaGVkKHN0cnVjdCBzY2hl ZHVsZXIgKm5ld19vcHMsIHVuc2lnbmVkIGludCBjcHUsCiB7CiAgICAgc3RydWN0IGNzY2hlZDJf cHJpdmF0ZSAqcHJ2ID0gY3NjaGVkMl9wcml2KG5ld19vcHMpOwogICAgIHN0cnVjdCBjc2NoZWQy X3VuaXQgKnN2YyA9IHZkYXRhOwotICAgIHVuc2lnbmVkIHJxaTsKKyAgICBzdHJ1Y3QgY3NjaGVk Ml9ydW5xdWV1ZV9kYXRhICpycWQ7CiAKICAgICBBU1NFUlQocGRhdGEgJiYgc3ZjICYmIGlzX2lk bGVfdW5pdChzdmMtPnVuaXQpKTsKIApAQCAtMzg0MCw3ICszODM5LDcgQEAgY3NjaGVkMl9zd2l0 Y2hfc2NoZWQoc3RydWN0IHNjaGVkdWxlciAqbmV3X29wcywgdW5zaWduZWQgaW50IGNwdSwKIAog ICAgIHNjaGVkX2lkbGVfdW5pdChjcHUpLT5wcml2ID0gdmRhdGE7CiAKLSAgICBycWkgPSBpbml0 X3BkYXRhKHBydiwgcGRhdGEsIGNwdSk7CisgICAgcnFkID0gaW5pdF9wZGF0YShwcnYsIHBkYXRh LCBjcHUpOwogCiAgICAgLyoKICAgICAgKiBOb3cgdGhhdCB3ZSBrbm93IHdoYXQgcnVucXVldWUg d2UnbGwgZ28gaW4sIGRvdWJsZSBjaGVjayB3aGF0J3Mgc2FpZApAQCAtMzg0OCwxMSArMzg0Nywx MSBAQCBjc2NoZWQyX3N3aXRjaF9zY2hlZChzdHJ1Y3Qgc2NoZWR1bGVyICpuZXdfb3BzLCB1bnNp Z25lZCBpbnQgY3B1LAogICAgICAqIHRoaXMgc2NoZWR1bGVyLCBhbmQgc28gaXQncyBzYWZlIHRv IGhhdmUgdGFrZW4gaXQgL2JlZm9yZS8gb3VyCiAgICAgICogcHJpdmF0ZSBnbG9iYWwgbG9jay4K ICAgICAgKi8KLSAgICBBU1NFUlQoZ2V0X3NjaGVkX3JlcyhjcHUpLT5zY2hlZHVsZV9sb2NrICE9 ICZwcnYtPnJxZFtycWldLmxvY2spOworICAgIEFTU0VSVChnZXRfc2NoZWRfcmVzKGNwdSktPnNj aGVkdWxlX2xvY2sgIT0gJnJxZC0+bG9jayk7CiAKICAgICB3cml0ZV91bmxvY2soJnBydi0+bG9j ayk7CiAKLSAgICByZXR1cm4gJnBydi0+cnFkW3JxaV0ubG9jazsKKyAgICByZXR1cm4gJnJxZC0+ bG9jazsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTM4NjYsMTAgKzM4NjUsNiBAQCBjc2NoZWQyX2Rl aW5pdF9wZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHZvaWQgKnBjcHUsIGludCBj cHUpCiAKICAgICB3cml0ZV9sb2NrX2lycXNhdmUoJnBydi0+bG9jaywgZmxhZ3MpOwogCi0gICAg LyoKLSAgICAgKiBhbGxvY19wZGF0YSBpcyBub3QgaW1wbGVtZW50ZWQsIHNvIHBjcHUgbXVzdCBi ZSBOVUxMLiBPbiB0aGUgb3RoZXIKLSAgICAgKiBoYW5kLCBpbml0X3BkYXRhIG11c3QgaGF2ZSBi ZWVuIGNhbGxlZCBmb3IgdGhpcyBwQ1BVLgotICAgICAqLwogICAgIC8qCiAgICAgICogU2NoZWR1 bGVyIHNwZWNpZmljIGRhdGEgZm9yIHRoaXMgcENQVSBtdXN0IHN0aWxsIGJlIHRoZXJlIGFuZCBh bmQgYmUKICAgICAgKiB2YWxpZC4gSW4gZmFjdCwgaWYgd2UgYXJlIGhlcmU6CkBAIC0zODc4LDIw ICszODczLDIxIEBAIGNzY2hlZDJfZGVpbml0X3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIg Km9wcywgdm9pZCAqcGNwdSwgaW50IGNwdSkKICAgICAgKiAgMi4gaW5pdF9wZGF0YSBtdXN0IGhh dmUgYmVlbiBjYWxsZWQgb24gdGhpcyBjcHUsIGFuZCBkZWluaXRfcGRhdGEKICAgICAgKiAgICAg KHVzISkgbXVzdCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBvbiBpdCBhbHJlYWR5LgogICAgICAqLwot ICAgIEFTU0VSVChzcGMgJiYgc3BjLT5ydW5xX2lkICE9IC0xKTsKKyAgICBBU1NFUlQoc3BjICYm IHNwYy0+cnFkKTsKICAgICBBU1NFUlQoY3B1bWFza190ZXN0X2NwdShjcHUsICZwcnYtPmluaXRp YWxpemVkKSk7CiAKICAgICAvKiBGaW5kIHRoZSBvbGQgcnVucXVldWUgYW5kIHJlbW92ZSB0aGlz IGNwdSBmcm9tIGl0ICovCi0gICAgcnFkID0gcHJ2LT5ycWQgKyBzcGMtPnJ1bnFfaWQ7CisgICAg cnFkID0gc3BjLT5ycWQ7CiAKICAgICAvKiBObyBuZWVkIHRvIHNhdmUgSVJRcyBoZXJlLCB0aGV5 J3JlIGFscmVhZHkgZGlzYWJsZWQgKi8KICAgICBzcGluX2xvY2soJnJxZC0+bG9jayk7CiAKLSAg ICBwcmludGsoWEVOTE9HX0lORk8gIlJlbW92aW5nIGNwdSAlZCBmcm9tIHJ1bnF1ZXVlICVkXG4i LCBjcHUsIHNwYy0+cnVucV9pZCk7CisgICAgcHJpbnRrKFhFTkxPR19JTkZPICJSZW1vdmluZyBj cHUgJWQgZnJvbSBydW5xdWV1ZSAlZFxuIiwgY3B1LCBycWQtPmlkKTsKIAogICAgIF9fY3B1bWFz a19jbGVhcl9jcHUoY3B1LCAmcnFkLT5pZGxlKTsKICAgICBfX2NwdW1hc2tfY2xlYXJfY3B1KGNw dSwgJnJxZC0+c210X2lkbGUpOwogICAgIF9fY3B1bWFza19jbGVhcl9jcHUoY3B1LCAmcnFkLT5h Y3RpdmUpOworICAgIF9fY3B1bWFza19jbGVhcl9jcHUoY3B1LCAmcnFkLT50aWNrbGVkKTsKIAog ICAgIGZvcl9lYWNoX2NwdSAoIHJjcHUsICZycWQtPmFjdGl2ZSApCiAgICAgICAgIF9fY3B1bWFz a19jbGVhcl9jcHUoY3B1LCAmY3NjaGVkMl9wY3B1KHJjcHUpLT5zaWJsaW5nX21hc2spOwpAQCAt MzkwMiwxMyArMzg5OCwxMyBAQCBjc2NoZWQyX2RlaW5pdF9wZGF0YShjb25zdCBzdHJ1Y3Qgc2No ZWR1bGVyICpvcHMsIHZvaWQgKnBjcHUsIGludCBjcHUpCiAgICAgaWYgKCBycWQtPm5yX2NwdXMg PT0gMCApCiAgICAgewogICAgICAgICBwcmludGsoWEVOTE9HX0lORk8gIiBObyBjcHVzIGxlZnQg b24gcnVucXVldWUsIGRpc2FibGluZ1xuIik7Ci0gICAgICAgIGRlYWN0aXZhdGVfcnVucXVldWUo cHJ2LCBzcGMtPnJ1bnFfaWQpOworCisgICAgICAgIEJVR19PTighY3B1bWFza19lbXB0eSgmcnFk LT5hY3RpdmUpKTsKKyAgICAgICAgcHJ2LT5hY3RpdmVfcXVldWVzLS07CiAgICAgfQogICAgIGVs c2UgaWYgKCBycWQtPnBpY2tfYmlhcyA9PSBjcHUgKQogICAgICAgICBycWQtPnBpY2tfYmlhcyA9 IGNwdW1hc2tfZmlyc3QoJnJxZC0+YWN0aXZlKTsKIAotICAgIHNwYy0+cnVucV9pZCA9IC0xOwot CiAgICAgc3Bpbl91bmxvY2soJnJxZC0+bG9jayk7CiAKICAgICBfX2NwdW1hc2tfY2xlYXJfY3B1 KGNwdSwgJnBydi0+aW5pdGlhbGl6ZWQpOwpAQCAtMzkyMSwxOCArMzkxNywyOSBAQCBjc2NoZWQy X2RlaW5pdF9wZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHZvaWQgKnBjcHUsIGlu dCBjcHUpCiBzdGF0aWMgdm9pZAogY3NjaGVkMl9mcmVlX3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hl ZHVsZXIgKm9wcywgdm9pZCAqcGNwdSwgaW50IGNwdSkKIHsKKyAgICBzdHJ1Y3QgY3NjaGVkMl9w cml2YXRlICpwcnYgPSBjc2NoZWQyX3ByaXYob3BzKTsKICAgICBzdHJ1Y3QgY3NjaGVkMl9wY3B1 ICpzcGMgPSBwY3B1OworICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZDsKKyAg ICB1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0gICAgLyoKLSAgICAgKiBwY3B1IGVpdGhlciBwb2lu dHMgdG8gYSB2YWxpZCBzdHJ1Y3QgY3NjaGVkMl9wY3B1LCBvciBpcyBOVUxMIChpZgotICAgICAq IENQVSBicmluZ3VwIGZhaWxlZCwgYW5kIHdlJ3JlIGJlZWluZyBjYWxsZWQgZnJvbSBDUFVfVVBf Q0FOQ0VMTEVEKS4KLSAgICAgKiB4ZnJlZSgpIGRvZXMgbm90IHJlYWxseSBtaW5kLCBidXQgd2Ug d2FudCB0byBiZSBzdXJlIHRoYXQgZWl0aGVyCi0gICAgICogaW5pdF9wZGF0YSBoYXMgbmV2ZXIg YmVlbiBjYWxsZWQsIG9yIGRlaW5pdF9wZGF0YSBoYXMgYmVlbiBjYWxsZWQKLSAgICAgKiBhbHJl YWR5LgotICAgICAqLwotICAgIEFTU0VSVCghcGNwdSB8fCBzcGMtPnJ1bnFfaWQgPT0gLTEpOwot ICAgIEFTU0VSVCghY3B1bWFza190ZXN0X2NwdShjcHUsICZjc2NoZWQyX3ByaXYob3BzKS0+aW5p dGlhbGl6ZWQpKTsKKyAgICBpZiAoICFzcGMgKQorICAgICAgICByZXR1cm47CisKKyAgICB3cml0 ZV9sb2NrX2lycXNhdmUoJnBydi0+bG9jaywgZmxhZ3MpOworCisgICAgcnFkID0gc3BjLT5ycWQ7 CisgICAgQVNTRVJUKHJxZCAmJiBycWQtPnJlZmNudCk7CisgICAgQVNTRVJUKCFjcHVtYXNrX3Rl c3RfY3B1KGNwdSwgJnBydi0+aW5pdGlhbGl6ZWQpKTsKKworICAgIHJxZC0+cmVmY250LS07Cisg ICAgaWYgKCAhcnFkLT5yZWZjbnQgKQorICAgICAgICBsaXN0X2RlbCgmcnFkLT5ycWwpOworICAg IGVsc2UKKyAgICAgICAgcnFkID0gTlVMTDsKKworICAgIHdyaXRlX3VubG9ja19pcnFyZXN0b3Jl KCZwcnYtPmxvY2ssIGZsYWdzKTsKIAorICAgIHhmcmVlKHJxZCk7CiAgICAgeGZyZWUocGNwdSk7 CiB9CiAKQEAgLTM5NjYsNyArMzk3Myw2IEBAIGNzY2hlZDJfZ2xvYmFsX2luaXQodm9pZCkKIHN0 YXRpYyBpbnQKIGNzY2hlZDJfaW5pdChzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCiB7Ci0gICAgaW50 IGk7CiAgICAgc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2OwogCiAgICAgcHJpbnRrKCJJbml0 aWFsaXppbmcgQ3JlZGl0MiBzY2hlZHVsZXJcbiIpOwpAQCAtMzk5OSwxOCArNDAwNSw5IEBAIGNz Y2hlZDJfaW5pdChzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCiAgICAgb3BzLT5zY2hlZF9kYXRhID0g cHJ2OwogCiAgICAgcndsb2NrX2luaXQoJnBydi0+bG9jayk7CisgICAgSU5JVF9MSVNUX0hFQUQo JnBydi0+cnFsKTsKICAgICBJTklUX0xJU1RfSEVBRCgmcHJ2LT5zZG9tKTsKIAotICAgIC8qIEFs bG9jYXRlIGFsbCBydW5xdWV1ZXMgYW5kIG1hcmsgdGhlbSBhcyB1bi1pbml0aWFsaXplZCAqLwot ICAgIHBydi0+cnFkID0geHphbGxvY19hcnJheShzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRh LCBucl9jcHVfaWRzKTsKLSAgICBpZiAoICFwcnYtPnJxZCApCi0gICAgewotICAgICAgICB4ZnJl ZShwcnYpOwotICAgICAgICByZXR1cm4gLUVOT01FTTsKLSAgICB9Ci0gICAgZm9yICggaSA9IDA7 IGkgPCBucl9jcHVfaWRzOyBpKysgKQotICAgICAgICBwcnYtPnJxZFtpXS5pZCA9IC0xOwotCiAg ICAgLyogaW5pdGlhbGl6ZSByYXRlbGltaXQgKi8KICAgICBwcnYtPnJhdGVsaW1pdF91cyA9IHNj aGVkX3JhdGVsaW1pdF91czsKIApAQCAtNDAyOCw4ICs0MDI1LDYgQEAgY3NjaGVkMl9kZWluaXQo c3RydWN0IHNjaGVkdWxlciAqb3BzKQogCiAgICAgcHJ2ID0gY3NjaGVkMl9wcml2KG9wcyk7CiAg ICAgb3BzLT5zY2hlZF9kYXRhID0gTlVMTDsKLSAgICBpZiAoIHBydiApCi0gICAgICAgIHhmcmVl KHBydi0+cnFkKTsKICAgICB4ZnJlZShwcnYpOwogfQogCi0tIAoyLjE2LjQKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl Y3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs