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=-6.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS 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 A6E57C4646D for ; Tue, 11 Jun 2019 18:46:59 +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 73BA8217F5 for ; Tue, 11 Jun 2019 18:46:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=epam.com header.i=@epam.com header.b="EAewq4TU" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 73BA8217F5 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=epam.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 1halnC-0006Nn-0O; Tue, 11 Jun 2019 18:46:46 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1halnA-0006Mk-7n for xen-devel@lists.xenproject.org; Tue, 11 Jun 2019 18:46:44 +0000 X-Inumbo-ID: 408180dc-8c79-11e9-8980-bc764e045a96 Received: from EUR02-AM5-obe.outbound.protection.outlook.com (unknown [40.107.0.81]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id 408180dc-8c79-11e9-8980-bc764e045a96; Tue, 11 Jun 2019 18:46:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fEZuqA8MZOZ0wWJoMCeIRGWEa+J8IkWO6rc22A9m14A=; b=EAewq4TUoAanJcmWwVhAhJtLK+8Bl1/xD2x/z/kVNdvzTSEIWCQm/YFmPMBCtT9l98WsmnaXsH+V8jdJdb2su6nNpgNQ2hgWo/QJCzlSpyZbZ4+ItUlxDTeyaDD2eZK3qtG0sE+YYn4Mhea3uitmhpwciEGFbT8UxV2pntlPA70rxrI/XqXxGsuQhI131YuYWUKsya6MBFzTvFhAl8ZekMvjEfokzNJW74mNJqipJdhl304mf87fEffIPc8EgjfQVhiJivhUsjMC1HDVj4QpD1PVQSQDfXJsi0mSohiwNMdW+1GH6sbfDb5jbP0wNwRnWWu0gZYsopHXt536MVT9tg== Received: from AM0PR03MB4148.eurprd03.prod.outlook.com (20.176.214.210) by AM0PR03MB4020.eurprd03.prod.outlook.com (52.135.147.30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.17; Tue, 11 Jun 2019 18:46:39 +0000 Received: from AM0PR03MB4148.eurprd03.prod.outlook.com ([fe80::d09e:ef3:88b6:b1eb]) by AM0PR03MB4148.eurprd03.prod.outlook.com ([fe80::d09e:ef3:88b6:b1eb%7]) with mapi id 15.20.1965.011; Tue, 11 Jun 2019 18:46:39 +0000 From: Volodymyr Babchuk To: "xen-devel@lists.xenproject.org" Thread-Topic: [PATCH v6 07/10] xen/arm: optee: add support for arbitrary shared memory Thread-Index: AQHVIIYBekQ78Dqrkkug4Cdpa/+fMg== Date: Tue, 11 Jun 2019 18:46:39 +0000 Message-ID: <20190611184541.7281-8-volodymyr_babchuk@epam.com> References: <20190611184541.7281-1-volodymyr_babchuk@epam.com> In-Reply-To: <20190611184541.7281-1-volodymyr_babchuk@epam.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Volodymyr_Babchuk@epam.com; x-originating-ip: [85.223.209.22] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c08416cc-18c7-4bd5-9113-08d6ee9d23bf x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:AM0PR03MB4020; x-ms-traffictypediagnostic: AM0PR03MB4020: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-forefront-prvs: 006546F32A x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(376002)(346002)(396003)(366004)(136003)(199004)(189003)(2351001)(14444005)(54906003)(86362001)(1076003)(256004)(316002)(71200400001)(11346002)(6916009)(2616005)(476003)(71190400001)(486006)(446003)(30864003)(2501003)(5660300002)(6116002)(80792005)(7736002)(305945005)(99286004)(3846002)(26005)(53936002)(66946007)(4326008)(6436002)(6506007)(76116006)(76176011)(68736007)(8936002)(36756003)(73956011)(72206003)(25786009)(102836004)(186003)(6486002)(6512007)(55236004)(91956017)(8676002)(64756008)(66556008)(66476007)(66066001)(2906002)(14454004)(81156014)(81166006)(53946003)(478600001)(66446008)(5640700003); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR03MB4020; H:AM0PR03MB4148.eurprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: epam.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: SbAvG9Jd5/ZCQiSOfTFKc9azz8VkcOMVQY+4H3Edcd77Fq659L0TM+cT0Tzz42zlEE+iwes2bFkpPaX7NFb1czBfgCnXGStuo4vYVl9pz67/k/SZ8Rp5auY+XqS+2Fx+jAzdH9cFyrb9MpC0ywYAvtqAqt/E6ZEZlzDBSvkhra9BJUoJni+wIHoj5rRH595WWwlk3sNMejTPQ02QCRMGEROZK03ApD3FUa5isNZmZ9QczOle8zf3HmV21GvaEF0Vqz+GcMwfAZuPgxqQkT3khd/N9g2B5cYnRK9IB9ytazblAYoD0oAYHQ78Ma/prn6PBglPfiVVPCsYvzuyMr6+gpwPhlJvu9ryflOMTYho+6Z23r+icHfPC2acZ5pekX3h7xEwp5DpQu+v/0EaVTOlrpdsLJVXNoOWUWkPf/u+l54= MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-Network-Message-Id: c08416cc-18c7-4bd5-9113-08d6ee9d23bf X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jun 2019 18:46:39.5357 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Volodymyr_Babchuk@epam.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB4020 Subject: [Xen-devel] [PATCH v6 07/10] xen/arm: optee: add support for arbitrary shared memory 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: "tee-dev@lists.linaro.org" , Julien Grall , Stefano Stabellini , Volodymyr Babchuk Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" U2hhcmVkIG1lbW9yeSBpcyB3aWRlbHkgdXNlZCBieSBOVyAoTm9ybWFsIFdvcmxkKSB0byBjb21t dW5pY2F0ZSB3aXRoClRBcyAoVHJ1c3RlZCBBcHBsaWNhdGlvbnMpIGluIE9QLVRFRS4gTlcgY2Fu IHNoYXJlIHBhcnQgb2Ygb3duIG1lbW9yeQp3aXRoIFRBIG9yIHdpdGggT1AtVEVFIGNvcmUsIGJ5 IHJlZ2lzdGVyaW5nIGl0IGluIE9QLVRFRSwgb3IgYnkKcHJvdmlkaW5nIGEgdGVtcG9yYWwgcmVm ZXJlbmNlLiBBbnl3YXlzLCBpbmZvcm1hdGlvbiBhYm91dCBzdWNoIG1lbW9yeQpidWZmZXJzIGFy ZSBzZW50IHRvIE9QLVRFRSBhcyBhIGxpc3Qgb2YgcGFnZXMuIFRoaXMgbWVjaGFuaXNtIGlzCmRl c2NyaWJlZCBpbiBvcHRlZV9tc2cuaC4KCk1lZGlhdG9yIHNob3VsZCBzdGVwIGluIHdoZW4gTlcg dHJpZXMgdG8gc2hhcmUgbWVtb3J5IHdpdGgKT1AtVEVFIGZvciB0d28gcmVhc29uczoKCjEuIERv IGFkZHJlc3MgdHJhbnNsYXRpb24gZnJvbSBJUEEgdG8gUEEuCjIuIFBpbiBkb21haW4gcGFnZXMg d2hpbGUgdGhleSBhcmUgbWFwcGVkIGludG8gT1AtVEVFIG9yIFRBCiAgIGFkZHJlc3Mgc3BhY2Us IHNvIGRvbWFpbiBjYW4ndCB0cmFuc2ZlciB0aGlzIHBhZ2VzIHRvCiAgIG90aGVyIGRvbWFpbiBv ciBiYWxsb29uIG91dCB0aGVtLgoKQWRkcmVzcyB0cmFuc2xhdGlvbiBpcyBkb25lIGJ5IHRyYW5z bGF0ZV9ub25jb250aWcoLi4uKSBmdW5jdGlvbi4KSXQgYWxsb2NhdGVzIG5ldyBidWZmZXIgZnJv bSBkb21oZWFwIGFuZCB0aGVuIHdhbGtzIG9uIGd1ZXN0CnByb3ZpZGVkIGxpc3Qgb2YgcGFnZXMs IHRyYW5zbGF0ZXMgYWRkcmVzc2VzIGFuZCBzdG9yZXMgUEFzIGludG8KbmV3bHkgYWxsb2NhdGVk IGJ1ZmZlci4gVGhpcyBidWZmZXIgd2lsbCBiZSBwcm92aWRlZCB0byBPUC1URUUKaW5zdGVhZCBv ZiBvcmlnaW5hbCBidWZmZXIgZnJvbSB0aGUgZ3Vlc3QuIFRoaXMgYnVmZmVyIHdpbGwKYmUgZnJl ZWQgYXQgdGhlIGVuZCBvZiBzdGFuZGFyZCBjYWxsLgoKSW4gdGhlIHNhbWUgdGltZSB0aGlzIGZ1 bmN0aW9uIHBpbnMgcGFnZXMgYW5kIHN0b3JlcyB0aGVtIGluCnN0cnVjdCBvcHRlZV9zaG1fYnVm IG9iamVjdC4gVGhpcyBvYmplY3Qgd2lsbCBsaXZlIGFsbCB0aGUgdGltZSwKd2hlbiBnaXZlbiBT SE0gYnVmZmVyIGlzIGtub3duIHRvIE9QLVRFRS4gSXQgd2lsbCBiZSBmcmVlZAphZnRlciBndWVz dCB1bnJlZ2lzdGVycyBzaGFyZWQgYnVmZmVyLiBBdCB0aGlzIHRpbWUgcGFnZXMKd2lsbCBiZSB1 bnBpbm5lZC4KCkd1ZXN0IGNhbiBzaGFyZSBidWZmZXIgd2l0aCBPUC1URUUgZm9yIGR1cmF0aW9u IGZvciBvbmUgY2FsbCwKb3IgcGVybWFuZW50bHksIHVzaW5nIE9QVEVFX01TR19DTURfUkVHSVNU RVJfU0hNIGNhbGwuIFdlIG5lZWQKdG8gaGFuZGxlIGJvdGggb3B0aW9ucy4KCkFsc28gd2Ugd2Fu dCB0byBsaW1pdCB0b3RhbCBzaXplIG9mIHNoYXJlZCBidWZmZXJzLiBBcyBpdCBpcyBub3QKcG9z c2libGUgdG8gZ2V0IGxpbWl0IGZyb20gT1AtVEVFLCB3ZSBuZWVkIHRvIGNob29zZSBzb21lIGFy Yml0cmFyeQp2YWx1ZS4gQ3VycmVudGx5IGxpbWl0IGlzIDE2Mzg0IG9mIDRLIHBhZ2VzLgoKU2ln bmVkLW9mZi1ieTogVm9sb2R5bXlyIEJhYmNodWsgPHZvbG9keW15cl9iYWJjaHVrQGVwYW0uY29t PgpBY2tlZC1ieTogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KCi0tLQogQWxs IHRoZSBwYXRjaGVzIHRvIG9wdGVlLmMgc2hvdWxkIGJlIG1lcmdlZCB0b2dldGhlci4gVGhleSB3 ZXJlCiBzcGxpdCB0byBlYXNlIHVwIHJldmlldy4gQnV0IHRoZXkgZGVwZW5kIGhlYXZpbHkgb24g ZWFjaCBvdGhlci4KCiBDaGFuZ2VzIGZyb20gdjU6CiAtIEFkZGVkIEJVSUxEX0JVR19PTihQQUdF X1NJWkUgIT0gNDA5NikKIC0gVXBkYXRlZCAiVE9ETyIgY29tbWVudCBhYm91dCAxNjM4NCBjYWxs cyB0bwogICBsb29rdXBfYW5kX3Bpbl9ndWVzdF9yYW1fYWRkcigpCgogQ2hhbmdlcyBmcm9tIHYz OgogLSBSZXdvcmtlZCBwYWdlbGlzdHMgc3RvcmFnZSAtIHRoZXJlIGlzIG5vIG1vcmUgc3RhdGlj IHN0b3JhZ2UgZm9yCiAgIDUgYnVmZmVycywgaW5zdGVhZCBzdHJ1Y3R1cmUgd2l0aCBhbGwgZGF0 YSBpcyBhbGxvY2F0ZWQgZHluYW1pY2FsbHkKIC0gTm93IHRoaXMgY29kZSB1c2VzIGRvbWhlYXAg aW5zdGVhZCBvZiB4ZW5oZWFwCiAtIFZhcmlvdXMgc3R5bGUgZml4ZXMKIC0gZ2RwcmludGsoKSBm aXhlcwoKIENoYW5nZXMgZnJvbSB2MjoKIC0gTWFkZSBzdXJlIHRoYXQgZ3Vlc3QgZG9lcyBub3Qg dHJpZXMgdG8gcmVnaXN0ZXIgc2hhcmVkIGJ1ZmZlciB3aXRoCiAgIHRoZSBzYW1lIGNvb2tpZSB0 d2ljZQogLSBGaXhlZCBjb2Rpbmcgc3R5bGUKIC0gVXNlIGFjY2Vzc19ndWVzdF9tZW1vcnlfYnlf aXBhKCkgaW5zdGVhZCBvZiBkaXJlY3QgbWVtb3J5IG1hcHBpbmcKLS0tCiB4ZW4vYXJjaC9hcm0v dGVlL29wdGVlLmMgfCA0MTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiAxIGZpbGUgY2hhbmdlZCwgNDE2IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS94ZW4vYXJj aC9hcm0vdGVlL29wdGVlLmMgYi94ZW4vYXJjaC9hcm0vdGVlL29wdGVlLmMKaW5kZXggMTc1Nzg5 ZmIwMC4uZDQ4ODhhY2Q4ZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL3RlZS9vcHRlZS5jCisr KyBiL3hlbi9hcmNoL2FybS90ZWUvb3B0ZWUuYwpAQCAtNTMsOSArNTMsMjEgQEAKICAqLwogI2Rl ZmluZSBURUVDX0VSUk9SX0JBRF9QQVJBTUVURVJTIDB4RkZGRjAwMDYKIAorLyogIlN5c3RlbSBy YW4gb3V0IG9mIHJlc291cmNlcyIgYXMgaW4gR1AgVEVFIENsaWVudCBBUEkgU3BlY2lmaWNhdGlv biAqLworI2RlZmluZSBURUVDX0VSUk9SX09VVF9PRl9NRU1PUlkgMHhGRkZGMDAwQworCiAvKiBD bGllbnQgSUQgMCBpcyByZXNlcnZlZCBmb3IgdGhlIGh5cGVydmlzb3IgaXRzZWxmICovCiAjZGVm aW5lIE9QVEVFX0NMSUVOVF9JRChkb21haW4pICgoZG9tYWluKS0+ZG9tYWluX2lkICsgMSkKIAor LyoKKyAqIE1heGltdW0gdG90YWwgbnVtYmVyIG9mIHBhZ2VzIHRoYXQgZ3Vlc3QgY2FuIHNoYXJl IHdpdGgKKyAqIE9QLVRFRS4gQ3VycmVudGx5IHZhbHVlIGlzIHNlbGVjdGVkIGFyYml0cmFyeS4g QWN0dWFsIG51bWJlciBvZgorICogcGFnZXMgZGVwZW5kcyBvbiBmcmVlIGhlYXAgaW4gT1AtVEVF LiBBcyB3ZSBjYW4ndCBkbyBhbnkKKyAqIGFzc3VtcHRpb25zIGFib3V0IE9QLVRFRSBoZWFwIHVz YWdlLCB3ZSBsaW1pdCBudW1iZXIgb2YgcGFnZXMKKyAqIGFyYml0cmFyeS4KKyAqLworI2RlZmlu ZSBNQVhfVE9UQUxfU01IX0JVRl9QRyAgICAxNjM4NAorCiAjZGVmaW5lIE9QVEVFX0tOT1dOX05T RUNfQ0FQUyBPUFRFRV9TTUNfTlNFQ19DQVBfVU5JUFJPQ0VTU09SCiAjZGVmaW5lIE9QVEVFX0tO T1dOX1NFQ19DQVBTIChPUFRFRV9TTUNfU0VDX0NBUF9IQVZFX1JFU0VSVkVEX1NITSB8IFwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QVEVFX1NNQ19TRUNfQ0FQX1VOUkVHSVNURVJF RF9TSE0gfCBcCkBAIC04OCwxMSArMTAwLDMxIEBAIHN0cnVjdCBzaG1fcnBjIHsKICAgICB1aW50 NjRfdCBjb29raWU7CiB9OwogCisvKiBTaGFyZWQgbWVtb3J5IGJ1ZmZlciBmb3IgYXJiaXRyYXJ5 IGRhdGEgKi8KK3N0cnVjdCBvcHRlZV9zaG1fYnVmIHsKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxp c3Q7CisgICAgdWludDY0X3QgY29va2llOworICAgIHVuc2lnbmVkIGludCBwYWdlX2NudDsKKyAg ICAvKgorICAgICAqIFNoYWRvd2VkIGNvbnRhaW5lciBmb3IgbGlzdCBvZiBwYWdlcyB0aGF0IGd1 ZXN0IHRyaWVzIHRvIHNoYXJlCisgICAgICogd2l0aCBPUC1URUUuIFRoaXMgaXMgbm90IHRoZSBs aXN0IG9mIHBhZ2VzIHRoYXQgZ3Vlc3Qgc2hhcmVkCisgICAgICogd2l0aCBPUC1URUUsIGJ1dCBj b250YWluZXIgZm9yIGxpc3Qgb2YgdGhvc2UgcGFnZXMuIENoZWNrCisgICAgICogT1BURUVfTVNH X0FUVFJfTk9OQ09OVElHIGRlZmluaXRpb24gaW4gb3B0ZWVfbXNnLmggZm9yIG1vcmUKKyAgICAg KiBpbmZvcm1hdGlvbi4KKyAgICAgKi8KKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZ19saXN0Owor ICAgIHVuc2lnbmVkIGludCBwZ19saXN0X29yZGVyOworICAgIC8qIFBpbm5lZCBndWVzdCBwYWdl cyB0aGF0IGFyZSBzaGFyZWQgd2l0aCBPUC1URUUgKi8KKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpw YWdlc1tdOworfTsKKwogLyogRG9tYWluIGNvbnRleHQgKi8KIHN0cnVjdCBvcHRlZV9kb21haW4g ewogICAgIHN0cnVjdCBsaXN0X2hlYWQgY2FsbF9saXN0OwogICAgIHN0cnVjdCBsaXN0X2hlYWQg c2htX3JwY19saXN0OworICAgIHN0cnVjdCBsaXN0X2hlYWQgb3B0ZWVfc2htX2J1Zl9saXN0Owog ICAgIGF0b21pY190IGNhbGxfY291bnQ7CisgICAgYXRvbWljX3Qgb3B0ZWVfc2htX2J1Zl9wYWdl czsKICAgICBzcGlubG9ja190IGxvY2s7CiB9OwogCkBAIC0xNjcsNyArMTk5LDkgQEAgc3RhdGlj IGludCBvcHRlZV9kb21haW5faW5pdChzdHJ1Y3QgZG9tYWluICpkKQogCiAgICAgSU5JVF9MSVNU X0hFQUQoJmN0eC0+Y2FsbF9saXN0KTsKICAgICBJTklUX0xJU1RfSEVBRCgmY3R4LT5zaG1fcnBj X2xpc3QpOworICAgIElOSVRfTElTVF9IRUFEKCZjdHgtPm9wdGVlX3NobV9idWZfbGlzdCk7CiAg ICAgYXRvbWljX3NldCgmY3R4LT5jYWxsX2NvdW50LCAwKTsKKyAgICBhdG9taWNfc2V0KCZjdHgt Pm9wdGVlX3NobV9idWZfcGFnZXMsIDApOwogICAgIHNwaW5fbG9ja19pbml0KCZjdHgtPmxvY2sp OwogCiAgICAgZC0+YXJjaC50ZWUgPSBjdHg7CkBAIC0zNzYsMTEgKzQxMCwxNDIgQEAgc3RhdGlj IHZvaWQgZnJlZV9zaG1fcnBjKHN0cnVjdCBvcHRlZV9kb21haW4gKmN0eCwgdWludDY0X3QgY29v a2llKQogICAgIHhmcmVlKHNobV9ycGMpOwogfQogCitzdGF0aWMgc3RydWN0IG9wdGVlX3NobV9i dWYgKmFsbG9jYXRlX29wdGVlX3NobV9idWYoc3RydWN0IG9wdGVlX2RvbWFpbiAqY3R4LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90 IGNvb2tpZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgcGFnZXNfY250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBnX2xpc3QsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IHBnX2xpc3Rfb3JkZXIpCit7CisgICAgc3RydWN0IG9wdGVlX3NobV9idWYgKm9wdGVlX3No bV9idWYsICpvcHRlZV9zaG1fYnVmX3RtcDsKKyAgICBpbnQgb2xkLCBuZXc7CisgICAgaW50IGVy cl9jb2RlOworCisgICAgZG8KKyAgICB7CisgICAgICAgIG9sZCA9IGF0b21pY19yZWFkKCZjdHgt Pm9wdGVlX3NobV9idWZfcGFnZXMpOworICAgICAgICBuZXcgPSBvbGQgKyBwYWdlc19jbnQ7Cisg ICAgICAgIGlmICggbmV3ID49IE1BWF9UT1RBTF9TTUhfQlVGX1BHICkKKyAgICAgICAgICAgIHJl dHVybiBFUlJfUFRSKC1FTk9NRU0pOworICAgIH0KKyAgICB3aGlsZSAoIHVubGlrZWx5KG9sZCAh PSBhdG9taWNfY21weGNoZygmY3R4LT5vcHRlZV9zaG1fYnVmX3BhZ2VzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZCwgbmV3KSkgKTsKKworICAgIC8qCisg ICAgICogVE9ETzogR3Vlc3QgY2FuIHRyeSB0byByZWdpc3RlciBtYW55IHNtYWxsIGJ1ZmZlcnMs IHRodXMsIGZvcmNpbmcKKyAgICAgKiBYRU4gdG8gYWxsb2NhdGUgY29udGV4dCBmb3IgZXZlcnkg YnVmZmVyLiBQcm9iYWJseSB3ZSBuZWVkIHRvCisgICAgICogbGltaXQgbm90IG9ubHkgdG90YWwg bnVtYmVyIG9mIHBhZ2VzIHBpbm5lZCBidXQgYWxzbyBudW1iZXIKKyAgICAgKiBvZiBidWZmZXIg b2JqZWN0cy4KKyAgICAgKi8KKyAgICBvcHRlZV9zaG1fYnVmID0geHphbGxvY19ieXRlcyhzaXpl b2Yoc3RydWN0IG9wdGVlX3NobV9idWYpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwYWdlc19jbnQgKiBzaXplb2Yoc3RydWN0IHBhZ2UgKikpOworICAgIGlmICggIW9wdGVl X3NobV9idWYgKQorICAgIHsKKyAgICAgICAgZXJyX2NvZGUgPSAtRU5PTUVNOworICAgICAgICBn b3RvIGVycjsKKyAgICB9CisKKyAgICBvcHRlZV9zaG1fYnVmLT5jb29raWUgPSBjb29raWU7Cisg ICAgb3B0ZWVfc2htX2J1Zi0+cGdfbGlzdCA9IHBnX2xpc3Q7CisgICAgb3B0ZWVfc2htX2J1Zi0+ cGdfbGlzdF9vcmRlciA9IHBnX2xpc3Rfb3JkZXI7CisKKyAgICBzcGluX2xvY2soJmN0eC0+bG9j ayk7CisgICAgLyogQ2hlY2sgaWYgdGhlcmUgaXMgYWxyZWFkeSBTSE0gd2l0aCB0aGUgc2FtZSBj b29raWUgKi8KKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KCBvcHRlZV9zaG1fYnVmX3RtcCwgJmN0 eC0+b3B0ZWVfc2htX2J1Zl9saXN0LCBsaXN0ICkKKyAgICB7CisgICAgICAgIGlmICggb3B0ZWVf c2htX2J1Zl90bXAtPmNvb2tpZSA9PSBjb29raWUgKQorICAgICAgICB7CisgICAgICAgICAgICBz cGluX3VubG9jaygmY3R4LT5sb2NrKTsKKyAgICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJO SU5HLCAiR3Vlc3QgdHJpZXMgdG8gdXNlIHRoZSBzYW1lIFNITSBidWZmZXIgY29va2llICVseFxu IiwKKyAgICAgICAgICAgICAgICAgICAgIGNvb2tpZSk7CisgICAgICAgICAgICBlcnJfY29kZSA9 IC1FSU5WQUw7CisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgfQorICAgIH0KKworICAg IGxpc3RfYWRkX3RhaWwoJm9wdGVlX3NobV9idWYtPmxpc3QsICZjdHgtPm9wdGVlX3NobV9idWZf bGlzdCk7CisgICAgc3Bpbl91bmxvY2soJmN0eC0+bG9jayk7CisKKyAgICByZXR1cm4gb3B0ZWVf c2htX2J1ZjsKKworZXJyOgorICAgIHhmcmVlKG9wdGVlX3NobV9idWYpOworICAgIGF0b21pY19z dWIocGFnZXNfY250LCAmY3R4LT5vcHRlZV9zaG1fYnVmX3BhZ2VzKTsKKworICAgIHJldHVybiBF UlJfUFRSKGVycl9jb2RlKTsKK30KKworc3RhdGljIHZvaWQgZnJlZV9wZ19saXN0KHN0cnVjdCBv cHRlZV9zaG1fYnVmICpvcHRlZV9zaG1fYnVmKQoreworICAgIGlmICggb3B0ZWVfc2htX2J1Zi0+ cGdfbGlzdCApCisgICAgeworICAgICAgICBmcmVlX2RvbWhlYXBfcGFnZXMob3B0ZWVfc2htX2J1 Zi0+cGdfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGVlX3NobV9idWYtPnBn X2xpc3Rfb3JkZXIpOworICAgICAgICBvcHRlZV9zaG1fYnVmLT5wZ19saXN0ID0gTlVMTDsKKyAg ICB9Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVfb3B0ZWVfc2htX2J1ZihzdHJ1Y3Qgb3B0ZWVfZG9t YWluICpjdHgsIHVpbnQ2NF90IGNvb2tpZSkKK3sKKyAgICBzdHJ1Y3Qgb3B0ZWVfc2htX2J1ZiAq b3B0ZWVfc2htX2J1ZjsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBib29sIGZvdW5kID0gZmFs c2U7CisKKyAgICBzcGluX2xvY2soJmN0eC0+bG9jayk7CisgICAgbGlzdF9mb3JfZWFjaF9lbnRy eSggb3B0ZWVfc2htX2J1ZiwgJmN0eC0+b3B0ZWVfc2htX2J1Zl9saXN0LCBsaXN0ICkKKyAgICB7 CisgICAgICAgIGlmICggb3B0ZWVfc2htX2J1Zi0+Y29va2llID09IGNvb2tpZSApCisgICAgICAg IHsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGxpc3RfZGVsKCZvcHRl ZV9zaG1fYnVmLT5saXN0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor ICAgIHNwaW5fdW5sb2NrKCZjdHgtPmxvY2spOworCisgICAgaWYgKCAhZm91bmQgKQorICAgICAg ICByZXR1cm47CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IG9wdGVlX3NobV9idWYtPnBhZ2VfY250 OyBpKysgKQorICAgICAgICBpZiAoIG9wdGVlX3NobV9idWYtPnBhZ2VzW2ldICkKKyAgICAgICAg ICAgIHB1dF9wYWdlKG9wdGVlX3NobV9idWYtPnBhZ2VzW2ldKTsKKworICAgIGZyZWVfcGdfbGlz dChvcHRlZV9zaG1fYnVmKTsKKworICAgIGF0b21pY19zdWIob3B0ZWVfc2htX2J1Zi0+cGFnZV9j bnQsICZjdHgtPm9wdGVlX3NobV9idWZfcGFnZXMpOworCisgICAgeGZyZWUob3B0ZWVfc2htX2J1 Zik7Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVfb3B0ZWVfc2htX2J1Zl9wZ19saXN0KHN0cnVjdCBv cHRlZV9kb21haW4gKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQ2NF90IGNvb2tpZSkKK3sKKyAgICBzdHJ1Y3Qgb3B0ZWVfc2htX2J1ZiAqb3B0ZWVfc2ht X2J1ZjsKKyAgICBib29sIGZvdW5kID0gZmFsc2U7CisKKyAgICBzcGluX2xvY2soJmN0eC0+bG9j ayk7CisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSggb3B0ZWVfc2htX2J1ZiwgJmN0eC0+b3B0ZWVf c2htX2J1Zl9saXN0LCBsaXN0ICkKKyAgICB7CisgICAgICAgIGlmICggb3B0ZWVfc2htX2J1Zi0+ Y29va2llID09IGNvb2tpZSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHNwaW5fdW5sb2NrKCZj dHgtPmxvY2spOworCisgICAgaWYgKCBmb3VuZCApCisgICAgICAgIGZyZWVfcGdfbGlzdChvcHRl ZV9zaG1fYnVmKTsKKyAgICBlbHNlCisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19FUlIsICJDYW4n dCBmaW5kIHBhZ2VsaXN0IGZvciBTSE0gYnVmZmVyIHdpdGggY29va2llICVseCB0byBmcmVlIGl0 XG4iLAorICAgICAgICAgICAgICAgICBjb29raWUpOworfQorCiBzdGF0aWMgaW50IG9wdGVlX3Jl bGlucXVpc2hfcmVzb3VyY2VzKHN0cnVjdCBkb21haW4gKmQpCiB7CiAgICAgc3RydWN0IGFybV9z bWNjY19yZXMgcmVzcDsKICAgICBzdHJ1Y3Qgb3B0ZWVfc3RkX2NhbGwgKmNhbGwsICpjYWxsX3Rt cDsKICAgICBzdHJ1Y3Qgc2htX3JwYyAqc2htX3JwYywgKnNobV9ycGNfdG1wOworICAgIHN0cnVj dCBvcHRlZV9zaG1fYnVmICpvcHRlZV9zaG1fYnVmLCAqb3B0ZWVfc2htX2J1Zl90bXA7CiAgICAg c3RydWN0IG9wdGVlX2RvbWFpbiAqY3R4ID0gZC0+YXJjaC50ZWU7CiAKICAgICBpZiAoICFjdHgg KQpAQCAtNDA3LDYgKzU3MiwxNyBAQCBzdGF0aWMgaW50IG9wdGVlX3JlbGlucXVpc2hfcmVzb3Vy Y2VzKHN0cnVjdCBkb21haW4gKmQpCiAgICAgaWYgKCBoeXBlcmNhbGxfcHJlZW1wdF9jaGVjaygp ICkKICAgICAgICAgcmV0dXJuIC1FUkVTVEFSVDsKIAorICAgIC8qCisgICAgICogVE9ETzogR3Vl c3QgY2FuIHBpbiB1cCB0byBNQVhfVE9UQUxfU01IX0JVRl9QRyBwYWdlcyBhbmQgYWxsIG9mCisg ICAgICogdGhlbSB3aWxsIGJlIHB1dCBpbiB0aGlzIGxvb3AuIEl0IGlzIHdvcnRoIGNvbnNpZGVy aW5nIHRvCisgICAgICogY2hlY2sgZm9yIHByZWVtcHRpb24gaW5zaWRlIHRoZSBsb29wLgorICAg ICAqLworICAgIGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSggb3B0ZWVfc2htX2J1Ziwgb3B0ZWVf c2htX2J1Zl90bXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3R4LT5vcHRlZV9z aG1fYnVmX2xpc3QsIGxpc3QgKQorICAgICAgICBmcmVlX29wdGVlX3NobV9idWYoY3R4LCBvcHRl ZV9zaG1fYnVmLT5jb29raWUpOworCisgICAgaWYgKCBoeXBlcmNhbGxfcHJlZW1wdF9jaGVjaygp ICkKKyAgICAgICAgcmV0dXJuIC1FUkVTVEFSVDsKICAgICAvKgogICAgICAqIEluZm9ybSBPUC1U RUUgdGhhdCBkb21haW4gaXMgc2h1dHRpbmcgZG93bi4gVGhpcyBpcwogICAgICAqIGFsc28gYSBm YXN0IFNNQyBjYWxsLCBsaWtlIE9QVEVFX1NNQ19WTV9DUkVBVEVELCBzbwpAQCAtNDIxLDYgKzU5 Nyw3IEBAIHN0YXRpYyBpbnQgb3B0ZWVfcmVsaW5xdWlzaF9yZXNvdXJjZXMoc3RydWN0IGRvbWFp biAqZCkKIAogICAgIEFTU0VSVCghc3Bpbl9pc19sb2NrZWQoJmN0eC0+bG9jaykpOwogICAgIEFT U0VSVCghYXRvbWljX3JlYWQoJmN0eC0+Y2FsbF9jb3VudCkpOworICAgIEFTU0VSVCghYXRvbWlj X3JlYWQoJmN0eC0+b3B0ZWVfc2htX2J1Zl9wYWdlcykpOwogICAgIEFTU0VSVChsaXN0X2VtcHR5 KCZjdHgtPnNobV9ycGNfbGlzdCkpOwogCiAgICAgWEZSRUUoZC0+YXJjaC50ZWUpOwpAQCAtNDI4 LDYgKzYwNSwxODkgQEAgc3RhdGljIGludCBvcHRlZV9yZWxpbnF1aXNoX3Jlc291cmNlcyhzdHJ1 Y3QgZG9tYWluICpkKQogICAgIHJldHVybiAwOwogfQogCisjZGVmaW5lIFBBR0VMSVNUX0VOVFJJ RVNfUEVSX1BBR0UgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKE9QVEVFX01TR19OT05D T05USUdfUEFHRV9TSVpFIC8gc2l6ZW9mKHU2NCkpIC0gMSkKKworc3RhdGljIHNpemVfdCBnZXRf cGFnZXNfbGlzdF9zaXplKHNpemVfdCBudW1fZW50cmllcykKK3sKKyAgICBpbnQgcGFnZXMgPSBE SVZfUk9VTkRfVVAobnVtX2VudHJpZXMsIFBBR0VMSVNUX0VOVFJJRVNfUEVSX1BBR0UpOworCisg ICAgcmV0dXJuIHBhZ2VzICogT1BURUVfTVNHX05PTkNPTlRJR19QQUdFX1NJWkU7Cit9CisKK3N0 YXRpYyBpbnQgdHJhbnNsYXRlX25vbmNvbnRpZyhzdHJ1Y3Qgb3B0ZWVfZG9tYWluICpjdHgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wdGVlX3N0ZF9jYWxsICpjYWxs LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcHRlZV9tc2dfcGFyYW0g KnBhcmFtKQoreworICAgIHVpbnQ2NF90IHNpemU7CisgICAgdW5zaWduZWQgaW50IG9mZnNldDsK KyAgICB1bnNpZ25lZCBpbnQgcGdfY291bnQ7CisgICAgdW5zaWduZWQgaW50IG9yZGVyOworICAg IHVuc2lnbmVkIGludCBpZHggPSAwOworICAgIGdmbl90IGdmbjsKKyAgICBzdHJ1Y3QgcGFnZV9p bmZvICpndWVzdF9wZywgKnhlbl9wZ3M7CisgICAgc3RydWN0IG9wdGVlX3NobV9idWYgKm9wdGVl X3NobV9idWY7CisgICAgLyoKKyAgICAgKiBUaGlzIGlzIG1lbW9yeSBsYXlvdXQgZm9yIHBhZ2Ug bGlzdC4gQmFzaWNhbGx5IGxpc3QgY29uc2lzdHMgb2YgNGsgcGFnZXMsCisgICAgICogZXZlcnkg cGFnZSBzdG9yZSA1MTEgcGFnZSBhZGRyZXNzZXMgb2YgdXNlciBidWZmZXIgYW5kIHBhZ2UgYWRk cmVzcyBvZgorICAgICAqIHRoZSBuZXh0IHBhZ2Ugb2YgbGlzdC4KKyAgICAgKgorICAgICAqIFJl ZmVyIHRvIE9QVEVFX01TR19BVFRSX05PTkNPTlRJRyBkZXNjcmlwdGlvbiBpbiBvcHRlZV9tc2cu aCBmb3IgZGV0YWlscy4KKyAgICAgKi8KKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50NjRfdCBw YWdlc19saXN0W1BBR0VMSVNUX0VOVFJJRVNfUEVSX1BBR0VdOworICAgICAgICB1aW50NjRfdCBu ZXh0X3BhZ2VfZGF0YTsKKyAgICB9ICpndWVzdF9kYXRhLCAqeGVuX2RhdGE7CisKKyAgICAvKiBP ZmZzZXQgb2YgdXNlciBidWZmZXIgd2l0aGluZyBPUFRFRV9NU0dfTk9OQ09OVElHX1BBR0VfU0la RS1zaXplZCBwYWdlICovCisgICAgb2Zmc2V0ID0gcGFyYW0tPnUudG1lbS5idWZfcHRyICYgKE9Q VEVFX01TR19OT05DT05USUdfUEFHRV9TSVpFIC0gMSk7CisKKyAgICAvKiBTaXplIG9mIHRoZSB1 c2VyIGJ1ZmZlciBpbiBieXRlcyAqLworICAgIHNpemUgPSBST1VORFVQKHBhcmFtLT51LnRtZW0u c2l6ZSArIG9mZnNldCwgT1BURUVfTVNHX05PTkNPTlRJR19QQUdFX1NJWkUpOworCisgICAgcGdf Y291bnQgPSBESVZfUk9VTkRfVVAoc2l6ZSwgT1BURUVfTVNHX05PTkNPTlRJR19QQUdFX1NJWkUp OworICAgIG9yZGVyID0gZ2V0X29yZGVyX2Zyb21fYnl0ZXMoZ2V0X3BhZ2VzX2xpc3Rfc2l6ZShw Z19jb3VudCkpOworCisgICAgLyoKKyAgICAgKiBJbiB0aGUgd29yc3QgY2FzZSB3ZSB3aWxsIHdh bnQgdG8gYWxsb2NhdGUgMzMgcGFnZXMsIHdoaWNoIGlzCisgICAgICogTUFYX1RPVEFMX1NNSF9C VUZfUEcvNTExIHJvdW5kZWQgdXAuIFRoaXMgZ2l2ZXMgb3JkZXIgNiBvciBhdAorICAgICAqIG1v c3QgNjQgcGFnZXMgYWxsb2NhdGVkLiBUaGlzIGJ1ZmZlciB3aWxsIGJlIGZyZWVkIHJpZ2h0IGFm dGVyCisgICAgICogdGhlIGVuZCBvZiB0aGUgY2FsbCBhbmQgdGhlcmUgY2FuIGJlIG5vIG1vcmUg dGhhbgorICAgICAqIG1heF9vcHRlZV90aHJlYWRzIGNhbGxzIHNpbXVsdGFuZW91c2x5LiBTbyBp biB0aGUgd29yc3QgY2FzZQorICAgICAqIGd1ZXN0IGNhbiB0cmljayB1cyB0byBhbGxvY2F0ZSA2 NCAqIG1heF9vcHRlZV90aHJlYWRzIHBhZ2VzIGluCisgICAgICogdG90YWwuCisgICAgICovCisg ICAgeGVuX3BncyA9IGFsbG9jX2RvbWhlYXBfcGFnZXMoY3VycmVudC0+ZG9tYWluLCBvcmRlciwg MCk7CisgICAgaWYgKCAheGVuX3BncyApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisgICAg b3B0ZWVfc2htX2J1ZiA9IGFsbG9jYXRlX29wdGVlX3NobV9idWYoY3R4LCBwYXJhbS0+dS50bWVt LnNobV9yZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdf Y291bnQsIHhlbl9wZ3MsIG9yZGVyKTsKKyAgICBpZiAoIElTX0VSUihvcHRlZV9zaG1fYnVmKSAp CisgICAgICAgIHJldHVybiBQVFJfRVJSKG9wdGVlX3NobV9idWYpOworCisgICAgZ2ZuID0gZ2Fk ZHJfdG9fZ2ZuKHBhcmFtLT51LnRtZW0uYnVmX3B0ciAmCisgICAgICAgICAgICAgICAgICAgICAg IH4oT1BURUVfTVNHX05PTkNPTlRJR19QQUdFX1NJWkUgLSAxKSk7CisKKyAgICB3aGlsZSAoIHBn X2NvdW50ICkKKyAgICB7CisgICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7CisKKyAgICAg ICAgaWYgKCBpZHggPT0gMCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGd1ZXN0X3BnID0gZ2V0 X2RvbWFpbl9yYW1fcGFnZShnZm4pOworICAgICAgICAgICAgaWYgKCAhZ3Vlc3RfcGcgKQorICAg ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgICAgICAgICBndWVzdF9kYXRhID0g X19tYXBfZG9tYWluX3BhZ2UoZ3Vlc3RfcGcpOworICAgICAgICAgICAgeGVuX2RhdGEgPSBfX21h cF9kb21haW5fcGFnZSh4ZW5fcGdzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAg ICAqIFRPRE86IFRoYXQgZnVuY3Rpb24gY2FuIHBpbiB1cCB0byA2NE1CIG9mIGd1ZXN0IG1lbW9y eSBieQorICAgICAgICAgKiBjYWxsaW5nIGxvb2t1cF9hbmRfcGluX2d1ZXN0X3JhbV9hZGRyKCkg MTYzODQgdGltZXMKKyAgICAgICAgICogKGFzc3VtaW5nIHRoYXQgUEFHRV9TSVpFIGVxdWFscyB0 byA0MDk2KS4KKyAgICAgICAgICogVGhpcyBzaG91bGQgYmUgYWRkcmVzc2VkIGJlZm9yZSBkZWNs YXJpbmcgT1AtVEVFIHNlY3VyaXR5CisgICAgICAgICAqIHN1cHBvcnRlZC4KKyAgICAgICAgICov CisgICAgICAgIEJVSUxEX0JVR19PTihQQUdFX1NJWkUgIT0gNDA5Nik7CisgICAgICAgIHBhZ2Ug PSBnZXRfZG9tYWluX3JhbV9wYWdlKGdhZGRyX3RvX2dmbihndWVzdF9kYXRhLT5wYWdlc19saXN0 W2lkeF0pKTsKKyAgICAgICAgaWYgKCAhcGFnZSApCisgICAgICAgICAgICBnb3RvIGVycl91bm1h cDsKKworICAgICAgICBvcHRlZV9zaG1fYnVmLT5wYWdlc1tvcHRlZV9zaG1fYnVmLT5wYWdlX2Nu dCsrXSA9IHBhZ2U7CisgICAgICAgIHhlbl9kYXRhLT5wYWdlc19saXN0W2lkeF0gPSBwYWdlX3Rv X21hZGRyKHBhZ2UpOworICAgICAgICBpZHgrKzsKKworICAgICAgICBpZiAoIGlkeCA9PSBQQUdF TElTVF9FTlRSSUVTX1BFUl9QQUdFICkKKyAgICAgICAgeworICAgICAgICAgICAgLyogUm9sbCBv dmVyIHRvIHRoZSBuZXh0IHBhZ2UgKi8KKyAgICAgICAgICAgIHhlbl9kYXRhLT5uZXh0X3BhZ2Vf ZGF0YSA9IHBhZ2VfdG9fbWFkZHIoeGVuX3BncyArIDEpOworICAgICAgICAgICAgeGVuX3Bncysr OworCisgICAgICAgICAgICBnZm4gPSBnYWRkcl90b19nZm4oZ3Vlc3RfZGF0YS0+bmV4dF9wYWdl X2RhdGEpOworCisgICAgICAgICAgICB1bm1hcF9kb21haW5fcGFnZSh4ZW5fZGF0YSk7CisgICAg ICAgICAgICB1bm1hcF9kb21haW5fcGFnZShndWVzdF9kYXRhKTsKKyAgICAgICAgICAgIHB1dF9w YWdlKGd1ZXN0X3BnKTsKKworICAgICAgICAgICAgaWR4ID0gMDsKKyAgICAgICAgfQorICAgICAg ICBwZ19jb3VudC0tOworICAgIH0KKworICAgIGlmICggaWR4ICkKKyAgICB7CisgICAgICAgIHVu bWFwX2RvbWFpbl9wYWdlKGd1ZXN0X2RhdGEpOworICAgICAgICB1bm1hcF9kb21haW5fcGFnZSh4 ZW5fZGF0YSk7CisgICAgICAgIHB1dF9wYWdlKGd1ZXN0X3BnKTsKKyAgICB9CisgICAgcGFyYW0t PnUudG1lbS5idWZfcHRyID0gcGFnZV90b19tYWRkcihvcHRlZV9zaG1fYnVmLT5wZ19saXN0KSB8 IG9mZnNldDsKKworICAgIHJldHVybiAwOworCitlcnJfdW5tYXA6CisgICAgdW5tYXBfZG9tYWlu X3BhZ2UoZ3Vlc3RfZGF0YSk7CisgICAgdW5tYXBfZG9tYWluX3BhZ2UoeGVuX2RhdGEpOworICAg IHB1dF9wYWdlKGd1ZXN0X3BnKTsKKyAgICBmcmVlX29wdGVlX3NobV9idWYoY3R4LCBvcHRlZV9z aG1fYnVmLT5jb29raWUpOworCisgICAgcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQg dHJhbnNsYXRlX3BhcmFtcyhzdHJ1Y3Qgb3B0ZWVfZG9tYWluICpjdHgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IG9wdGVlX3N0ZF9jYWxsICpjYWxsKQoreworICAgIHVuc2ln bmVkIGludCBpOworICAgIHVpbnQzMl90IGF0dHI7CisgICAgaW50IHJldCA9IDA7CisKKyAgICBm b3IgKCBpID0gMDsgaSA8IGNhbGwtPnhlbl9hcmctPm51bV9wYXJhbXM7IGkrKyApCisgICAgewor ICAgICAgICBhdHRyID0gY2FsbC0+eGVuX2FyZy0+cGFyYW1zW2ldLmF0dHI7CisKKyAgICAgICAg c3dpdGNoICggYXR0ciAmIE9QVEVFX01TR19BVFRSX1RZUEVfTUFTSyApCisgICAgICAgIHsKKyAg ICAgICAgY2FzZSBPUFRFRV9NU0dfQVRUUl9UWVBFX1RNRU1fSU5QVVQ6CisgICAgICAgIGNhc2Ug T1BURUVfTVNHX0FUVFJfVFlQRV9UTUVNX09VVFBVVDoKKyAgICAgICAgY2FzZSBPUFRFRV9NU0df QVRUUl9UWVBFX1RNRU1fSU5PVVQ6CisgICAgICAgICAgICBpZiAoIGF0dHIgJiBPUFRFRV9NU0df QVRUUl9OT05DT05USUcgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldCA9IHRy YW5zbGF0ZV9ub25jb250aWcoY3R4LCBjYWxsLCBjYWxsLT54ZW5fYXJnLT5wYXJhbXMgKyBpKTsK KyAgICAgICAgICAgICAgICBpZiAoIHJldCApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0 OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiR3Vlc3QgdHJpZXMgdG8gdXNlIG9s ZCB0bWVtIGFyZ1xuIik7CisgICAgICAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsKKyAgICAgICAg ICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAg ICAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZUEVfTk9ORToKKyAgICAgICAgY2FzZSBPUFRFRV9N U0dfQVRUUl9UWVBFX1ZBTFVFX0lOUFVUOgorICAgICAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZ UEVfVkFMVUVfT1VUUFVUOgorICAgICAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZUEVfVkFMVUVf SU5PVVQ6CisgICAgICAgIGNhc2UgT1BURUVfTVNHX0FUVFJfVFlQRV9STUVNX0lOUFVUOgorICAg ICAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZUEVfUk1FTV9PVVRQVVQ6CisgICAgICAgIGNhc2Ug T1BURUVfTVNHX0FUVFJfVFlQRV9STUVNX0lOT1VUOgorICAgICAgICAgICAgY29udGludWU7Cisg ICAgICAgIH0KKyAgICB9CisKK291dDoKKyAgICBpZiAoIHJldCApCisgICAgeworICAgICAgICBj YWxsLT54ZW5fYXJnLT5yZXRfb3JpZ2luID0gVEVFQ19PUklHSU5fQ09NTVM7CisgICAgICAgIGlm ICggcmV0ID09IC1FTk9NRU0gKQorICAgICAgICAgICAgY2FsbC0+eGVuX2FyZy0+cmV0ID0gVEVF Q19FUlJPUl9PVVRfT0ZfTUVNT1JZOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjYWxsLT54 ZW5fYXJnLT5yZXQgPSBURUVDX0VSUk9SX0JBRF9QQVJBTUVURVJTOworICAgIH0KKworICAgIHJl dHVybiByZXQ7Cit9CisKIC8qCiAgKiBDb3B5IGNvbW1hbmQgYnVmZmVyIGludG8gZG9taGVhcCBt ZW1vcnkgdG86CiAgKiAxKSBIaWRlIHRyYW5zbGF0ZWQgYWRkcmVzc2VzIGZyb20gZ3Vlc3QKQEAg LTU0OSw2ICs5MDksMjcgQEAgc3RhdGljIHZvaWQgY29weV9zdGRfcmVxdWVzdF9iYWNrKHN0cnVj dCBvcHRlZV9kb21haW4gKmN0eCwKICAgICBwdXRfcGFnZShwYWdlKTsKIH0KIAorCitzdGF0aWMg dm9pZCBmcmVlX3NobV9idWZmZXJzKHN0cnVjdCBvcHRlZV9kb21haW4gKmN0eCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9wdGVlX21zZ19hcmcgKmFyZykKK3sKKyAgICB1 bnNpZ25lZCBpbnQgaTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgYXJnLT5udW1fcGFyYW1zOyBp ICsrICkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoIGFyZy0+cGFyYW1zW2ldLmF0dHIgJiBPUFRF RV9NU0dfQVRUUl9UWVBFX01BU0sgKQorICAgICAgICB7CisgICAgICAgIGNhc2UgT1BURUVfTVNH X0FUVFJfVFlQRV9UTUVNX0lOUFVUOgorICAgICAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZUEVf VE1FTV9PVVRQVVQ6CisgICAgICAgIGNhc2UgT1BURUVfTVNHX0FUVFJfVFlQRV9UTUVNX0lOT1VU OgorICAgICAgICAgICAgZnJlZV9vcHRlZV9zaG1fYnVmKGN0eCwgYXJnLT5wYXJhbXNbaV0udS50 bWVtLnNobV9yZWYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwogLyogSGFuZGxlIFJQQyByZXR1 cm4gZnJvbSBPUC1URUUgKi8KIHN0YXRpYyB2b2lkIGhhbmRsZV9ycGNfcmV0dXJuKHN0cnVjdCBh cm1fc21jY2NfcmVzICpyZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg Y3B1X3VzZXJfcmVncyAqcmVncywKQEAgLTU3NCw2ICs5NTUsOCBAQCBzdGF0aWMgdm9pZCBoYW5k bGVfcnBjX3JldHVybihzdHJ1Y3QgYXJtX3NtY2NjX3JlcyAqcmVzLAogICogSWYgdGhpcyBpcyBS UEMgLSB3ZSBuZWVkIHRvIHN0b3JlIGNhbGwgY29udGV4dCBhbmQgcmV0dXJuIGJhY2sgdG8gZ3Vl c3QuCiAgKiBJZiBjYWxsIGlzIGNvbXBsZXRlIC0gd2UgbmVlZCB0byByZXR1cm4gcmVzdWx0cyB3 aXRoIGNvcHlfc3RkX3JlcXVlc3RfYmFjaygpCiAgKiBhbmQgdGhlbiB3ZSB3aWxsIGRlc3Ryb3kg dGhlIGNhbGwgY29udGV4dCBhcyBpdCBpcyBub3QgbmVlZGVkIGFueW1vcmUuCisgKgorICogU2hh cmVkIGJ1ZmZlcnMgc2hvdWxkIGJlIGhhbmRsZWQgaW4gYSBzcGVjaWFsIHdheS4KICAqLwogc3Rh dGljIHZvaWQgZG9fY2FsbF93aXRoX2FyZyhzdHJ1Y3Qgb3B0ZWVfZG9tYWluICpjdHgsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvcHRlZV9zdGRfY2FsbCAqY2FsbCwKQEAg LTU5Nyw2ICs5ODAsMjcgQEAgc3RhdGljIHZvaWQgZG9fY2FsbF93aXRoX2FyZyhzdHJ1Y3Qgb3B0 ZWVfZG9tYWluICpjdHgsCiAgICAgY29weV9zdGRfcmVxdWVzdF9iYWNrKGN0eCwgcmVncywgY2Fs bCk7CiAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDAsIHJlcy5hMCk7CiAKKyAgICBzd2l0Y2ggKCBj YWxsLT54ZW5fYXJnLT5jbWQgKQorICAgIHsKKyAgICBjYXNlIE9QVEVFX01TR19DTURfUkVHSVNU RVJfU0hNOgorICAgICAgICBpZiAoIGNhbGwtPnhlbl9hcmctPnJldCA9PSAwICkKKyAgICAgICAg ICAgIC8qIE9QLVRFRSByZWdpc3RlcmVkIGJ1ZmZlciwgd2UgZG9uJ3QgbmVlZCBwZ19saXN0IGFu eW1vcmUgKi8KKyAgICAgICAgICAgIGZyZWVfb3B0ZWVfc2htX2J1Zl9wZ19saXN0KGN0eCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwtPnhlbl9hcmctPnBhcmFt c1swXS51LnRtZW0uc2htX3JlZik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIC8qIE9QLVRF RSBmYWlsZWQgdG8gcmVnaXN0ZXIgYnVmZmVyLCB3ZSBuZWVkIHRvIHVucGluIGd1ZXN0IHBhZ2Vz ICovCisgICAgICAgICAgICBmcmVlX29wdGVlX3NobV9idWYoY3R4LCBjYWxsLT54ZW5fYXJnLT5w YXJhbXNbMF0udS50bWVtLnNobV9yZWYpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9QVEVF X01TR19DTURfVU5SRUdJU1RFUl9TSE06CisgICAgICAgIGlmICggY2FsbC0+eGVuX2FyZy0+cmV0 ID09IDAgKQorICAgICAgICAgICAgLyogTm93IHdlIGNhbiB1bnBpbiBndWVzdCBwYWdlcyAqLwor ICAgICAgICAgICAgZnJlZV9vcHRlZV9zaG1fYnVmKGN0eCwgY2FsbC0+eGVuX2FyZy0+cGFyYW1z WzBdLnUucm1lbS5zaG1fcmVmKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg ICAgLyogRnJlZSBhbnkgdGVtcG9yYXJ5IHNoYXJlZCBidWZmZXJzICovCisgICAgICAgIGZyZWVf c2htX2J1ZmZlcnMoY3R4LCBjYWxsLT54ZW5fYXJnKTsKKyAgICB9CisKICAgICBwdXRfc3RkX2Nh bGwoY3R4LCBjYWxsKTsKICAgICBmcmVlX3N0ZF9jYWxsKGN0eCwgY2FsbCk7CiB9CkBAIC02NTgs NiArMTA2MiwxOCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfc3RkX2NhbGwoc3RydWN0IG9wdGVlX2Rv bWFpbiAqY3R4LAogICAgIGNhc2UgT1BURUVfTVNHX0NNRF9DQU5DRUw6CiAgICAgY2FzZSBPUFRF RV9NU0dfQ01EX1JFR0lTVEVSX1NITToKICAgICBjYXNlIE9QVEVFX01TR19DTURfVU5SRUdJU1RF Ul9TSE06CisgICAgICAgIGlmKCB0cmFuc2xhdGVfcGFyYW1zKGN0eCwgY2FsbCkgKQorICAgICAg ICB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogdHJhbnNsYXRlX3BhcmFtcygpIHNl dHMgeGVuX2FyZy0+cmV0IHZhbHVlIHRvIG5vbi16ZXJvLgorICAgICAgICAgICAgICogU28sIHRl Y2huaWNhbGx5LCBTTUMgd2FzIHN1Y2Nlc3NmdWwsIGJ1dCB0aGVyZSB3YXMgYW4gZXJyb3IKKyAg ICAgICAgICAgICAqIGR1cmluZyBoYW5kbGluZyBzdGFuZGFyZCBjYWxsIGVuY2Fwc3VsYXRlZCBp bnRvIHRoaXMgU01DLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBjb3B5X3N0ZF9yZXF1 ZXN0X2JhY2soY3R4LCByZWdzLCBjYWxsKTsKKyAgICAgICAgICAgIHNldF91c2VyX3JlZyhyZWdz LCAwLCBPUFRFRV9TTUNfUkVUVVJOX09LKTsKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAg ICB9CisKICAgICAgICAgeGVuX2FkZHIgPSBwYWdlX3RvX21hZGRyKGNhbGwtPnhlbl9hcmdfcGcp OwogICAgICAgICB1aW50NjRfdG9fcmVncGFpcigmYTEsICZhMiwgeGVuX2FkZHIpOwogCi0tIAoy LjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=