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.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,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 DDEA8C282DD for ; Thu, 23 May 2019 16:09:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 72D7421773 for ; Thu, 23 May 2019 16:09:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=darbyshire-bryant.me.uk header.i=@darbyshire-bryant.me.uk header.b="dfPI4oxH" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731119AbfEWQJh (ORCPT ); Thu, 23 May 2019 12:09:37 -0400 Received: from mail-eopbgr00081.outbound.protection.outlook.com ([40.107.0.81]:57733 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730904AbfEWQJh (ORCPT ); Thu, 23 May 2019 12:09:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=darbyshire-bryant.me.uk; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HhhdADETVi+TLEXzv5uHtvKeNLT8JmpJw3h/ogIk2jw=; b=dfPI4oxHwMdr7AGUsCIa/6M9yGjPMnVC6KN+LEDq/HH+Ezw6oJGefIPUjQLb2CJ6hnWYfn6d65UcnfYEkNoVl8SngOFn+PDBF18Gn3lTh6ysHYsxsjqlE9egSQBBkmQ5hbnFY+YV6iahkXYNOBtk8IEk25TcEzqrK63kQOiFb2M= Received: from VI1PR0302MB2750.eurprd03.prod.outlook.com (10.171.106.21) by VI1PR0302MB2623.eurprd03.prod.outlook.com (10.171.104.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1922.15; Thu, 23 May 2019 16:09:28 +0000 Received: from VI1PR0302MB2750.eurprd03.prod.outlook.com ([fe80::603a:6eb9:2073:bde4]) by VI1PR0302MB2750.eurprd03.prod.outlook.com ([fe80::603a:6eb9:2073:bde4%5]) with mapi id 15.20.1900.020; Thu, 23 May 2019 16:09:28 +0000 From: Kevin 'ldir' Darbyshire-Bryant To: "netdev@vger.kernel.org" CC: Kevin 'ldir' Darbyshire-Bryant Subject: [PATCH net-next v4] net: sched: Introduce act_ctinfo action Thread-Topic: [PATCH net-next v4] net: sched: Introduce act_ctinfo action Thread-Index: AQHVEYHliX3MrMpj2ki0m3I2E71GDg== Date: Thu, 23 May 2019 16:09:28 +0000 Message-ID: <20190523160906.44081-1-ldir@darbyshire-bryant.me.uk> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0348.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:d::24) To VI1PR0302MB2750.eurprd03.prod.outlook.com (2603:10a6:800:e3::21) authentication-results: spf=none (sender IP is ) smtp.mailfrom=ldir@darbyshire-bryant.me.uk; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 (Apple Git-117) x-originating-ip: [193.240.142.133] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 271ca1ba-7e22-47d9-9e3f-08d6df990825 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7027125)(7023125)(5600141)(711020)(4605104)(2017052603328)(7193020);SRVR:VI1PR0302MB2623; x-ms-traffictypediagnostic: VI1PR0302MB2623: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5516; x-forefront-prvs: 00462943DE x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(346002)(376002)(396003)(136003)(366004)(39830400003)(199004)(189003)(6486002)(6436002)(186003)(2351001)(316002)(26005)(6512007)(14444005)(256004)(53946003)(5640700003)(2501003)(2616005)(53936002)(86362001)(74482002)(52116002)(68736007)(8936002)(476003)(50226002)(14454004)(107886003)(71200400001)(99286004)(2906002)(71190400001)(36756003)(4326008)(25786009)(508600001)(6916009)(30864003)(66066001)(66946007)(73956011)(7736002)(3846002)(6116002)(305945005)(386003)(66446008)(1730700003)(6506007)(102836004)(8676002)(81166006)(81156014)(66556008)(486006)(64756008)(66476007)(1076003)(5660300002)(66574012);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0302MB2623;H:VI1PR0302MB2750.eurprd03.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: darbyshire-bryant.me.uk does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 9PKHMvBdzbWOEb/q3NobrmbIep0v0llC9YE4MaLoTe+BbBHbmbY79S+9WR6vuL2/OWnslLMt61WMQ+Pv7Z1tyo4uslrrKSzH6bupQuyVN/goE4CyIsZ9xlN24/eE0InfC/fbt3n2k2Fdrm7BzPr7ObK4aNaZd8p/Wque1MbxoGgLmMrvr6/f+l9qUFliSN5eU9rY8swnD8MbB5JE3O2Onnv6vwZClhAIBYgm76tlOTBExHssrfXg3CAHmUzANHJveeoB7k75zO3tkcl0tAjjvBKi8QV1tz73tKcK3W05K+QhrpELY6pSB/13DN98lvqauf8a+Lspx7OJ6KEaZ0ljCAYjkzmg5vXA2tvxjVjey+BICvi4Asb6ymhiUMQ7d8By+wMj90HSTAswNvfapgAuaw452z6wQyvPabitGxfi8FE= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: darbyshire-bryant.me.uk X-MS-Exchange-CrossTenant-Network-Message-Id: 271ca1ba-7e22-47d9-9e3f-08d6df990825 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 May 2019 16:09:28.3851 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9151708b-c553-406f-8e56-694f435154a4 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0302MB2623 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Y3RpbmZvIGlzIGEgbmV3IHRjIGZpbHRlciBhY3Rpb24gbW9kdWxlLiAgSXQgaXMgZGVzaWduZWQg dG8gcmVzdG9yZQ0KaW5mb3JtYXRpb24gY29udGFpbmVkIGluIGNvbm50cmFjayBtYXJrcyB0byBv dGhlciBwbGFjZXMuICBBdCBwcmVzZW50IGl0DQpjYW4gcmVzdG9yZSBEU0NQIHZhbHVlcyB0byBJ UHY0LzYgZGlmZnNlcnYgZmllbGRzIGFuZCBhbHNvIGNvcHkNCmNvbm50cmFjayBtYXJrcyB0byBz a2IgbWFya3MuICBBcyBzdWNoIHRoZSAybmQgZnVuY3Rpb24gZWZmZWN0aXZlbHkNCnJlcGxhY2Vz IHRoZSBleGlzdGluZyBhY3RfY29ubm1hcmsgbW9kdWxlDQoNClRoZSBEU0NQIHJlc3RvcmF0aW9u IGlzIGludGVuZGVkIGZvciB1c2UgYW5kIGhhcyBiZWVuIGZvdW5kIHVzZWZ1bCBmb3INCnJlc3Rv cmluZyBpbmdyZXNzIGNsYXNzaWZpY2F0aW9ucyBiYXNlZCBvbiBlZ3Jlc3MgY2xhc3NpZmljYXRp b25zIGFjcm9zcw0KbGlua3MgdGhhdCBibGVhY2ggb3Igb3RoZXJ3aXNlIGNoYW5nZSBEU0NQLCB0 eXBpY2FsbHkgaG9tZSBJU1AgSW50ZXJuZXQNCmxpbmtzLiAgUmVzdG9yaW5nIERTQ1Agb24gaW5n cmVzcyBvbiB0aGUgV0FOIGxpbmsgYWxsb3dzIHFkaXNjcyBzdWNoIGFzDQpDQUtFIHRvIHNoYXBl IGluYm91bmQgcGFja2V0cyBhY2NvcmRpbmcgdG8gcG9saWNpZXMgdGhhdCBhcmUgZWFzaWVyIHRv DQppbmRpY2F0ZSBvbiBlZ3Jlc3MuDQoNCkluZ3Jlc3MgY2xhc3NpZmljYXRpb24gaXMgdHJhZGl0 aW9uYWxseSBhIGNoYWxsZW5naW5nIHRhc2sgc2luY2UNCmlwdGFibGVzIHJ1bGVzIGhhdmVuJ3Qg eWV0IHJ1biBhbmQgdGMgZmlsdGVyL2VCUEYgcHJvZ3JhbXMgYXJlIHByZS1OQVQNCmxvb2t1cHMs IGhlbmNlIGFyZSB1bmFibGUgdG8gc2VlIGludGVybmFsIElQdjQgYWRkcmVzc2VzIGFzIHVzZWQg b24gdGhlDQp0eXBpY2FsIGhvbWUgbWFzcXVlcmFkaW5nIGdhdGV3YXkuDQoNCmN0aW5mbyB1bmRl cnN0YW5kcyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6DQoNCmRzY3AgZHNjcG1hc2tbL3N0YXRl bWFza10NCg0KZHNjcG1hc2sgLSBhIDMyIGJpdCBtYXNrIG9mIGF0IGxlYXN0IDYgY29udGlndW91 cyBiaXRzIGFuZCBpbmRpY2F0ZXMNCndoZXJlIGN0aW5mbyB3aWxsIGZpbmQgdGhlIERTQ1AgYml0 cyBzdG9yZWQgaW4gdGhlIGNvbm50cmFjayBtYXJrLg0KDQpzdGF0ZW1hc2sgLSBhIDMyIGJpdCBt YXNrIG9mICh1c3VhbGx5KSAxIGJpdCBsZW5ndGgsIG91dHNpZGUgdGhlIGFyZWENCnNwZWNpZmll ZCBieSBkc2NwbWFzay4gIFRoaXMgcmVwcmVzZW50cyBhIGNvbmRpdGlvbmFsIG9wZXJhdGlvbiBm bGFnDQp3aGVyZWJ5IHRoZSBEU0NQIGlzIG9ubHkgcmVzdG9yZWQgaWYgdGhlIGZsYWcgaXMgc2V0 LiAgVGhpcyBpcyB1c2VmdWwgdG8NCmltcGxlbWVudCBhICdvbmUgc2hvdCcgaXB0YWJsZXMgYmFz ZWQgY2xhc3NpZmljYXRpb24gd2hlcmUgdGhlDQonY29tcGxpY2F0ZWQnIGlwdGFibGVzIHJ1bGVz IGFyZSBvbmx5IHJ1biBvbmNlIHRvIGNsYXNzaWZ5IHRoZQ0KY29ubmVjdGlvbiBvbiBpbml0aWFs IChlZ3Jlc3MpIHBhY2tldCBhbmQgc3Vic2VxdWVudCBwYWNrZXRzIGFyZSBhbGwNCm1hcmtlZC9y ZXN0b3JlZCB3aXRoIHRoZSBzYW1lIERTQ1AuICBBIG1hc2sgb2YgemVybyBkaXNhYmxlcyB0aGUN CmNvbmRpdGlvbmFsIGJlaGF2aW91ciBpZS4gdGhlIGNvbm50cmFjayBtYXJrIERTQ1AgYml0cyBh cmUgYWx3YXlzDQpyZXN0b3JlZCB0byB0aGUgaXAgZGlmZnNlcnYgZmllbGQgKGFzc3VtaW5nIHRo ZSBjb25udHJhY2sgZW50cnkgaXMgZm91bmQNCiYgdGhlIHNrYiBpcyBhbiBpcHY0L2lwdjYgdHlw ZSkNCg0KbWFyayBbbWFza10NCg0KbWFyayAtIGVuYWJsZXMgY29weWluZyB0aGUgY29ubnRyYWNr IGNvbm5tYXJrIHZhbHVlIHRvIHRoZSBza2IgbWFyaw0KDQptYXNrIC0gYSAzMiBiaXQgbWFzayBh cHBsaWVkIHRvIHRoZSBtYXJrIHRvIG1hc2sgb3V0IGJpdCB1bndhbnRlZCBmb3INCnJlc3RvcmF0 aW9uLiAgVGhlIENBS0UgcWRpc2MgZm9yIGV4YW1wbGUgdW5kZXJzdGFuZHMgYm90aCBEU0NQIGFu ZCAndGluJw0KY2xhc3NpZmljYXRpb24gc3RvcmVkIHRoZSBtYXJrLCB0aHVzIGFjdF9jdGluZm8g bWF5IGJlIHVzZWQgdG8gcmVzdG9yZQ0KYm90aCBhc3BlY3RzIG9mIGNsYXNzaWZpY2F0aW9uIGZv ciBDQUtFIGluIG9uZSBhY3Rpb24uICBBIGRlZmF1bHQgbWFzaw0Kb2YgMHhmZmZmZmZmZiBpcyBh cHBsaWVkIGlmIG5vdCBzcGVjaWZpZWQuDQoNCnpvbmUgLSBjb25udHJhY2sgem9uZQ0KDQpjb250 cm9sIC0gYWN0aW9uIHJlbGF0ZWQgY29udHJvbCAocmVjbGFzc2lmeSB8IHBpcGUgfCBkcm9wIHwg Y29udGludWUgfA0Kb2sgfCBnb3RvIGNoYWluIDxDSEFJTl9JTkRFWD4pDQoNCmUuZy4gZHNjcCAw eGZjMDAwMDAwLzB4MDEwMDAwMDANCg0KfC0tLS0weEZDLS0tLWNvbm50cmFjayBtYXJrLS0tLTAw MDAwMC0tLXwNCnwgQml0cyAzMS0yNiB8IGJpdCAyNSB8IGJpdDI0IHx+fn4gQml0IDB8DQp8IERT Q1AgICAgICAgfCB1bnVzZWQgfCBmbGFnICB8dW51c2VkICAgfA0KfC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tMHgwMS0tLTAwMDAwMC0tLXwNCiAgICAgIHwgICAgICAgICAgICAgICAgICAgfA0KICAg ICAgfCAgICAgICAgICAgICAgICAgICB8DQogICAgICAtLS18ICAgICAgICAgICAgIENvbmRpdGlv bmFsIGZsYWcNCiAgICAgICAgIHYgICAgICAgICAgICAgb25seSByZXN0b3JlIGlmIHNldA0KfC1p cCBkaWZmc2Vydi18DQp8IDYgYml0cyAgICAgIHwNCnwtLS0tLS0tLS0tLS0tfA0KDQplLmcuIG1h cmsgMHgwMGZmZmZmZg0KDQp8LS0tLTB4MDAtLS0tY29ubnRyYWNrIG1hcmstLS0tZmZmZmZmLS0t fA0KfCBCaXRzIDMxLTI0IHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCnwgRFNDUCAmIGZs YWd8ICAgICAgICAgICAgICAgICAgICAgICAgICB8DQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tfA0KCQkJfA0KCQkJfA0KCQkJdg0KfC0tLS0tLS0tLS0tLXNrYiBtYXJr LS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8DQp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCg0KU2lnbmVkLW9mZi1ieTogS2V2 aW4gRGFyYnlzaGlyZS1CcnlhbnQgPGxkaXJAZGFyYnlzaGlyZS1icnlhbnQubWUudWs+DQotLS0N CnYyIC0gYWRkIGVxdWl2YWxlbnQgY29ubm1hcmsgZnVuY3Rpb25hbGl0eSB3aXRoIGFuIGVuaGFu Y2VtZW50DQogICAgIHRvIGFjY2VwdCBhIG1hc2sNCiAgICAgcGFzcyBzdGF0aXN0aWNzIGZvciBl YWNoIHN1Yi1mdW5jdGlvbiBhcyBpbmRpdmlkdWFsIG5ldGxpbmsNCiAgICAgYXR0cmlidXRlcyBh bmQgc3RvcCAoYWIpdXNpbmcgb3ZlcmxpbWl0cywgZHJvcHMNCiAgICAgdXBkYXRlIHRoZSB0ZXN0 aW5nIGNvbmZpZyBjb3JyZWN0bHkNCnYzIC0gZml4IGEgbGljZW5zaW5nIHNpbGx5ICYgdGlkeSB1 cCBHUEwgYm9pbGVycGxhdGUNCnY0IC0gZHJvcCBzdHJheSBjb3B5IHBhc3RlIGlubGluZQ0KICAg ICByZXZlcnNlIGNocmlzdG1hcyB0cmVlIGxvY2FsIHZhcnMNCg0KIGluY2x1ZGUvbmV0L3RjX2Fj dC90Y19jdGluZm8uaCAgICAgICAgICAgIHwgIDI4ICsrDQogaW5jbHVkZS91YXBpL2xpbnV4L3Br dF9jbHMuaCAgICAgICAgICAgICAgfCAgIDEgKw0KIGluY2x1ZGUvdWFwaS9saW51eC90Y19hY3Qv dGNfY3RpbmZvLmggICAgIHwgIDQzICsrKw0KIG5ldC9zY2hlZC9LY29uZmlnICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDE3ICsNCiBuZXQvc2NoZWQvTWFrZWZpbGUgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMSArDQogbmV0L3NjaGVkL2FjdF9jdGluZm8uYyAgICAgICAgICAgICAgICAg ICAgfCA0MDIgKysrKysrKysrKysrKysrKysrKysrKw0KIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Rz L3RjLXRlc3RpbmcvY29uZmlnIHwgICAxICsNCiA3IGZpbGVzIGNoYW5nZWQsIDQ5MyBpbnNlcnRp b25zKCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbmV0L3RjX2FjdC90Y19jdGluZm8u aA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3VhcGkvbGludXgvdGNfYWN0L3RjX2N0aW5m by5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ldC9zY2hlZC9hY3RfY3RpbmZvLmMNCg0KZGlmZiAt LWdpdCBhL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19jdGluZm8uaCBiL2luY2x1ZGUvbmV0L3RjX2Fj dC90Y19jdGluZm8uaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4u ODczMzQxMjBkY2I2DQotLS0gL2Rldi9udWxsDQorKysgYi9pbmNsdWRlL25ldC90Y19hY3QvdGNf Y3RpbmZvLmgNCkBAIC0wLDAgKzEsMjggQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMCAqLw0KKyNpZm5kZWYgX19ORVRfVENfQ1RJTkZPX0gNCisjZGVmaW5lIF9fTkVUX1RD X0NUSU5GT19IDQorDQorI2luY2x1ZGUgPG5ldC9hY3RfYXBpLmg+DQorDQorc3RydWN0IHRjZl9j dGluZm9fcGFyYW1zIHsNCisJc3RydWN0IG5ldCAqbmV0Ow0KKwl1MzIgZHNjcG1hc2s7DQorCXUz MiBkc2Nwc3RhdGVtYXNrOw0KKwl1MzIgbWFya21hc2s7DQorCXUxNiB6b25lOw0KKwl1OCBtb2Rl Ow0KKwl1OCBkc2NwbWFza3NoaWZ0Ow0KKwlzdHJ1Y3QgcmN1X2hlYWQgcmN1Ow0KK307DQorDQor c3RydWN0IHRjZl9jdGluZm8gew0KKwlzdHJ1Y3QgdGNfYWN0aW9uIGNvbW1vbjsNCisJc3RydWN0 IHRjZl9jdGluZm9fcGFyYW1zIF9fcmN1ICpwYXJhbXM7DQorCXU2NCBzdGF0c19kc2NwX3NldDsN CisJdTY0IHN0YXRzX2RzY3BfZXJyb3I7DQorCXU2NCBzdGF0c19tYXJrX3NldDsNCit9Ow0KKw0K KyNkZWZpbmUgdG9fY3RpbmZvKGEpICgoc3RydWN0IHRjZl9jdGluZm8gKilhKQ0KKw0KKyNlbmRp ZiAvKiBfX05FVF9UQ19DVElORk9fSCAqLw0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51 eC9wa3RfY2xzLmggYi9pbmNsdWRlL3VhcGkvbGludXgvcGt0X2Nscy5oDQppbmRleCA1MWEwNDk2 Zjc4ZWEuLmE5MzY4MGZjNGJmYSAxMDA2NDQNCi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9wa3Rf Y2xzLmgNCisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmgNCkBAIC0xMDUsNiArMTA1 LDcgQEAgZW51bSB0Y2FfaWQgew0KIAlUQ0FfSURfSUZFID0gVENBX0FDVF9JRkUsDQogCVRDQV9J RF9TQU1QTEUgPSBUQ0FfQUNUX1NBTVBMRSwNCiAJLyogb3RoZXIgYWN0aW9ucyBnbyBoZXJlICov DQorCVRDQV9JRF9DVElORk8sDQogCV9fVENBX0lEX01BWCA9IDI1NQ0KIH07DQogDQpkaWZmIC0t Z2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19jdGluZm8uaCBiL2luY2x1ZGUvdWFw aS9saW51eC90Y19hY3QvdGNfY3RpbmZvLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAw MDAwMDAwMDAwMDAuLjhkMjU0YjgyMTUxYw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvaW5jbHVkZS91 YXBpL2xpbnV4L3RjX2FjdC90Y19jdGluZm8uaA0KQEAgLTAsMCArMSw0MyBAQA0KKy8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovDQor I2lmbmRlZiBfX1VBUElfVENfQ1RJTkZPX0gNCisjZGVmaW5lIF9fVUFQSV9UQ19DVElORk9fSA0K Kw0KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPg0KKyNpbmNsdWRlIDxsaW51eC9wa3RfY2xzLmg+ DQorDQorc3RydWN0IHRjX2N0aW5mbyB7DQorCXRjX2dlbjsNCit9Ow0KKw0KK3N0cnVjdCB0Y19j dGluZm9fZHNjcCB7DQorCV9fdTMyIG1hc2s7DQorCV9fdTMyIHN0YXRlbWFzazsNCit9Ow0KKw0K K3N0cnVjdCB0Y19jdGluZm9fc3RhdHNfZHNjcCB7DQorCV9fdTY0IHNldDsNCisJX191NjQgZXJy b3I7DQorfTsNCisNCitlbnVtIHsNCisJVENBX0NUSU5GT19VTlNQRUMsDQorCVRDQV9DVElORk9f QUNULA0KKwlUQ0FfQ1RJTkZPX1pPTkUsDQorCVRDQV9DVElORk9fRFNDUF9QQVJNUywNCisJVENB X0NUSU5GT19NQVJLX01BU0ssDQorCVRDQV9DVElORk9fTU9ERV9EU0NQLA0KKwlUQ0FfQ1RJTkZP X01PREVfTUFSSywNCisJVENBX0NUSU5GT19TVEFUU19EU0NQLA0KKwlUQ0FfQ1RJTkZPX1NUQVRT X01BUkssDQorCVRDQV9DVElORk9fVE0sDQorCVRDQV9DVElORk9fUEFELA0KKwlfX1RDQV9DVElO Rk9fTUFYDQorfTsNCisjZGVmaW5lIFRDQV9DVElORk9fTUFYIChfX1RDQV9DVElORk9fTUFYIC0g MSkNCisNCitlbnVtIHsNCisJQ1RJTkZPX01PREVfU0VURFNDUAk9IEJJVCgwKSwNCisJQ1RJTkZP X01PREVfU0VUTUFSSwk9IEJJVCgxKQ0KK307DQorDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvbmV0 L3NjaGVkL0tjb25maWcgYi9uZXQvc2NoZWQvS2NvbmZpZw0KaW5kZXggNWMwMmFkOTdlZjIzLi5m NTc3M2VmZmNmZGMgMTAwNjQ0DQotLS0gYS9uZXQvc2NoZWQvS2NvbmZpZw0KKysrIGIvbmV0L3Nj aGVkL0tjb25maWcNCkBAIC04NzYsNiArODc2LDIzIEBAIGNvbmZpZyBORVRfQUNUX0NPTk5NQVJL DQogCSAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRo ZQ0KIAkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhY3RfY29ubm1hcmsuDQogDQorY29uZmlnIE5F VF9BQ1RfQ1RJTkZPDQorICAgICAgICB0cmlzdGF0ZSAiTmV0ZmlsdGVyIENvbm5lY3Rpb24gTWFy ayBBY3Rpb25zIg0KKyAgICAgICAgZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCAmJiBORVRGSUxURVIg JiYgSVBfTkZfSVBUQUJMRVMNCisgICAgICAgIGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLICYmIE5G X0NPTk5UUkFDS19NQVJLDQorICAgICAgICBoZWxwDQorCSAgU2F5IFkgaGVyZSB0byBhbGxvdyB0 cmFuc2ZlciBvZiBhIGNvbm5tYXJrIHN0b3JlZCBpbmZvcm1hdGlvbi4NCisJICBDdXJyZW50IGFj dGlvbnMgdHJhbnNmZXIgY29ubm1hcmsgc3RvcmVkIERTQ1AgaW50bw0KKwkgIGlwdjQvdjYgZGlm ZnNlcnYgYW5kL29yIHRvIHRyYW5zZmVyIGNvbm5tYXJrIHRvIHBhY2tldA0KKwkgIG1hcmsuICBC b3RoIGFyZSB1c2VmdWwgZm9yIHJlc3RvcmluZyBlZ3Jlc3MgYmFzZWQgbWFya3MNCisJICBiYWNr IG9udG8gaW5ncmVzcyBjb25uZWN0aW9ucyBmb3IgcWRpc2MgcHJpb3JpdHkgbWFwcGluZw0KKwkg IHB1cnBvc2VzLg0KKw0KKwkgIElmIHVuc3VyZSwgc2F5IE4uDQorDQorCSAgVG8gY29tcGlsZSB0 aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQ0KKwkgIG1vZHVsZSB3aWxs IGJlIGNhbGxlZCBhY3RfY3RpbmZvLg0KKw0KIGNvbmZpZyBORVRfQUNUX1NLQk1PRA0KICAgICAg ICAgdHJpc3RhdGUgInNrYiBkYXRhIG1vZGlmaWNhdGlvbiBhY3Rpb24iDQogICAgICAgICBkZXBl bmRzIG9uIE5FVF9DTFNfQUNUDQpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL01ha2VmaWxlIGIvbmV0 L3NjaGVkL01ha2VmaWxlDQppbmRleCA4YTQwNDMxZDdiNWMuLmQ1NGJmY2JkNzk4MSAxMDA2NDQN Ci0tLSBhL25ldC9zY2hlZC9NYWtlZmlsZQ0KKysrIGIvbmV0L3NjaGVkL01ha2VmaWxlDQpAQCAt MjEsNiArMjEsNyBAQCBvYmotJChDT05GSUdfTkVUX0FDVF9DU1VNKQkrPSBhY3RfY3N1bS5vDQog b2JqLSQoQ09ORklHX05FVF9BQ1RfVkxBTikJKz0gYWN0X3ZsYW4ubw0KIG9iai0kKENPTkZJR19O RVRfQUNUX0JQRikJKz0gYWN0X2JwZi5vDQogb2JqLSQoQ09ORklHX05FVF9BQ1RfQ09OTk1BUksp CSs9IGFjdF9jb25ubWFyay5vDQorb2JqLSQoQ09ORklHX05FVF9BQ1RfQ1RJTkZPKQkrPSBhY3Rf Y3RpbmZvLm8NCiBvYmotJChDT05GSUdfTkVUX0FDVF9TS0JNT0QpCSs9IGFjdF9za2Jtb2Qubw0K IG9iai0kKENPTkZJR19ORVRfQUNUX0lGRSkJKz0gYWN0X2lmZS5vDQogb2JqLSQoQ09ORklHX05F VF9JRkVfU0tCTUFSSykJKz0gYWN0X21ldGFfbWFyay5vDQpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVk L2FjdF9jdGluZm8uYyBiL25ldC9zY2hlZC9hY3RfY3RpbmZvLmMNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjkzZjk4ZDYyYTk2Mg0KLS0tIC9kZXYvbnVsbA0KKysr IGIvbmV0L3NjaGVkL2FjdF9jdGluZm8uYw0KQEAgLTAsMCArMSw0MDIgQEANCisvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsNCisvKiBuZXQvc2NoZWQvYWN0X2N0aW5mby5jICBu ZXRmaWx0ZXIgY3RpbmZvIGNvbm5tYXJrIGFjdGlvbnMNCisgKg0KKyAqIENvcHlyaWdodCAoYykg MjAxOSBLZXZpbiBEYXJieXNoaXJlLUJyeWFudCA8bGRpckBkYXJieXNoaXJlLWJyeWFudC5tZS51 az4NCisgKi8NCisNCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQorI2luY2x1ZGUgPGxpbnV4 L2luaXQuaD4NCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQorI2luY2x1ZGUgPGxpbnV4L3Nr YnVmZi5oPg0KKyNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4NCisjaW5jbHVkZSA8bGludXgv cGt0X2Nscy5oPg0KKyNpbmNsdWRlIDxsaW51eC9pcC5oPg0KKyNpbmNsdWRlIDxsaW51eC9pcHY2 Lmg+DQorI2luY2x1ZGUgPG5ldC9uZXRsaW5rLmg+DQorI2luY2x1ZGUgPG5ldC9wa3Rfc2NoZWQu aD4NCisjaW5jbHVkZSA8bmV0L2FjdF9hcGkuaD4NCisjaW5jbHVkZSA8bmV0L3BrdF9jbHMuaD4N CisjaW5jbHVkZSA8dWFwaS9saW51eC90Y19hY3QvdGNfY3RpbmZvLmg+DQorI2luY2x1ZGUgPG5l dC90Y19hY3QvdGNfY3RpbmZvLmg+DQorDQorI2luY2x1ZGUgPG5ldC9uZXRmaWx0ZXIvbmZfY29u bnRyYWNrLmg+DQorI2luY2x1ZGUgPG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuaD4N CisjaW5jbHVkZSA8bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg+DQorI2luY2x1 ZGUgPG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3pvbmVzLmg+DQorDQorc3RhdGljIHVuc2ln bmVkIGludCBjdGluZm9fbmV0X2lkOw0KK3N0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uX29wcyBhY3Rf Y3RpbmZvX29wczsNCisNCitzdGF0aWMgdm9pZCB0Y2ZfY3RpbmZvX2RzY3Bfc2V0KHN0cnVjdCBu Zl9jb25uICpjdCwgc3RydWN0IHRjZl9jdGluZm8gKmNhLA0KKwkJCQlzdHJ1Y3QgdGNmX2N0aW5m b19wYXJhbXMgKmNwLA0KKwkJCQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgd2xlbiwgaW50IHBy b3RvKQ0KK3sNCisJdTggZHNjcCwgbmV3ZHNjcDsNCisNCisJbmV3ZHNjcCA9ICgoKGN0LT5tYXJr ICYgY3AtPmRzY3BtYXNrKSA+PiBjcC0+ZHNjcG1hc2tzaGlmdCkgPDwgMikgJg0KKwkJICAgICB+ SU5FVF9FQ05fTUFTSzsNCisNCisJc3dpdGNoIChwcm90bykgew0KKwljYXNlIE5GUFJPVE9fSVBW NDoNCisJCWRzY3AgPSBpcHY0X2dldF9kc2ZpZWxkKGlwX2hkcihza2IpKSAmIH5JTkVUX0VDTl9N QVNLOw0KKwkJaWYgKGRzY3AgIT0gbmV3ZHNjcCkgew0KKwkJCWlmIChsaWtlbHkoIXNrYl90cnlf bWFrZV93cml0YWJsZShza2IsIHdsZW4pKSkgew0KKwkJCQlpcHY0X2NoYW5nZV9kc2ZpZWxkKGlw X2hkcihza2IpLA0KKwkJCQkJCSAgICBJTkVUX0VDTl9NQVNLLA0KKwkJCQkJCSAgICBuZXdkc2Nw KTsNCisJCQkJY2EtPnN0YXRzX2RzY3Bfc2V0Kys7DQorCQkJfSBlbHNlIHsNCisJCQkJY2EtPnN0 YXRzX2RzY3BfZXJyb3IrKzsNCisJCQl9DQorCQl9DQorCQlicmVhazsNCisJY2FzZSBORlBST1RP X0lQVjY6DQorCQlkc2NwID0gaXB2Nl9nZXRfZHNmaWVsZChpcHY2X2hkcihza2IpKSAmIH5JTkVU X0VDTl9NQVNLOw0KKwkJaWYgKGRzY3AgIT0gbmV3ZHNjcCkgew0KKwkJCWlmIChsaWtlbHkoIXNr Yl90cnlfbWFrZV93cml0YWJsZShza2IsIHdsZW4pKSkgew0KKwkJCQlpcHY2X2NoYW5nZV9kc2Zp ZWxkKGlwdjZfaGRyKHNrYiksDQorCQkJCQkJICAgIElORVRfRUNOX01BU0ssDQorCQkJCQkJICAg IG5ld2RzY3ApOw0KKwkJCQljYS0+c3RhdHNfZHNjcF9zZXQrKzsNCisJCQl9IGVsc2Ugew0KKwkJ CQljYS0+c3RhdHNfZHNjcF9lcnJvcisrOw0KKwkJCX0NCisJCX0NCisJCWJyZWFrOw0KKwlkZWZh dWx0Og0KKwkJYnJlYWs7DQorCX0NCit9DQorDQorc3RhdGljIHZvaWQgdGNmX2N0aW5mb19tYXJr X3NldChzdHJ1Y3QgbmZfY29ubiAqY3QsIHN0cnVjdCB0Y2ZfY3RpbmZvICpjYSwNCisJCQkJc3Ry dWN0IHRjZl9jdGluZm9fcGFyYW1zICpjcCwNCisJCQkJc3RydWN0IHNrX2J1ZmYgKnNrYikNCit7 DQorCWNhLT5zdGF0c19tYXJrX3NldCsrOw0KKwlza2ItPm1hcmsgPSBjdC0+bWFyayAmIGNwLT5t YXJrbWFzazsNCit9DQorDQorc3RhdGljIGludCB0Y2ZfY3RpbmZvX2FjdChzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLA0KKwkJCSAgc3RydWN0IHRjZl9yZXN1 bHQgKnJlcykNCit7DQorCWNvbnN0IHN0cnVjdCBuZl9jb25udHJhY2tfdHVwbGVfaGFzaCAqdGhh c2ggPSBOVUxMOw0KKwlzdHJ1Y3QgdGNmX2N0aW5mbyAqY2EgPSB0b19jdGluZm8oYSk7DQorCXN0 cnVjdCBuZl9jb25udHJhY2tfdHVwbGUgdHVwbGU7DQorCXN0cnVjdCBuZl9jb25udHJhY2tfem9u ZSB6b25lOw0KKwllbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbzsNCisJc3RydWN0IHRjZl9j dGluZm9fcGFyYW1zICpjcDsNCisJc3RydWN0IG5mX2Nvbm4gKmN0Ow0KKwlpbnQgcHJvdG8sIHds ZW47DQorCWludCBhY3Rpb247DQorDQorCWNwID0gcmN1X2RlcmVmZXJlbmNlX2JoKGNhLT5wYXJh bXMpOw0KKw0KKwl0Y2ZfbGFzdHVzZV91cGRhdGUoJmNhLT50Y2ZfdG0pOw0KKwlic3RhdHNfdXBk YXRlKCZjYS0+dGNmX2JzdGF0cywgc2tiKTsNCisJYWN0aW9uID0gUkVBRF9PTkNFKGNhLT50Y2Zf YWN0aW9uKTsNCisNCisJd2xlbiA9IHNrYl9uZXR3b3JrX29mZnNldChza2IpOw0KKwlpZiAodGNf c2tiX3Byb3RvY29sKHNrYikgPT0gaHRvbnMoRVRIX1BfSVApKSB7DQorCQl3bGVuICs9IHNpemVv ZihzdHJ1Y3QgaXBoZHIpOw0KKwkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgd2xlbikpDQorCQkJ Z290byBvdXQ7DQorDQorCQlwcm90byA9IE5GUFJPVE9fSVBWNDsNCisJfSBlbHNlIGlmICh0Y19z a2JfcHJvdG9jb2woc2tiKSA9PSBodG9ucyhFVEhfUF9JUFY2KSkgew0KKwkJd2xlbiArPSBzaXpl b2Yoc3RydWN0IGlwdjZoZHIpOw0KKwkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgd2xlbikpDQor CQkJZ290byBvdXQ7DQorDQorCQlwcm90byA9IE5GUFJPVE9fSVBWNjsNCisJfSBlbHNlIHsNCisJ CWdvdG8gb3V0Ow0KKwl9DQorDQorCWN0ID0gbmZfY3RfZ2V0KHNrYiwgJmN0aW5mbyk7DQorCWlm ICghY3QpIHsgLyogbG9vayBoYXJkZXIsIHVzdWFsbHkgaW5ncmVzcyAqLw0KKwkJaWYgKCFuZl9j dF9nZXRfdHVwbGVwcihza2IsIHNrYl9uZXR3b3JrX29mZnNldChza2IpLA0KKwkJCQkgICAgICAg cHJvdG8sIGNwLT5uZXQsICZ0dXBsZSkpDQorCQkJZ290byBvdXQ7DQorCQl6b25lLmlkID0gY3At PnpvbmU7DQorCQl6b25lLmRpciA9IE5GX0NUX0RFRkFVTFRfWk9ORV9ESVI7DQorDQorCQl0aGFz aCA9IG5mX2Nvbm50cmFja19maW5kX2dldChjcC0+bmV0LCAmem9uZSwgJnR1cGxlKTsNCisJCWlm ICghdGhhc2gpDQorCQkJZ290byBvdXQ7DQorDQorCQljdCA9IG5mX2N0X3R1cGxlaGFzaF90b19j dHJhY2sodGhhc2gpOw0KKwl9DQorDQorCWlmIChjcC0+bW9kZSAmIENUSU5GT19NT0RFX1NFVERT Q1ApDQorCQlpZiAoIWNwLT5kc2Nwc3RhdGVtYXNrIHx8IChjdC0+bWFyayAmIGNwLT5kc2Nwc3Rh dGVtYXNrKSkNCisJCQl0Y2ZfY3RpbmZvX2RzY3Bfc2V0KGN0LCBjYSwgY3AsIHNrYiwgd2xlbiwg cHJvdG8pOw0KKw0KKwlpZiAoY3AtPm1vZGUgJiBDVElORk9fTU9ERV9TRVRNQVJLKQ0KKwkJdGNm X2N0aW5mb19tYXJrX3NldChjdCwgY2EsIGNwLCBza2IpOw0KKw0KKwlpZiAodGhhc2gpDQorCQlu Zl9jdF9wdXQoY3QpOw0KK291dDoNCisJcmV0dXJuIGFjdGlvbjsNCit9DQorDQorc3RhdGljIGNv bnN0IHN0cnVjdCBubGFfcG9saWN5IGN0aW5mb19wb2xpY3lbVENBX0NUSU5GT19NQVggKyAxXSA9 IHsNCisJW1RDQV9DVElORk9fQUNUXSA9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgdGNfY3RpbmZv KSB9LA0KKwlbVENBX0NUSU5GT19aT05FXSA9IHsgLnR5cGUgPSBOTEFfVTE2IH0sDQorCVtUQ0Ff Q1RJTkZPX01PREVfRFNDUF0gPSB7IC50eXBlID0gTkxBX0ZMQUcgfSwNCisJW1RDQV9DVElORk9f TU9ERV9NQVJLXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LA0KKwlbVENBX0NUSU5GT19EU0NQX1BB Uk1TXSA9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgdGNfY3RpbmZvX2RzY3ApIH0sDQorfTsNCisN CitzdGF0aWMgaW50IHRjZl9jdGluZm9faW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0 dHIgKm5sYSwNCisJCQkgICBzdHJ1Y3QgbmxhdHRyICplc3QsIHN0cnVjdCB0Y19hY3Rpb24gKiph LA0KKwkJCSAgIGludCBvdnIsIGludCBiaW5kLCBib29sIHJ0bmxfaGVsZCwNCisJCQkgICBzdHJ1 Y3QgdGNmX3Byb3RvICp0cCwNCisJCQkgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2sp DQorew0KKwlzdHJ1Y3QgdGNfYWN0aW9uX25ldCAqdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGN0aW5m b19uZXRfaWQpOw0KKwlzdHJ1Y3QgbmxhdHRyICp0YltUQ0FfQ1RJTkZPX01BWCArIDFdOw0KKwlz dHJ1Y3QgdGNmX2N0aW5mb19wYXJhbXMgKmNwX25ldzsNCisJc3RydWN0IHRjZl9jaGFpbiAqZ290 b19jaCA9IE5VTEw7DQorCXN0cnVjdCB0Y19jdGluZm9fZHNjcCAqZHNjcHBhcm07DQorCXN0cnVj dCB0Y2ZfY3RpbmZvICpjaTsNCisJc3RydWN0IHRjX2N0aW5mbyAqYWN0cGFybTsNCisJaW50IHJl dCA9IDAsIGVyciwgaTsNCisNCisJaWYgKCFubGEpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJ ZXJyID0gbmxhX3BhcnNlX25lc3RlZCh0YiwgVENBX0NUSU5GT19NQVgsIG5sYSwgY3RpbmZvX3Bv bGljeSwgTlVMTCk7DQorCWlmIChlcnIgPCAwKQ0KKwkJcmV0dXJuIGVycjsNCisNCisJaWYgKCF0 YltUQ0FfQ1RJTkZPX0FDVF0pDQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJaWYgKHRiW1RDQV9D VElORk9fTU9ERV9EU0NQXSAmJiAhdGJbVENBX0NUSU5GT19EU0NQX1BBUk1TXSkNCisJCXJldHVy biAtRUlOVkFMOw0KKw0KKwlhY3RwYXJtID0gbmxhX2RhdGEodGJbVENBX0NUSU5GT19BQ1RdKTsN CisJZHNjcHBhcm0gPSBubGFfZGF0YSh0YltUQ0FfQ1RJTkZPX0RTQ1BfUEFSTVNdKTsNCisNCisJ aWYgKGRzY3BwYXJtKSB7DQorCQkvKiBuZWVkIGF0IGxlYXN0IGNvbnRpZ3VvdXMgNiBiaXQgbWFz ayAqLw0KKwkJaSA9IGRzY3BwYXJtLT5tYXNrID8gX19mZnMoZHNjcHBhcm0tPm1hc2spIDogMDsN CisJCWlmICgoMHgzZiAmIChkc2NwcGFybS0+bWFzayA+PiBpKSkgIT0gMHgzZikNCisJCQlyZXR1 cm4gLUVJTlZBTDsNCisJCS8qIG1hc2sgJiBzdGF0ZW1hc2sgbXVzdCBub3Qgb3ZlcmxhcCAqLw0K KwkJaWYgKGRzY3BwYXJtLT5tYXNrICYgZHNjcHBhcm0tPnN0YXRlbWFzaykNCisJCQlyZXR1cm4g LUVJTlZBTDsNCisJfQ0KKw0KKwkvKiBkb25lIHRoZSB2YWxpZGF0aW9uOm5vdyB0byB0aGUgYWN0 dWFsIGFjdGlvbiBhbGxvY2F0aW9uICovDQorCWVyciA9IHRjZl9pZHJfY2hlY2tfYWxsb2ModG4s ICZhY3RwYXJtLT5pbmRleCwgYSwgYmluZCk7DQorCWlmICghZXJyKSB7DQorCQlyZXQgPSB0Y2Zf aWRyX2NyZWF0ZSh0biwgYWN0cGFybS0+aW5kZXgsIGVzdCwgYSwNCisJCQkJICAgICAmYWN0X2N0 aW5mb19vcHMsIGJpbmQsIGZhbHNlKTsNCisJCWlmIChyZXQpIHsNCisJCQl0Y2ZfaWRyX2NsZWFu dXAodG4sIGFjdHBhcm0tPmluZGV4KTsNCisJCQlyZXR1cm4gcmV0Ow0KKwkJfQ0KKwl9IGVsc2Ug aWYgKGVyciA+IDApIHsNCisJCWlmIChiaW5kKSAvKiBkb24ndCBvdmVycmlkZSBkZWZhdWx0cyAq Lw0KKwkJCXJldHVybiAwOw0KKwkJaWYgKCFvdnIpIHsNCisJCQl0Y2ZfaWRyX3JlbGVhc2UoKmEs IGJpbmQpOw0KKwkJCXJldHVybiAtRUVYSVNUOw0KKwkJfQ0KKwl9IGVsc2Ugew0KKwkJcmV0dXJu IGVycjsNCisJfQ0KKw0KKwllcnIgPSB0Y2ZfYWN0aW9uX2NoZWNrX2N0cmxhY3QoYWN0cGFybS0+ YWN0aW9uLCB0cCwgJmdvdG9fY2gsIGV4dGFjayk7DQorCWlmIChlcnIgPCAwKQ0KKwkJZ290byBy ZWxlYXNlX2lkcjsNCisNCisJY2kgPSB0b19jdGluZm8oKmEpOw0KKw0KKwljcF9uZXcgPSBremFs bG9jKHNpemVvZigqY3BfbmV3KSwgR0ZQX0tFUk5FTCk7DQorCWlmICh1bmxpa2VseSghY3BfbmV3 KSkgew0KKwkJZXJyID0gLUVOT01FTTsNCisJCWdvdG8gcHV0X2NoYWluOw0KKwl9DQorDQorCWNw X25ldy0+bmV0ID0gbmV0Ow0KKwljcF9uZXctPnpvbmUgPSB0YltUQ0FfQ1RJTkZPX1pPTkVdID8N CisJCQlubGFfZ2V0X3UxNih0YltUQ0FfQ1RJTkZPX1pPTkVdKSA6IDA7DQorCWlmIChkc2NwcGFy bSkgew0KKwkJY3BfbmV3LT5kc2NwbWFzayA9IGRzY3BwYXJtLT5tYXNrOw0KKwkJY3BfbmV3LT5k c2NwbWFza3NoaWZ0ID0gY3BfbmV3LT5kc2NwbWFzayA/DQorCQkJCV9fZmZzKGNwX25ldy0+ZHNj cG1hc2spIDogMDsNCisJCWNwX25ldy0+ZHNjcHN0YXRlbWFzayA9IGRzY3BwYXJtLT5zdGF0ZW1h c2s7DQorCX0NCisJY3BfbmV3LT5tYXJrbWFzayA9IHRiW1RDQV9DVElORk9fTUFSS19NQVNLXSA/ DQorCQkJbmxhX2dldF91MzIodGJbVENBX0NUSU5GT19NQVJLX01BU0tdKSA6IH4wOw0KKw0KKwlp ZiAodGJbVENBX0NUSU5GT19NT0RFX0RTQ1BdKQ0KKwkJY3BfbmV3LT5tb2RlIHw9IENUSU5GT19N T0RFX1NFVERTQ1A7DQorCWVsc2UNCisJCWNwX25ldy0+bW9kZSAmPSB+Q1RJTkZPX01PREVfU0VU RFNDUDsNCisNCisJaWYgKHRiW1RDQV9DVElORk9fTU9ERV9NQVJLXSkNCisJCWNwX25ldy0+bW9k ZSB8PSBDVElORk9fTU9ERV9TRVRNQVJLOw0KKwllbHNlDQorCQljcF9uZXctPm1vZGUgJj0gfkNU SU5GT19NT0RFX1NFVE1BUks7DQorDQorCXNwaW5fbG9ja19iaCgmY2ktPnRjZl9sb2NrKTsNCisJ Z290b19jaCA9IHRjZl9hY3Rpb25fc2V0X2N0cmxhY3QoKmEsIGFjdHBhcm0tPmFjdGlvbiwgZ290 b19jaCk7DQorCXJjdV9zd2FwX3Byb3RlY3RlZChjaS0+cGFyYW1zLCBjcF9uZXcsDQorCQkJICAg bG9ja2RlcF9pc19oZWxkKCZjaS0+dGNmX2xvY2spKTsNCisJc3Bpbl91bmxvY2tfYmgoJmNpLT50 Y2ZfbG9jayk7DQorDQorCWlmIChnb3RvX2NoKQ0KKwkJdGNmX2NoYWluX3B1dF9ieV9hY3QoZ290 b19jaCk7DQorCWlmIChjcF9uZXcpDQorCQlrZnJlZV9yY3UoY3BfbmV3LCByY3UpOw0KKw0KKwlp ZiAocmV0ID09IEFDVF9QX0NSRUFURUQpDQorCQl0Y2ZfaWRyX2luc2VydCh0biwgKmEpOw0KKw0K KwlyZXR1cm4gcmV0Ow0KKw0KK3B1dF9jaGFpbjoNCisJaWYgKGdvdG9fY2gpDQorCQl0Y2ZfY2hh aW5fcHV0X2J5X2FjdChnb3RvX2NoKTsNCityZWxlYXNlX2lkcjoNCisJdGNmX2lkcl9yZWxlYXNl KCphLCBiaW5kKTsNCisJcmV0dXJuIGVycjsNCit9DQorDQorc3RhdGljIGludCB0Y2ZfY3RpbmZv X2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjX2FjdGlvbiAqYSwNCisJCQkgICBp bnQgYmluZCwgaW50IHJlZikNCit7DQorCXN0cnVjdCB0Y2ZfY3RpbmZvICpjaSA9IHRvX2N0aW5m byhhKTsNCisJc3RydWN0IHRjX2N0aW5mbyBvcHQgPSB7DQorCQkucmVmY250ICA9IHJlZmNvdW50 X3JlYWQoJmNpLT50Y2ZfcmVmY250KSAtIHJlZiwNCisJCS5iaW5kY250ID0gYXRvbWljX3JlYWQo JmNpLT50Y2ZfYmluZGNudCkgLSBiaW5kLA0KKwkJLmluZGV4ICAgPSBjaS0+dGNmX2luZGV4LA0K Kwl9Ow0KKwl1bnNpZ25lZCBjaGFyICpiID0gc2tiX3RhaWxfcG9pbnRlcihza2IpOw0KKwlzdHJ1 Y3QgdGNfY3RpbmZvX3N0YXRzX2RzY3AgZHNjcHN0YXRzOw0KKwlzdHJ1Y3QgdGNfY3RpbmZvX2Rz Y3AgZHNjcHBhcm07DQorCXN0cnVjdCB0Y2ZfY3RpbmZvX3BhcmFtcyAqY3A7DQorCXN0cnVjdCB0 Y2ZfdCB0Ow0KKw0KKwlzcGluX2xvY2tfYmgoJmNpLT50Y2ZfbG9jayk7DQorCWNwID0gcmN1X2Rl cmVmZXJlbmNlX3Byb3RlY3RlZChjaS0+cGFyYW1zLA0KKwkJCQkgICAgICAgbG9ja2RlcF9pc19o ZWxkKCZjaS0+dGNmX2xvY2spKTsNCisJb3B0LmFjdGlvbiA9IGNpLT50Y2ZfYWN0aW9uOw0KKw0K KwlpZiAobmxhX3B1dChza2IsIFRDQV9DVElORk9fQUNULCBzaXplb2Yob3B0KSwgJm9wdCkpDQor CQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsNCisNCisJaWYgKGNwLT5tb2RlICYgQ1RJTkZPX01PREVf U0VURFNDUCkgew0KKwkJZHNjcHBhcm0ubWFzayA9IGNwLT5kc2NwbWFzazsNCisJCWRzY3BwYXJt LnN0YXRlbWFzayA9IGNwLT5kc2Nwc3RhdGVtYXNrOw0KKwkJaWYgKG5sYV9wdXQoc2tiLCBUQ0Ff Q1RJTkZPX0RTQ1BfUEFSTVMsIHNpemVvZihkc2NwcGFybSksDQorCQkJICAgICZkc2NwcGFybSkp DQorCQkJZ290byBubGFfcHV0X2ZhaWx1cmU7DQorDQorCQlpZiAobmxhX3B1dF9mbGFnKHNrYiwg VENBX0NUSU5GT19NT0RFX0RTQ1ApKQ0KKwkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOw0KKw0KKwkJ ZHNjcHN0YXRzLnNldCA9IGNpLT5zdGF0c19kc2NwX3NldDsNCisJCWRzY3BzdGF0cy5lcnJvciA9 IGNpLT5zdGF0c19kc2NwX2Vycm9yOw0KKwkJaWYgKG5sYV9wdXQoc2tiLCBUQ0FfQ1RJTkZPX1NU QVRTX0RTQ1AsIHNpemVvZihkc2Nwc3RhdHMpLA0KKwkJCSAgICAmZHNjcHN0YXRzKSkNCisJCQln b3RvIG5sYV9wdXRfZmFpbHVyZTsNCisJfQ0KKw0KKwlpZiAoY3AtPm1vZGUgJiBDVElORk9fTU9E RV9TRVRNQVJLKSB7DQorCQlpZiAobmxhX3B1dF91MzIoc2tiLCBUQ0FfQ1RJTkZPX01BUktfTUFT SywgY3AtPm1hcmttYXNrKSkNCisJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsNCisNCisJCWlmIChu bGFfcHV0X2ZsYWcoc2tiLCBUQ0FfQ1RJTkZPX01PREVfTUFSSykpDQorCQkJZ290byBubGFfcHV0 X2ZhaWx1cmU7DQorDQorCQlpZiAobmxhX3B1dF91NjRfNjRiaXQoc2tiLCBUQ0FfQ1RJTkZPX1NU QVRTX01BUkssDQorCQkJCSAgICAgIGNpLT5zdGF0c19tYXJrX3NldCwgVENBX0NUSU5GT19QQUQp KQ0KKwkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOw0KKwl9DQorDQorCWlmIChjcC0+em9uZSkgew0K KwkJaWYgKG5sYV9wdXRfdTE2KHNrYiwgVENBX0NUSU5GT19aT05FLCBjcC0+em9uZSkpDQorCQkJ Z290byBubGFfcHV0X2ZhaWx1cmU7DQorCX0NCisNCisJdGNmX3RtX2R1bXAoJnQsICZjaS0+dGNm X3RtKTsNCisJaWYgKG5sYV9wdXRfNjRiaXQoc2tiLCBUQ0FfQ1RJTkZPX1RNLCBzaXplb2YodCks ICZ0LCBUQ0FfQ1RJTkZPX1BBRCkpDQorCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsNCisNCisJc3Bp bl91bmxvY2tfYmgoJmNpLT50Y2ZfbG9jayk7DQorCXJldHVybiBza2ItPmxlbjsNCisNCitubGFf cHV0X2ZhaWx1cmU6DQorCXNwaW5fdW5sb2NrX2JoKCZjaS0+dGNmX2xvY2spOw0KKwlubG1zZ190 cmltKHNrYiwgYik7DQorCXJldHVybiAtMTsNCit9DQorDQorc3RhdGljIGludCB0Y2ZfY3RpbmZv X3dhbGtlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsDQorCQkJICAgICBz dHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IsIGludCB0eXBlLA0KKwkJCSAgICAgY29uc3Qgc3Ry dWN0IHRjX2FjdGlvbl9vcHMgKm9wcywNCisJCQkgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sg KmV4dGFjaykNCit7DQorCXN0cnVjdCB0Y19hY3Rpb25fbmV0ICp0biA9IG5ldF9nZW5lcmljKG5l dCwgY3RpbmZvX25ldF9pZCk7DQorDQorCXJldHVybiB0Y2ZfZ2VuZXJpY193YWxrZXIodG4sIHNr YiwgY2IsIHR5cGUsIG9wcywgZXh0YWNrKTsNCit9DQorDQorc3RhdGljIGludCB0Y2ZfY3RpbmZv X3NlYXJjaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0Y19hY3Rpb24gKiphLCB1MzIgaW5kZXgp DQorew0KKwlzdHJ1Y3QgdGNfYWN0aW9uX25ldCAqdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGN0aW5m b19uZXRfaWQpOw0KKw0KKwlyZXR1cm4gdGNmX2lkcl9zZWFyY2godG4sIGEsIGluZGV4KTsNCit9 DQorDQorc3RhdGljIHN0cnVjdCB0Y19hY3Rpb25fb3BzIGFjdF9jdGluZm9fb3BzID0gew0KKwku a2luZAkJPQkiY3RpbmZvIiwNCisJLmlkCQk9CVRDQV9JRF9DVElORk8sDQorCS5vd25lcgkJPQlU SElTX01PRFVMRSwNCisJLmFjdAkJPQl0Y2ZfY3RpbmZvX2FjdCwNCisJLmR1bXAJCT0JdGNmX2N0 aW5mb19kdW1wLA0KKwkuaW5pdAkJPQl0Y2ZfY3RpbmZvX2luaXQsDQorCS53YWxrCQk9CXRjZl9j dGluZm9fd2Fsa2VyLA0KKwkubG9va3VwCQk9CXRjZl9jdGluZm9fc2VhcmNoLA0KKwkuc2l6ZQkJ PQlzaXplb2Yoc3RydWN0IHRjZl9jdGluZm8pLA0KK307DQorDQorc3RhdGljIF9fbmV0X2luaXQg aW50IGN0aW5mb19pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpDQorew0KKwlzdHJ1Y3QgdGNfYWN0 aW9uX25ldCAqdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGN0aW5mb19uZXRfaWQpOw0KKw0KKwlyZXR1 cm4gdGNfYWN0aW9uX25ldF9pbml0KHRuLCAmYWN0X2N0aW5mb19vcHMpOw0KK30NCisNCitzdGF0 aWMgdm9pZCBfX25ldF9leGl0IGN0aW5mb19leGl0X25ldChzdHJ1Y3QgbGlzdF9oZWFkICpuZXRf bGlzdCkNCit7DQorCXRjX2FjdGlvbl9uZXRfZXhpdChuZXRfbGlzdCwgY3RpbmZvX25ldF9pZCk7 DQorfQ0KKw0KK3N0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgY3RpbmZvX25ldF9vcHMg PSB7DQorCS5pbml0ID0gY3RpbmZvX2luaXRfbmV0LA0KKwkuZXhpdF9iYXRjaCA9IGN0aW5mb19l eGl0X25ldCwNCisJLmlkICAgPSAmY3RpbmZvX25ldF9pZCwNCisJLnNpemUgPSBzaXplb2Yoc3Ry dWN0IHRjX2FjdGlvbl9uZXQpLA0KK307DQorDQorc3RhdGljIGludCBfX2luaXQgY3RpbmZvX2lu aXRfbW9kdWxlKHZvaWQpDQorew0KKwlyZXR1cm4gdGNmX3JlZ2lzdGVyX2FjdGlvbigmYWN0X2N0 aW5mb19vcHMsICZjdGluZm9fbmV0X29wcyk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIF9fZXhpdCBj dGluZm9fY2xlYW51cF9tb2R1bGUodm9pZCkNCit7DQorCXRjZl91bnJlZ2lzdGVyX2FjdGlvbigm YWN0X2N0aW5mb19vcHMsICZjdGluZm9fbmV0X29wcyk7DQorfQ0KKw0KK21vZHVsZV9pbml0KGN0 aW5mb19pbml0X21vZHVsZSk7DQorbW9kdWxlX2V4aXQoY3RpbmZvX2NsZWFudXBfbW9kdWxlKTsN CitNT0RVTEVfQVVUSE9SKCJLZXZpbiBEYXJieXNoaXJlLUJyeWFudCA8bGRpckBkYXJieXNoaXJl LWJyeWFudC5tZS51az4iKTsNCitNT0RVTEVfREVTQ1JJUFRJT04oIkNvbm5lY3Rpb24gdHJhY2tp bmcgbWFyayBhY3Rpb25zIik7DQorTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KZGlmZiAtLWdpdCBh L3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvY29uZmlnIGIvdG9vbHMvdGVzdGlu Zy9zZWxmdGVzdHMvdGMtdGVzdGluZy9jb25maWcNCmluZGV4IDIwMzMwMjA2NTQ1OC4uYjIzNWVm ZDU1MzY3IDEwMDY0NA0KLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy9j b25maWcNCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvY29uZmlnDQpA QCAtMzgsNiArMzgsNyBAQCBDT05GSUdfTkVUX0FDVF9DU1VNPW0NCiBDT05GSUdfTkVUX0FDVF9W TEFOPW0NCiBDT05GSUdfTkVUX0FDVF9CUEY9bQ0KIENPTkZJR19ORVRfQUNUX0NPTk5NQVJLPW0N CitDT05GSUdfTkVUX0FDVF9DVElORk89bQ0KIENPTkZJR19ORVRfQUNUX1NLQk1PRD1tDQogQ09O RklHX05FVF9BQ1RfSUZFPW0NCiBDT05GSUdfTkVUX0FDVF9UVU5ORUxfS0VZPW0NCi0tIA0KMi4y MC4xIChBcHBsZSBHaXQtMTE3KQ0KDQo=