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, URIBL_BLOCKED,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 72616C41531 for ; Fri, 9 Aug 2019 14:59:11 +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 2FCD5208C4 for ; Fri, 9 Aug 2019 14:59:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2FCD5208C4 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 1hw6M4-0006f0-0w; Fri, 09 Aug 2019 14:58:56 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hw6Ly-0006VQ-Vp for xen-devel@lists.xenproject.org; Fri, 09 Aug 2019 14:58:51 +0000 X-Inumbo-ID: 2e9db398-bab6-11e9-8980-bc764e045a96 Received: from mx1.suse.de (unknown [195.135.220.15]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id 2e9db398-bab6-11e9-8980-bc764e045a96; Fri, 09 Aug 2019 14:58:44 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id DA8D5AFF3; Fri, 9 Aug 2019 14:58:42 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Date: Fri, 9 Aug 2019 16:57:59 +0200 Message-Id: <20190809145833.1020-15-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20190809145833.1020-1-jgross@suse.com> References: <20190809145833.1020-1-jgross@suse.com> Subject: [Xen-devel] [PATCH v2 14/48] xen/sched: make null scheduler vcpu agnostic. 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" U3dpdGNoIG51bGwgc2NoZWR1bGVyIGNvbXBsZXRlbHkgZnJvbSB2Y3B1IHRvIHNjaGVkX3VuaXQg dXNhZ2UuCgpTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+Ci0t LQogeGVuL2NvbW1vbi9zY2hlZF9udWxsLmMgfCAzMzMgKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTY1IGluc2VydGlvbnMo KyksIDE2OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3NjaGVkX251bGwu YyBiL3hlbi9jb21tb24vc2NoZWRfbnVsbC5jCmluZGV4IDg0NTA3YTQxYzguLmE2MzA5NTExMTAg MTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc2NoZWRfbnVsbC5jCisrKyBiL3hlbi9jb21tb24vc2No ZWRfbnVsbC5jCkBAIC0xOCwxMCArMTgsMTAgQEAKIAogLyoKICAqIFRoZSAnbnVsbCcgc2NoZWR1 bGVyIGFsd2F5cyBjaG9vc2UgdG8gcnVuLCBvbiBlYWNoIHBDUFUsIGVpdGhlciBub3RoaW5nCi0g KiAoaS5lLiwgdGhlIHBDUFUgc3RheXMgaWRsZSkgb3IgYWx3YXlzIHRoZSBzYW1lIHZDUFUuCisg KiAoaS5lLiwgdGhlIHBDUFUgc3RheXMgaWRsZSkgb3IgYWx3YXlzIHRoZSBzYW1lIEl0ZW0uCiAg KgogICogSXQgaXMgYWltZWQgYXQgc3VwcG9ydGluZyBzdGF0aWMgc2NlbmFyaW9zLCB3aGVyZSB0 aGVyZSBhbHdheXMgYXJlCi0gKiBsZXNzIHZDUFVzIHRoYW4gcENQVXMgKGFuZCB0aGUgdkNQVXMg ZG9uJ3QgbmVlZCB0byBtb3ZlIGFtb25nIHBDUFVzCisgKiBsZXNzIEl0ZW1zIHRoYW4gcENQVXMg KGFuZCB0aGUgSXRlbXMgZG9uJ3QgbmVlZCB0byBtb3ZlIGFtb25nIHBDUFVzCiAgKiBmb3IgYW55 IHJlYXNvbikgd2l0aCB0aGUgbGVhc3QgcG9zc2libGUgb3ZlcmhlYWQuCiAgKgogICogVHlwaWNh bCB1c2VjYXNlIGFyZSBlbWJlZGRlZCBhcHBsaWNhdGlvbnMsIGJ1dCBhbHNvIEhQQywgZXNwZWNp YWxseQpAQCAtMzcsOCArMzcsOCBAQAogICogbnVsbCB0cmFjaW5nIGV2ZW50cy4gQ2hlY2sgaW5j bHVkZS9wdWJsaWMvdHJhY2UuaCBmb3IgbW9yZSBkZXRhaWxzLgogICovCiAjZGVmaW5lIFRSQ19T TlVMTF9QSUNLRURfQ1BVICAgIFRSQ19TQ0hFRF9DTEFTU19FVlQoU05VTEwsIDEpCi0jZGVmaW5l IFRSQ19TTlVMTF9WQ1BVX0FTU0lHTiAgIFRSQ19TQ0hFRF9DTEFTU19FVlQoU05VTEwsIDIpCi0j ZGVmaW5lIFRSQ19TTlVMTF9WQ1BVX0RFQVNTSUdOIFRSQ19TQ0hFRF9DTEFTU19FVlQoU05VTEws IDMpCisjZGVmaW5lIFRSQ19TTlVMTF9VTklUX0FTU0lHTiAgIFRSQ19TQ0hFRF9DTEFTU19FVlQo U05VTEwsIDIpCisjZGVmaW5lIFRSQ19TTlVMTF9VTklUX0RFQVNTSUdOIFRSQ19TQ0hFRF9DTEFT U19FVlQoU05VTEwsIDMpCiAjZGVmaW5lIFRSQ19TTlVMTF9NSUdSQVRFICAgICAgIFRSQ19TQ0hF RF9DTEFTU19FVlQoU05VTEwsIDQpCiAjZGVmaW5lIFRSQ19TTlVMTF9TQ0hFRFVMRSAgICAgIFRS Q19TQ0hFRF9DTEFTU19FVlQoU05VTEwsIDUpCiAjZGVmaW5lIFRSQ19TTlVMTF9UQVNLTEVUICAg ICAgIFRSQ19TQ0hFRF9DTEFTU19FVlQoU05VTEwsIDYpCkBAIC00NywxMyArNDcsMTMgQEAKICAq IExvY2tpbmc6CiAgKiAtIFNjaGVkdWxlci1sb2NrIChhLmsuYS4gcnVucXVldWUgbG9jayk6CiAg KiAgKyBpcyBwZXItcENQVTsKLSAqICArIHNlcmlhbGl6ZXMgYXNzaWdubWVudCBhbmQgZGVhc3Np Z25tZW50IG9mIHZDUFVzIHRvIGEgcENQVS4KKyAqICArIHNlcmlhbGl6ZXMgYXNzaWdubWVudCBh bmQgZGVhc3NpZ25tZW50IG9mIEl0ZW1zIHRvIGEgcENQVS4KICAqIC0gUHJpdmF0ZSBkYXRhIGxv Y2sgKGEuay5hLiBwcml2YXRlIHNjaGVkdWxlciBsb2NrKToKICAqICArIGlzIHNjaGVkdWxlci13 aWRlOwogICogICsgc2VyaWFsaXplcyBhY2Nlc3NlcyB0byB0aGUgbGlzdCBvZiBkb21haW5zIGlu IHRoaXMgc2NoZWR1bGVyLgogICogLSBXYWl0cXVldWUgbG9jazoKICAqICArIGlzIHNjaGVkdWxl ci13aWRlOwotICogICsgc2VyaWFsaXplIGFjY2Vzc2VzIHRvIHRoZSBsaXN0IG9mIHZDUFVzIHdh aXRpbmcgdG8gYmUgYXNzaWduZWQKKyAqICArIHNlcmlhbGl6ZSBhY2Nlc3NlcyB0byB0aGUgbGlz dCBvZiBJdGVtcyB3YWl0aW5nIHRvIGJlIGFzc2lnbmVkCiAgKiAgICB0byBwQ1BVcy4KICAqCiAg KiBPcmRlcmluZyBpczogcHJpdmF0ZSBsb2NrLCBydW5xdWV1ZSBsb2NrLCB3YWl0cXVldWUgbG9j ay4gT3IsIE9UT0gsCkBAIC03NywyNSArNzcsMjUgQEAKIHN0cnVjdCBudWxsX3ByaXZhdGUgewog ICAgIHNwaW5sb2NrX3QgbG9jazsgICAgICAgIC8qIHNjaGVkdWxlciBsb2NrOyBuZXN0cyBpbnNp ZGUgY3B1cG9vbF9sb2NrICovCiAgICAgc3RydWN0IGxpc3RfaGVhZCBuZG9tOyAgLyogRG9tYWlu cyBvZiB0aGlzIHNjaGVkdWxlciAgICAgICAgICAgICAgICAgKi8KLSAgICBzdHJ1Y3QgbGlzdF9o ZWFkIHdhaXRxOyAvKiB2Q1BVcyBub3QgYXNzaWduZWQgdG8gYW55IHBDUFUgICAgICAgICAgICAq LworICAgIHN0cnVjdCBsaXN0X2hlYWQgd2FpdHE7IC8qIEl0ZW1zIG5vdCBhc3NpZ25lZCB0byBh bnkgcENQVSAgICAgICAgICAgICovCiAgICAgc3BpbmxvY2tfdCB3YWl0cV9sb2NrOyAgLyogc2Vy aWFsaXplcyB3YWl0cTsgbmVzdHMgaW5zaWRlIHJ1bnEgbG9ja3MgKi8KLSAgICBjcHVtYXNrX3Qg Y3B1c19mcmVlOyAgICAvKiBDUFVzIHdpdGhvdXQgYSB2Q1BVIGFzc29jaWF0ZWQgdG8gdGhlbSAg ICAqLworICAgIGNwdW1hc2tfdCBjcHVzX2ZyZWU7ICAgIC8qIENQVXMgd2l0aG91dCBhIEl0ZW0g YXNzb2NpYXRlZCB0byB0aGVtICAgICovCiB9OwogCiAvKgogICogUGh5c2ljYWwgQ1BVCiAgKi8K IHN0cnVjdCBudWxsX3BjcHUgewotICAgIHN0cnVjdCB2Y3B1ICp2Y3B1OworICAgIHN0cnVjdCBz Y2hlZF91bml0ICp1bml0OwogfTsKIERFRklORV9QRVJfQ1BVKHN0cnVjdCBudWxsX3BjcHUsIG5w Yyk7CiAKIC8qCi0gKiBWaXJ0dWFsIENQVQorICogU2NoZWR1bGUgSXRlbQogICovCiBzdHJ1Y3Qg bnVsbF91bml0IHsKICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHdhaXRxX2VsZW07Ci0gICAgc3RydWN0 IHZjcHUgKnZjcHU7CisgICAgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQ7CiB9OwogCiAvKgpAQCAt MTE5LDEzICsxMTksMTMgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbnVsbF91bml0ICpudWxsX3Vu aXQoY29uc3Qgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgcmV0dXJuIHVuaXQtPnByaXY7 CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCB2Y3B1X2NoZWNrX2FmZmluaXR5KHN0cnVjdCB2Y3B1 ICp2LCB1bnNpZ25lZCBpbnQgY3B1LAorc3RhdGljIGlubGluZSBib29sIHVuaXRfY2hlY2tfYWZm aW5pdHkoc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY3B1LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJhbGFuY2Vfc3RlcCkKIHsKLSAgICBhZmZpbml0 eV9iYWxhbmNlX2NwdW1hc2sodi0+c2NoZWRfdW5pdCwgYmFsYW5jZV9zdGVwLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSkpOworICAgIGFmZmlu aXR5X2JhbGFuY2VfY3B1bWFzayh1bml0LCBiYWxhbmNlX3N0ZXAsIGNwdW1hc2tfc2NyYXRjaF9j cHUoY3B1KSk7CiAgICAgY3B1bWFza19hbmQoY3B1bWFza19zY3JhdGNoX2NwdShjcHUpLCBjcHVt YXNrX3NjcmF0Y2hfY3B1KGNwdSksCi0gICAgICAgICAgICAgICAgY3B1cG9vbF9kb21haW5fY3B1 bWFzayh2LT5kb21haW4pKTsKKyAgICAgICAgICAgICAgICBjcHVwb29sX2RvbWFpbl9jcHVtYXNr KHVuaXQtPmRvbWFpbikpOwogCiAgICAgcmV0dXJuIGNwdW1hc2tfdGVzdF9jcHUoY3B1LCBjcHVt YXNrX3NjcmF0Y2hfY3B1KGNwdSkpOwogfQpAQCAtMTYwLDkgKzE2MCw5IEBAIHN0YXRpYyB2b2lk IG51bGxfZGVpbml0KHN0cnVjdCBzY2hlZHVsZXIgKm9wcykKIAogc3RhdGljIHZvaWQgaW5pdF9w ZGF0YShzdHJ1Y3QgbnVsbF9wcml2YXRlICpwcnYsIHVuc2lnbmVkIGludCBjcHUpCiB7Ci0gICAg LyogTWFyayB0aGUgcENQVSBhcyBmcmVlLCBhbmQgd2l0aCBubyB2Q1BVIGFzc2lnbmVkICovCisg ICAgLyogTWFyayB0aGUgcENQVSBhcyBmcmVlLCBhbmQgd2l0aCBubyB1bml0IGFzc2lnbmVkICov CiAgICAgY3B1bWFza19zZXRfY3B1KGNwdSwgJnBydi0+Y3B1c19mcmVlKTsKLSAgICBwZXJfY3B1 KG5wYywgY3B1KS52Y3B1ID0gTlVMTDsKKyAgICBwZXJfY3B1KG5wYywgY3B1KS51bml0ID0gTlVM TDsKIH0KIAogc3RhdGljIHZvaWQgbnVsbF9pbml0X3BkYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVs ZXIgKm9wcywgdm9pZCAqcGRhdGEsIGludCBjcHUpCkBAIC0xODMsMTMgKzE4MywxMiBAQCBzdGF0 aWMgdm9pZCBudWxsX2RlaW5pdF9wZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHZv aWQgKnBjcHUsIGludCBjcHUpCiAgICAgQVNTRVJUKCFwY3B1KTsKIAogICAgIGNwdW1hc2tfY2xl YXJfY3B1KGNwdSwgJnBydi0+Y3B1c19mcmVlKTsKLSAgICBwZXJfY3B1KG5wYywgY3B1KS52Y3B1 ID0gTlVMTDsKKyAgICBwZXJfY3B1KG5wYywgY3B1KS51bml0ID0gTlVMTDsKIH0KIAogc3RhdGlj IHZvaWQgKm51bGxfYWxsb2NfdmRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQsIHZvaWQg KmRkKQogewotICAgIHN0cnVjdCB2Y3B1ICp2ID0gdW5pdC0+dmNwdV9saXN0OwogICAgIHN0cnVj dCBudWxsX3VuaXQgKm52YzsKIAogICAgIG52YyA9IHh6YWxsb2Moc3RydWN0IG51bGxfdW5pdCk7 CkBAIC0xOTcsNyArMTk2LDcgQEAgc3RhdGljIHZvaWQgKm51bGxfYWxsb2NfdmRhdGEoY29uc3Qg c3RydWN0IHNjaGVkdWxlciAqb3BzLAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIElOSVRf TElTVF9IRUFEKCZudmMtPndhaXRxX2VsZW0pOwotICAgIG52Yy0+dmNwdSA9IHY7CisgICAgbnZj LT51bml0ID0gdW5pdDsKIAogICAgIFNDSEVEX1NUQVRfQ1JBTksodW5pdF9hbGxvYyk7CiAKQEAg LTI0OSwxNSArMjQ4LDE1IEBAIHN0YXRpYyB2b2lkIG51bGxfZnJlZV9kb21kYXRhKGNvbnN0IHN0 cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqZGF0YSkKIH0KIAogLyoKLSAqIHZDUFUgdG8gcENQ VSBhc3NpZ25tZW50IGFuZCBwbGFjZW1lbnQuIFRoaXMgX29ubHlfIGhhcHBlbnM6CisgKiB1bml0 IHRvIHBDUFUgYXNzaWdubWVudCBhbmQgcGxhY2VtZW50LiBUaGlzIF9vbmx5XyBoYXBwZW5zOgog ICogIC0gb24gaW5zZXJ0LAogICogIC0gb24gbWlncmF0ZS4KICAqCi0gKiBJbnNlcnQgb2NjdXJz IHdoZW4gYSB2Q1BVIGpvaW5zIHRoaXMgc2NoZWR1bGVyIGZvciB0aGUgZmlyc3QgdGltZQorICog SW5zZXJ0IG9jY3VycyB3aGVuIGEgdW5pdCBqb2lucyB0aGlzIHNjaGVkdWxlciBmb3IgdGhlIGZp cnN0IHRpbWUKICAqIChlLmcuLCB3aGVuIHRoZSBkb21haW4gaXQncyBwYXJ0IG9mIGlzIG1vdmVk IHRvIHRoZSBzY2hlZHVsZXIncwogICogY3B1cG9vbCkuCiAgKgotICogTWlncmF0aW9uIG1heSBi ZSBuZWNlc3NhcnkgaWYgYSBwQ1BVICh3aXRoIGEgdkNQVSBhc3NpZ25lZCB0byBpdCkKKyAqIE1p Z3JhdGlvbiBtYXkgYmUgbmVjZXNzYXJ5IGlmIGEgcENQVSAod2l0aCBhIHVuaXQgYXNzaWduZWQg dG8gaXQpCiAgKiBpcyByZW1vdmVkIGZyb20gdGhlIHNjaGVkdWxlcidzIGNwdXBvb2wuCiAgKgog ICogU28gdGhpcyBpcyBub3QgcGFydCBvZiBhbnkgaG90IHBhdGguCkBAIC0yNjYsOSArMjY1LDgg QEAgc3RhdGljIHN0cnVjdCBzY2hlZF9yZXNvdXJjZSAqCiBwaWNrX3JlcyhzdHJ1Y3QgbnVsbF9w cml2YXRlICpwcnYsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogewogICAgIHVuc2lnbmVkIGlu dCBiczsKLSAgICBzdHJ1Y3QgdmNwdSAqdiA9IHVuaXQtPnZjcHVfbGlzdDsKLSAgICB1bnNpZ25l ZCBpbnQgY3B1ID0gdi0+cHJvY2Vzc29yLCBuZXdfY3B1OwotICAgIGNwdW1hc2tfdCAqY3B1cyA9 IGNwdXBvb2xfZG9tYWluX2NwdW1hc2sodi0+ZG9tYWluKTsKKyAgICB1bnNpZ25lZCBpbnQgY3B1 ID0gc2NoZWRfdW5pdF9jcHUodW5pdCksIG5ld19jcHU7CisgICAgY3B1bWFza190ICpjcHVzID0g Y3B1cG9vbF9kb21haW5fY3B1bWFzayh1bml0LT5kb21haW4pOwogCiAgICAgQVNTRVJUKHNwaW5f aXNfbG9ja2VkKGdldF9zY2hlZF9yZXMoY3B1KS0+c2NoZWR1bGVfbG9jaykpOwogCkBAIC0yODMs MTEgKzI4MSwxMiBAQCBwaWNrX3JlcyhzdHJ1Y3QgbnVsbF9wcml2YXRlICpwcnYsIHN0cnVjdCBz Y2hlZF91bml0ICp1bml0KQogICAgICAgICAvKgogICAgICAgICAgKiBJZiBvdXIgcHJvY2Vzc29y IGlzIGZyZWUsIG9yIHdlIGFyZSBhc3NpZ25lZCB0byBpdCwgYW5kIGl0IGlzIGFsc28KICAgICAg ICAgICogc3RpbGwgdmFsaWQgYW5kIHBhcnQgb2Ygb3VyIGFmZmluaXR5LCBqdXN0IGdvIGZvciBp dC4KLSAgICAgICAgICogKE5vdGUgdGhhdCB3ZSBtYXkgY2FsbCB2Y3B1X2NoZWNrX2FmZmluaXR5 KCksIGJ1dCB3ZSBkZWxpYmVyYXRlbHkKKyAgICAgICAgICogKE5vdGUgdGhhdCB3ZSBtYXkgY2Fs bCB1bml0X2NoZWNrX2FmZmluaXR5KCksIGJ1dCB3ZSBkZWxpYmVyYXRlbHkKICAgICAgICAgICog ZG9uJ3QsIHNvIHdlIGdldCB0byBrZWVwIGluIHRoZSBzY3JhdGNoIGNwdW1hc2sgd2hhdCB3ZSBo YXZlIGp1c3QKICAgICAgICAgICogcHV0IGluIGl0LikKICAgICAgICAgICovCi0gICAgICAgIGlm ICggbGlrZWx5KChwZXJfY3B1KG5wYywgY3B1KS52Y3B1ID09IE5VTEwgfHwgcGVyX2NwdShucGMs IGNwdSkudmNwdSA9PSB2KQorICAgICAgICBpZiAoIGxpa2VseSgocGVyX2NwdShucGMsIGNwdSku dW5pdCA9PSBOVUxMIHx8CisgICAgICAgICAgICAgICAgICAgICBwZXJfY3B1KG5wYywgY3B1KS51 bml0ID09IHVuaXQpCiAgICAgICAgICAgICAgICAgICAgICYmIGNwdW1hc2tfdGVzdF9jcHUoY3B1 LCBjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSkpKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIG5l d19jcHUgPSBjcHU7CkBAIC0zMDUsMTMgKzMwNCwxMyBAQCBwaWNrX3JlcyhzdHJ1Y3QgbnVsbF9w cml2YXRlICpwcnYsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogCiAgICAgLyoKICAgICAgKiBJ ZiB3ZSBkaWRuJ3QgZmluZCBhbnkgZnJlZSBwQ1BVLCBqdXN0IHBpY2sgYW55IHZhbGlkIHBjcHUs IGV2ZW4gaWYKLSAgICAgKiBpdCBoYXMgYW5vdGhlciB2Q1BVIGFzc2lnbmVkLiBUaGlzIHdpbGwg aGFwcGVuIGR1cmluZyBzaHV0ZG93biBhbmQKKyAgICAgKiBpdCBoYXMgYW5vdGhlciBJdGVtIGFz c2lnbmVkLiBUaGlzIHdpbGwgaGFwcGVuIGR1cmluZyBzaHV0ZG93biBhbmQKICAgICAgKiBzdXNw ZW5kL3Jlc3VtZSwgYnV0IGl0IG1heSBhbHNvIGhhcHBlbiBkdXJpbmcgIm5vcm1hbCBvcGVyYXRp b24iLCBpZgogICAgICAqIGFsbCB0aGUgcENQVXMgYXJlIGJ1c3kuCiAgICAgICoKICAgICAgKiBJ biBmYWN0LCB0aGVyZSBtdXN0IGFsd2F5cyBiZSBzb21ldGhpbmcgc2FuZSBpbiB2LT5wcm9jZXNz b3IsIG9yCiAgICAgICogdW5pdF9zY2hlZHVsZV9sb2NrKCkgYW5kIGZyaWVuZHMgd29uJ3Qgd29y ay4gVGhpcyBpcyBub3QgYSBwcm9ibGVtLAotICAgICAqIGFzIHdlIHdpbGwgYWN0dWFsbHkgYXNz aWduIHRoZSB2Q1BVIHRvIHRoZSBwQ1BVIHdlIHJldHVybiBmcm9tIGhlcmUsCisgICAgICogYXMg d2Ugd2lsbCBhY3R1YWxseSBhc3NpZ24gdGhlIEl0ZW0gdG8gdGhlIHBDUFUgd2UgcmV0dXJuIGZy b20gaGVyZSwKICAgICAgKiBvbmx5IGlmIHRoZSBwQ1BVIGlzIGZyZWUuCiAgICAgICovCiAgICAg Y3B1bWFza19hbmQoY3B1bWFza19zY3JhdGNoX2NwdShjcHUpLCBjcHVzLCB1bml0LT5jcHVfaGFy ZF9hZmZpbml0eSk7CkBAIC0zMjEsMTEgKzMyMCwxMSBAQCBwaWNrX3JlcyhzdHJ1Y3QgbnVsbF9w cml2YXRlICpwcnYsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogICAgIGlmICggdW5saWtlbHko dGJfaW5pdF9kb25lKSApCiAgICAgewogICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgdWlu dDE2X3QgdmNwdSwgZG9tOworICAgICAgICAgICAgdWludDE2X3QgdW5pdCwgZG9tOwogICAgICAg ICAgICAgdWludDMyX3QgbmV3X2NwdTsKICAgICAgICAgfSBkOwotICAgICAgICBkLmRvbSA9IHYt PmRvbWFpbi0+ZG9tYWluX2lkOwotICAgICAgICBkLnZjcHUgPSB2LT52Y3B1X2lkOworICAgICAg ICBkLmRvbSA9IHVuaXQtPmRvbWFpbi0+ZG9tYWluX2lkOworICAgICAgICBkLnVuaXQgPSB1bml0 LT51bml0X2lkOwogICAgICAgICBkLm5ld19jcHUgPSBuZXdfY3B1OwogICAgICAgICBfX3RyYWNl X3ZhcihUUkNfU05VTExfUElDS0VEX0NQVSwgMSwgc2l6ZW9mKGQpLCAmZCk7CiAgICAgfQpAQCAt MzMzLDY0ICszMzIsNjQgQEAgcGlja19yZXMoc3RydWN0IG51bGxfcHJpdmF0ZSAqcHJ2LCBzdHJ1 Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKICAgICByZXR1cm4gZ2V0X3NjaGVkX3JlcyhuZXdfY3B1KTsK IH0KIAotc3RhdGljIHZvaWQgdmNwdV9hc3NpZ24oc3RydWN0IG51bGxfcHJpdmF0ZSAqcHJ2LCBz dHJ1Y3QgdmNwdSAqdiwKK3N0YXRpYyB2b2lkIHVuaXRfYXNzaWduKHN0cnVjdCBudWxsX3ByaXZh dGUgKnBydiwgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQsCiAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgY3B1KQogewotICAgIEFTU0VSVChpc192Y3B1X29ubGluZSh2KSk7Cisg ICAgQVNTRVJUKGlzX3VuaXRfb25saW5lKHVuaXQpKTsKIAotICAgIHBlcl9jcHUobnBjLCBjcHUp LnZjcHUgPSB2OwotICAgIHYtPnByb2Nlc3NvciA9IGNwdTsKLSAgICB2LT5zY2hlZF91bml0LT5y ZXMgPSBnZXRfc2NoZWRfcmVzKGNwdSk7CisgICAgcGVyX2NwdShucGMsIGNwdSkudW5pdCA9IHVu aXQ7CisgICAgc2NoZWRfc2V0X3Jlcyh1bml0LCBnZXRfc2NoZWRfcmVzKGNwdSkpOwogICAgIGNw dW1hc2tfY2xlYXJfY3B1KGNwdSwgJnBydi0+Y3B1c19mcmVlKTsKIAotICAgIGRwcmludGsoWEVO TE9HX0dfSU5GTywgIiVkIDwtLSAlcHZcbiIsIGNwdSwgdik7CisgICAgZHByaW50ayhYRU5MT0df R19JTkZPLCAiJWQgPC0tICVwZHYlZFxuIiwgY3B1LCB1bml0LT5kb21haW4sIHVuaXQtPnVuaXRf aWQpOwogCiAgICAgaWYgKCB1bmxpa2VseSh0Yl9pbml0X2RvbmUpICkKICAgICB7CiAgICAgICAg IHN0cnVjdCB7Ci0gICAgICAgICAgICB1aW50MTZfdCB2Y3B1LCBkb207CisgICAgICAgICAgICB1 aW50MTZfdCB1bml0LCBkb207CiAgICAgICAgICAgICB1aW50MzJfdCBjcHU7CiAgICAgICAgIH0g ZDsKLSAgICAgICAgZC5kb20gPSB2LT5kb21haW4tPmRvbWFpbl9pZDsKLSAgICAgICAgZC52Y3B1 ID0gdi0+dmNwdV9pZDsKKyAgICAgICAgZC5kb20gPSB1bml0LT5kb21haW4tPmRvbWFpbl9pZDsK KyAgICAgICAgZC51bml0ID0gdW5pdC0+dW5pdF9pZDsKICAgICAgICAgZC5jcHUgPSBjcHU7Ci0g ICAgICAgIF9fdHJhY2VfdmFyKFRSQ19TTlVMTF9WQ1BVX0FTU0lHTiwgMSwgc2l6ZW9mKGQpLCAm ZCk7CisgICAgICAgIF9fdHJhY2VfdmFyKFRSQ19TTlVMTF9VTklUX0FTU0lHTiwgMSwgc2l6ZW9m KGQpLCAmZCk7CiAgICAgfQogfQogCiAvKiBSZXR1cm5zIHRydWUgaWYgYSBjcHUgd2FzIHRpY2ts ZWQgKi8KLXN0YXRpYyBib29sIHZjcHVfZGVhc3NpZ24oc3RydWN0IG51bGxfcHJpdmF0ZSAqcHJ2 LCBzdHJ1Y3QgdmNwdSAqdikKK3N0YXRpYyBib29sIHVuaXRfZGVhc3NpZ24oc3RydWN0IG51bGxf cHJpdmF0ZSAqcHJ2LCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKIHsKICAgICB1bnNpZ25lZCBp bnQgYnM7Ci0gICAgdW5zaWduZWQgaW50IGNwdSA9IHYtPnByb2Nlc3NvcjsKKyAgICB1bnNpZ25l ZCBpbnQgY3B1ID0gc2NoZWRfdW5pdF9jcHUodW5pdCk7CiAgICAgc3RydWN0IG51bGxfdW5pdCAq d3ZjOwogCi0gICAgQVNTRVJUKGxpc3RfZW1wdHkoJm51bGxfdW5pdCh2LT5zY2hlZF91bml0KS0+ d2FpdHFfZWxlbSkpOwotICAgIEFTU0VSVChwZXJfY3B1KG5wYywgdi0+cHJvY2Vzc29yKS52Y3B1 ID09IHYpOwotICAgIEFTU0VSVCghY3B1bWFza190ZXN0X2NwdSh2LT5wcm9jZXNzb3IsICZwcnYt PmNwdXNfZnJlZSkpOworICAgIEFTU0VSVChsaXN0X2VtcHR5KCZudWxsX3VuaXQodW5pdCktPndh aXRxX2VsZW0pKTsKKyAgICBBU1NFUlQocGVyX2NwdShucGMsIGNwdSkudW5pdCA9PSB1bml0KTsK KyAgICBBU1NFUlQoIWNwdW1hc2tfdGVzdF9jcHUoY3B1LCAmcHJ2LT5jcHVzX2ZyZWUpKTsKIAot ICAgIHBlcl9jcHUobnBjLCBjcHUpLnZjcHUgPSBOVUxMOworICAgIHBlcl9jcHUobnBjLCBjcHUp LnVuaXQgPSBOVUxMOwogICAgIGNwdW1hc2tfc2V0X2NwdShjcHUsICZwcnYtPmNwdXNfZnJlZSk7 CiAKLSAgICBkcHJpbnRrKFhFTkxPR19HX0lORk8sICIlZCA8LS0gTlVMTCAoJXB2KVxuIiwgY3B1 LCB2KTsKKyAgICBkcHJpbnRrKFhFTkxPR19HX0lORk8sICIlZCA8LS0gTlVMTCAoJXBkdiVkKVxu IiwgY3B1LCB1bml0LT5kb21haW4sCisgICAgICAgICAgICB1bml0LT51bml0X2lkKTsKIAogICAg IGlmICggdW5saWtlbHkodGJfaW5pdF9kb25lKSApCiAgICAgewogICAgICAgICBzdHJ1Y3Qgewot ICAgICAgICAgICAgdWludDE2X3QgdmNwdSwgZG9tOworICAgICAgICAgICAgdWludDE2X3QgdW5p dCwgZG9tOwogICAgICAgICAgICAgdWludDMyX3QgY3B1OwogICAgICAgICB9IGQ7Ci0gICAgICAg IGQuZG9tID0gdi0+ZG9tYWluLT5kb21haW5faWQ7Ci0gICAgICAgIGQudmNwdSA9IHYtPnZjcHVf aWQ7CisgICAgICAgIGQuZG9tID0gdW5pdC0+ZG9tYWluLT5kb21haW5faWQ7CisgICAgICAgIGQu dW5pdCA9IHVuaXQtPnVuaXRfaWQ7CiAgICAgICAgIGQuY3B1ID0gY3B1OwotICAgICAgICBfX3Ry YWNlX3ZhcihUUkNfU05VTExfVkNQVV9ERUFTU0lHTiwgMSwgc2l6ZW9mKGQpLCAmZCk7CisgICAg ICAgIF9fdHJhY2VfdmFyKFRSQ19TTlVMTF9VTklUX0RFQVNTSUdOLCAxLCBzaXplb2YoZCksICZk KTsKICAgICB9CiAKICAgICBzcGluX2xvY2soJnBydi0+d2FpdHFfbG9jayk7CiAKICAgICAvKgot ICAgICAqIElmIHYgaXMgYXNzaWduZWQgdG8gYSBwQ1BVLCBsZXQncyBzZWUgaWYgdGhlcmUgaXMg c29tZW9uZSB3YWl0aW5nLAotICAgICAqIHN1aXRhYmxlIHRvIGJlIGFzc2lnbmVkIHRvIGl0IChw cmlvcml0aXppbmcgdmNwdXMgdGhhdCBoYXZlCisgICAgICogSWYgdW5pdCBpcyBhc3NpZ25lZCB0 byBhIHBDUFUsIGxldCdzIHNlZSBpZiB0aGVyZSBpcyBzb21lb25lIHdhaXRpbmcsCisgICAgICog c3VpdGFibGUgdG8gYmUgYXNzaWduZWQgdG8gaXQgKHByaW9yaXRpemluZyB1bml0cyB0aGF0IGhh dmUKICAgICAgKiBzb2Z0LWFmZmluaXR5IHdpdGggY3B1KS4KICAgICAgKi8KICAgICBmb3JfZWFj aF9hZmZpbml0eV9iYWxhbmNlX3N0ZXAoIGJzICkKQEAgLTM5OCwxMyArMzk3LDEzIEBAIHN0YXRp YyBib29sIHZjcHVfZGVhc3NpZ24oc3RydWN0IG51bGxfcHJpdmF0ZSAqcHJ2LCBzdHJ1Y3QgdmNw dSAqdikKICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSggd3ZjLCAmcHJ2LT53YWl0cSwgd2Fp dHFfZWxlbSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICggYnMgPT0gQkFMQU5DRV9TT0ZU X0FGRklOSVRZICYmCi0gICAgICAgICAgICAgICAgICFoYXNfc29mdF9hZmZpbml0eSh3dmMtPnZj cHUtPnNjaGVkX3VuaXQpICkKKyAgICAgICAgICAgICAgICAgIWhhc19zb2Z0X2FmZmluaXR5KHd2 Yy0+dW5pdCkgKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAo IHZjcHVfY2hlY2tfYWZmaW5pdHkod3ZjLT52Y3B1LCBjcHUsIGJzKSApCisgICAgICAgICAgICBp ZiAoIHVuaXRfY2hlY2tfYWZmaW5pdHkod3ZjLT51bml0LCBjcHUsIGJzKSApCiAgICAgICAgICAg ICB7CiAgICAgICAgICAgICAgICAgbGlzdF9kZWxfaW5pdCgmd3ZjLT53YWl0cV9lbGVtKTsKLSAg ICAgICAgICAgICAgICB2Y3B1X2Fzc2lnbihwcnYsIHd2Yy0+dmNwdSwgY3B1KTsKKyAgICAgICAg ICAgICAgICB1bml0X2Fzc2lnbihwcnYsIHd2Yy0+dW5pdCwgY3B1KTsKICAgICAgICAgICAgICAg ICBjcHVfcmFpc2Vfc29mdGlycShjcHUsIFNDSEVEVUxFX1NPRlRJUlEpOwogICAgICAgICAgICAg ICAgIHNwaW5fdW5sb2NrKCZwcnYtPndhaXRxX2xvY2spOwogICAgICAgICAgICAgICAgIHJldHVy biB0cnVlOwpAQCAtNDI1LDkgKzQyNCw5IEBAIHN0YXRpYyBzcGlubG9ja190ICpudWxsX3N3aXRj aF9zY2hlZChzdHJ1Y3Qgc2NoZWR1bGVyICpuZXdfb3BzLAogICAgIHN0cnVjdCBudWxsX3ByaXZh dGUgKnBydiA9IG51bGxfcHJpdihuZXdfb3BzKTsKICAgICBzdHJ1Y3QgbnVsbF91bml0ICpudmMg PSB2ZGF0YTsKIAotICAgIEFTU0VSVChudmMgJiYgaXNfaWRsZV92Y3B1KG52Yy0+dmNwdSkpOwor ICAgIEFTU0VSVChudmMgJiYgaXNfaWRsZV91bml0KG52Yy0+dW5pdCkpOwogCi0gICAgaWRsZV92 Y3B1W2NwdV0tPnNjaGVkX3VuaXQtPnByaXYgPSB2ZGF0YTsKKyAgICBzY2hlZF9pZGxlX3VuaXQo Y3B1KS0+cHJpdiA9IHZkYXRhOwogCiAgICAgLyoKICAgICAgKiBXZSBhcmUgaG9sZGluZyB0aGUg cnVucXVldWUgbG9jayBhbHJlYWR5IChpdCdzIGJlZW4gdGFrZW4gaW4KQEAgLTQ0NCw0MSArNDQz LDQwIEBAIHN0YXRpYyBzcGlubG9ja190ICpudWxsX3N3aXRjaF9zY2hlZChzdHJ1Y3Qgc2NoZWR1 bGVyICpuZXdfb3BzLAogc3RhdGljIHZvaWQgbnVsbF91bml0X2luc2VydChjb25zdCBzdHJ1Y3Qg c2NoZWR1bGVyICpvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2hl ZF91bml0ICp1bml0KQogewotICAgIHN0cnVjdCB2Y3B1ICp2ID0gdW5pdC0+dmNwdV9saXN0Owog ICAgIHN0cnVjdCBudWxsX3ByaXZhdGUgKnBydiA9IG51bGxfcHJpdihvcHMpOwogICAgIHN0cnVj dCBudWxsX3VuaXQgKm52YyA9IG51bGxfdW5pdCh1bml0KTsKICAgICB1bnNpZ25lZCBpbnQgY3B1 OwogICAgIHNwaW5sb2NrX3QgKmxvY2s7CiAKLSAgICBBU1NFUlQoIWlzX2lkbGVfdmNwdSh2KSk7 CisgICAgQVNTRVJUKCFpc19pZGxlX3VuaXQodW5pdCkpOwogCiAgICAgbG9jayA9IHVuaXRfc2No ZWR1bGVfbG9ja19pcnEodW5pdCk7CiAKLSAgICBpZiAoIHVubGlrZWx5KCFpc192Y3B1X29ubGlu ZSh2KSkgKQorICAgIGlmICggdW5saWtlbHkoIWlzX3VuaXRfb25saW5lKHVuaXQpKSApCiAgICAg ewogICAgICAgICB1bml0X3NjaGVkdWxlX3VubG9ja19pcnEobG9jaywgdW5pdCk7CiAgICAgICAg IHJldHVybjsKICAgICB9CiAKICByZXRyeToKLSAgICB1bml0LT5yZXMgPSBwaWNrX3JlcyhwcnYs IHVuaXQpOwotICAgIGNwdSA9IHYtPnByb2Nlc3NvciA9IHVuaXQtPnJlcy0+cHJvY2Vzc29yOwor ICAgIHNjaGVkX3NldF9yZXModW5pdCwgcGlja19yZXMocHJ2LCB1bml0KSk7CisgICAgY3B1ID0g c2NoZWRfdW5pdF9jcHUodW5pdCk7CiAKICAgICBzcGluX3VubG9jayhsb2NrKTsKIAogICAgIGxv Y2sgPSB1bml0X3NjaGVkdWxlX2xvY2sodW5pdCk7CiAKICAgICBjcHVtYXNrX2FuZChjcHVtYXNr X3NjcmF0Y2hfY3B1KGNwdSksIHVuaXQtPmNwdV9oYXJkX2FmZmluaXR5LAotICAgICAgICAgICAg ICAgIGNwdXBvb2xfZG9tYWluX2NwdW1hc2sodi0+ZG9tYWluKSk7CisgICAgICAgICAgICAgICAg Y3B1cG9vbF9kb21haW5fY3B1bWFzayh1bml0LT5kb21haW4pKTsKIAotICAgIC8qIElmIHRoZSBw Q1BVIGlzIGZyZWUsIHdlIGFzc2lnbiB2IHRvIGl0ICovCi0gICAgaWYgKCBsaWtlbHkocGVyX2Nw dShucGMsIGNwdSkudmNwdSA9PSBOVUxMKSApCisgICAgLyogSWYgdGhlIHBDUFUgaXMgZnJlZSwg d2UgYXNzaWduIHVuaXQgdG8gaXQgKi8KKyAgICBpZiAoIGxpa2VseShwZXJfY3B1KG5wYywgY3B1 KS51bml0ID09IE5VTEwpICkKICAgICB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIEluc2VydCBp cyBmb2xsb3dlZCBieSB2Y3B1X3dha2UoKSwgc28gdGhlcmUncyBubyBuZWVkIHRvIHBva2UKICAg ICAgICAgICogdGhlIHBjcHUgd2l0aCB0aGUgU0NIRURVTEVfU09GVElSUSwgYXMgd2FrZSB3aWxs IGRvIHRoYXQuCiAgICAgICAgICAqLwotICAgICAgICB2Y3B1X2Fzc2lnbihwcnYsIHYsIGNwdSk7 CisgICAgICAgIHVuaXRfYXNzaWduKHBydiwgdW5pdCwgY3B1KTsKICAgICB9CiAgICAgZWxzZSBp ZiAoIGNwdW1hc2tfaW50ZXJzZWN0cygmcHJ2LT5jcHVzX2ZyZWUsIGNwdW1hc2tfc2NyYXRjaF9j cHUoY3B1KSkgKQogICAgIHsKQEAgLTQ5Nyw3ICs0OTUsOCBAQCBzdGF0aWMgdm9pZCBudWxsX3Vu aXRfaW5zZXJ0KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywKICAgICAgICAgICovCiAgICAg ICAgIHNwaW5fbG9jaygmcHJ2LT53YWl0cV9sb2NrKTsKICAgICAgICAgbGlzdF9hZGRfdGFpbCgm bnZjLT53YWl0cV9lbGVtLCAmcHJ2LT53YWl0cSk7Ci0gICAgICAgIGRwcmludGsoWEVOTE9HX0df V0FSTklORywgIldBUk5JTkc6ICVwdiBub3QgYXNzaWduZWQgdG8gYW55IENQVSFcbiIsIHYpOwor ICAgICAgICBkcHJpbnRrKFhFTkxPR19HX1dBUk5JTkcsICJXQVJOSU5HOiAlcGR2JWQgbm90IGFz c2lnbmVkIHRvIGFueSBDUFUhXG4iLAorICAgICAgICAgICAgICAgIHVuaXQtPmRvbWFpbiwgdW5p dC0+dW5pdF9pZCk7CiAgICAgICAgIHNwaW5fdW5sb2NrKCZwcnYtPndhaXRxX2xvY2spOwogICAg IH0KICAgICBzcGluX3VubG9ja19pcnEobG9jayk7CkBAIC01MDgsMjQgKzUwNywyMyBAQCBzdGF0 aWMgdm9pZCBudWxsX3VuaXRfaW5zZXJ0KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywKIHN0 YXRpYyB2b2lkIG51bGxfdW5pdF9yZW1vdmUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKIHsK LSAgICBzdHJ1Y3QgdmNwdSAqdiA9IHVuaXQtPnZjcHVfbGlzdDsKICAgICBzdHJ1Y3QgbnVsbF9w cml2YXRlICpwcnYgPSBudWxsX3ByaXYob3BzKTsKICAgICBzdHJ1Y3QgbnVsbF91bml0ICpudmMg PSBudWxsX3VuaXQodW5pdCk7CiAgICAgc3BpbmxvY2tfdCAqbG9jazsKIAotICAgIEFTU0VSVCgh aXNfaWRsZV92Y3B1KHYpKTsKKyAgICBBU1NFUlQoIWlzX2lkbGVfdW5pdCh1bml0KSk7CiAKICAg ICBsb2NrID0gdW5pdF9zY2hlZHVsZV9sb2NrX2lycSh1bml0KTsKIAotICAgIC8qIElmIG9mZmxp bmUsIHRoZSB2Y3B1IHNob3VsZG4ndCBiZSBhc3NpZ25lZCwgbm9yIGluIHRoZSB3YWl0cXVldWUg Ki8KLSAgICBpZiAoIHVubGlrZWx5KCFpc192Y3B1X29ubGluZSh2KSkgKQorICAgIC8qIElmIG9m ZmxpbmUsIHRoZSB1bml0IHNob3VsZG4ndCBiZSBhc3NpZ25lZCwgbm9yIGluIHRoZSB3YWl0cXVl dWUgKi8KKyAgICBpZiAoIHVubGlrZWx5KCFpc191bml0X29ubGluZSh1bml0KSkgKQogICAgIHsK LSAgICAgICAgQVNTRVJUKHBlcl9jcHUobnBjLCB2LT5wcm9jZXNzb3IpLnZjcHUgIT0gdik7Cisg ICAgICAgIEFTU0VSVChwZXJfY3B1KG5wYywgc2NoZWRfdW5pdF9jcHUodW5pdCkpLnVuaXQgIT0g dW5pdCk7CiAgICAgICAgIEFTU0VSVChsaXN0X2VtcHR5KCZudmMtPndhaXRxX2VsZW0pKTsKICAg ICAgICAgZ290byBvdXQ7CiAgICAgfQogCi0gICAgLyogSWYgdiBpcyBpbiB3YWl0cXVldWUsIGp1 c3QgZ2V0IGl0IG91dCBvZiB0aGVyZSBhbmQgYmFpbCAqLworICAgIC8qIElmIHVuaXQgaXMgaW4g d2FpdHF1ZXVlLCBqdXN0IGdldCBpdCBvdXQgb2YgdGhlcmUgYW5kIGJhaWwgKi8KICAgICBpZiAo IHVubGlrZWx5KCFsaXN0X2VtcHR5KCZudmMtPndhaXRxX2VsZW0pKSApCiAgICAgewogICAgICAg ICBzcGluX2xvY2soJnBydi0+d2FpdHFfbG9jayk7CkBAIC01MzUsNyArNTMzLDcgQEAgc3RhdGlj IHZvaWQgbnVsbF91bml0X3JlbW92ZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsCiAgICAg ICAgIGdvdG8gb3V0OwogICAgIH0KIAotICAgIHZjcHVfZGVhc3NpZ24ocHJ2LCB2KTsKKyAgICB1 bml0X2RlYXNzaWduKHBydiwgdW5pdCk7CiAKICBvdXQ6CiAgICAgdW5pdF9zY2hlZHVsZV91bmxv Y2tfaXJxKGxvY2ssIHVuaXQpOwpAQCAtNTQ2LDE0ICs1NDQsMTMgQEAgc3RhdGljIHZvaWQgbnVs bF91bml0X3JlbW92ZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsCiBzdGF0aWMgdm9pZCBu dWxsX3VuaXRfd2FrZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKIHsKLSAgICBzdHJ1Y3QgdmNw dSAqdiA9IHVuaXQtPnZjcHVfbGlzdDsKICAgICBzdHJ1Y3QgbnVsbF9wcml2YXRlICpwcnYgPSBu dWxsX3ByaXYob3BzKTsKICAgICBzdHJ1Y3QgbnVsbF91bml0ICpudmMgPSBudWxsX3VuaXQodW5p dCk7Ci0gICAgdW5zaWduZWQgaW50IGNwdSA9IHYtPnByb2Nlc3NvcjsKKyAgICB1bnNpZ25lZCBp bnQgY3B1ID0gc2NoZWRfdW5pdF9jcHUodW5pdCk7CiAKLSAgICBBU1NFUlQoIWlzX2lkbGVfdmNw dSh2KSk7CisgICAgQVNTRVJUKCFpc19pZGxlX3VuaXQodW5pdCkpOwogCi0gICAgaWYgKCB1bmxp a2VseShjdXJyX29uX2NwdShjcHUpID09IHVuaXQpICkKKyAgICBpZiAoIHVubGlrZWx5KGN1cnJf b25fY3B1KHNjaGVkX3VuaXRfY3B1KHVuaXQpKSA9PSB1bml0KSApCiAgICAgewogICAgICAgICBT Q0hFRF9TVEFUX0NSQU5LKHVuaXRfd2FrZV9ydW5uaW5nKTsKICAgICAgICAgcmV0dXJuOwpAQCAt NTY2LDMzICs1NjMsMzMgQEAgc3RhdGljIHZvaWQgbnVsbF91bml0X3dha2UoY29uc3Qgc3RydWN0 IHNjaGVkdWxlciAqb3BzLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCBsaWtl bHkodmNwdV9ydW5uYWJsZSh2KSkgKQorICAgIGlmICggbGlrZWx5KHVuaXRfcnVubmFibGUodW5p dCkpICkKICAgICAgICAgU0NIRURfU1RBVF9DUkFOSyh1bml0X3dha2VfcnVubmFibGUpOwogICAg IGVsc2UKICAgICAgICAgU0NIRURfU1RBVF9DUkFOSyh1bml0X3dha2Vfbm90X3J1bm5hYmxlKTsK IAogICAgIC8qCi0gICAgICogSWYgYSB2Y3B1IGlzIG5laXRoZXIgb24gYSBwQ1BVIG5vciBpbiB0 aGUgd2FpdHF1ZXVlLCBpdCBtZWFucyBpdCB3YXMKKyAgICAgKiBJZiBhIHVuaXQgaXMgbmVpdGhl ciBvbiBhIHBDUFUgbm9yIGluIHRoZSB3YWl0cXVldWUsIGl0IG1lYW5zIGl0IHdhcwogICAgICAq IG9mZmxpbmUsIGFuZCB0aGF0IGl0IGlzIG5vdyBjb21pbmcgYmFjayBiZWluZyBvbmxpbmUuCiAg ICAgICovCi0gICAgaWYgKCB1bmxpa2VseShwZXJfY3B1KG5wYywgY3B1KS52Y3B1ICE9IHYgJiYg bGlzdF9lbXB0eSgmbnZjLT53YWl0cV9lbGVtKSkgKQorICAgIGlmICggdW5saWtlbHkocGVyX2Nw dShucGMsIGNwdSkudW5pdCAhPSB1bml0ICYmIGxpc3RfZW1wdHkoJm52Yy0+d2FpdHFfZWxlbSkp ICkKICAgICB7CiAgICAgICAgIHNwaW5fbG9jaygmcHJ2LT53YWl0cV9sb2NrKTsKICAgICAgICAg bGlzdF9hZGRfdGFpbCgmbnZjLT53YWl0cV9lbGVtLCAmcHJ2LT53YWl0cSk7CiAgICAgICAgIHNw aW5fdW5sb2NrKCZwcnYtPndhaXRxX2xvY2spOwogCiAgICAgICAgIGNwdW1hc2tfYW5kKGNwdW1h c2tfc2NyYXRjaF9jcHUoY3B1KSwgdW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHksCi0gICAgICAgICAg ICAgICAgICAgIGNwdXBvb2xfZG9tYWluX2NwdW1hc2sodi0+ZG9tYWluKSk7CisgICAgICAgICAg ICAgICAgICAgIGNwdXBvb2xfZG9tYWluX2NwdW1hc2sodW5pdC0+ZG9tYWluKSk7CiAKICAgICAg ICAgaWYgKCAhY3B1bWFza19pbnRlcnNlY3RzKCZwcnYtPmNwdXNfZnJlZSwgY3B1bWFza19zY3Jh dGNoX2NwdShjcHUpKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0df V0FSTklORywgIldBUk5JTkc6IGQlZHYlZCBub3QgYXNzaWduZWQgdG8gYW55IENQVSFcbiIsCi0g ICAgICAgICAgICAgICAgICAgIHYtPmRvbWFpbi0+ZG9tYWluX2lkLCB2LT52Y3B1X2lkKTsKKyAg ICAgICAgICAgICAgICAgICAgdW5pdC0+ZG9tYWluLT5kb21haW5faWQsIHVuaXQtPnVuaXRfaWQp OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgLyoKLSAgICAgICAg ICogTm93IHdlIHdvdWxkIHdhbnQgdG8gYXNzaWduIHRoZSB2Y3B1IHRvIGNwdSwgYnV0IHdlIGNh bid0LCBiZWNhdXNlCisgICAgICAgICAqIE5vdyB3ZSB3b3VsZCB3YW50IHRvIGFzc2lnbiB0aGUg dW5pdCB0byBjcHUsIGJ1dCB3ZSBjYW4ndCwgYmVjYXVzZQogICAgICAgICAgKiB3ZSBkb24ndCBo YXZlIHRoZSBsb2NrLiBTbywgbGV0J3MgZG8gdGhlIGZvbGxvd2luZzoKICAgICAgICAgICogLSB0 cnkgdG8gcmVtb3ZlIGNwdSBmcm9tIHRoZSBsaXN0IG9mIGZyZWUgY3B1cywgdG8gYXZvaWQgcmFj ZXMgd2l0aAogICAgICAgICAgKiAgIG90aGVyIG9ubGluaW5nLCBpbnNlcnRpbmcgb3IgbWlncmF0 aW5nIG9wZXJhdGlvbnM7CkBAIC02MTMsMjUgKzYxMCwyNCBAQCBzdGF0aWMgdm9pZCBudWxsX3Vu aXRfd2FrZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsCiAgICAgICAgIH0KICAgICB9CiAK LSAgICAvKiBOb3RlIHRoYXQgd2UgZ2V0IGhlcmUgb25seSBmb3IgdkNQVXMgYXNzaWduZWQgdG8g YSBwQ1BVICovCi0gICAgY3B1X3JhaXNlX3NvZnRpcnEodi0+cHJvY2Vzc29yLCBTQ0hFRFVMRV9T T0ZUSVJRKTsKKyAgICAvKiBOb3RlIHRoYXQgd2UgZ2V0IGhlcmUgb25seSBmb3IgdW5pdHMgYXNz aWduZWQgdG8gYSBwQ1BVICovCisgICAgY3B1X3JhaXNlX3NvZnRpcnEoc2NoZWRfdW5pdF9jcHUo dW5pdCksIFNDSEVEVUxFX1NPRlRJUlEpOwogfQogCiBzdGF0aWMgdm9pZCBudWxsX3VuaXRfc2xl ZXAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogewotICAgIHN0cnVjdCB2Y3B1ICp2ID0gdW5p dC0+dmNwdV9saXN0OwogICAgIHN0cnVjdCBudWxsX3ByaXZhdGUgKnBydiA9IG51bGxfcHJpdihv cHMpOwotICAgIHVuc2lnbmVkIGludCBjcHUgPSB2LT5wcm9jZXNzb3I7CisgICAgdW5zaWduZWQg aW50IGNwdSA9IHNjaGVkX3VuaXRfY3B1KHVuaXQpOwogICAgIGJvb2wgdGlja2xlZCA9IGZhbHNl OwogCi0gICAgQVNTRVJUKCFpc19pZGxlX3ZjcHUodikpOworICAgIEFTU0VSVCghaXNfaWRsZV91 bml0KHVuaXQpKTsKIAotICAgIC8qIAotICAgICAqIENoZWNrIGlmIHRoZSB2Y3B1IGlzIGluIHRo ZSBwcm9jZXNzIG9mIGJlaW5nIG9mZmxpbmVkLiBpZiB5ZXMsCisgICAgLyoKKyAgICAgKiBDaGVj ayBpZiB0aGUgdW5pdCBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBvZmZsaW5lZC4gSWYgeWVz LAogICAgICAqIHdlIG5lZWQgdG8gcmVtb3ZlIGl0IGZyb20gZWl0aGVyIGl0cyBwQ1BVIG9yIHRo ZSB3YWl0cXVldWUuCiAgICAgICovCi0gICAgaWYgKCB1bmxpa2VseSghaXNfdmNwdV9vbmxpbmUo dikpICkKKyAgICBpZiAoIHVubGlrZWx5KCFpc191bml0X29ubGluZSh1bml0KSkgKQogICAgIHsK ICAgICAgICAgc3RydWN0IG51bGxfdW5pdCAqbnZjID0gbnVsbF91bml0KHVuaXQpOwogCkBAIC02 NDEsMTEgKzYzNywxMSBAQCBzdGF0aWMgdm9pZCBudWxsX3VuaXRfc2xlZXAoY29uc3Qgc3RydWN0 IHNjaGVkdWxlciAqb3BzLAogICAgICAgICAgICAgbGlzdF9kZWxfaW5pdCgmbnZjLT53YWl0cV9l bGVtKTsKICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZwcnYtPndhaXRxX2xvY2spOwogICAgICAg ICB9Ci0gICAgICAgIGVsc2UgaWYgKCBwZXJfY3B1KG5wYywgY3B1KS52Y3B1ID09IHYgKQotICAg ICAgICAgICAgdGlja2xlZCA9IHZjcHVfZGVhc3NpZ24ocHJ2LCB2KTsKKyAgICAgICAgZWxzZSBp ZiAoIHBlcl9jcHUobnBjLCBjcHUpLnVuaXQgPT0gdW5pdCApCisgICAgICAgICAgICB0aWNrbGVk ID0gdW5pdF9kZWFzc2lnbihwcnYsIHVuaXQpOwogICAgIH0KIAotICAgIC8qIElmIHYgaXMgbm90 IGFzc2lnbmVkIHRvIGEgcENQVSwgb3IgaXMgbm90IHJ1bm5pbmcsIG5vIG5lZWQgdG8gYm90aGVy ICovCisgICAgLyogSWYgdW5pdCBpcyBub3QgYXNzaWduZWQgdG8gYSBwQ1BVLCBvciBpcyBub3Qg cnVubmluZywgbm8gbmVlZCB0byBib3RoZXIgKi8KICAgICBpZiAoIGxpa2VseSghdGlja2xlZCAm JiBjdXJyX29uX2NwdShjcHUpID09IHVuaXQpICkKICAgICAgICAgY3B1X3JhaXNlX3NvZnRpcnEo Y3B1LCBTQ0hFRFVMRV9TT0ZUSVJRKTsKIApAQCAtNjU1LDQyICs2NTEsNDEgQEAgc3RhdGljIHZv aWQgbnVsbF91bml0X3NsZWVwKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywKIHN0YXRpYyBz dHJ1Y3Qgc2NoZWRfcmVzb3VyY2UgKgogbnVsbF9yZXNfcGljayhjb25zdCBzdHJ1Y3Qgc2NoZWR1 bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogewotICAgIEFTU0VSVCghaXNfaWRs ZV92Y3B1KHVuaXQtPnZjcHVfbGlzdCkpOworICAgIEFTU0VSVCghaXNfaWRsZV91bml0KHVuaXQp KTsKICAgICByZXR1cm4gcGlja19yZXMobnVsbF9wcml2KG9wcyksIHVuaXQpOwogfQogCiBzdGF0 aWMgdm9pZCBudWxsX3VuaXRfbWlncmF0ZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCwgdW5z aWduZWQgaW50IG5ld19jcHUpCiB7Ci0gICAgc3RydWN0IHZjcHUgKnYgPSB1bml0LT52Y3B1X2xp c3Q7CiAgICAgc3RydWN0IG51bGxfcHJpdmF0ZSAqcHJ2ID0gbnVsbF9wcml2KG9wcyk7CiAgICAg c3RydWN0IG51bGxfdW5pdCAqbnZjID0gbnVsbF91bml0KHVuaXQpOwogCi0gICAgQVNTRVJUKCFp c19pZGxlX3ZjcHUodikpOworICAgIEFTU0VSVCghaXNfaWRsZV91bml0KHVuaXQpKTsKIAotICAg IGlmICggdi0+cHJvY2Vzc29yID09IG5ld19jcHUgKQorICAgIGlmICggc2NoZWRfdW5pdF9jcHUo dW5pdCkgPT0gbmV3X2NwdSApCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICggdW5saWtlbHko dGJfaW5pdF9kb25lKSApCiAgICAgewogICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgdWlu dDE2X3QgdmNwdSwgZG9tOworICAgICAgICAgICAgdWludDE2X3QgdW5pdCwgZG9tOwogICAgICAg ICAgICAgdWludDE2X3QgY3B1LCBuZXdfY3B1OwogICAgICAgICB9IGQ7Ci0gICAgICAgIGQuZG9t ID0gdi0+ZG9tYWluLT5kb21haW5faWQ7Ci0gICAgICAgIGQudmNwdSA9IHYtPnZjcHVfaWQ7Ci0g ICAgICAgIGQuY3B1ID0gdi0+cHJvY2Vzc29yOworICAgICAgICBkLmRvbSA9IHVuaXQtPmRvbWFp bi0+ZG9tYWluX2lkOworICAgICAgICBkLnVuaXQgPSB1bml0LT51bml0X2lkOworICAgICAgICBk LmNwdSA9IHNjaGVkX3VuaXRfY3B1KHVuaXQpOwogICAgICAgICBkLm5ld19jcHUgPSBuZXdfY3B1 OwogICAgICAgICBfX3RyYWNlX3ZhcihUUkNfU05VTExfTUlHUkFURSwgMSwgc2l6ZW9mKGQpLCAm ZCk7CiAgICAgfQogCiAgICAgLyoKLSAgICAgKiBJZiB2IGlzIGFzc2lnbmVkIHRvIGEgcENQVSwg dGhlbiBzdWNoIHBDUFUgYmVjb21lcyBmcmVlLCBhbmQgd2UKKyAgICAgKiBJZiB1bml0IGlzIGFz c2lnbmVkIHRvIGEgcENQVSwgdGhlbiBzdWNoIHBDUFUgYmVjb21lcyBmcmVlLCBhbmQgd2UKICAg ICAgKiBzaG91bGQgbG9vayBpbiB0aGUgd2FpdHF1ZXVlIGlmIGFueW9uZSBlbHNlIGNhbiBiZSBh c3NpZ25lZCB0byBpdC4KICAgICAgKi8KLSAgICBpZiAoIGxpa2VseShwZXJfY3B1KG5wYywgdi0+ cHJvY2Vzc29yKS52Y3B1ID09IHYpICkKKyAgICBpZiAoIGxpa2VseShwZXJfY3B1KG5wYywgc2No ZWRfdW5pdF9jcHUodW5pdCkpLnVuaXQgPT0gdW5pdCkgKQogICAgIHsKLSAgICAgICAgdmNwdV9k ZWFzc2lnbihwcnYsIHYpOworICAgICAgICB1bml0X2RlYXNzaWduKHBydiwgdW5pdCk7CiAgICAg ICAgIFNDSEVEX1NUQVRfQ1JBTksobWlncmF0ZV9ydW5uaW5nKTsKICAgICB9CiAgICAgZWxzZSBp ZiAoICFsaXN0X2VtcHR5KCZudmMtPndhaXRxX2VsZW0pICkKQEAgLTY5OSwxMyArNjk0LDEzIEBA IHN0YXRpYyB2b2lkIG51bGxfdW5pdF9taWdyYXRlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9w cywKICAgICBTQ0hFRF9TVEFUX0NSQU5LKG1pZ3JhdGVkKTsKIAogICAgIC8qCi0gICAgICogSWYg YSB2Y3B1IGlzIChnb2luZykgb2ZmbGluZSwgd2Ugd2FudCBpdCB0byBiZSBuZWl0aGVyIGFzc2ln bmVkCisgICAgICogSWYgYSB1bml0IGlzIChnb2luZykgb2ZmbGluZSwgd2Ugd2FudCBpdCB0byBi ZSBuZWl0aGVyIGFzc2lnbmVkCiAgICAgICogdG8gYSBwQ1BVLCBub3IgaW4gdGhlIHdhaXRxdWV1 ZS4KICAgICAgKgogICAgICAqIElmIGl0IHdhcyBvbiBhIGNwdSwgd2UndmUgcmVtb3ZlZCBpdCBm cm9tIHRoZXJlIGFib3ZlLiBJZiBpdCBpcwogICAgICAqIGluIHRoZSB3YWl0cXVldWUsIHdlIHJl bW92ZSBpdCBmcm9tIHRoZXJlIG5vdy4gQW5kIHRoZW4gd2UgYmFpbC4KICAgICAgKi8KLSAgICBp ZiAoIHVubGlrZWx5KCFpc192Y3B1X29ubGluZSh2KSkgKQorICAgIGlmICggdW5saWtlbHkoIWlz X3VuaXRfb25saW5lKHVuaXQpKSApCiAgICAgewogICAgICAgICBzcGluX2xvY2soJnBydi0+d2Fp dHFfbG9jayk7CiAgICAgICAgIGxpc3RfZGVsX2luaXQoJm52Yy0+d2FpdHFfZWxlbSk7CkBAIC03 MTQsMzIgKzcwOSwzNCBAQCBzdGF0aWMgdm9pZCBudWxsX3VuaXRfbWlncmF0ZShjb25zdCBzdHJ1 Y3Qgc2NoZWR1bGVyICpvcHMsCiAgICAgfQogCiAgICAgLyoKLSAgICAgKiBMZXQncyBub3cgY29u c2lkZXIgbmV3X2NwdSwgd2hpY2ggaXMgd2hlcmUgdiBpcyBiZWluZyBzZW50LiBJdCBjYW4gYmUK LSAgICAgKiBlaXRoZXIgZnJlZSwgb3IgaGF2ZSBhIHZDUFUgYWxyZWFkeSBhc3NpZ25lZCB0byBp dC4KKyAgICAgKiBMZXQncyBub3cgY29uc2lkZXIgbmV3X2NwdSwgd2hpY2ggaXMgd2hlcmUgdW5p dCBpcyBiZWluZyBzZW50LiBJdCBjYW4gYmUKKyAgICAgKiBlaXRoZXIgZnJlZSwgb3IgaGF2ZSBh IHVuaXQgYWxyZWFkeSBhc3NpZ25lZCB0byBpdC4KICAgICAgKgotICAgICAqIEluIHRoZSBmb3Jt ZXIgY2FzZSwgd2Ugc2hvdWxkIGFzc2lnbiB2IHRvIGl0LCBhbmQgdHJ5IHRvIGdldCBpdCB0byBy dW4sCisgICAgICogSW4gdGhlIGZvcm1lciBjYXNlIHdlIHNob3VsZCBhc3NpZ24gdW5pdCB0byBp dCwgYW5kIHRyeSB0byBnZXQgaXQgdG8gcnVuLAogICAgICAqIGlmIHBvc3NpYmxlLCBhY2NvcmRp bmcgdG8gYWZmaW5pdHkuCiAgICAgICoKLSAgICAgKiBJbiBsYXR0ZXIsIGFsbCB3ZSBjYW4gZG8g aXMgdG8gcGFyayB2IGluIHRoZSB3YWl0cXVldWUuCisgICAgICogSW4gbGF0dGVyLCBhbGwgd2Ug Y2FuIGRvIGlzIHRvIHBhcmsgdW5pdCBpbiB0aGUgd2FpdHF1ZXVlLgogICAgICAqLwotICAgIGlm ICggcGVyX2NwdShucGMsIG5ld19jcHUpLnZjcHUgPT0gTlVMTCAmJgotICAgICAgICAgdmNwdV9j aGVja19hZmZpbml0eSh2LCBuZXdfY3B1LCBCQUxBTkNFX0hBUkRfQUZGSU5JVFkpICkKKyAgICBp ZiAoIHBlcl9jcHUobnBjLCBuZXdfY3B1KS51bml0ID09IE5VTEwgJiYKKyAgICAgICAgIHVuaXRf Y2hlY2tfYWZmaW5pdHkodW5pdCwgbmV3X2NwdSwgQkFMQU5DRV9IQVJEX0FGRklOSVRZKSApCiAg ICAgewotICAgICAgICAvKiB2IG1pZ2h0IGhhdmUgYmVlbiBpbiB0aGUgd2FpdHF1ZXVlLCBzbyBy ZW1vdmUgaXQgKi8KKyAgICAgICAgLyogdW5pdCBtaWdodCBoYXZlIGJlZW4gaW4gdGhlIHdhaXRx dWV1ZSwgc28gcmVtb3ZlIGl0ICovCiAgICAgICAgIHNwaW5fbG9jaygmcHJ2LT53YWl0cV9sb2Nr KTsKICAgICAgICAgbGlzdF9kZWxfaW5pdCgmbnZjLT53YWl0cV9lbGVtKTsKICAgICAgICAgc3Bp bl91bmxvY2soJnBydi0+d2FpdHFfbG9jayk7CiAKLSAgICAgICAgdmNwdV9hc3NpZ24ocHJ2LCB2 LCBuZXdfY3B1KTsKKyAgICAgICAgdW5pdF9hc3NpZ24ocHJ2LCB1bml0LCBuZXdfY3B1KTsKICAg ICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgLyogUHV0IHYgaW4gdGhlIHdhaXRxdWV1ZSwg aWYgaXQgd2Fzbid0IHRoZXJlIGFscmVhZHkgKi8KKyAgICAgICAgLyogUHV0IHVuaXQgaW4gdGhl IHdhaXRxdWV1ZSwgaWYgaXQgd2Fzbid0IHRoZXJlIGFscmVhZHkgKi8KICAgICAgICAgc3Bpbl9s b2NrKCZwcnYtPndhaXRxX2xvY2spOwogICAgICAgICBpZiAoIGxpc3RfZW1wdHkoJm52Yy0+d2Fp dHFfZWxlbSkgKQogICAgICAgICB7CiAgICAgICAgICAgICBsaXN0X2FkZF90YWlsKCZudmMtPndh aXRxX2VsZW0sICZwcnYtPndhaXRxKTsKLSAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0dfV0FS TklORywgIldBUk5JTkc6ICVwdiBub3QgYXNzaWduZWQgdG8gYW55IENQVSFcbiIsIHYpOworICAg ICAgICAgICAgZHByaW50ayhYRU5MT0dfR19XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAi V0FSTklORzogJXBkdiVkIG5vdCBhc3NpZ25lZCB0byBhbnkgQ1BVIVxuIiwgdW5pdC0+ZG9tYWlu LAorICAgICAgICAgICAgICAgICAgICB1bml0LT51bml0X2lkKTsKICAgICAgICAgfQogICAgICAg ICBzcGluX3VubG9jaygmcHJ2LT53YWl0cV9sb2NrKTsKICAgICB9CkBAIC03NTMsMzUgKzc1MCwz NCBAQCBzdGF0aWMgdm9pZCBudWxsX3VuaXRfbWlncmF0ZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVy ICpvcHMsCiAgICAgICogYnkgdGhpcywgd2lsbCBiZSBmaXhlZC11cCBkdXJpbmcgcmVzdW1lLgog ICAgICAqLwogIG91dDoKLSAgICB2LT5wcm9jZXNzb3IgPSBuZXdfY3B1OwotICAgIHVuaXQtPnJl cyA9IGdldF9zY2hlZF9yZXMobmV3X2NwdSk7CisgICAgc2NoZWRfc2V0X3Jlcyh1bml0LCBnZXRf c2NoZWRfcmVzKG5ld19jcHUpKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKLXN0YXRpYyBpbmxpbmUg dm9pZCBudWxsX3ZjcHVfY2hlY2soc3RydWN0IHZjcHUgKnYpCitzdGF0aWMgaW5saW5lIHZvaWQg bnVsbF91bml0X2NoZWNrKHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogewotICAgIHN0cnVjdCBu dWxsX3VuaXQgKiBjb25zdCBudmMgPSBudWxsX3VuaXQodi0+c2NoZWRfdW5pdCk7Ci0gICAgc3Ry dWN0IG51bGxfZG9tICogY29uc3QgbmRvbSA9IHYtPmRvbWFpbi0+c2NoZWRfcHJpdjsKKyAgICBz dHJ1Y3QgbnVsbF91bml0ICogY29uc3QgbnZjID0gbnVsbF91bml0KHVuaXQpOworICAgIHN0cnVj dCBudWxsX2RvbSAqIGNvbnN0IG5kb20gPSB1bml0LT5kb21haW4tPnNjaGVkX3ByaXY7CiAKLSAg ICBCVUdfT04obnZjLT52Y3B1ICE9IHYpOworICAgIEJVR19PTihudmMtPnVuaXQgIT0gdW5pdCk7 CiAKICAgICBpZiAoIG5kb20gKQotICAgICAgICBCVUdfT04oaXNfaWRsZV92Y3B1KHYpKTsKKyAg ICAgICAgQlVHX09OKGlzX2lkbGVfdW5pdCh1bml0KSk7CiAgICAgZWxzZQotICAgICAgICBCVUdf T04oIWlzX2lkbGVfdmNwdSh2KSk7CisgICAgICAgIEJVR19PTighaXNfaWRsZV91bml0KHVuaXQp KTsKIAogICAgIFNDSEVEX1NUQVRfQ1JBTksodW5pdF9jaGVjayk7CiB9Ci0jZGVmaW5lIE5VTExf VkNQVV9DSEVDSyh2KSAgKG51bGxfdmNwdV9jaGVjayh2KSkKKyNkZWZpbmUgTlVMTF9VTklUX0NI RUNLKHVuaXQpICAobnVsbF91bml0X2NoZWNrKHVuaXQpKQogI2Vsc2UKLSNkZWZpbmUgTlVMTF9W Q1BVX0NIRUNLKHYpCisjZGVmaW5lIE5VTExfVU5JVF9DSEVDSyh1bml0KQogI2VuZGlmCiAKIAog LyoKICAqIFRoZSBtb3N0IHNpbXBsZSBzY2hlZHVsaW5nIGZ1bmN0aW9uIG9mIGFsbCB0aW1lcyEg V2UgZWl0aGVyIHJldHVybjoKLSAqICAtIHRoZSB2Q1BVIGFzc2lnbmVkIHRvIHRoZSBwQ1BVLCBp ZiB0aGVyZSdzIG9uZSBhbmQgaXQgY2FuIHJ1bjsKLSAqICAtIHRoZSBpZGxlIHZDUFUsIG90aGVy d2lzZS4KKyAqICAtIHRoZSB1bml0IGFzc2lnbmVkIHRvIHRoZSBwQ1BVLCBpZiB0aGVyZSdzIG9u ZSBhbmQgaXQgY2FuIHJ1bjsKKyAqICAtIHRoZSBpZGxlIHVuaXQsIG90aGVyd2lzZS4KICAqLwog c3RhdGljIHN0cnVjdCB0YXNrX3NsaWNlIG51bGxfc2NoZWR1bGUoY29uc3Qgc3RydWN0IHNjaGVk dWxlciAqb3BzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc190aW1l X3Qgbm93LApAQCAtNzk0LDI0ICs3OTAsMjQgQEAgc3RhdGljIHN0cnVjdCB0YXNrX3NsaWNlIG51 bGxfc2NoZWR1bGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLAogICAgIHN0cnVjdCB0YXNr X3NsaWNlIHJldDsKIAogICAgIFNDSEVEX1NUQVRfQ1JBTksoc2NoZWR1bGUpOwotICAgIE5VTExf VkNQVV9DSEVDSyhjdXJyZW50KTsKKyAgICBOVUxMX1VOSVRfQ0hFQ0soY3VycmVudC0+c2NoZWRf dW5pdCk7CiAKICAgICBpZiAoIHVubGlrZWx5KHRiX2luaXRfZG9uZSkgKQogICAgIHsKICAgICAg ICAgc3RydWN0IHsKICAgICAgICAgICAgIHVpbnQxNl90IHRhc2tsZXQsIGNwdTsKLSAgICAgICAg ICAgIGludDE2X3QgdmNwdSwgZG9tOworICAgICAgICAgICAgaW50MTZfdCB1bml0LCBkb207CiAg ICAgICAgIH0gZDsKICAgICAgICAgZC5jcHUgPSBjcHU7CiAgICAgICAgIGQudGFza2xldCA9IHRh c2tsZXRfd29ya19zY2hlZHVsZWQ7Ci0gICAgICAgIGlmICggcGVyX2NwdShucGMsIGNwdSkudmNw dSA9PSBOVUxMICkKKyAgICAgICAgaWYgKCBwZXJfY3B1KG5wYywgY3B1KS51bml0ID09IE5VTEwg KQogICAgICAgICB7Ci0gICAgICAgICAgICBkLnZjcHUgPSBkLmRvbSA9IC0xOworICAgICAgICAg ICAgZC51bml0ID0gZC5kb20gPSAtMTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAg IHsKLSAgICAgICAgICAgIGQudmNwdSA9IHBlcl9jcHUobnBjLCBjcHUpLnZjcHUtPnZjcHVfaWQ7 Ci0gICAgICAgICAgICBkLmRvbSA9IHBlcl9jcHUobnBjLCBjcHUpLnZjcHUtPmRvbWFpbi0+ZG9t YWluX2lkOworICAgICAgICAgICAgZC51bml0ID0gcGVyX2NwdShucGMsIGNwdSkudW5pdC0+dW5p dF9pZDsKKyAgICAgICAgICAgIGQuZG9tID0gcGVyX2NwdShucGMsIGNwdSkudW5pdC0+ZG9tYWlu LT5kb21haW5faWQ7CiAgICAgICAgIH0KICAgICAgICAgX190cmFjZV92YXIoVFJDX1NOVUxMX1ND SEVEVUxFLCAxLCBzaXplb2YoZCksICZkKTsKICAgICB9CkBAIC04MTksMTYgKzgxNSwxNiBAQCBz dGF0aWMgc3RydWN0IHRhc2tfc2xpY2UgbnVsbF9zY2hlZHVsZShjb25zdCBzdHJ1Y3Qgc2NoZWR1 bGVyICpvcHMsCiAgICAgaWYgKCB0YXNrbGV0X3dvcmtfc2NoZWR1bGVkICkKICAgICB7CiAgICAg ICAgIHRyYWNlX3ZhcihUUkNfU05VTExfVEFTS0xFVCwgMSwgMCwgTlVMTCk7Ci0gICAgICAgIHJl dC50YXNrID0gaWRsZV92Y3B1W2NwdV0tPnNjaGVkX3VuaXQ7CisgICAgICAgIHJldC50YXNrID0g c2NoZWRfaWRsZV91bml0KGNwdSk7CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgcmV0LnRhc2sg PSBwZXJfY3B1KG5wYywgY3B1KS52Y3B1LT5zY2hlZF91bml0OworICAgICAgICByZXQudGFzayA9 IHBlcl9jcHUobnBjLCBjcHUpLnVuaXQ7CiAgICAgcmV0Lm1pZ3JhdGVkID0gMDsKICAgICByZXQu dGltZSA9IC0xOwogCiAgICAgLyoKICAgICAgKiBXZSBtYXkgYmUgbmV3IGluIHRoZSBjcHVwb29s LCBvciBqdXN0IGNvbWluZyBiYWNrIG9ubGluZS4gSW4gd2hpY2gKLSAgICAgKiBjYXNlLCB0aGVy ZSBtYXkgYmUgdkNQVXMgaW4gdGhlIHdhaXRxdWV1ZSB0aGF0IHdlIGNhbiBhc3NpZ24gdG8gdXMK KyAgICAgKiBjYXNlLCB0aGVyZSBtYXkgYmUgdW5pdHMgaW4gdGhlIHdhaXRxdWV1ZSB0aGF0IHdl IGNhbiBhc3NpZ24gdG8gdXMKICAgICAgKiBhbmQgcnVuLgogICAgICAqLwogICAgIGlmICggdW5s aWtlbHkocmV0LnRhc2sgPT0gTlVMTCkgKQpAQCAtODM5LDEwICs4MzUsMTAgQEAgc3RhdGljIHN0 cnVjdCB0YXNrX3NsaWNlIG51bGxfc2NoZWR1bGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3Bz LAogICAgICAgICAgICAgZ290byB1bmxvY2s7CiAKICAgICAgICAgLyoKLSAgICAgICAgICogV2Ug c2NhbiB0aGUgd2FpdHF1ZXVlIHR3aWNlLCBmb3IgcHJpb3JpdGl6aW5nIHZjcHVzIHRoYXQgaGF2 ZQorICAgICAgICAgKiBXZSBzY2FuIHRoZSB3YWl0cXVldWUgdHdpY2UsIGZvciBwcmlvcml0aXpp bmcgdW5pdHMgdGhhdCBoYXZlCiAgICAgICAgICAqIHNvZnQtYWZmaW5pdHkgd2l0aCBjcHUuIFRo aXMgbWF5IGxvb2sgbGlrZSBzb21ldGhpbmcgZXhwZW5zaXZlIHRvCi0gICAgICAgICAqIGRvIGhl cmUgaW4gbnVsbF9zY2hlZHVsZSgpLCBidXQgaXQncyBhY3R1YWxseSBmaW5lLCBiZWNldXNlIHdl IGRvCi0gICAgICAgICAqIGl0IG9ubHkgaW4gY2FzZXMgd2hlcmUgYSBwY3B1IGhhcyBubyB2Y3B1 IGFzc29jaWF0ZWQgKGUuZy4sIGFzCisgICAgICAgICAqIGRvIGhlcmUgaW4gbnVsbF9zY2hlZHVs ZSgpLCBidXQgaXQncyBhY3R1YWxseSBmaW5lLCBiZWNhdXNlIHdlIGRvCisgICAgICAgICAqIGl0 IG9ubHkgaW4gY2FzZXMgd2hlcmUgYSBwY3B1IGhhcyBubyB1bml0IGFzc29jaWF0ZWQgKGUuZy4s IGFzCiAgICAgICAgICAqIHNhaWQgYWJvdmUsIHRoZSBjcHUgaGFzIGp1c3Qgam9pbmVkIGEgY3B1 cG9vbCkuCiAgICAgICAgICAqLwogICAgICAgICBmb3JfZWFjaF9hZmZpbml0eV9iYWxhbmNlX3N0 ZXAoIGJzICkKQEAgLTg1MCwxNCArODQ2LDE0IEBAIHN0YXRpYyBzdHJ1Y3QgdGFza19zbGljZSBu dWxsX3NjaGVkdWxlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywKICAgICAgICAgICAgIGxp c3RfZm9yX2VhY2hfZW50cnkoIHd2YywgJnBydi0+d2FpdHEsIHdhaXRxX2VsZW0gKQogICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgIGlmICggYnMgPT0gQkFMQU5DRV9TT0ZUX0FGRklOSVRZ ICYmCi0gICAgICAgICAgICAgICAgICAgICAhaGFzX3NvZnRfYWZmaW5pdHkod3ZjLT52Y3B1LT5z Y2hlZF91bml0KSApCisgICAgICAgICAgICAgICAgICAgICAhaGFzX3NvZnRfYWZmaW5pdHkod3Zj LT51bml0KSApCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAg ICAgaWYgKCB2Y3B1X2NoZWNrX2FmZmluaXR5KHd2Yy0+dmNwdSwgY3B1LCBicykgKQorICAgICAg ICAgICAgICAgIGlmICggdW5pdF9jaGVja19hZmZpbml0eSh3dmMtPnVuaXQsIGNwdSwgYnMpICkK ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHZjcHVfYXNzaWduKHBydiwg d3ZjLT52Y3B1LCBjcHUpOworICAgICAgICAgICAgICAgICAgICB1bml0X2Fzc2lnbihwcnYsIHd2 Yy0+dW5pdCwgY3B1KTsKICAgICAgICAgICAgICAgICAgICAgbGlzdF9kZWxfaW5pdCgmd3ZjLT53 YWl0cV9lbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0LnRhc2sgPSB3dmMtPnZjcHUtPnNj aGVkX3VuaXQ7CisgICAgICAgICAgICAgICAgICAgIHJldC50YXNrID0gd3ZjLT51bml0OwogICAg ICAgICAgICAgICAgICAgICBnb3RvIHVubG9jazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICB9CkBAIC04NzAsMTcgKzg2NiwxNyBAQCBzdGF0aWMgc3RydWN0IHRhc2tfc2xpY2UgbnVs bF9zY2hlZHVsZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsCiAgICAgfQogCiAgICAgaWYg KCB1bmxpa2VseShyZXQudGFzayA9PSBOVUxMIHx8ICF1bml0X3J1bm5hYmxlKHJldC50YXNrKSkg KQotICAgICAgICByZXQudGFzayA9IGlkbGVfdmNwdVtjcHVdLT5zY2hlZF91bml0OworICAgICAg ICByZXQudGFzayA9IHNjaGVkX2lkbGVfdW5pdChjcHUpOwogCi0gICAgTlVMTF9WQ1BVX0NIRUNL KHJldC50YXNrLT52Y3B1X2xpc3QpOworICAgIE5VTExfVU5JVF9DSEVDSyhyZXQudGFzayk7CiAg ICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGR1bXBfdmNwdShzdHJ1Y3Qg bnVsbF9wcml2YXRlICpwcnYsIHN0cnVjdCBudWxsX3VuaXQgKm52YykKK3N0YXRpYyBpbmxpbmUg dm9pZCBkdW1wX3VuaXQoc3RydWN0IG51bGxfcHJpdmF0ZSAqcHJ2LCBzdHJ1Y3QgbnVsbF91bml0 ICpudmMpCiB7Ci0gICAgcHJpbnRrKCJbJWkuJWldIHBjcHU9JWQiLCBudmMtPnZjcHUtPmRvbWFp bi0+ZG9tYWluX2lkLAotICAgICAgICAgICAgbnZjLT52Y3B1LT52Y3B1X2lkLCBsaXN0X2VtcHR5 KCZudmMtPndhaXRxX2VsZW0pID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnZj LT52Y3B1LT5wcm9jZXNzb3IgOiAtMSk7CisgICAgcHJpbnRrKCJbJWkuJWldIHBjcHU9JWQiLCBu dmMtPnVuaXQtPmRvbWFpbi0+ZG9tYWluX2lkLAorICAgICAgICAgICAgbnZjLT51bml0LT51bml0 X2lkLCBsaXN0X2VtcHR5KCZudmMtPndhaXRxX2VsZW0pID8KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2NoZWRfdW5pdF9jcHUobnZjLT51bml0KSA6IC0xKTsKIH0KIAogc3RhdGlj IHZvaWQgbnVsbF9kdW1wX3BjcHUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBpbnQgY3B1 KQpAQCAtODk1LDE2ICs4OTEsMTcgQEAgc3RhdGljIHZvaWQgbnVsbF9kdW1wX3BjcHUoY29uc3Qg c3RydWN0IHNjaGVkdWxlciAqb3BzLCBpbnQgY3B1KQogICAgIHByaW50aygiQ1BVWyUwMmRdIHNp Ymxpbmc9JSpwYiwgY29yZT0lKnBiIiwKICAgICAgICAgICAgY3B1LCBDUFVNQVNLX1BSKHBlcl9j cHUoY3B1X3NpYmxpbmdfbWFzaywgY3B1KSksCiAgICAgICAgICAgIENQVU1BU0tfUFIocGVyX2Nw dShjcHVfY29yZV9tYXNrLCBjcHUpKSk7Ci0gICAgaWYgKCBwZXJfY3B1KG5wYywgY3B1KS52Y3B1 ICE9IE5VTEwgKQotICAgICAgICBwcmludGsoIiwgdmNwdT0lcHYiLCBwZXJfY3B1KG5wYywgY3B1 KS52Y3B1KTsKKyAgICBpZiAoIHBlcl9jcHUobnBjLCBjcHUpLnVuaXQgIT0gTlVMTCApCisgICAg ICAgIHByaW50aygiLCB1bml0PSVwZHYlZCIsIHBlcl9jcHUobnBjLCBjcHUpLnVuaXQtPmRvbWFp biwKKyAgICAgICAgICAgICAgIHBlcl9jcHUobnBjLCBjcHUpLnVuaXQtPnVuaXRfaWQpOwogICAg IHByaW50aygiXG4iKTsKIAotICAgIC8qIGN1cnJlbnQgVkNQVSAobm90aGluZyB0byBzYXkgaWYg dGhhdCdzIHRoZSBpZGxlIHZjcHUpICovCisgICAgLyogY3VycmVudCB1bml0IChub3RoaW5nIHRv IHNheSBpZiB0aGF0J3MgdGhlIGlkbGUgdW5pdCkgKi8KICAgICBudmMgPSBudWxsX3VuaXQoY3Vy cl9vbl9jcHUoY3B1KSk7Ci0gICAgaWYgKCBudmMgJiYgIWlzX2lkbGVfdmNwdShudmMtPnZjcHUp ICkKKyAgICBpZiAoIG52YyAmJiAhaXNfaWRsZV91bml0KG52Yy0+dW5pdCkgKQogICAgIHsKICAg ICAgICAgcHJpbnRrKCJcdHJ1bjogIik7Ci0gICAgICAgIGR1bXBfdmNwdShwcnYsIG52Yyk7Cisg ICAgICAgIGR1bXBfdW5pdChwcnYsIG52Yyk7CiAgICAgICAgIHByaW50aygiXG4iKTsKICAgICB9 CiAKQEAgLTkyNywyMyArOTI0LDIzIEBAIHN0YXRpYyB2b2lkIG51bGxfZHVtcChjb25zdCBzdHJ1 Y3Qgc2NoZWR1bGVyICpvcHMpCiAgICAgbGlzdF9mb3JfZWFjaCggaXRlciwgJnBydi0+bmRvbSAp CiAgICAgewogICAgICAgICBzdHJ1Y3QgbnVsbF9kb20gKm5kb207Ci0gICAgICAgIHN0cnVjdCB2 Y3B1ICp2OworICAgICAgICBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdDsKIAogICAgICAgICBuZG9t ID0gbGlzdF9lbnRyeShpdGVyLCBzdHJ1Y3QgbnVsbF9kb20sIG5kb21fZWxlbSk7CiAKICAgICAg ICAgcHJpbnRrKCJcdERvbWFpbjogJWRcbiIsIG5kb20tPmRvbS0+ZG9tYWluX2lkKTsKLSAgICAg ICAgZm9yX2VhY2hfdmNwdSggbmRvbS0+ZG9tLCB2ICkKKyAgICAgICAgZm9yX2VhY2hfc2NoZWRf dW5pdCggbmRvbS0+ZG9tLCB1bml0ICkKICAgICAgICAgewotICAgICAgICAgICAgc3RydWN0IG51 bGxfdW5pdCAqIGNvbnN0IG52YyA9IG51bGxfdW5pdCh2LT5zY2hlZF91bml0KTsKKyAgICAgICAg ICAgIHN0cnVjdCBudWxsX3VuaXQgKiBjb25zdCBudmMgPSBudWxsX3VuaXQodW5pdCk7CiAgICAg ICAgICAgICBzcGlubG9ja190ICpsb2NrOwogCi0gICAgICAgICAgICBsb2NrID0gdW5pdF9zY2hl ZHVsZV9sb2NrKG52Yy0+dmNwdS0+c2NoZWRfdW5pdCk7CisgICAgICAgICAgICBsb2NrID0gdW5p dF9zY2hlZHVsZV9sb2NrKHVuaXQpOwogCiAgICAgICAgICAgICBwcmludGsoIlx0JTNkOiAiLCAr K2xvb3ApOwotICAgICAgICAgICAgZHVtcF92Y3B1KHBydiwgbnZjKTsKKyAgICAgICAgICAgIGR1 bXBfdW5pdChwcnYsIG52Yyk7CiAgICAgICAgICAgICBwcmludGsoIlxuIik7CiAKLSAgICAgICAg ICAgIHVuaXRfc2NoZWR1bGVfdW5sb2NrKGxvY2ssIG52Yy0+dmNwdS0+c2NoZWRfdW5pdCk7Cisg ICAgICAgICAgICB1bml0X3NjaGVkdWxlX3VubG9jayhsb2NrLCB1bml0KTsKICAgICAgICAgfQog ICAgIH0KIApAQCAtOTU4LDcgKzk1NSw3IEBAIHN0YXRpYyB2b2lkIG51bGxfZHVtcChjb25zdCBz dHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCiAgICAgICAgICAgICBwcmludGsoIiwgIik7CiAgICAgICAg IGlmICggbG9vcCAlIDI0ID09IDAgKQogICAgICAgICAgICAgcHJpbnRrKCJcblx0Iik7Ci0gICAg ICAgIHByaW50aygiJXB2IiwgbnZjLT52Y3B1KTsKKyAgICAgICAgcHJpbnRrKCIlcGR2JWQiLCBu dmMtPnVuaXQtPmRvbWFpbiwgbnZjLT51bml0LT51bml0X2lkKTsKICAgICB9CiAgICAgcHJpbnRr KCJcbiIpOwogICAgIHNwaW5fdW5sb2NrKCZwcnYtPndhaXRxX2xvY2spOwotLSAKMi4xNi40CgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==