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 87DE9C32757 for ; Fri, 9 Aug 2019 14:59:07 +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 503BC208C4 for ; Fri, 9 Aug 2019 14:59:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 503BC208C4 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 1hw6M1-0006ac-IP; Fri, 09 Aug 2019 14:58:53 +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 1hw6Ly-0006Un-DV for xen-devel@lists.xenproject.org; Fri, 09 Aug 2019 14:58:50 +0000 X-Inumbo-ID: 2d90b6a2-bab6-11e9-b123-7f9327eaa57d Received: from mx1.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 2d90b6a2-bab6-11e9-b123-7f9327eaa57d; Fri, 09 Aug 2019 14:58:42 +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 DEAB5B061; Fri, 9 Aug 2019 14:58:40 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Date: Fri, 9 Aug 2019 16:57:54 +0200 Message-Id: <20190809145833.1020-10-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 09/48] xen/sched: move some per-vcpu items to struct sched_unit 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 , Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Meng Xu , Jan Beulich , 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" QWZmaW5pdGllcyBhcmUgc2NoZWR1bGVyIHNwZWNpZmljIGF0dHJpYnV0ZXMsIHRoZXkgc2hvdWxk IGJlIHBlcgpzY2hlZHVsaW5nIHVuaXQuIFNvIG1vdmUgYWxsIGFmZmluaXR5IHJlbGF0ZWQgZmll bGRzIGluIHN0cnVjdCB2Y3B1CnRvIHN0cnVjdCBzY2hlZF91bml0LiBXaGlsZSBhdCBpdCBzd2l0 Y2ggYWZmaW5pdHkgcmVsYXRlZCBmdW5jdGlvbnMgaW4Kc2NoZWQtaWYuaCB0byB1c2UgYSBwb2lu dGVyIHRvIHNjaGVkX3VuaXQgaW5zdGVhZCB0byB2Y3B1IGFzIHBhcmFtZXRlci4KClRoZSBhZmZp bml0eV9icm9rZW4gZmxhZyBtdXN0IGJlIGtlcHQgcGVyIHZjcHUgYXMgaXQgaXMgcmVsYXRlZCB0 bwpndWVzdCBhY3Rpb25zIG9uIHNwZWNpZmljIHZjcHVzLgoKU2lnbmVkLW9mZi1ieTogSnVlcmdl biBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgotLS0KVjI6Ci0gbW92ZSBhZmZpbml0eV9icm9rZW4g YmFjayB0byBzdHJ1Y3QgdmNwdSAoSmFuIEJldWxpY2gpCi0gcHJpbnQgYWZmaW5pdGllcyBvbmx5 IG9uY2UgcGVyIHVuaXQgKEphbiBCZXVsaWNoKQotLS0KIHhlbi9jb21tb24vZG9tYWluLmMgICAg ICAgIHwgMTUgKystLS0tLS0KIHhlbi9jb21tb24vZG9tY3RsLmMgICAgICAgIHwgMTMgKysrKy0t LQogeGVuL2NvbW1vbi9rZXloYW5kbGVyLmMgICAgfCA1OCArKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0KIHhlbi9jb21tb24vc2NoZWRfY3JlZGl0LmMgIHwgMTggKysrKystLS0tLQogeGVu L2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMgfCA0MiArKysrKysrKysrKy0tLS0tLS0tLS0tCiB4ZW4v Y29tbW9uL3NjaGVkX251bGwuYyAgICB8IDE4ICsrKysrLS0tLS0KIHhlbi9jb21tb24vc2NoZWRf cnQuYyAgICAgIHwgIDkgKystLS0KIHhlbi9jb21tb24vc2NoZWR1bGUuYyAgICAgIHwgOTAgKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2luY2x1ZGUv eGVuL3NjaGVkLWlmLmggfCAxNyArKysrLS0tLS0KIHhlbi9pbmNsdWRlL3hlbi9zY2hlZC5oICAg IHwgMjIgKysrKysrLS0tLS0tCiAxMCBmaWxlcyBjaGFuZ2VkLCAxNjMgaW5zZXJ0aW9ucygrKSwg MTM5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZG9tYWluLmMgYi94ZW4v Y29tbW9uL2RvbWFpbi5jCmluZGV4IDEwNTFiZjM4YTMuLjVhYTQwOTI5YzAgMTAwNjQ0Ci0tLSBh L3hlbi9jb21tb24vZG9tYWluLmMKKysrIGIveGVuL2NvbW1vbi9kb21haW4uYwpAQCAtMTMyLDEw ICsxMzIsNiBAQCBzdGF0aWMgdm9pZCB2Y3B1X2luZm9fcmVzZXQoc3RydWN0IHZjcHUgKnYpCiAK IHN0YXRpYyB2b2lkIHZjcHVfZGVzdHJveShzdHJ1Y3QgdmNwdSAqdikKIHsKLSAgICBmcmVlX2Nw dW1hc2tfdmFyKHYtPmNwdV9oYXJkX2FmZmluaXR5KTsKLSAgICBmcmVlX2NwdW1hc2tfdmFyKHYt PmNwdV9oYXJkX2FmZmluaXR5X3NhdmVkKTsKLSAgICBmcmVlX2NwdW1hc2tfdmFyKHYtPmNwdV9z b2Z0X2FmZmluaXR5KTsKLQogICAgIGZyZWVfdmNwdV9zdHJ1Y3Qodik7CiB9CiAKQEAgLTE1OSwx MSArMTU1LDYgQEAgc3RydWN0IHZjcHUgKnZjcHVfY3JlYXRlKAogCiAgICAgZ3JhbnRfdGFibGVf aW5pdF92Y3B1KHYpOwogCi0gICAgaWYgKCAhemFsbG9jX2NwdW1hc2tfdmFyKCZ2LT5jcHVfaGFy ZF9hZmZpbml0eSkgfHwKLSAgICAgICAgICF6YWxsb2NfY3B1bWFza192YXIoJnYtPmNwdV9oYXJk X2FmZmluaXR5X3NhdmVkKSB8fAotICAgICAgICAgIXphbGxvY19jcHVtYXNrX3Zhcigmdi0+Y3B1 X3NvZnRfYWZmaW5pdHkpICkKLSAgICAgICAgZ290byBmYWlsOwotCiAgICAgaWYgKCBpc19pZGxl X2RvbWFpbihkKSApCiAgICAgewogICAgICAgICB2LT5ydW5zdGF0ZS5zdGF0ZSA9IFJVTlNUQVRF X3J1bm5pbmc7CkBAIC0yMDMsNyArMTk0LDYgQEAgc3RydWN0IHZjcHUgKnZjcHVfY3JlYXRlKAog ICAgIHNjaGVkX2Rlc3Ryb3lfdmNwdSh2KTsKICBmYWlsX3dxOgogICAgIGRlc3Ryb3lfd2FpdHF1 ZXVlX3ZjcHUodik7Ci0gZmFpbDoKICAgICB2Y3B1X2Rlc3Ryb3kodik7CiAKICAgICByZXR1cm4g TlVMTDsKQEAgLTU5Niw5ICs1ODYsMTAgQEAgdm9pZCBkb21haW5fdXBkYXRlX25vZGVfYWZmaW5p dHkoc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgICovCiAgICAgICAgIGZvcl9lYWNoX3ZjcHUg KCBkLCB2ICkKICAgICAgICAgewotICAgICAgICAgICAgY3B1bWFza19vcihkb21fY3B1bWFzaywg ZG9tX2NwdW1hc2ssIHYtPmNwdV9oYXJkX2FmZmluaXR5KTsKKyAgICAgICAgICAgIGNwdW1hc2tf b3IoZG9tX2NwdW1hc2ssIGRvbV9jcHVtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICB2LT5z Y2hlZF91bml0LT5jcHVfaGFyZF9hZmZpbml0eSk7CiAgICAgICAgICAgICBjcHVtYXNrX29yKGRv bV9jcHVtYXNrX3NvZnQsIGRvbV9jcHVtYXNrX3NvZnQsCi0gICAgICAgICAgICAgICAgICAgICAg IHYtPmNwdV9zb2Z0X2FmZmluaXR5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgdi0+c2NoZWRf dW5pdC0+Y3B1X3NvZnRfYWZmaW5pdHkpOwogICAgICAgICB9CiAgICAgICAgIC8qIEZpbHRlciBv dXQgbm9uLW9ubGluZSBjcHVzICovCiAgICAgICAgIGNwdW1hc2tfYW5kKGRvbV9jcHVtYXNrLCBk b21fY3B1bWFzaywgb25saW5lKTsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZG9tY3RsLmMgYi94 ZW4vY29tbW9uL2RvbWN0bC5jCmluZGV4IGI0OGU0MDg1ODMuLmViYjM3YTEzOGUgMTAwNjQ0Ci0t LSBhL3hlbi9jb21tb24vZG9tY3RsLmMKKysrIGIveGVuL2NvbW1vbi9kb21jdGwuYwpAQCAtNjA2 LDYgKzYwNiw3IEBAIGxvbmcgZG9fZG9tY3RsKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2Rv bWN0bF90KSB1X2RvbWN0bCkKICAgICBjYXNlIFhFTl9ET01DVExfZ2V0dmNwdWFmZmluaXR5Ogog ICAgIHsKICAgICAgICAgc3RydWN0IHZjcHUgKnY7CisgICAgICAgIGNvbnN0IHN0cnVjdCBzY2hl ZF91bml0ICp1bml0OwogICAgICAgICBzdHJ1Y3QgeGVuX2RvbWN0bF92Y3B1YWZmaW5pdHkgKnZj cHVhZmYgPSAmb3AtPnUudmNwdWFmZmluaXR5OwogCiAgICAgICAgIHJldCA9IC1FSU5WQUw7CkBA IC02MTYsNiArNjE3LDcgQEAgbG9uZyBkb19kb21jdGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4 ZW5fZG9tY3RsX3QpIHVfZG9tY3RsKQogICAgICAgICBpZiAoICh2ID0gZC0+dmNwdVt2Y3B1YWZm LT52Y3B1XSkgPT0gTlVMTCApCiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICB1bml0ID0g di0+c2NoZWRfdW5pdDsKICAgICAgICAgcmV0ID0gLUVJTlZBTDsKICAgICAgICAgaWYgKCB2Y3B1 YWZmaW5pdHlfcGFyYW1zX2ludmFsaWQodmNwdWFmZikgKQogICAgICAgICAgICAgYnJlYWs7CkBA IC02MzUsNyArNjM3LDcgQEAgbG9uZyBkb19kb21jdGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4 ZW5fZG9tY3RsX3QpIHVfZG9tY3RsKQogICAgICAgICAgICAgICAgIHJldCA9IC1FTk9NRU07CiAg ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjcHVtYXNr X2NvcHkob2xkX2FmZmluaXR5LCB2LT5jcHVfaGFyZF9hZmZpbml0eSk7CisgICAgICAgICAgICBj cHVtYXNrX2NvcHkob2xkX2FmZmluaXR5LCB1bml0LT5jcHVfaGFyZF9hZmZpbml0eSk7CiAKICAg ICAgICAgICAgIGlmICggIWFsbG9jX2NwdW1hc2tfdmFyKCZuZXdfYWZmaW5pdHkpICkKICAgICAg ICAgICAgIHsKQEAgLTY2OCw3ICs2NzAsNyBAQCBsb25nIGRvX2RvbWN0bChYRU5fR1VFU1RfSEFO RExFX1BBUkFNKHhlbl9kb21jdGxfdCkgdV9kb21jdGwpCiAgICAgICAgICAgICAgICAgICogRm9y IGhhcmQgYWZmaW5pdHksIHdoYXQgd2UgcmV0dXJuIGlzIHRoZSBpbnRlcnNlY3Rpb24gb2YKICAg ICAgICAgICAgICAgICAgKiBjcHVwb29sJ3Mgb25saW5lIG1hc2sgYW5kIHRoZSBuZXcgaGFyZCBh ZmZpbml0eS4KICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBjcHVtYXNrX2Fu ZChuZXdfYWZmaW5pdHksIG9ubGluZSwgdi0+Y3B1X2hhcmRfYWZmaW5pdHkpOworICAgICAgICAg ICAgICAgIGNwdW1hc2tfYW5kKG5ld19hZmZpbml0eSwgb25saW5lLCB1bml0LT5jcHVfaGFyZF9h ZmZpbml0eSk7CiAgICAgICAgICAgICAgICAgcmV0ID0gY3B1bWFza190b194ZW5jdGxfYml0bWFw KCZ2Y3B1YWZmLT5jcHVtYXBfaGFyZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbmV3X2FmZmluaXR5KTsKICAgICAgICAgICAgIH0KQEAgLTY5Nyw3ICs2 OTksOCBAQCBsb25nIGRvX2RvbWN0bChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9kb21jdGxf dCkgdV9kb21jdGwpCiAgICAgICAgICAgICAgICAgICogaGFyZCBhZmZpbml0eS4KICAgICAgICAg ICAgICAgICAgKi8KICAgICAgICAgICAgICAgICBjcHVtYXNrX2FuZChuZXdfYWZmaW5pdHksIG5l d19hZmZpbml0eSwgb25saW5lKTsKLSAgICAgICAgICAgICAgICBjcHVtYXNrX2FuZChuZXdfYWZm aW5pdHksIG5ld19hZmZpbml0eSwgdi0+Y3B1X2hhcmRfYWZmaW5pdHkpOworICAgICAgICAgICAg ICAgIGNwdW1hc2tfYW5kKG5ld19hZmZpbml0eSwgbmV3X2FmZmluaXR5LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuaXQtPmNwdV9oYXJkX2FmZmluaXR5KTsKICAgICAgICAgICAgICAg ICByZXQgPSBjcHVtYXNrX3RvX3hlbmN0bF9iaXRtYXAoJnZjcHVhZmYtPmNwdW1hcF9zb2Z0LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfYWZmaW5p dHkpOwogICAgICAgICAgICAgfQpAQCAtNzEwLDEwICs3MTMsMTAgQEAgbG9uZyBkb19kb21jdGwo WEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG9tY3RsX3QpIHVfZG9tY3RsKQogICAgICAgICB7 CiAgICAgICAgICAgICBpZiAoIHZjcHVhZmYtPmZsYWdzICYgWEVOX1ZDUFVBRkZJTklUWV9IQVJE ICkKICAgICAgICAgICAgICAgICByZXQgPSBjcHVtYXNrX3RvX3hlbmN0bF9iaXRtYXAoJnZjcHVh ZmYtPmNwdW1hcF9oYXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2LT5jcHVfaGFyZF9hZmZpbml0eSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuaXQtPmNwdV9oYXJkX2FmZmluaXR5KTsKICAgICAgICAg ICAgIGlmICggdmNwdWFmZi0+ZmxhZ3MgJiBYRU5fVkNQVUFGRklOSVRZX1NPRlQgKQogICAgICAg ICAgICAgICAgIHJldCA9IGNwdW1hc2tfdG9feGVuY3RsX2JpdG1hcCgmdmNwdWFmZi0+Y3B1bWFw X3NvZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYt PmNwdV9zb2Z0X2FmZmluaXR5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5pdC0+Y3B1X3NvZnRfYWZmaW5pdHkpOwogICAgICAgICB9CiAgICAgICAg IGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24va2V5aGFuZGxlci5jIGIveGVu L2NvbW1vbi9rZXloYW5kbGVyLmMKaW5kZXggNmU0ZmY4OTBkYi4uMGVhNzg3MmE0NCAxMDA2NDQK LS0tIGEveGVuL2NvbW1vbi9rZXloYW5kbGVyLmMKKysrIGIveGVuL2NvbW1vbi9rZXloYW5kbGVy LmMKQEAgLTI1MSw2ICsyNTEsNyBAQCBzdGF0aWMgdm9pZCByZWJvb3RfbWFjaGluZSh1bnNpZ25l ZCBjaGFyIGtleSwgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiBzdGF0aWMgdm9pZCBkdW1w X2RvbWFpbnModW5zaWduZWQgY2hhciBrZXkpCiB7CiAgICAgc3RydWN0IGRvbWFpbiAqZDsKKyAg ICBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdDsKICAgICBzdHJ1Y3QgdmNwdSAgICp2OwogICAgIHNf dGltZV90ICAgICAgIG5vdyA9IE5PVygpOwogCkBAIC0yOTcsMzMgKzI5OCwzOCBAQCBzdGF0aWMg dm9pZCBkdW1wX2RvbWFpbnModW5zaWduZWQgY2hhciBrZXkpCiAKICAgICAgICAgcHJpbnRrKCJW Q1BVIGluZm9ybWF0aW9uIGFuZCBjYWxsYmFja3MgZm9yIGRvbWFpbiAldTpcbiIsCiAgICAgICAg ICAgICAgICBkLT5kb21haW5faWQpOwotICAgICAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCi0g ICAgICAgIHsKLSAgICAgICAgICAgIGlmICggISh2LT52Y3B1X2lkICYgMHgzZikgKQotICAgICAg ICAgICAgICAgIHByb2Nlc3NfcGVuZGluZ19zb2Z0aXJxcygpOwogCi0gICAgICAgICAgICBwcmlu dGsoIiAgICBWQ1BVJWQ6IENQVSVkIFtoYXM9JWNdIHBvbGw9JWQgIgotICAgICAgICAgICAgICAg ICAgICJ1cGNhbGxfcGVuZD0lMDJ4IHVwY2FsbF9tYXNrPSUwMnggIiwKLSAgICAgICAgICAgICAg ICAgICB2LT52Y3B1X2lkLCB2LT5wcm9jZXNzb3IsCi0gICAgICAgICAgICAgICAgICAgdi0+aXNf cnVubmluZyA/ICdUJzonRicsIHYtPnBvbGxfZXZ0Y2huLAotICAgICAgICAgICAgICAgICAgIHZj cHVfaW5mbyh2LCBldnRjaG5fdXBjYWxsX3BlbmRpbmcpLAotICAgICAgICAgICAgICAgICAgICF2 Y3B1X2V2ZW50X2RlbGl2ZXJ5X2lzX2VuYWJsZWQodikpOwotICAgICAgICAgICAgaWYgKCB2Y3B1 X2NwdV9kaXJ0eSh2KSApCi0gICAgICAgICAgICAgICAgcHJpbnRrKCJkaXJ0eV9jcHU9JXUiLCB2 LT5kaXJ0eV9jcHUpOwotICAgICAgICAgICAgcHJpbnRrKCJcbiIpOwotICAgICAgICAgICAgcHJp bnRrKCIgICAgY3B1X2hhcmRfYWZmaW5pdHk9eyUqcGJsfSBjcHVfc29mdF9hZmZpbml0eT17JSpw Ymx9XG4iLAotICAgICAgICAgICAgICAgICAgIENQVU1BU0tfUFIodi0+Y3B1X2hhcmRfYWZmaW5p dHkpLAotICAgICAgICAgICAgICAgICAgIENQVU1BU0tfUFIodi0+Y3B1X3NvZnRfYWZmaW5pdHkp KTsKLSAgICAgICAgICAgIHByaW50aygiICAgIHBhdXNlX2NvdW50PSVkIHBhdXNlX2ZsYWdzPSVs eFxuIiwKLSAgICAgICAgICAgICAgICAgICBhdG9taWNfcmVhZCgmdi0+cGF1c2VfY291bnQpLCB2 LT5wYXVzZV9mbGFncyk7Ci0gICAgICAgICAgICBhcmNoX2R1bXBfdmNwdV9pbmZvKHYpOwotCi0g ICAgICAgICAgICBpZiAoIHYtPnBlcmlvZGljX3BlcmlvZCA9PSAwICkKLSAgICAgICAgICAgICAg ICBwcmludGsoIk5vIHBlcmlvZGljIHRpbWVyXG4iKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg ICAgICAgICAgICBwcmludGsoIiUiUFJJX3N0aW1lIiBIeiBwZXJpb2RpYyB0aW1lciAocGVyaW9k ICUiUFJJX3N0aW1lIiBtcylcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgIDEwMDAwMDAwMDAg LyB2LT5wZXJpb2RpY19wZXJpb2QsCi0gICAgICAgICAgICAgICAgICAgICAgIHYtPnBlcmlvZGlj X3BlcmlvZCAvIDEwMDAwMDApOworICAgICAgICBmb3JfZWFjaF9zY2hlZF91bml0ICggZCwgdW5p dCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHByaW50aygiICBVTklUJWQgYWZmaW5pdGllczog aGFyZD17JSpwYmx9IHNvZnQ9eyUqcGJsfVxuIiwKKyAgICAgICAgICAgICAgICAgICB1bml0LT51 bml0X2lkLCBDUFVNQVNLX1BSKHVuaXQtPmNwdV9oYXJkX2FmZmluaXR5KSwKKyAgICAgICAgICAg ICAgICAgICBDUFVNQVNLX1BSKHVuaXQtPmNwdV9zb2Z0X2FmZmluaXR5KSk7CisKKyAgICAgICAg ICAgIGZvcl9lYWNoX3NjaGVkX3VuaXRfdmNwdSAoIHVuaXQsIHYgKQorICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgIGlmICggISh2LT52Y3B1X2lkICYgMHgzZikgKQorICAgICAgICAgICAg ICAgICAgICBwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMoKTsKKworICAgICAgICAgICAgICAgIHBy aW50aygiICAgIFZDUFUlZDogQ1BVJWQgW2hhcz0lY10gcG9sbD0lZCAiCisgICAgICAgICAgICAg ICAgICAgICAgICJ1cGNhbGxfcGVuZD0lMDJ4IHVwY2FsbF9tYXNrPSUwMnggIiwKKyAgICAgICAg ICAgICAgICAgICAgICAgdi0+dmNwdV9pZCwgdi0+cHJvY2Vzc29yLAorICAgICAgICAgICAgICAg ICAgICAgICB2LT5pc19ydW5uaW5nID8gJ1QnOidGJywgdi0+cG9sbF9ldnRjaG4sCisgICAgICAg ICAgICAgICAgICAgICAgIHZjcHVfaW5mbyh2LCBldnRjaG5fdXBjYWxsX3BlbmRpbmcpLAorICAg ICAgICAgICAgICAgICAgICAgICAhdmNwdV9ldmVudF9kZWxpdmVyeV9pc19lbmFibGVkKHYpKTsK KyAgICAgICAgICAgICAgICBpZiAoIHZjcHVfY3B1X2RpcnR5KHYpICkKKyAgICAgICAgICAgICAg ICAgICAgcHJpbnRrKCJkaXJ0eV9jcHU9JXUiLCB2LT5kaXJ0eV9jcHUpOworICAgICAgICAgICAg ICAgIHByaW50aygiXG4iKTsKKyAgICAgICAgICAgICAgICBwcmludGsoIiAgICBwYXVzZV9jb3Vu dD0lZCBwYXVzZV9mbGFncz0lbHhcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIGF0b21pY19y ZWFkKCZ2LT5wYXVzZV9jb3VudCksIHYtPnBhdXNlX2ZsYWdzKTsKKyAgICAgICAgICAgICAgICBh cmNoX2R1bXBfdmNwdV9pbmZvKHYpOworCisgICAgICAgICAgICAgICAgaWYgKCB2LT5wZXJpb2Rp Y19wZXJpb2QgPT0gMCApCisgICAgICAgICAgICAgICAgICAgIHByaW50aygiTm8gcGVyaW9kaWMg dGltZXJcbiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcHJp bnRrKCIlIlBSSV9zdGltZSIgSHogcGVyaW9kaWMgdGltZXIgKHBlcmlvZCAlIlBSSV9zdGltZSIg bXMpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMDAwMDAwMCAvIHYtPnBlcmlv ZGljX3BlcmlvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtPnBlcmlvZGljX3Blcmlv ZCAvIDEwMDAwMDApOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1n aXQgYS94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdC5jIGIveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQu YwppbmRleCA2MDM3OTNmMWQwLi4yMjQzOGE1MGUyIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3Nj aGVkX2NyZWRpdC5jCisrKyBiL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0LmMKQEAgLTM1Miw2ICsz NTIsNyBAQCBERUZJTkVfUEVSX0NQVSh1bnNpZ25lZCBpbnQsIGxhc3RfdGlja2xlX2NwdSk7CiBz dGF0aWMgaW5saW5lIHZvaWQgX19ydW5xX3RpY2tsZShzdHJ1Y3QgY3NjaGVkX3VuaXQgKm5ldykK IHsKICAgICB1bnNpZ25lZCBpbnQgY3B1ID0gbmV3LT52Y3B1LT5wcm9jZXNzb3I7CisgICAgc3Ry dWN0IHNjaGVkX3VuaXQgKnVuaXQgPSBuZXctPnZjcHUtPnNjaGVkX3VuaXQ7CiAgICAgc3RydWN0 IGNzY2hlZF91bml0ICogY29uc3QgY3VyID0gQ1NDSEVEX1VOSVQoY3Vycl9vbl9jcHUoY3B1KSk7 CiAgICAgc3RydWN0IGNzY2hlZF9wcml2YXRlICpwcnYgPSBDU0NIRURfUFJJVihwZXJfY3B1KHNj aGVkdWxlciwgY3B1KSk7CiAgICAgY3B1bWFza190IG1hc2ssIGlkbGVfbWFzaywgKm9ubGluZTsK QEAgLTM3Nyw3ICszNzgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19ydW5xX3RpY2tsZShzdHJ1 Y3QgY3NjaGVkX3VuaXQgKm5ldykKICAgICBpZiAoIHVubGlrZWx5KHRlc3RfYml0KENTQ0hFRF9G TEFHX1ZDUFVfUElOTkVELCAmbmV3LT5mbGFncykgJiYKICAgICAgICAgICAgICAgICAgIGNwdW1h c2tfdGVzdF9jcHUoY3B1LCAmaWRsZV9tYXNrKSkgKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGNw dW1hc2tfY3ljbGUoY3B1LCBuZXctPnZjcHUtPmNwdV9oYXJkX2FmZmluaXR5KSA9PSBjcHUpOwor ICAgICAgICBBU1NFUlQoY3B1bWFza19jeWNsZShjcHUsIHVuaXQtPmNwdV9oYXJkX2FmZmluaXR5 KSA9PSBjcHUpOwogICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKHRpY2tsZWRfaWRsZV9jcHVfZXhj bCk7CiAgICAgICAgIF9fY3B1bWFza19zZXRfY3B1KGNwdSwgJm1hc2spOwogICAgICAgICBnb3Rv IHRpY2tsZTsKQEAgLTQxMiwxMSArNDEzLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3J1bnFf dGlja2xlKHN0cnVjdCBjc2NoZWRfdW5pdCAqbmV3KQogICAgICAgICAgICAgaW50IG5ld19pZGxl cnNfZW1wdHk7CiAKICAgICAgICAgICAgIGlmICggYmFsYW5jZV9zdGVwID09IEJBTEFOQ0VfU09G VF9BRkZJTklUWQotICAgICAgICAgICAgICAgICAmJiAhaGFzX3NvZnRfYWZmaW5pdHkobmV3LT52 Y3B1KSApCisgICAgICAgICAgICAgICAgICYmICFoYXNfc29mdF9hZmZpbml0eSh1bml0KSApCiAg ICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIC8qIEFyZSB0aGVyZSBpZGxl cnMgc3VpdGFibGUgZm9yIG5ldyAoZm9yIHRoaXMgYmFsYW5jZSBzdGVwKT8gKi8KLSAgICAgICAg ICAgIGFmZmluaXR5X2JhbGFuY2VfY3B1bWFzayhuZXctPnZjcHUsIGJhbGFuY2Vfc3RlcCwKKyAg ICAgICAgICAgIGFmZmluaXR5X2JhbGFuY2VfY3B1bWFzayh1bml0LCBiYWxhbmNlX3N0ZXAsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1bWFza19zY3JhdGNoX2NwdShj cHUpKTsKICAgICAgICAgICAgIGNwdW1hc2tfYW5kKGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwK ICAgICAgICAgICAgICAgICAgICAgICAgIGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwgJmlkbGVf bWFzayk7CkBAIC00NDUsOCArNDQ2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fcnVucV90aWNr bGUoc3RydWN0IGNzY2hlZF91bml0ICpuZXcpCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAg IGlmICggbmV3X2lkbGVyc19lbXB0eSAmJiBuZXctPnByaSA+IGN1ci0+cHJpICkKICAgICAgICAg ICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIGNwdW1hc2tfaW50ZXJzZWN0cyhjdXItPnZjcHUt PmNwdV9oYXJkX2FmZmluaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZpZGxlX21hc2spICkKKyAgICAgICAgICAgICAgICBpZiAoIGNwdW1hc2tfaW50ZXJzZWN0 cyh1bml0LT5jcHVfaGFyZF9hZmZpbml0eSwgJmlkbGVfbWFzaykgKQogICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgU0NIRURfVkNQVV9TVEFUX0NSQU5LKGN1ciwga2lja2Vk X2F3YXkpOwogICAgICAgICAgICAgICAgICAgICBTQ0hFRF9WQ1BVX1NUQVRfQ1JBTksoY3VyLCBt aWdyYXRlX3IpOwpAQCAtNzI4LDcgKzcyOCw3IEBAIF9jc2NoZWRfY3B1X3BpY2soY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgdmNwdSAqdmMsIGJvb2xfdCBjb21taXQpCiAKICAg ICBmb3JfZWFjaF9hZmZpbml0eV9iYWxhbmNlX3N0ZXAoIGJhbGFuY2Vfc3RlcCApCiAgICAgewot ICAgICAgICBhZmZpbml0eV9iYWxhbmNlX2NwdW1hc2sodmMsIGJhbGFuY2Vfc3RlcCwgY3B1cyk7 CisgICAgICAgIGFmZmluaXR5X2JhbGFuY2VfY3B1bWFzayh2Yy0+c2NoZWRfdW5pdCwgYmFsYW5j ZV9zdGVwLCBjcHVzKTsKICAgICAgICAgY3B1bWFza19hbmQoY3B1cywgb25saW5lLCBjcHVzKTsK ICAgICAgICAgLyoKICAgICAgICAgICogV2Ugd2FudCB0byBwaWNrIHVwIGEgcGNwdSBhbW9uZyB0 aGUgb25lcyB0aGF0IGFyZSBvbmxpbmUgYW5kCkBAIC03NDcsNyArNzQ3LDcgQEAgX2NzY2hlZF9j cHVfcGljayhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YywgYm9v bF90IGNvbW1pdCkKICAgICAgICAgICogYmFsYW5jaW5nIHN0ZXAgYWxsIHRvZ2V0aGVyLgogICAg ICAgICAgKi8KICAgICAgICAgaWYgKCBiYWxhbmNlX3N0ZXAgPT0gQkFMQU5DRV9TT0ZUX0FGRklO SVRZICYmCi0gICAgICAgICAgICAgKCFoYXNfc29mdF9hZmZpbml0eSh2YykgfHwgY3B1bWFza19l bXB0eShjcHVzKSkgKQorICAgICAgICAgICAgICghaGFzX3NvZnRfYWZmaW5pdHkodmMtPnNjaGVk X3VuaXQpIHx8IGNwdW1hc2tfZW1wdHkoY3B1cykpICkKICAgICAgICAgICAgIGNvbnRpbnVlOwog CiAgICAgICAgIC8qIElmIHByZXNlbnQsIHByZWZlciB2YydzIGN1cnJlbnQgcHJvY2Vzc29yICov CkBAIC0xNjQ3LDEwICsxNjQ3LDEwIEBAIGNzY2hlZF9ydW5xX3N0ZWFsKGludCBwZWVyX2NwdSwg aW50IGNwdSwgaW50IHByaSwgaW50IGJhbGFuY2Vfc3RlcCkKICAgICAgICAgICogb3IgY291bnRl ci4KICAgICAgICAgICovCiAgICAgICAgIGlmICggdmMtPmlzX3J1bm5pbmcgfHwgKGJhbGFuY2Vf c3RlcCA9PSBCQUxBTkNFX1NPRlRfQUZGSU5JVFkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIWhhc19zb2Z0X2FmZmluaXR5KHZjKSkgKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAhaGFzX3NvZnRfYWZmaW5pdHkodmMtPnNjaGVkX3VuaXQpKSApCiAgICAgICAg ICAgICBjb250aW51ZTsKIAotICAgICAgICBhZmZpbml0eV9iYWxhbmNlX2NwdW1hc2sodmMsIGJh bGFuY2Vfc3RlcCwgY3B1bWFza19zY3JhdGNoKTsKKyAgICAgICAgYWZmaW5pdHlfYmFsYW5jZV9j cHVtYXNrKHZjLT5zY2hlZF91bml0LCBiYWxhbmNlX3N0ZXAsIGNwdW1hc2tfc2NyYXRjaCk7CiAg ICAgICAgIGlmICggX19jc2NoZWRfdmNwdV9pc19taWdyYXRlYWJsZShwcnYsIHZjLCBjcHUsIGNw dW1hc2tfc2NyYXRjaCkgKQogICAgICAgICB7CiAgICAgICAgICAgICAvKiBXZSBnb3QgYSBjYW5k aWRhdGUuIEdyYWIgaXQhICovCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIu YyBiL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jCmluZGV4IDE3OThmY2Y4YzQuLjNkY2Y0MGEz NDIgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jCisrKyBiL3hlbi9jb21t b24vc2NoZWRfY3JlZGl0Mi5jCkBAIC03MDAsMTAgKzcwMCwxMCBAQCBzdGF0aWMgaW50IGdldF9m YWxsYmFja19jcHUoc3RydWN0IGNzY2hlZDJfdW5pdCAqc3ZjKQogICAgIHsKICAgICAgICAgaW50 IGNwdSA9IHYtPnByb2Nlc3NvcjsKIAotICAgICAgICBpZiAoIGJzID09IEJBTEFOQ0VfU09GVF9B RkZJTklUWSAmJiAhaGFzX3NvZnRfYWZmaW5pdHkodikgKQorICAgICAgICBpZiAoIGJzID09IEJB TEFOQ0VfU09GVF9BRkZJTklUWSAmJiAhaGFzX3NvZnRfYWZmaW5pdHkodi0+c2NoZWRfdW5pdCkg KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYWZmaW5pdHlfYmFsYW5jZV9jcHVt YXNrKHYsIGJzLCBjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSkpOworICAgICAgICBhZmZpbml0eV9i YWxhbmNlX2NwdW1hc2sodi0+c2NoZWRfdW5pdCwgYnMsIGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1 KSk7CiAgICAgICAgIGNwdW1hc2tfYW5kKGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwgY3B1bWFz a19zY3JhdGNoX2NwdShjcHUpLAogICAgICAgICAgICAgICAgICAgICBjcHVwb29sX2RvbWFpbl9j cHVtYXNrKHYtPmRvbWFpbikpOwogCkBAIC0xMzkxLDEwICsxMzkxLDEwIEBAIHN0YXRpYyBzX3Rp bWVfdCB0aWNrbGVfc2NvcmUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzX3RpbWVfdCBu b3csCiAgICAgICovCiAgICAgaWYgKCBzY29yZSA+IDAgKQogICAgIHsKLSAgICAgICAgaWYgKCBj cHVtYXNrX3Rlc3RfY3B1KGNwdSwgbmV3LT52Y3B1LT5jcHVfc29mdF9hZmZpbml0eSkgKQorICAg ICAgICBpZiAoIGNwdW1hc2tfdGVzdF9jcHUoY3B1LCBuZXctPnZjcHUtPnNjaGVkX3VuaXQtPmNw dV9zb2Z0X2FmZmluaXR5KSApCiAgICAgICAgICAgICBzY29yZSArPSBDU0NIRUQyX0NSRURJVF9J TklUOwogCi0gICAgICAgIGlmICggIWNwdW1hc2tfdGVzdF9jcHUoY3B1LCBjdXItPnZjcHUtPmNw dV9zb2Z0X2FmZmluaXR5KSApCisgICAgICAgIGlmICggIWNwdW1hc2tfdGVzdF9jcHUoY3B1LCBj dXItPnZjcHUtPnNjaGVkX3VuaXQtPmNwdV9zb2Z0X2FmZmluaXR5KSApCiAgICAgICAgICAgICBz Y29yZSArPSBDU0NIRUQyX0NSRURJVF9JTklUOwogICAgIH0KIApAQCAtMTQzNyw2ICsxNDM3LDcg QEAgcnVucV90aWNrbGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgY3NjaGVk Ml91bml0ICpuZXcsIHNfdGltZV90IG5vdykKIHsKICAgICBpbnQgaSwgaXBpZCA9IC0xOwogICAg IHNfdGltZV90IG1heCA9IDA7CisgICAgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQgPSBuZXctPnZj cHUtPnNjaGVkX3VuaXQ7CiAgICAgdW5zaWduZWQgaW50IGJzLCBjcHUgPSBuZXctPnZjcHUtPnBy b2Nlc3NvcjsKICAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQgPSBjMnJxZChv cHMsIGNwdSk7CiAgICAgY3B1bWFza190ICpvbmxpbmUgPSBjcHVwb29sX2RvbWFpbl9jcHVtYXNr KG5ldy0+dmNwdS0+ZG9tYWluKTsKQEAgLTE0NzQsNyArMTQ3NSw3IEBAIHJ1bnFfdGlja2xlKGNv bnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IGNzY2hlZDJfdW5pdCAqbmV3LCBzX3Rp bWVfdCBub3cpCiAgICAgICAgICAgICAgICAgICBjcHVtYXNrX3Rlc3RfY3B1KGNwdSwgJnJxZC0+ aWRsZSkgJiYKICAgICAgICAgICAgICAgICAgICFjcHVtYXNrX3Rlc3RfY3B1KGNwdSwgJnJxZC0+ dGlja2xlZCkpICkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjcHVtYXNrX2N5Y2xlKGNwdSwgbmV3 LT52Y3B1LT5jcHVfaGFyZF9hZmZpbml0eSkgPT0gY3B1KTsKKyAgICAgICAgQVNTRVJUKGNwdW1h c2tfY3ljbGUoY3B1LCB1bml0LT5jcHVfaGFyZF9hZmZpbml0eSkgPT0gY3B1KTsKICAgICAgICAg U0NIRURfU1RBVF9DUkFOSyh0aWNrbGVkX2lkbGVfY3B1X2V4Y2wpOwogICAgICAgICBpcGlkID0g Y3B1OwogICAgICAgICBnb3RvIHRpY2tsZTsKQEAgLTE0ODMsMTAgKzE0ODQsMTAgQEAgcnVucV90 aWNrbGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgY3NjaGVkMl91bml0ICpu ZXcsIHNfdGltZV90IG5vdykKICAgICBmb3JfZWFjaF9hZmZpbml0eV9iYWxhbmNlX3N0ZXAoIGJz ICkKICAgICB7CiAgICAgICAgIC8qIEp1c3Qgc2tpcCBmaXJzdCBzdGVwLCBpZiB3ZSBkb24ndCBo YXZlIGEgc29mdCBhZmZpbml0eSAqLwotICAgICAgICBpZiAoIGJzID09IEJBTEFOQ0VfU09GVF9B RkZJTklUWSAmJiAhaGFzX3NvZnRfYWZmaW5pdHkobmV3LT52Y3B1KSApCisgICAgICAgIGlmICgg YnMgPT0gQkFMQU5DRV9TT0ZUX0FGRklOSVRZICYmICFoYXNfc29mdF9hZmZpbml0eSh1bml0KSAp CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhZmZpbml0eV9iYWxhbmNlX2NwdW1h c2sobmV3LT52Y3B1LCBicywgY3B1bWFza19zY3JhdGNoX2NwdShjcHUpKTsKKyAgICAgICAgYWZm aW5pdHlfYmFsYW5jZV9jcHVtYXNrKHVuaXQsIGJzLCBjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSkp OwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIEZpcnN0IG9mIGFsbCwgY29uc2lkZXIgaWRsZSBj cHVzLCBjaGVja2luZyBpZiB3ZSBjYW4ganVzdApAQCAtMTU1OCw3ICsxNTU5LDcgQEAgcnVucV90 aWNrbGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgY3NjaGVkMl91bml0ICpu ZXcsIHNfdGltZV90IG5vdykKICAgICAgICAgICAgIGlwaWQgPSBjcHU7CiAKICAgICAgICAgICAg IC8qIElmIHRoaXMgaXMgaW4gbmV3J3Mgc29mdCBhZmZpbml0eSwganVzdCB0YWtlIGl0ICovCi0g ICAgICAgICAgICBpZiAoIGNwdW1hc2tfdGVzdF9jcHUoY3B1LCBuZXctPnZjcHUtPmNwdV9zb2Z0 X2FmZmluaXR5KSApCisgICAgICAgICAgICBpZiAoIGNwdW1hc2tfdGVzdF9jcHUoY3B1LCB1bml0 LT5jcHVfc29mdF9hZmZpbml0eSkgKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFND SEVEX1NUQVRfQ1JBTksodGlja2xlZF9idXN5X2NwdSk7CiAgICAgICAgICAgICAgICAgZ290byB0 aWNrbGU7CkBAIC0yMjQ0LDcgKzIyNDUsNyBAQCBjc2NoZWQyX3Jlc19waWNrKGNvbnN0IHN0cnVj dCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgICAgIGdvdG8g b3V0OwogICAgIH0KIAotICAgIGNwdW1hc2tfYW5kKGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwg dmMtPmNwdV9oYXJkX2FmZmluaXR5LAorICAgIGNwdW1hc2tfYW5kKGNwdW1hc2tfc2NyYXRjaF9j cHUoY3B1KSwgdW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHksCiAgICAgICAgICAgICAgICAgY3B1cG9v bF9kb21haW5fY3B1bWFzayh2Yy0+ZG9tYWluKSk7CiAKICAgICAvKgpAQCAtMjI4OSw3ICsyMjkw LDcgQEAgY3NjaGVkMl9yZXNfcGljayhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVj dCBzY2hlZF91bml0ICp1bml0KQogICAgICAqCiAgICAgICogRmluZCBib3RoIHJ1bnF1ZXVlcyBp biBvbmUgcGFzcy4KICAgICAgKi8KLSAgICBoYXNfc29mdCA9IGhhc19zb2Z0X2FmZmluaXR5KHZj KTsKKyAgICBoYXNfc29mdCA9IGhhc19zb2Z0X2FmZmluaXR5KHVuaXQpOwogICAgIGZvcl9lYWNo X2NwdShpLCAmcHJ2LT5hY3RpdmVfcXVldWVzKQogICAgIHsKICAgICAgICAgc3RydWN0IGNzY2hl ZDJfcnVucXVldWVfZGF0YSAqcnFkOwpAQCAtMjMzNiw3ICsyMzM3LDcgQEAgY3NjaGVkMl9yZXNf cGljayhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0 KQogICAgICAgICAgICAgY3B1bWFza190IG1hc2s7CiAKICAgICAgICAgICAgIGNwdW1hc2tfYW5k KCZtYXNrLCBjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSksICZycWQtPmFjdGl2ZSk7Ci0gICAgICAg ICAgICBpZiAoIGNwdW1hc2tfaW50ZXJzZWN0cygmbWFzaywgc3ZjLT52Y3B1LT5jcHVfc29mdF9h ZmZpbml0eSkgKQorICAgICAgICAgICAgaWYgKCBjcHVtYXNrX2ludGVyc2VjdHMoJm1hc2ssIHVu aXQtPmNwdV9zb2Z0X2FmZmluaXR5KSApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg bWluX3NfYXZnbG9hZCA9IHJxZF9hdmdsb2FkOwogICAgICAgICAgICAgICAgIG1pbl9zX3JxaSA9 IGk7CkBAIC0yMzU4LDkgKzIzNTksOSBAQCBjc2NoZWQyX3Jlc19waWNrKGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgICAgICAqIE5vdGUg dGhhdCwgdG8gb2J0YWluIHRoZSBzb2Z0LWFmZmluaXR5IG1hc2ssIHdlICJqdXN0IiBwdXQgd2hh dCB3ZQogICAgICAgICAgKiBoYXZlIGluIGNwdW1hc2tfc2NyYXRjaCBpbiAmJiB3aXRoIHZjLT5j cHVfc29mdF9hZmZpbml0eS4gVGhpcyBpcwogICAgICAgICAgKiBvayBiZWNhdXNlOgotICAgICAg ICAgKiAtIHdlIGtub3cgdGhhdCB2Yy0+Y3B1X2hhcmRfYWZmaW5pdHkgYW5kIHZjLT5jcHVfc29m dF9hZmZpbml0eSBoYXZlCisgICAgICAgICAqIC0gd2Uga25vdyB0aGF0IHVuaXQtPmNwdV9oYXJk X2FmZmluaXR5IGFuZCAtPmNwdV9zb2Z0X2FmZmluaXR5IGhhdmUKICAgICAgICAgICogICBhIG5v bi1lbXB0eSBpbnRlcnNlY3Rpb24gKGJlY2F1c2UgaGFzX3NvZnQgaXMgdHJ1ZSk7Ci0gICAgICAg ICAqIC0gd2UgaGF2ZSB2Yy0+Y3B1X2hhcmRfYWZmaW5pdHkgJiBjcHVwb29sX2RvbWFpbl9jcHVt YXNrKCkgYWxyZWFkeQorICAgICAgICAgKiAtIHdlIGhhdmUgdW5pdC0+Y3B1X2hhcmRfYWZmaW5p dHkgJiBjcHVwb29sX2RvbWFpbl9jcHVtYXNrKCkgYWxyZWFkeQogICAgICAgICAgKiAgIGluIGNw dW1hc2tfc2NyYXRjaCwgd2UgZG8gc2F2ZSBhIGxvdCBkb2luZyBsaWtlIHRoaXMuCiAgICAgICAg ICAqCiAgICAgICAgICAqIEl0J3Mga2luZCBvZiBsaWtlIG9wZW4gY29kaW5nIGFmZmluaXR5X2Jh bGFuY2VfY3B1bWFzaygpIGJ1dCwgaW4KQEAgLTIzNjgsNyArMjM2OSw3IEBAIGNzY2hlZDJfcmVz X3BpY2soY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5p dCkKICAgICAgICAgICogY3B1bWFzayBvcGVyYXRpb25zLgogICAgICAgICAgKi8KICAgICAgICAg Y3B1bWFza19hbmQoY3B1bWFza19zY3JhdGNoX2NwdShjcHUpLCBjcHVtYXNrX3NjcmF0Y2hfY3B1 KGNwdSksCi0gICAgICAgICAgICAgICAgICAgIHZjLT5jcHVfc29mdF9hZmZpbml0eSk7CisgICAg ICAgICAgICAgICAgICAgIHVuaXQtPmNwdV9zb2Z0X2FmZmluaXR5KTsKICAgICAgICAgY3B1bWFz a19hbmQoY3B1bWFza19zY3JhdGNoX2NwdShjcHUpLCBjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSks CiAgICAgICAgICAgICAgICAgICAgICZwcnYtPnJxZFttaW5fc19ycWldLmFjdGl2ZSk7CiAgICAg fQpAQCAtMjQ3Niw2ICsyNDc3LDcgQEAgc3RhdGljIHZvaWQgbWlncmF0ZShjb25zdCBzdHJ1Y3Qg c2NoZWR1bGVyICpvcHMsCiAgICAgICAgICAgICAgICAgICAgIHNfdGltZV90IG5vdykKIHsKICAg ICBpbnQgY3B1ID0gc3ZjLT52Y3B1LT5wcm9jZXNzb3I7CisgICAgc3RydWN0IHNjaGVkX3VuaXQg KnVuaXQgPSBzdmMtPnZjcHUtPnNjaGVkX3VuaXQ7CiAKICAgICBpZiAoIHVubGlrZWx5KHRiX2lu aXRfZG9uZSkgKQogICAgIHsKQEAgLTI1MTMsNyArMjUxNSw3IEBAIHN0YXRpYyB2b2lkIG1pZ3Jh dGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLAogICAgICAgICB9CiAgICAgICAgIF9ydW5x X2RlYXNzaWduKHN2Yyk7CiAKLSAgICAgICAgY3B1bWFza19hbmQoY3B1bWFza19zY3JhdGNoX2Nw dShjcHUpLCBzdmMtPnZjcHUtPmNwdV9oYXJkX2FmZmluaXR5LAorICAgICAgICBjcHVtYXNrX2Fu ZChjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSksIHVuaXQtPmNwdV9oYXJkX2FmZmluaXR5LAogICAg ICAgICAgICAgICAgICAgICBjcHVwb29sX2RvbWFpbl9jcHVtYXNrKHN2Yy0+dmNwdS0+ZG9tYWlu KSk7CiAgICAgICAgIGNwdW1hc2tfYW5kKGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwgY3B1bWFz a19zY3JhdGNoX2NwdShjcHUpLAogICAgICAgICAgICAgICAgICAgICAmdHJxZC0+YWN0aXZlKTsK QEAgLTI1NDcsNyArMjU0OSw3IEBAIHN0YXRpYyBib29sIHZjcHVfaXNfbWlncmF0ZWFibGUoc3Ry dWN0IGNzY2hlZDJfdW5pdCAqc3ZjLAogICAgIHN0cnVjdCB2Y3B1ICp2ID0gc3ZjLT52Y3B1Owog ICAgIGludCBjcHUgPSBzdmMtPnZjcHUtPnByb2Nlc3NvcjsKIAotICAgIGNwdW1hc2tfYW5kKGNw dW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwgdi0+Y3B1X2hhcmRfYWZmaW5pdHksCisgICAgY3B1bWFz a19hbmQoY3B1bWFza19zY3JhdGNoX2NwdShjcHUpLCB2LT5zY2hlZF91bml0LT5jcHVfaGFyZF9h ZmZpbml0eSwKICAgICAgICAgICAgICAgICBjcHVwb29sX2RvbWFpbl9jcHVtYXNrKHYtPmRvbWFp bikpOwogCiAgICAgcmV0dXJuICEoc3ZjLT5mbGFncyAmIENTRkxBR19ydW5xX21pZ3JhdGVfcmVx dWVzdCkgJiYKQEAgLTI3ODEsNyArMjc4Myw3IEBAIGNzY2hlZDJfdW5pdF9taWdyYXRlKAogCiAg ICAgLyogSWYgaGVyZSwgbmV3X2NwdSBtdXN0IGJlIGEgdmFsaWQgQ3JlZGl0MiBwQ1BVLCBhbmQg aW4gb3VyIGFmZmluaXR5LiAqLwogICAgIEFTU0VSVChjcHVtYXNrX3Rlc3RfY3B1KG5ld19jcHUs ICZjc2NoZWQyX3ByaXYob3BzKS0+aW5pdGlhbGl6ZWQpKTsKLSAgICBBU1NFUlQoY3B1bWFza190 ZXN0X2NwdShuZXdfY3B1LCB2Yy0+Y3B1X2hhcmRfYWZmaW5pdHkpKTsKKyAgICBBU1NFUlQoY3B1 bWFza190ZXN0X2NwdShuZXdfY3B1LCB1bml0LT5jcHVfaGFyZF9hZmZpbml0eSkpOwogCiAgICAg dHJxZCA9IGMycnFkKG9wcywgbmV3X2NwdSk7CiAKQEAgLTMzMjEsOSArMzMyMyw5IEBAIHJ1bnFf Y2FuZGlkYXRlKHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwKICAgICB9CiAKICAg ICAvKiBJZiBzY3VyciBoYXMgYSBzb2Z0LWFmZmluaXR5LCBsZXQncyBjaGVjayB3aGV0aGVyIGNw dSBpcyBwYXJ0IG9mIGl0ICovCi0gICAgaWYgKCBoYXNfc29mdF9hZmZpbml0eShzY3Vyci0+dmNw dSkgKQorICAgIGlmICggaGFzX3NvZnRfYWZmaW5pdHkoc2N1cnItPnZjcHUtPnNjaGVkX3VuaXQp ICkKICAgICB7Ci0gICAgICAgIGFmZmluaXR5X2JhbGFuY2VfY3B1bWFzayhzY3Vyci0+dmNwdSwg QkFMQU5DRV9TT0ZUX0FGRklOSVRZLAorICAgICAgICBhZmZpbml0eV9iYWxhbmNlX2NwdW1hc2so c2N1cnItPnZjcHUtPnNjaGVkX3VuaXQsIEJBTEFOQ0VfU09GVF9BRkZJTklUWSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNwdW1hc2tfc2NyYXRjaCk7CiAgICAgICAgIGlmICgg dW5saWtlbHkoIWNwdW1hc2tfdGVzdF9jcHUoY3B1LCBjcHVtYXNrX3NjcmF0Y2gpKSApCiAgICAg ICAgIHsKQEAgLTMzNzgsNyArMzM4MCw3IEBAIHJ1bnFfY2FuZGlkYXRlKHN0cnVjdCBjc2NoZWQy X3J1bnF1ZXVlX2RhdGEgKnJxZCwKICAgICAgICAgfQogCiAgICAgICAgIC8qIE9ubHkgY29uc2lk ZXIgdmNwdXMgdGhhdCBhcmUgYWxsb3dlZCB0byBydW4gb24gdGhpcyBwcm9jZXNzb3IuICovCi0g ICAgICAgIGlmICggIWNwdW1hc2tfdGVzdF9jcHUoY3B1LCBzdmMtPnZjcHUtPmNwdV9oYXJkX2Fm ZmluaXR5KSApCisgICAgICAgIGlmICggIWNwdW1hc2tfdGVzdF9jcHUoY3B1LCBzdmMtPnZjcHUt PnNjaGVkX3VuaXQtPmNwdV9oYXJkX2FmZmluaXR5KSApCiAgICAgICAgIHsKICAgICAgICAgICAg ICgqc2tpcHBlZCkrKzsKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEveGVuL2Nv bW1vbi9zY2hlZF9udWxsLmMgYi94ZW4vY29tbW9uL3NjaGVkX251bGwuYwppbmRleCA0MGVmOWY5 MDg5Li42MmM1NThlZThlIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3NjaGVkX251bGwuYworKysg Yi94ZW4vY29tbW9uL3NjaGVkX251bGwuYwpAQCAtMTIyLDcgKzEyMiw4IEBAIHN0YXRpYyBpbmxp bmUgc3RydWN0IG51bGxfdW5pdCAqbnVsbF91bml0KGNvbnN0IHN0cnVjdCBzY2hlZF91bml0ICp1 bml0KQogc3RhdGljIGlubGluZSBib29sIHZjcHVfY2hlY2tfYWZmaW5pdHkoc3RydWN0IHZjcHUg KnYsIHVuc2lnbmVkIGludCBjcHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgYmFsYW5jZV9zdGVwKQogewotICAgIGFmZmluaXR5X2JhbGFuY2Vf Y3B1bWFzayh2LCBiYWxhbmNlX3N0ZXAsIGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSk7CisgICAg YWZmaW5pdHlfYmFsYW5jZV9jcHVtYXNrKHYtPnNjaGVkX3VuaXQsIGJhbGFuY2Vfc3RlcCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1bWFza19zY3JhdGNoX2NwdShjcHUpKTsKICAg ICBjcHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSksIGNwdW1hc2tfc2NyYXRjaF9j cHUoY3B1KSwKICAgICAgICAgICAgICAgICBjcHVwb29sX2RvbWFpbl9jcHVtYXNrKHYtPmRvbWFp bikpOwogCkBAIC0yNzMsMTAgKzI3NCwxMCBAQCBwaWNrX3JlcyhzdHJ1Y3QgbnVsbF9wcml2YXRl ICpwcnYsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogCiAgICAgZm9yX2VhY2hfYWZmaW5pdHlf YmFsYW5jZV9zdGVwKCBicyApCiAgICAgewotICAgICAgICBpZiAoIGJzID09IEJBTEFOQ0VfU09G VF9BRkZJTklUWSAmJiAhaGFzX3NvZnRfYWZmaW5pdHkodikgKQorICAgICAgICBpZiAoIGJzID09 IEJBTEFOQ0VfU09GVF9BRkZJTklUWSAmJiAhaGFzX3NvZnRfYWZmaW5pdHkodW5pdCkgKQogICAg ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYWZmaW5pdHlfYmFsYW5jZV9jcHVtYXNrKHYs IGJzLCBjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSkpOworICAgICAgICBhZmZpbml0eV9iYWxhbmNl X2NwdW1hc2sodW5pdCwgYnMsIGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSk7CiAgICAgICAgIGNw dW1hc2tfYW5kKGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwgY3B1bWFza19zY3JhdGNoX2NwdShj cHUpLCBjcHVzKTsKIAogICAgICAgICAvKgpAQCAtMzEzLDcgKzMxNCw3IEBAIHBpY2tfcmVzKHN0 cnVjdCBudWxsX3ByaXZhdGUgKnBydiwgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgICog YXMgd2Ugd2lsbCBhY3R1YWxseSBhc3NpZ24gdGhlIHZDUFUgdG8gdGhlIHBDUFUgd2UgcmV0dXJu IGZyb20gaGVyZSwKICAgICAgKiBvbmx5IGlmIHRoZSBwQ1BVIGlzIGZyZWUuCiAgICAgICovCi0g ICAgY3B1bWFza19hbmQoY3B1bWFza19zY3JhdGNoX2NwdShjcHUpLCBjcHVzLCB2LT5jcHVfaGFy ZF9hZmZpbml0eSk7CisgICAgY3B1bWFza19hbmQoY3B1bWFza19zY3JhdGNoX2NwdShjcHUpLCBj cHVzLCB1bml0LT5jcHVfaGFyZF9hZmZpbml0eSk7CiAgICAgbmV3X2NwdSA9IGNwdW1hc2tfYW55 KGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSk7CiAKICBvdXQ6CkBAIC0zOTYsNyArMzk3LDggQEAg c3RhdGljIGJvb2wgdmNwdV9kZWFzc2lnbihzdHJ1Y3QgbnVsbF9wcml2YXRlICpwcnYsIHN0cnVj dCB2Y3B1ICp2KQogICAgIHsKICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSggd3ZjLCAmcHJ2 LT53YWl0cSwgd2FpdHFfZWxlbSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICggYnMgPT0g QkFMQU5DRV9TT0ZUX0FGRklOSVRZICYmICFoYXNfc29mdF9hZmZpbml0eSh3dmMtPnZjcHUpICkK KyAgICAgICAgICAgIGlmICggYnMgPT0gQkFMQU5DRV9TT0ZUX0FGRklOSVRZICYmCisgICAgICAg ICAgICAgICAgICFoYXNfc29mdF9hZmZpbml0eSh3dmMtPnZjcHUtPnNjaGVkX3VuaXQpICkKICAg ICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaWYgKCB2Y3B1X2NoZWNrX2Fm ZmluaXR5KHd2Yy0+dmNwdSwgY3B1LCBicykgKQpAQCAtNDY2LDcgKzQ2OCw3IEBAIHN0YXRpYyB2 b2lkIG51bGxfdW5pdF9pbnNlcnQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLAogCiAgICAg bG9jayA9IHVuaXRfc2NoZWR1bGVfbG9jayh1bml0KTsKIAotICAgIGNwdW1hc2tfYW5kKGNwdW1h c2tfc2NyYXRjaF9jcHUoY3B1KSwgdi0+Y3B1X2hhcmRfYWZmaW5pdHksCisgICAgY3B1bWFza19h bmQoY3B1bWFza19zY3JhdGNoX2NwdShjcHUpLCB1bml0LT5jcHVfaGFyZF9hZmZpbml0eSwKICAg ICAgICAgICAgICAgICBjcHVwb29sX2RvbWFpbl9jcHVtYXNrKHYtPmRvbWFpbikpOwogCiAgICAg LyogSWYgdGhlIHBDUFUgaXMgZnJlZSwgd2UgYXNzaWduIHYgdG8gaXQgKi8KQEAgLTU3OSw3ICs1 ODEsNyBAQCBzdGF0aWMgdm9pZCBudWxsX3VuaXRfd2FrZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVy ICpvcHMsCiAgICAgICAgIGxpc3RfYWRkX3RhaWwoJm52Yy0+d2FpdHFfZWxlbSwgJnBydi0+d2Fp dHEpOwogICAgICAgICBzcGluX3VubG9jaygmcHJ2LT53YWl0cV9sb2NrKTsKIAotICAgICAgICBj cHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSksIHYtPmNwdV9oYXJkX2FmZmluaXR5 LAorICAgICAgICBjcHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSksIHVuaXQtPmNw dV9oYXJkX2FmZmluaXR5LAogICAgICAgICAgICAgICAgICAgICBjcHVwb29sX2RvbWFpbl9jcHVt YXNrKHYtPmRvbWFpbikpOwogCiAgICAgICAgIGlmICggIWNwdW1hc2tfaW50ZXJzZWN0cygmcHJ2 LT5jcHVzX2ZyZWUsIGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSkgKQpAQCAtODQ4LDcgKzg1MCw3 IEBAIHN0YXRpYyBzdHJ1Y3QgdGFza19zbGljZSBudWxsX3NjaGVkdWxlKGNvbnN0IHN0cnVjdCBz Y2hlZHVsZXIgKm9wcywKICAgICAgICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoIHd2YywgJnBy di0+d2FpdHEsIHdhaXRxX2VsZW0gKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlm ICggYnMgPT0gQkFMQU5DRV9TT0ZUX0FGRklOSVRZICYmCi0gICAgICAgICAgICAgICAgICAgICAh aGFzX3NvZnRfYWZmaW5pdHkod3ZjLT52Y3B1KSApCisgICAgICAgICAgICAgICAgICAgICAhaGFz X3NvZnRfYWZmaW5pdHkod3ZjLT52Y3B1LT5zY2hlZF91bml0KSApCiAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgaWYgKCB2Y3B1X2NoZWNrX2FmZmluaXR5 KHd2Yy0+dmNwdSwgY3B1LCBicykgKQpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hlZF9ydC5j IGIveGVuL2NvbW1vbi9zY2hlZF9ydC5jCmluZGV4IGEyNzk1ODIzOTIuLjRkMjljNmRkNjMgMTAw NjQ0Ci0tLSBhL3hlbi9jb21tb24vc2NoZWRfcnQuYworKysgYi94ZW4vY29tbW9uL3NjaGVkX3J0 LmMKQEAgLTMyNyw3ICszMjcsNyBAQCBydF9kdW1wX3ZjcHUoY29uc3Qgc3RydWN0IHNjaGVkdWxl ciAqb3BzLCBjb25zdCBzdHJ1Y3QgcnRfdW5pdCAqc3ZjKQogICAgIG1hc2sgPSBjcHVtYXNrX3Nj cmF0Y2hfY3B1KHN2Yy0+dmNwdS0+cHJvY2Vzc29yKTsKIAogICAgIGNwdXBvb2xfbWFzayA9IGNw dXBvb2xfZG9tYWluX2NwdW1hc2soc3ZjLT52Y3B1LT5kb21haW4pOwotICAgIGNwdW1hc2tfYW5k KG1hc2ssIGNwdXBvb2xfbWFzaywgc3ZjLT52Y3B1LT5jcHVfaGFyZF9hZmZpbml0eSk7CisgICAg Y3B1bWFza19hbmQobWFzaywgY3B1cG9vbF9tYXNrLCBzdmMtPnZjcHUtPnNjaGVkX3VuaXQtPmNw dV9oYXJkX2FmZmluaXR5KTsKICAgICBwcmludGsoIlslNWQuJS0ydV0gY3B1ICV1LCAoJSJQUklf c3RpbWUiLCAlIlBSSV9zdGltZSIpLCIKICAgICAgICAgICAgIiBjdXJfYj0lIlBSSV9zdGltZSIg Y3VyX2Q9JSJQUklfc3RpbWUiIGxhc3Rfc3RhcnQ9JSJQUklfc3RpbWUiXG4iCiAgICAgICAgICAg ICIgXHRcdCBwcmlvcml0eV9sZXZlbD0lZCBoYXNfZXh0cmF0aW1lPSVkXG4iCkBAIC02NDQsNyAr NjQ0LDcgQEAgcnRfcmVzX3BpY2soY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qg c2NoZWRfdW5pdCAqdW5pdCkKICAgICBpbnQgY3B1OwogCiAgICAgb25saW5lID0gY3B1cG9vbF9k b21haW5fY3B1bWFzayh2Yy0+ZG9tYWluKTsKLSAgICBjcHVtYXNrX2FuZCgmY3B1cywgb25saW5l LCB2Yy0+Y3B1X2hhcmRfYWZmaW5pdHkpOworICAgIGNwdW1hc2tfYW5kKCZjcHVzLCBvbmxpbmUs IHVuaXQtPmNwdV9oYXJkX2FmZmluaXR5KTsKIAogICAgIGNwdSA9IGNwdW1hc2tfdGVzdF9jcHUo dmMtPnByb2Nlc3NvciwgJmNwdXMpCiAgICAgICAgICAgICA/IHZjLT5wcm9jZXNzb3IKQEAgLTEw MjIsNyArMTAyMiw4IEBAIHJ1bnFfcGljayhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGNv bnN0IGNwdW1hc2tfdCAqbWFzaykKIAogICAgICAgICAvKiBtYXNrIGNwdV9oYXJkX2FmZmluaXR5 ICYgY3B1cG9vbCAmIG1hc2sgKi8KICAgICAgICAgb25saW5lID0gY3B1cG9vbF9kb21haW5fY3B1 bWFzayhpdGVyX3N2Yy0+dmNwdS0+ZG9tYWluKTsKLSAgICAgICAgY3B1bWFza19hbmQoJmNwdV9j b21tb24sIG9ubGluZSwgaXRlcl9zdmMtPnZjcHUtPmNwdV9oYXJkX2FmZmluaXR5KTsKKyAgICAg ICAgY3B1bWFza19hbmQoJmNwdV9jb21tb24sIG9ubGluZSwKKyAgICAgICAgICAgICAgICAgICAg aXRlcl9zdmMtPnZjcHUtPnNjaGVkX3VuaXQtPmNwdV9oYXJkX2FmZmluaXR5KTsKICAgICAgICAg Y3B1bWFza19hbmQoJmNwdV9jb21tb24sIG1hc2ssICZjcHVfY29tbW9uKTsKICAgICAgICAgaWYg KCBjcHVtYXNrX2VtcHR5KCZjcHVfY29tbW9uKSApCiAgICAgICAgICAgICBjb250aW51ZTsKQEAg LTExOTEsNyArMTE5Miw3IEBAIHJ1bnFfdGlja2xlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9w cywgc3RydWN0IHJ0X3VuaXQgKm5ldykKICAgICAgICAgcmV0dXJuOwogCiAgICAgb25saW5lID0g Y3B1cG9vbF9kb21haW5fY3B1bWFzayhuZXctPnZjcHUtPmRvbWFpbik7Ci0gICAgY3B1bWFza19h bmQoJm5vdF90aWNrbGVkLCBvbmxpbmUsIG5ldy0+dmNwdS0+Y3B1X2hhcmRfYWZmaW5pdHkpOwor ICAgIGNwdW1hc2tfYW5kKCZub3RfdGlja2xlZCwgb25saW5lLCBuZXctPnZjcHUtPnNjaGVkX3Vu aXQtPmNwdV9oYXJkX2FmZmluaXR5KTsKICAgICBjcHVtYXNrX2FuZG5vdCgmbm90X3RpY2tsZWQs ICZub3RfdGlja2xlZCwgJnBydi0+dGlja2xlZCk7CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEveGVu L2NvbW1vbi9zY2hlZHVsZS5jIGIveGVuL2NvbW1vbi9zY2hlZHVsZS5jCmluZGV4IGU1YWU0MDJh MjkuLjk4YWZiYjQzNWYgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc2NoZWR1bGUuYworKysgYi94 ZW4vY29tbW9uL3NjaGVkdWxlLmMKQEAgLTMyNiw2ICszMjYsMTEgQEAgc3RhdGljIHZvaWQgc2No ZWRfZnJlZV91bml0KHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogICAgIH0KIAogICAgIHVuaXQt PnZjcHVfbGlzdC0+c2NoZWRfdW5pdCA9IE5VTEw7CisKKyAgICBmcmVlX2NwdW1hc2tfdmFyKHVu aXQtPmNwdV9oYXJkX2FmZmluaXR5KTsKKyAgICBmcmVlX2NwdW1hc2tfdmFyKHVuaXQtPmNwdV9o YXJkX2FmZmluaXR5X3NhdmVkKTsKKyAgICBmcmVlX2NwdW1hc2tfdmFyKHVuaXQtPmNwdV9zb2Z0 X2FmZmluaXR5KTsKKwogICAgIHhmcmVlKHVuaXQpOwogfQogCkBAIC0zNTEsNyArMzU2LDE2IEBA IHN0YXRpYyBzdHJ1Y3Qgc2NoZWRfdW5pdCAqc2NoZWRfYWxsb2NfdW5pdChzdHJ1Y3QgdmNwdSAq dikKICAgICB1bml0LT5uZXh0X2luX2xpc3QgPSAqcHJldl91bml0OwogICAgICpwcmV2X3VuaXQg PSB1bml0OwogCisgICAgaWYgKCAhemFsbG9jX2NwdW1hc2tfdmFyKCZ1bml0LT5jcHVfaGFyZF9h ZmZpbml0eSkgfHwKKyAgICAgICAgICF6YWxsb2NfY3B1bWFza192YXIoJnVuaXQtPmNwdV9oYXJk X2FmZmluaXR5X3NhdmVkKSB8fAorICAgICAgICAgIXphbGxvY19jcHVtYXNrX3ZhcigmdW5pdC0+ Y3B1X3NvZnRfYWZmaW5pdHkpICkKKyAgICAgICAgZ290byBmYWlsOworCiAgICAgcmV0dXJuIHVu aXQ7CisKKyBmYWlsOgorICAgIHNjaGVkX2ZyZWVfdW5pdCh1bml0KTsKKyAgICByZXR1cm4gTlVM TDsKIH0KIAogaW50IHNjaGVkX2luaXRfdmNwdShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50 IHByb2Nlc3NvcikKQEAgLTc0MCw3ICs3NTQsNyBAQCBzdGF0aWMgdm9pZCB2Y3B1X21pZ3JhdGVf ZmluaXNoKHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAo IHBpY2tfY2FsbGVkICYmCiAgICAgICAgICAgICAgICAgIChuZXdfbG9jayA9PSBnZXRfc2NoZWRf cmVzKG5ld19jcHUpLT5zY2hlZHVsZV9sb2NrKSAmJgotICAgICAgICAgICAgICAgICBjcHVtYXNr X3Rlc3RfY3B1KG5ld19jcHUsIHYtPmNwdV9oYXJkX2FmZmluaXR5KSAmJgorICAgICAgICAgICAg ICAgICBjcHVtYXNrX3Rlc3RfY3B1KG5ld19jcHUsIHYtPnNjaGVkX3VuaXQtPmNwdV9oYXJkX2Fm ZmluaXR5KSAmJgogICAgICAgICAgICAgICAgICBjcHVtYXNrX3Rlc3RfY3B1KG5ld19jcHUsIHYt PmRvbWFpbi0+Y3B1cG9vbC0+Y3B1X3ZhbGlkKSApCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAK QEAgLTgxNiw2ICs4MzAsNyBAQCB2b2lkIHJlc3RvcmVfdmNwdV9hZmZpbml0eShzdHJ1Y3QgZG9t YWluICpkKQogICAgIHsKICAgICAgICAgc3BpbmxvY2tfdCAqbG9jazsKICAgICAgICAgdW5zaWdu ZWQgaW50IG9sZF9jcHUgPSB2LT5wcm9jZXNzb3I7CisgICAgICAgIHN0cnVjdCBzY2hlZF91bml0 ICp1bml0ID0gdi0+c2NoZWRfdW5pdDsKIAogICAgICAgICBBU1NFUlQoIXZjcHVfcnVubmFibGUo dikpOwogCkBAIC04MjcsMTcgKzg0MiwxNyBAQCB2b2lkIHJlc3RvcmVfdmNwdV9hZmZpbml0eShz dHJ1Y3QgZG9tYWluICpkKQogICAgICAgICAgKiBzZXQgdi0+cHJvY2Vzc29yIG9mIGVhY2ggb2Yg dGhlaXIgdkNQVXMgdG8gc29tZXRoaW5nIHRoYXQgd2lsbAogICAgICAgICAgKiBtYWtlIHNlbnNl IGZvciB0aGUgc2NoZWR1bGVyIG9mIHRoZSBjcHVwb29sIGluIHdoaWNoIHRoZXkgYXJlIGluLgog ICAgICAgICAgKi8KLSAgICAgICAgbG9jayA9IHVuaXRfc2NoZWR1bGVfbG9ja19pcnEodi0+c2No ZWRfdW5pdCk7CisgICAgICAgIGxvY2sgPSB1bml0X3NjaGVkdWxlX2xvY2tfaXJxKHVuaXQpOwog Ci0gICAgICAgIGNwdW1hc2tfYW5kKGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwgdi0+Y3B1X2hh cmRfYWZmaW5pdHksCisgICAgICAgIGNwdW1hc2tfYW5kKGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1 KSwgdW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHksCiAgICAgICAgICAgICAgICAgICAgIGNwdXBvb2xf ZG9tYWluX2NwdW1hc2soZCkpOwogICAgICAgICBpZiAoIGNwdW1hc2tfZW1wdHkoY3B1bWFza19z Y3JhdGNoX2NwdShjcHUpKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICggdi0+YWZmaW5p dHlfYnJva2VuICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzY2hlZF9zZXRfYWZm aW5pdHkodiwgdi0+Y3B1X2hhcmRfYWZmaW5pdHlfc2F2ZWQsIE5VTEwpOworICAgICAgICAgICAg ICAgIHNjaGVkX3NldF9hZmZpbml0eSh2LCB1bml0LT5jcHVfaGFyZF9hZmZpbml0eV9zYXZlZCwg TlVMTCk7CiAgICAgICAgICAgICAgICAgdi0+YWZmaW5pdHlfYnJva2VuID0gMDsKLSAgICAgICAg ICAgICAgICBjcHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSksIHYtPmNwdV9oYXJk X2FmZmluaXR5LAorICAgICAgICAgICAgICAgIGNwdW1hc2tfYW5kKGNwdW1hc2tfc2NyYXRjaF9j cHUoY3B1KSwgdW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHksCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY3B1cG9vbF9kb21haW5fY3B1bWFzayhkKSk7CiAgICAgICAgICAgICB9CiAKQEAgLTg0 NSwyMSArODYwLDIwIEBAIHZvaWQgcmVzdG9yZV92Y3B1X2FmZmluaXR5KHN0cnVjdCBkb21haW4g KmQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19ERUJVRyAi QnJlYWtpbmcgYWZmaW5pdHkgZm9yICVwdlxuIiwgdik7CiAgICAgICAgICAgICAgICAgc2NoZWRf c2V0X2FmZmluaXR5KHYsICZjcHVtYXNrX2FsbCwgTlVMTCk7Ci0gICAgICAgICAgICAgICAgY3B1 bWFza19hbmQoY3B1bWFza19zY3JhdGNoX2NwdShjcHUpLCB2LT5jcHVfaGFyZF9hZmZpbml0eSwK KyAgICAgICAgICAgICAgICBjcHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSksIHVu aXQtPmNwdV9oYXJkX2FmZmluaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdXBv b2xfZG9tYWluX2NwdW1hc2soZCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAg ICAgdi0+cHJvY2Vzc29yID0gY3B1bWFza19hbnkoY3B1bWFza19zY3JhdGNoX2NwdShjcHUpKTsK LSAgICAgICAgdi0+c2NoZWRfdW5pdC0+cmVzID0gZ2V0X3NjaGVkX3Jlcyh2LT5wcm9jZXNzb3Ip OworICAgICAgICB1bml0LT5yZXMgPSBnZXRfc2NoZWRfcmVzKHYtPnByb2Nlc3Nvcik7CiAKICAg ICAgICAgc3Bpbl91bmxvY2tfaXJxKGxvY2spOwogCiAgICAgICAgIC8qIHYtPnByb2Nlc3NvciBt aWdodCBoYXZlIGNoYW5nZWQsIHNvIHJlYWNxdWlyZSB0aGUgbG9jay4gKi8KLSAgICAgICAgbG9j ayA9IHVuaXRfc2NoZWR1bGVfbG9ja19pcnEodi0+c2NoZWRfdW5pdCk7Ci0gICAgICAgIHYtPnNj aGVkX3VuaXQtPnJlcyA9IHNjaGVkX3BpY2tfcmVzb3VyY2UodmNwdV9zY2hlZHVsZXIodiksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi0+c2NoZWRf dW5pdCk7Ci0gICAgICAgIHYtPnByb2Nlc3NvciA9IHYtPnNjaGVkX3VuaXQtPnJlcy0+cHJvY2Vz c29yOworICAgICAgICBsb2NrID0gdW5pdF9zY2hlZHVsZV9sb2NrX2lycSh1bml0KTsKKyAgICAg ICAgdW5pdC0+cmVzID0gc2NoZWRfcGlja19yZXNvdXJjZSh2Y3B1X3NjaGVkdWxlcih2KSwgdW5p dCk7CisgICAgICAgIHYtPnByb2Nlc3NvciA9IHVuaXQtPnJlcy0+cHJvY2Vzc29yOwogICAgICAg ICBzcGluX3VubG9ja19pcnEobG9jayk7CiAKICAgICAgICAgaWYgKCBvbGRfY3B1ICE9IHYtPnBy b2Nlc3NvciApCkBAIC04OTEsMTYgKzkwNSwxNyBAQCBpbnQgY3B1X2Rpc2FibGVfc2NoZWR1bGVy KHVuc2lnbmVkIGludCBjcHUpCiAgICAgICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkKICAgICAg ICAgewogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKLSAgICAgICAgICAgIHNwaW5s b2NrX3QgKmxvY2sgPSB1bml0X3NjaGVkdWxlX2xvY2tfaXJxc2F2ZSh2LT5zY2hlZF91bml0LCAm ZmxhZ3MpOworICAgICAgICAgICAgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQgPSB2LT5zY2hlZF91 bml0OworICAgICAgICAgICAgc3BpbmxvY2tfdCAqbG9jayA9IHVuaXRfc2NoZWR1bGVfbG9ja19p cnFzYXZlKHVuaXQsICZmbGFncyk7CiAKLSAgICAgICAgICAgIGNwdW1hc2tfYW5kKCZvbmxpbmVf YWZmaW5pdHksIHYtPmNwdV9oYXJkX2FmZmluaXR5LCBjLT5jcHVfdmFsaWQpOworICAgICAgICAg ICAgY3B1bWFza19hbmQoJm9ubGluZV9hZmZpbml0eSwgdW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHks IGMtPmNwdV92YWxpZCk7CiAgICAgICAgICAgICBpZiAoIGNwdW1hc2tfZW1wdHkoJm9ubGluZV9h ZmZpbml0eSkgJiYKLSAgICAgICAgICAgICAgICAgY3B1bWFza190ZXN0X2NwdShjcHUsIHYtPmNw dV9oYXJkX2FmZmluaXR5KSApCisgICAgICAgICAgICAgICAgIGNwdW1hc2tfdGVzdF9jcHUoY3B1 LCB1bml0LT5jcHVfaGFyZF9hZmZpbml0eSkgKQogICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgIGlmICggdi0+YWZmaW5pdHlfYnJva2VuICkKICAgICAgICAgICAgICAgICB7CiAgICAgICAg ICAgICAgICAgICAgIC8qIFRoZSB2Y3B1IGlzIHRlbXBvcmFyaWx5IHBpbm5lZCwgY2FuJ3QgbW92 ZSBpdC4gKi8KLSAgICAgICAgICAgICAgICAgICAgdW5pdF9zY2hlZHVsZV91bmxvY2tfaXJxcmVz dG9yZShsb2NrLCBmbGFncywgdi0+c2NoZWRfdW5pdCk7CisgICAgICAgICAgICAgICAgICAgIHVu aXRfc2NoZWR1bGVfdW5sb2NrX2lycXJlc3RvcmUobG9jaywgZmxhZ3MsIHVuaXQpOwogICAgICAg ICAgICAgICAgICAgICByZXQgPSAtRUFERFJJTlVTRTsKICAgICAgICAgICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtOTEzLDcgKzkyOCw3IEBAIGludCBjcHVfZGlzYWJs ZV9zY2hlZHVsZXIodW5zaWduZWQgaW50IGNwdSkKICAgICAgICAgICAgIGlmICggdi0+cHJvY2Vz c29yICE9IGNwdSApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLyogVGhlIHZjcHUg aXMgbm90IG9uIHRoaXMgY3B1LCBzbyB3ZSBjYW4gbW92ZSBvbi4gKi8KLSAgICAgICAgICAgICAg ICB1bml0X3NjaGVkdWxlX3VubG9ja19pcnFyZXN0b3JlKGxvY2ssIGZsYWdzLCB2LT5zY2hlZF91 bml0KTsKKyAgICAgICAgICAgICAgICB1bml0X3NjaGVkdWxlX3VubG9ja19pcnFyZXN0b3JlKGxv Y2ssIGZsYWdzLCB1bml0KTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg IH0KIApAQCAtOTI2LDcgKzk0MSw3IEBAIGludCBjcHVfZGlzYWJsZV9zY2hlZHVsZXIodW5zaWdu ZWQgaW50IGNwdSkKICAgICAgICAgICAgICAqICAgIHRoaW5ncyB3b3VsZCBoYXZlIGZhaWxlZCBi ZWZvcmUgZ2V0dGluZyBpbiBoZXJlLgogICAgICAgICAgICAgICovCiAgICAgICAgICAgICB2Y3B1 X21pZ3JhdGVfc3RhcnQodik7Ci0gICAgICAgICAgICB1bml0X3NjaGVkdWxlX3VubG9ja19pcnFy ZXN0b3JlKGxvY2ssIGZsYWdzLCB2LT5zY2hlZF91bml0KTsKKyAgICAgICAgICAgIHVuaXRfc2No ZWR1bGVfdW5sb2NrX2lycXJlc3RvcmUobG9jaywgZmxhZ3MsIHVuaXQpOwogCiAgICAgICAgICAg ICB2Y3B1X21pZ3JhdGVfZmluaXNoKHYpOwogCkBAIC05NzEsMjYgKzk4NiwyOSBAQCBzdGF0aWMg aW50IGNwdV9kaXNhYmxlX3NjaGVkdWxlcl9jaGVjayh1bnNpZ25lZCBpbnQgY3B1KQogdm9pZCBz Y2hlZF9zZXRfYWZmaW5pdHkoCiAgICAgc3RydWN0IHZjcHUgKnYsIGNvbnN0IGNwdW1hc2tfdCAq aGFyZCwgY29uc3QgY3B1bWFza190ICpzb2Z0KQogewotICAgIHNjaGVkX2FkanVzdF9hZmZpbml0 eShkb21fc2NoZWR1bGVyKHYtPmRvbWFpbiksIHYtPnNjaGVkX3VuaXQsIGhhcmQsIHNvZnQpOwor ICAgIHN0cnVjdCBzY2hlZF91bml0ICp1bml0ID0gdi0+c2NoZWRfdW5pdDsKKworICAgIHNjaGVk X2FkanVzdF9hZmZpbml0eShkb21fc2NoZWR1bGVyKHVuaXQtPmRvbWFpbiksIHVuaXQsIGhhcmQs IHNvZnQpOwogCiAgICAgaWYgKCBoYXJkICkKLSAgICAgICAgY3B1bWFza19jb3B5KHYtPmNwdV9o YXJkX2FmZmluaXR5LCBoYXJkKTsKKyAgICAgICAgY3B1bWFza19jb3B5KHVuaXQtPmNwdV9oYXJk X2FmZmluaXR5LCBoYXJkKTsKICAgICBpZiAoIHNvZnQgKQotICAgICAgICBjcHVtYXNrX2NvcHko di0+Y3B1X3NvZnRfYWZmaW5pdHksIHNvZnQpOworICAgICAgICBjcHVtYXNrX2NvcHkodW5pdC0+ Y3B1X3NvZnRfYWZmaW5pdHksIHNvZnQpOwogCi0gICAgdi0+c29mdF9hZmZfZWZmZWN0aXZlID0g IWNwdW1hc2tfc3Vic2V0KHYtPmNwdV9oYXJkX2FmZmluaXR5LAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2LT5jcHVfc29mdF9hZmZpbml0eSkgJiYKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjcHVtYXNrX2ludGVyc2VjdHModi0+Y3B1X3NvZnRfYWZm aW5pdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYt PmNwdV9oYXJkX2FmZmluaXR5KTsKKyAgICB1bml0LT5zb2Z0X2FmZl9lZmZlY3RpdmUgPSAhY3B1 bWFza19zdWJzZXQodW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXQtPmNwdV9zb2Z0X2FmZmluaXR5KSAmJgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdW1hc2tfaW50ZXJzZWN0cyh1bml0LT5j cHVfc29mdF9hZmZpbml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHkpOwogfQogCiBzdGF0aWMgaW50IHZj cHVfc2V0X2FmZmluaXR5KAogICAgIHN0cnVjdCB2Y3B1ICp2LCBjb25zdCBjcHVtYXNrX3QgKmFm ZmluaXR5LCBjb25zdCBjcHVtYXNrX3QgKndoaWNoKQogeworICAgIHN0cnVjdCBzY2hlZF91bml0 ICp1bml0ID0gdi0+c2NoZWRfdW5pdDsKICAgICBzcGlubG9ja190ICpsb2NrOwogICAgIGludCBy ZXQgPSAwOwogCi0gICAgbG9jayA9IHVuaXRfc2NoZWR1bGVfbG9ja19pcnEodi0+c2NoZWRfdW5p dCk7CisgICAgbG9jayA9IHVuaXRfc2NoZWR1bGVfbG9ja19pcnEodW5pdCk7CiAKICAgICBpZiAo IHYtPmFmZmluaXR5X2Jyb2tlbiApCiAgICAgICAgIHJldCA9IC1FQlVTWTsKQEAgLTEwMDAsMTkg KzEwMTgsMTkgQEAgc3RhdGljIGludCB2Y3B1X3NldF9hZmZpbml0eSgKICAgICAgICAgICogVGVs bCB0aGUgc2NoZWR1bGVyIHdlIGNoYW5nZXMgc29tZXRoaW5nIGFib3V0IGFmZmluaXR5LAogICAg ICAgICAgKiBhbmQgYXNrIHRvIHJlLWV2YWx1YXRlIHZjcHUgcGxhY2VtZW50LgogICAgICAgICAg Ki8KLSAgICAgICAgaWYgKCB3aGljaCA9PSB2LT5jcHVfaGFyZF9hZmZpbml0eSApCisgICAgICAg IGlmICggd2hpY2ggPT0gdW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHkgKQogICAgICAgICB7CiAgICAg ICAgICAgICBzY2hlZF9zZXRfYWZmaW5pdHkodiwgYWZmaW5pdHksIE5VTEwpOwogICAgICAgICB9 CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHdoaWNoID09IHYt PmNwdV9zb2Z0X2FmZmluaXR5KTsKKyAgICAgICAgICAgIEFTU0VSVCh3aGljaCA9PSB1bml0LT5j cHVfc29mdF9hZmZpbml0eSk7CiAgICAgICAgICAgICBzY2hlZF9zZXRfYWZmaW5pdHkodiwgTlVM TCwgYWZmaW5pdHkpOwogICAgICAgICB9CiAgICAgICAgIHZjcHVfbWlncmF0ZV9zdGFydCh2KTsK ICAgICB9CiAKLSAgICB1bml0X3NjaGVkdWxlX3VubG9ja19pcnEobG9jaywgdi0+c2NoZWRfdW5p dCk7CisgICAgdW5pdF9zY2hlZHVsZV91bmxvY2tfaXJxKGxvY2ssIHVuaXQpOwogCiAgICAgZG9t YWluX3VwZGF0ZV9ub2RlX2FmZmluaXR5KHYtPmRvbWFpbik7CiAKQEAgLTEwMzEsMTIgKzEwNDks MTIgQEAgaW50IHZjcHVfc2V0X2hhcmRfYWZmaW5pdHkoc3RydWN0IHZjcHUgKnYsIGNvbnN0IGNw dW1hc2tfdCAqYWZmaW5pdHkpCiAgICAgaWYgKCBjcHVtYXNrX2VtcHR5KCZvbmxpbmVfYWZmaW5p dHkpICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKLSAgICByZXR1cm4gdmNwdV9zZXRfYWZm aW5pdHkodiwgYWZmaW5pdHksIHYtPmNwdV9oYXJkX2FmZmluaXR5KTsKKyAgICByZXR1cm4gdmNw dV9zZXRfYWZmaW5pdHkodiwgYWZmaW5pdHksIHYtPnNjaGVkX3VuaXQtPmNwdV9oYXJkX2FmZmlu aXR5KTsKIH0KIAogaW50IHZjcHVfc2V0X3NvZnRfYWZmaW5pdHkoc3RydWN0IHZjcHUgKnYsIGNv bnN0IGNwdW1hc2tfdCAqYWZmaW5pdHkpCiB7Ci0gICAgcmV0dXJuIHZjcHVfc2V0X2FmZmluaXR5 KHYsIGFmZmluaXR5LCB2LT5jcHVfc29mdF9hZmZpbml0eSk7CisgICAgcmV0dXJuIHZjcHVfc2V0 X2FmZmluaXR5KHYsIGFmZmluaXR5LCB2LT5zY2hlZF91bml0LT5jcHVfc29mdF9hZmZpbml0eSk7 CiB9CiAKIC8qIEJsb2NrIHRoZSBjdXJyZW50bHktZXhlY3V0aW5nIGRvbWFpbiB1bnRpbCBhIHBl cnRpbmVudCBldmVudCBvY2N1cnMuICovCkBAIC0xMjQwLDExICsxMjU4LDEyIEBAIHZvaWQgd2F0 Y2hkb2dfZG9tYWluX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCkKICAqLwogaW50IHZjcHVfdGVt cG9yYXJ5X2FmZmluaXR5KHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgY3B1LCB1aW50OF90 IHJlYXNvbikKIHsKKyAgICBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCA9IHYtPnNjaGVkX3VuaXQ7 CiAgICAgc3BpbmxvY2tfdCAqbG9jazsKICAgICBpbnQgcmV0ID0gLUVJTlZBTDsKICAgICBib29s IG1pZ3JhdGU7CiAKLSAgICBsb2NrID0gdW5pdF9zY2hlZHVsZV9sb2NrX2lycSh2LT5zY2hlZF91 bml0KTsKKyAgICBsb2NrID0gdW5pdF9zY2hlZHVsZV9sb2NrX2lycSh1bml0KTsKIAogICAgIGlm ICggY3B1ID09IE5SX0NQVVMgKQogICAgIHsKQEAgLTEyNTQsNyArMTI3Myw3IEBAIGludCB2Y3B1 X3RlbXBvcmFyeV9hZmZpbml0eShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IGNwdSwgdWlu dDhfdCByZWFzb24pCiAgICAgICAgICAgICB2LT5hZmZpbml0eV9icm9rZW4gJj0gfnJlYXNvbjsK ICAgICAgICAgfQogICAgICAgICBpZiAoICFyZXQgJiYgIXYtPmFmZmluaXR5X2Jyb2tlbiApCi0g ICAgICAgICAgICBzY2hlZF9zZXRfYWZmaW5pdHkodiwgdi0+Y3B1X2hhcmRfYWZmaW5pdHlfc2F2 ZWQsIE5VTEwpOworICAgICAgICAgICAgc2NoZWRfc2V0X2FmZmluaXR5KHYsIHVuaXQtPmNwdV9o YXJkX2FmZmluaXR5X3NhdmVkLCBOVUxMKTsKICAgICB9CiAgICAgZWxzZSBpZiAoIGNwdSA8IG5y X2NwdV9pZHMgKQogICAgIHsKQEAgLTEyNjUsNyArMTI4NCw4IEBAIGludCB2Y3B1X3RlbXBvcmFy eV9hZmZpbml0eShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IGNwdSwgdWludDhfdCByZWFz b24pCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICggIXYtPmFmZmluaXR5X2Jyb2tlbiApCiAg ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY3B1bWFza19jb3B5KHYtPmNwdV9oYXJkX2Fm ZmluaXR5X3NhdmVkLCB2LT5jcHVfaGFyZF9hZmZpbml0eSk7CisgICAgICAgICAgICAgICAgY3B1 bWFza19jb3B5KHVuaXQtPmNwdV9oYXJkX2FmZmluaXR5X3NhdmVkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bml0LT5jcHVfaGFyZF9hZmZpbml0eSk7CiAgICAgICAgICAgICAgICAg c2NoZWRfc2V0X2FmZmluaXR5KHYsIGNwdW1hc2tfb2YoY3B1KSwgTlVMTCk7CiAgICAgICAgICAg ICB9CiAgICAgICAgICAgICB2LT5hZmZpbml0eV9icm9rZW4gfD0gcmVhc29uOwpAQCAtMTI3Mywx MSArMTI5MywxMSBAQCBpbnQgdmNwdV90ZW1wb3JhcnlfYWZmaW5pdHkoc3RydWN0IHZjcHUgKnYs IHVuc2lnbmVkIGludCBjcHUsIHVpbnQ4X3QgcmVhc29uKQogICAgICAgICB9CiAgICAgfQogCi0g ICAgbWlncmF0ZSA9ICFyZXQgJiYgIWNwdW1hc2tfdGVzdF9jcHUodi0+cHJvY2Vzc29yLCB2LT5j cHVfaGFyZF9hZmZpbml0eSk7CisgICAgbWlncmF0ZSA9ICFyZXQgJiYgIWNwdW1hc2tfdGVzdF9j cHUodi0+cHJvY2Vzc29yLCB1bml0LT5jcHVfaGFyZF9hZmZpbml0eSk7CiAgICAgaWYgKCBtaWdy YXRlICkKICAgICAgICAgdmNwdV9taWdyYXRlX3N0YXJ0KHYpOwogCi0gICAgdW5pdF9zY2hlZHVs ZV91bmxvY2tfaXJxKGxvY2ssIHYtPnNjaGVkX3VuaXQpOworICAgIHVuaXRfc2NoZWR1bGVfdW5s b2NrX2lycShsb2NrLCB1bml0KTsKIAogICAgIGlmICggbWlncmF0ZSApCiAgICAgICAgIHZjcHVf bWlncmF0ZV9maW5pc2godik7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vc2NoZWQtaWYu aCBiL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC1pZi5oCmluZGV4IGVkN2I3ZGEzYTMuLjY4NDRmZDdi YzcgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC1pZi5oCisrKyBiL3hlbi9pbmNs dWRlL3hlbi9zY2hlZC1pZi5oCkBAIC00MzgsMTEgKzQzOCwxMSBAQCBzdGF0aWMgaW5saW5lIGNw dW1hc2tfdCogY3B1cG9vbF9kb21haW5fY3B1bWFzayhzdHJ1Y3QgZG9tYWluICpkKQogICogKiBU aGUgaGFyZCBhZmZpbml0eSBpcyBub3QgYSBzdWJzZXQgb2Ygc29mdCBhZmZpbml0eQogICogKiBU aGVyZSBpcyBhbiBvdmVybGFwIGJldHdlZW4gdGhlIHNvZnQgYW5kIGhhcmQgYWZmaW5pdHkgbWFz a3MKICAqLwotc3RhdGljIGlubGluZSBpbnQgaGFzX3NvZnRfYWZmaW5pdHkoY29uc3Qgc3RydWN0 IHZjcHUgKnYpCitzdGF0aWMgaW5saW5lIGludCBoYXNfc29mdF9hZmZpbml0eShjb25zdCBzdHJ1 Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKIHsKLSAgICByZXR1cm4gdi0+c29mdF9hZmZfZWZmZWN0aXZl ICYmCi0gICAgICAgICAgICFjcHVtYXNrX3N1YnNldChjcHVwb29sX2RvbWFpbl9jcHVtYXNrKHYt PmRvbWFpbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB2LT5jcHVfc29mdF9hZmZpbml0 eSk7CisgICAgcmV0dXJuIHVuaXQtPnNvZnRfYWZmX2VmZmVjdGl2ZSAmJgorICAgICAgICAgICAh Y3B1bWFza19zdWJzZXQoY3B1cG9vbF9kb21haW5fY3B1bWFzayh1bml0LT5kb21haW4pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5pdC0+Y3B1X3NvZnRfYWZmaW5pdHkpOwogfQogCiAv KgpAQCAtNDUyLDE3ICs0NTIsMTggQEAgc3RhdGljIGlubGluZSBpbnQgaGFzX3NvZnRfYWZmaW5p dHkoY29uc3Qgc3RydWN0IHZjcHUgKnYpCiAgKiB0byBhdm9pZCBydW5uaW5nIGEgdmNwdSB3aGVy ZSBpdCB3b3VsZCBsaWtlLCBidXQgaXMgbm90IGFsbG93ZWQgdG8hCiAgKi8KIHN0YXRpYyBpbmxp bmUgdm9pZAotYWZmaW5pdHlfYmFsYW5jZV9jcHVtYXNrKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCBp bnQgc3RlcCwgY3B1bWFza190ICptYXNrKQorYWZmaW5pdHlfYmFsYW5jZV9jcHVtYXNrKGNvbnN0 IHN0cnVjdCBzY2hlZF91bml0ICp1bml0LCBpbnQgc3RlcCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICBjcHVtYXNrX3QgKm1hc2spCiB7CiAgICAgaWYgKCBzdGVwID09IEJBTEFOQ0VfU09GVF9B RkZJTklUWSApCiAgICAgewotICAgICAgICBjcHVtYXNrX2FuZChtYXNrLCB2LT5jcHVfc29mdF9h ZmZpbml0eSwgdi0+Y3B1X2hhcmRfYWZmaW5pdHkpOworICAgICAgICBjcHVtYXNrX2FuZChtYXNr LCB1bml0LT5jcHVfc29mdF9hZmZpbml0eSwgdW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHkpOwogCiAg ICAgICAgIGlmICggdW5saWtlbHkoY3B1bWFza19lbXB0eShtYXNrKSkgKQotICAgICAgICAgICAg Y3B1bWFza19jb3B5KG1hc2ssIHYtPmNwdV9oYXJkX2FmZmluaXR5KTsKKyAgICAgICAgICAgIGNw dW1hc2tfY29weShtYXNrLCB1bml0LT5jcHVfaGFyZF9hZmZpbml0eSk7CiAgICAgfQogICAgIGVs c2UgLyogc3RlcCA9PSBCQUxBTkNFX0hBUkRfQUZGSU5JVFkgKi8KLSAgICAgICAgY3B1bWFza19j b3B5KG1hc2ssIHYtPmNwdV9oYXJkX2FmZmluaXR5KTsKKyAgICAgICAgY3B1bWFza19jb3B5KG1h c2ssIHVuaXQtPmNwdV9oYXJkX2FmZmluaXR5KTsKIH0KIAogdm9pZCBzY2hlZF9ybV9jcHUodW5z aWduZWQgaW50IGNwdSk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaCBiL3hl bi9pbmNsdWRlL3hlbi9zY2hlZC5oCmluZGV4IDU3NWNlOWEyNDUuLmZhMmRiZjQ3ZWUgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9zY2hl ZC5oCkBAIC0yMTIsOSArMjEyLDYgQEAgc3RydWN0IHZjcHUKICAgICBib29sICAgICAgICAgICAg IGhjYWxsX2NvbXBhdDsKICNlbmRpZgogCi0gICAgLyogRG9lcyBzb2Z0IGFmZmluaXR5IGFjdHVh bGx5IHBsYXkgYSByb2xlIChnaXZlbiBoYXJkIGFmZmluaXR5KT8gKi8KLSAgICBib29sICAgICAg ICAgICAgIHNvZnRfYWZmX2VmZmVjdGl2ZTsKLQogICAgIC8qIFRoZSBDUFUsIGlmIGFueSwgd2hp Y2ggaXMgaG9sZGluZyBvbnRvIHRoaXMgVkNQVSdzIHN0YXRlLiAqLwogI2RlZmluZSBWQ1BVX0NQ VV9DTEVBTiAofjB1KQogICAgIHVuc2lnbmVkIGludCAgICAgZGlydHlfY3B1OwpAQCAtMjQ2LDE0 ICsyNDMsNiBAQCBzdHJ1Y3QgdmNwdQogICAgIGV2dGNobl9wb3J0X3QgICAgdmlycV90b19ldnRj aG5bTlJfVklSUVNdOwogICAgIHNwaW5sb2NrX3QgICAgICAgdmlycV9sb2NrOwogCi0gICAgLyog Qml0bWFzayBvZiBDUFVzIG9uIHdoaWNoIHRoaXMgVkNQVSBtYXkgcnVuLiAqLwotICAgIGNwdW1h c2tfdmFyX3QgICAgY3B1X2hhcmRfYWZmaW5pdHk7Ci0gICAgLyogVXNlZCB0byBzYXZlIGFmZmlu aXR5IGR1cmluZyB0ZW1wb3JhcnkgcGlubmluZy4gKi8KLSAgICBjcHVtYXNrX3Zhcl90ICAgIGNw dV9oYXJkX2FmZmluaXR5X3NhdmVkOwotCi0gICAgLyogQml0bWFzayBvZiBDUFVzIG9uIHdoaWNo IHRoaXMgVkNQVSBwcmVmZXJzIHRvIHJ1bi4gKi8KLSAgICBjcHVtYXNrX3Zhcl90ICAgIGNwdV9z b2Z0X2FmZmluaXR5OwotCiAgICAgLyogVGFza2xldCBmb3IgY29udGludWVfaHlwZXJjYWxsX29u X2NwdSgpLiAqLwogICAgIHN0cnVjdCB0YXNrbGV0ICAgY29udGludWVfaHlwZXJjYWxsX3Rhc2ts ZXQ7CiAKQEAgLTI4Miw2ICsyNzEsMTUgQEAgc3RydWN0IHNjaGVkX3VuaXQgewogICAgIHN0cnVj dCBzY2hlZF91bml0ICAgICAqbmV4dF9pbl9saXN0OwogICAgIHN0cnVjdCBzY2hlZF9yZXNvdXJj ZSAqcmVzOwogICAgIGludCAgICAgICAgICAgICAgICAgICAgdW5pdF9pZDsKKworICAgIC8qIERv ZXMgc29mdCBhZmZpbml0eSBhY3R1YWxseSBwbGF5IGEgcm9sZSAoZ2l2ZW4gaGFyZCBhZmZpbml0 eSk/ICovCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICBzb2Z0X2FmZl9lZmZlY3RpdmU7Cisg ICAgLyogQml0bWFzayBvZiBDUFVzIG9uIHdoaWNoIHRoaXMgVkNQVSBtYXkgcnVuLiAqLworICAg IGNwdW1hc2tfdmFyX3QgICAgICAgICAgY3B1X2hhcmRfYWZmaW5pdHk7CisgICAgLyogVXNlZCB0 byBzYXZlIGFmZmluaXR5IGR1cmluZyB0ZW1wb3JhcnkgcGlubmluZy4gKi8KKyAgICBjcHVtYXNr X3Zhcl90ICAgICAgICAgIGNwdV9oYXJkX2FmZmluaXR5X3NhdmVkOworICAgIC8qIEJpdG1hc2sg b2YgQ1BVcyBvbiB3aGljaCB0aGlzIFZDUFUgcHJlZmVycyB0byBydW4uICovCisgICAgY3B1bWFz a192YXJfdCAgICAgICAgICBjcHVfc29mdF9hZmZpbml0eTsKIH07CiAKICNkZWZpbmUgZm9yX2Vh Y2hfc2NoZWRfdW5pdChkLCBlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXApAQCAtOTgzLDcgKzk4MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc19odm1fdmNwdShj b25zdCBzdHJ1Y3QgdmNwdSAqdikKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc19od2RvbV9waW5uZWRf dmNwdShjb25zdCBzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICByZXR1cm4gKGlzX2hhcmR3YXJlX2Rv bWFpbih2LT5kb21haW4pICYmCi0gICAgICAgICAgICBjcHVtYXNrX3dlaWdodCh2LT5jcHVfaGFy ZF9hZmZpbml0eSkgPT0gMSk7CisgICAgICAgICAgICBjcHVtYXNrX3dlaWdodCh2LT5zY2hlZF91 bml0LT5jcHVfaGFyZF9hZmZpbml0eSkgPT0gMSk7CiB9CiAKICNpZmRlZiBDT05GSUdfSEFTX1BB U1NUSFJPVUdICi0tIAoyLjE2LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5w cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v eGVuLWRldmVs