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.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 207A0C49ED7 for ; Thu, 19 Sep 2019 13:53:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D7DE021D7C for ; Thu, 19 Sep 2019 13:53:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="XfnCye7o" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403904AbfISNw7 (ORCPT ); Thu, 19 Sep 2019 09:52:59 -0400 Received: from mail-eopbgr790080.outbound.protection.outlook.com ([40.107.79.80]:37760 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2403857AbfISNw4 (ORCPT ); Thu, 19 Sep 2019 09:52:56 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MzbMjwW1+hlBa6llXmfmKEQcHfKiq9D/e72fWxM+Nb6ftgHO4Dt2UVOLSK2vSW0g/nPBLL0gc4xdwn9A/2CJNlKafekjvrWT0Whjy7JI/aswVSOMAwIJctZuag4RFJkLG02uQQaL66/bdgYmZGsRTdJBQgC1nnDdp5FpdTPjqtcdyO37HgiyeNkq2a3jLHTaCd72wrwR0/V82Wnqc9JDpB1nvnJ/C2Co06MXRk4GEjDu6VWb9h0kN8udbiRALvMO80HCtKvknxJYhKXsm/xAW6etC4IWVIVxyl7dJQA1A1wq+tVFNqhS8naivaa6vTdFFVYlqHeIld0KL67jvJDJ3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GEnLjyDEuXeDdPxSNNDvzPsmumkrC5RxkathgWKZcBc=; b=FjC7WOalr75285tWVk8wcZsQeZDPK3p22gwr/6FBvZWe87sTVarWZHL5zHzE+3bTBDq2xtdB0iXIGalZZZcXS0J9NopeBgf8+PhMUnD6qVNFqxKGpyN4K68rJ5iWY3dhxxIARJAI0XjxS/Cei2lCFpz25kB0KUyrmfLBo8kfPIyKM+8xNPwISm0qL+F3y3a+iA8CGBxlAzYB2SKVrkKkxAuc844Q/YbyyLX4lymbqB6WO2DetkBIESVGBUz/ooQfc+JqcfIVB58ZPAn2OWkAtVYdQq2nYTzJzsphpawfx/TaOPkjJ5SvlJVK1NMU/Sb6ItlP2sSLdD/5jIusVDynYQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GEnLjyDEuXeDdPxSNNDvzPsmumkrC5RxkathgWKZcBc=; b=XfnCye7odB94itQJSRgMgp2qtEIVzCZzeuApVXzZypWs/QwS3KQrMpvNYLr5pYL3NYX2MsyK7XAHbhPHbSAA4T1gbEWCqkUUg/VhdlvrHafSKzGF9TBZcXHnWW+hat4pgHGYktOTG+oS9E6ZEZkd93rxnEFZpNBmrn10LGXON5c= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (20.179.149.217) by MN2PR11MB4400.namprd11.prod.outlook.com (52.135.37.204) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2263.20; Thu, 19 Sep 2019 13:52:42 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::45dc:e073:4446:4bf8]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::45dc:e073:4446:4bf8%3]) with mapi id 15.20.2263.023; Thu, 19 Sep 2019 13:52:41 +0000 From: Jerome Pouiller To: "devel@driverdev.osuosl.org" , "linux-wireless@vger.kernel.org" CC: "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Greg Kroah-Hartman , Kalle Valo , "David S . Miller" , David Le Goff , Jerome Pouiller Subject: [PATCH v2 18/20] staging: wfx: allow to scan networks Thread-Topic: [PATCH v2 18/20] staging: wfx: allow to scan networks Thread-Index: AQHVbvGAMHyOGqHb702s99l0aeVg1Q== Date: Thu, 19 Sep 2019 13:52:40 +0000 Message-ID: <20190919135220.30663-19-Jerome.Pouiller@silabs.com> References: <20190919135220.30663-1-Jerome.Pouiller@silabs.com> In-Reply-To: <20190919135220.30663-1-Jerome.Pouiller@silabs.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=Jerome.Pouiller@silabs.com; x-originating-ip: [37.71.187.125] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6a81c93f-8a06-4edf-51b4-08d73d08a431 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600167)(711020)(4605104)(1401327)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:MN2PR11MB4400; x-ms-traffictypediagnostic: MN2PR11MB4400: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:127; x-forefront-prvs: 016572D96D x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(1496009)(376002)(39850400004)(136003)(366004)(396003)(346002)(189003)(199004)(3846002)(76176011)(8676002)(76116006)(476003)(25786009)(2616005)(6116002)(54906003)(71190400001)(6436002)(102836004)(6486002)(36756003)(186003)(71200400001)(26005)(305945005)(6512007)(99286004)(6506007)(91956017)(7736002)(446003)(8936002)(256004)(81156014)(14444005)(2906002)(66066001)(30864003)(107886003)(4326008)(86362001)(14454004)(478600001)(64756008)(81166006)(2501003)(486006)(66574012)(316002)(66946007)(66446008)(66556008)(5660300002)(11346002)(66476007)(1076003)(110136005);DIR:OUT;SFP:1101;SCL:1;SRVR:MN2PR11MB4400;H:MN2PR11MB4063.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: silabs.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: wI/vxpLRsaO58hVsxfSUHBQsOuAGG2yDfsnl2SPci+p82U+HsM+KERH5fWpwrSCamOwdZaHCMYshz6pWp9C1m7oiRKLnZr2CZwi8q1xlABx+gF1AqxY6wuIGv172YyjWiiGAhNSNWKJX5m0xx4L7bt809gp2yGhx4RUTXNp3YoZrFKe03+StkO78UU2tz8Brw/dxuRi4expuv9O5V1XJbDoqirYcoOJIjyUxqgMLt7iT6h19ZvoQeL/4WTvnBrQt7da6aIN7mLlTD25aQz3GK5FJMpFhfqtrcLAsRB48IfdFP5uco/kpiEcqRvtFJfgzCFM+/d0VlxEU92oFtIEWuw3xRo5IHMEeVgU8gtuJ2WzpR3BqDpoqqq6Jm19wRL3IGXkB55W3dvIjG15t2u8BohoTpuyyRD3Bi5lQfhWYUD4= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6a81c93f-8a06-4edf-51b4-08d73d08a431 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Sep 2019 13:52:40.6110 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 8RTDRYZttJT4qdZsPOkK6nbvB82ESzEwumPDWZCBFt1Io3VMaJ9lmGrleJTAMG+SFSwOUGovnIfHVmT/mLXrJQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4400 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPg0KDQpT aWduZWQtb2ZmLWJ5OiBKw6lyw7RtZSBQb3VpbGxlciA8amVyb21lLnBvdWlsbGVyQHNpbGFicy5j b20+DQotLS0NCiBkcml2ZXJzL3N0YWdpbmcvd2Z4L01ha2VmaWxlIHwgICAxICsNCiBkcml2ZXJz L3N0YWdpbmcvd2Z4L2JoLmMgICAgIHwgICAyICstDQogZHJpdmVycy9zdGFnaW5nL3dmeC9oaWZf cnguYyB8ICAxMyArKw0KIGRyaXZlcnMvc3RhZ2luZy93ZngvbWFpbi5jICAgfCAgIDUgKw0KIGRy aXZlcnMvc3RhZ2luZy93Zngvc2Nhbi5jICAgfCAyNDkgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysNCiBkcml2ZXJzL3N0YWdpbmcvd2Z4L3NjYW4uaCAgIHwgIDQyICsrKysrKw0K IGRyaXZlcnMvc3RhZ2luZy93Zngvc3RhLmMgICAgfCAgMjMgKysrLQ0KIGRyaXZlcnMvc3RhZ2lu Zy93Zngvc3RhLmggICAgfCAgIDQgKw0KIGRyaXZlcnMvc3RhZ2luZy93Zngvd2Z4LmggICAgfCAg MTEgKysNCiA5IGZpbGVzIGNoYW5nZWQsIDM0OCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvd2Z4L3NjYW4uYw0KIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvd2Z4L3NjYW4uaA0KDQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zdGFnaW5nL3dmeC9NYWtlZmlsZSBiL2RyaXZlcnMvc3RhZ2luZy93ZngvTWFrZWZp bGUNCmluZGV4IGQ5ZTIxNTE1ZDA4ZS4uMmI4YTVmYTg2ZmFjIDEwMDY0NA0KLS0tIGEvZHJpdmVy cy9zdGFnaW5nL3dmeC9NYWtlZmlsZQ0KKysrIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9NYWtlZmls ZQ0KQEAgLTEyLDYgKzEyLDcgQEAgd2Z4LXkgOj0gXA0KIAlxdWV1ZS5vIFwNCiAJZGF0YV90eC5v IFwNCiAJZGF0YV9yeC5vIFwNCisJc2Nhbi5vIFwNCiAJc3RhLm8gXA0KIAltYWluLm8gXA0KIAlz dGEubyBcDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dmeC9iaC5jIGIvZHJpdmVycy9z dGFnaW5nL3dmeC9iaC5jDQppbmRleCBlZDgxYzM5MjRkOTguLjYwMDBjMDNiYjY1OCAxMDA2NDQN Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZngvYmguYw0KKysrIGIvZHJpdmVycy9zdGFnaW5nL3dm eC9iaC5jDQpAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRpYyB2b2lkIGJoX3dvcmsoc3RydWN0IHdv cmtfc3RydWN0ICp3b3JrKQ0KIA0KIAlpZiAobGFzdF9vcF9pc19yeCkNCiAJCWFja19zZGlvX2Rh dGEod2Rldik7DQotCWlmICghd2Rldi0+aGlmLnR4X2J1ZmZlcnNfdXNlZCAmJiAhd29ya19wZW5k aW5nKHdvcmspKSB7DQorCWlmICghd2Rldi0+aGlmLnR4X2J1ZmZlcnNfdXNlZCAmJiAhd29ya19w ZW5kaW5nKHdvcmspICYmICFhdG9taWNfcmVhZCgmd2Rldi0+c2Nhbl9pbl9wcm9ncmVzcykpIHsN CiAJCWRldmljZV9yZWxlYXNlKHdkZXYpOw0KIAkJcmVsZWFzZV9jaGlwID0gdHJ1ZTsNCiAJfQ0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZngvaGlmX3J4LmMgYi9kcml2ZXJzL3N0YWdp bmcvd2Z4L2hpZl9yeC5jDQppbmRleCBjMDc5ODRiMDUzNWQuLmQzODZmYWIwYTkwZiAxMDA2NDQN Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZngvaGlmX3J4LmMNCisrKyBiL2RyaXZlcnMvc3RhZ2lu Zy93ZngvaGlmX3J4LmMNCkBAIC0xMSw2ICsxMSw3IEBADQogDQogI2luY2x1ZGUgImhpZl9yeC5o Ig0KICNpbmNsdWRlICJ3ZnguaCINCisjaW5jbHVkZSAic2Nhbi5oIg0KICNpbmNsdWRlICJkYXRh X3J4LmgiDQogI2luY2x1ZGUgInNlY3VyZV9saW5rLmgiDQogI2luY2x1ZGUgImhpZl9hcGlfY21k LmgiDQpAQCAtMTQzLDYgKzE0NCwxNyBAQCBzdGF0aWMgaW50IGhpZl9yZWNlaXZlX2luZGljYXRp b24oc3RydWN0IHdmeF9kZXYgKndkZXYsIHN0cnVjdCBoaWZfbXNnICpoaWYsIHZvaQ0KIAlyZXR1 cm4gMDsNCiB9DQogDQorc3RhdGljIGludCBoaWZfc2Nhbl9jb21wbGV0ZV9pbmRpY2F0aW9uKHN0 cnVjdCB3ZnhfZGV2ICp3ZGV2LCBzdHJ1Y3QgaGlmX21zZyAqaGlmLCB2b2lkICpidWYpDQorew0K KwlzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiA9IHdkZXZfdG9fd3ZpZih3ZGV2LCBoaWYtPmludGVyZmFj ZSk7DQorCXN0cnVjdCBoaWZfaW5kX3NjYW5fY21wbCAqYm9keSA9IGJ1ZjsNCisNCisJV0FSTl9P Tighd3ZpZik7DQorCXdmeF9zY2FuX2NvbXBsZXRlX2NiKHd2aWYsIGJvZHkpOw0KKw0KKwlyZXR1 cm4gMDsNCit9DQorDQogc3RhdGljIGludCBoaWZfam9pbl9jb21wbGV0ZV9pbmRpY2F0aW9uKHN0 cnVjdCB3ZnhfZGV2ICp3ZGV2LCBzdHJ1Y3QgaGlmX21zZyAqaGlmLCB2b2lkICpidWYpDQogew0K IAlzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiA9IHdkZXZfdG9fd3ZpZih3ZGV2LCBoaWYtPmludGVyZmFj ZSk7DQpAQCAtMjMwLDYgKzI0Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgew0KIAl7IEhJRl9J TkRfSURfU1RBUlRVUCwgICAgICAgICAgICAgIGhpZl9zdGFydHVwX2luZGljYXRpb24gfSwNCiAJ eyBISUZfSU5EX0lEX1dBS0VVUCwgICAgICAgICAgICAgICBoaWZfd2FrZXVwX2luZGljYXRpb24g fSwNCiAJeyBISUZfSU5EX0lEX0pPSU5fQ09NUExFVEUsICAgICAgICBoaWZfam9pbl9jb21wbGV0 ZV9pbmRpY2F0aW9uIH0sDQorCXsgSElGX0lORF9JRF9TQ0FOX0NNUEwsICAgICAgICAgICAgaGlm X3NjYW5fY29tcGxldGVfaW5kaWNhdGlvbiB9LA0KIAl7IEhJRl9JTkRfSURfU0xfRVhDSEFOR0Vf UFVCX0tFWVMsIGhpZl9rZXlzX2luZGljYXRpb24gfSwNCiAJeyBISUZfSU5EX0lEX0dFTkVSSUMs ICAgICAgICAgICAgICBoaWZfZ2VuZXJpY19pbmRpY2F0aW9uIH0sDQogCXsgSElGX0lORF9JRF9F UlJPUiwgICAgICAgICAgICAgICAgaGlmX2Vycm9yX2luZGljYXRpb24gfSwNCmRpZmYgLS1naXQg YS9kcml2ZXJzL3N0YWdpbmcvd2Z4L21haW4uYyBiL2RyaXZlcnMvc3RhZ2luZy93ZngvbWFpbi5j DQppbmRleCBjY2U0ZTMwZGQ5NGEuLjA2MjIwYmFjNWI3NSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMv c3RhZ2luZy93ZngvbWFpbi5jDQorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L21haW4uYw0KQEAg LTU1LDYgKzU1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIHdmeF9vcHMg PSB7DQogCS5hZGRfaW50ZXJmYWNlCQk9IHdmeF9hZGRfaW50ZXJmYWNlLA0KIAkucmVtb3ZlX2lu dGVyZmFjZQk9IHdmeF9yZW1vdmVfaW50ZXJmYWNlLA0KIAkudHgJCQk9IHdmeF90eCwNCisJLmh3 X3NjYW4JCT0gd2Z4X2h3X3NjYW4sDQogfTsNCiANCiBib29sIHdmeF9hcGlfb2xkZXJfdGhhbihz dHJ1Y3Qgd2Z4X2RldiAqd2RldiwgaW50IG1ham9yLCBpbnQgbWlub3IpDQpAQCAtMjAzLDYgKzIw NCw4IEBAIHN0cnVjdCB3ZnhfZGV2ICp3ZnhfaW5pdF9jb21tb24oc3RydWN0IGRldmljZSAqZGV2 LA0KIAlody0+ZXh0cmFfdHhfaGVhZHJvb20gPSBzaXplb2Yoc3RydWN0IGhpZl9zbF9tc2dfaGRy KSArIHNpemVvZihzdHJ1Y3QgaGlmX21zZykNCiAJCQkJKyBzaXplb2Yoc3RydWN0IGhpZl9yZXFf dHgpDQogCQkJCSsgNCAvKiBhbGlnbm1lbnQgKi8gKyA4IC8qIFRLSVAgSVYgKi87DQorCWh3LT53 aXBoeS0+bWF4X3NjYW5fc3NpZHMgPSAyOw0KKwlody0+d2lwaHktPm1heF9zY2FuX2llX2xlbiA9 IElFRUU4MDIxMV9NQVhfREFUQV9MRU47DQogDQogCXdkZXYgPSBody0+cHJpdjsNCiAJd2Rldi0+ aHcgPSBodzsNCkBAIC0yMTQsNiArMjE3LDcgQEAgc3RydWN0IHdmeF9kZXYgKndmeF9pbml0X2Nv bW1vbihzdHJ1Y3QgZGV2aWNlICpkZXYsDQogCXdkZXYtPnBkYXRhLmdwaW9fd2FrZXVwID0gd2Z4 X2dldF9ncGlvKGRldiwgZ3Bpb193YWtldXAsICJ3YWtldXAiKTsNCiAJd2Z4X2ZpbGxfc2xfa2V5 KGRldiwgJndkZXYtPnBkYXRhKTsNCiANCisJbXV0ZXhfaW5pdCgmd2Rldi0+Y29uZl9tdXRleCk7 DQogCW11dGV4X2luaXQoJndkZXYtPnJ4X3N0YXRzX2xvY2spOw0KIAlpbml0X2NvbXBsZXRpb24o JndkZXYtPmZpcm13YXJlX3JlYWR5KTsNCiAJd2Z4X2luaXRfaGlmX2NtZCgmd2Rldi0+aGlmX2Nt ZCk7DQpAQCAtMjI1LDYgKzIyOSw3IEBAIHN0cnVjdCB3ZnhfZGV2ICp3ZnhfaW5pdF9jb21tb24o c3RydWN0IGRldmljZSAqZGV2LA0KIHZvaWQgd2Z4X2ZyZWVfY29tbW9uKHN0cnVjdCB3ZnhfZGV2 ICp3ZGV2KQ0KIHsNCiAJbXV0ZXhfZGVzdHJveSgmd2Rldi0+cnhfc3RhdHNfbG9jayk7DQorCW11 dGV4X2Rlc3Ryb3koJndkZXYtPmNvbmZfbXV0ZXgpOw0KIAl3ZnhfdHhfcXVldWVzX2RlaW5pdCh3 ZGV2KTsNCiAJaWVlZTgwMjExX2ZyZWVfaHcod2Rldi0+aHcpOw0KIH0NCmRpZmYgLS1naXQgYS9k cml2ZXJzL3N0YWdpbmcvd2Z4L3NjYW4uYyBiL2RyaXZlcnMvc3RhZ2luZy93Zngvc2Nhbi5jDQpu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi4yMDdiMjZlYmM5ZmQNCi0t LSAvZGV2L251bGwNCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93Zngvc2Nhbi5jDQpAQCAtMCwwICsx LDI0OSBAQA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCisvKg0K KyAqIFNjYW4gcmVsYXRlZCBmdW5jdGlvbnMuDQorICoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTct MjAxOSwgU2lsaWNvbiBMYWJvcmF0b3JpZXMsIEluYy4NCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAs IFNULUVyaWNzc29uDQorICovDQorI2luY2x1ZGUgPG5ldC9tYWM4MDIxMS5oPg0KKw0KKyNpbmNs dWRlICJzY2FuLmgiDQorI2luY2x1ZGUgIndmeC5oIg0KKyNpbmNsdWRlICJzdGEuaCINCisjaW5j bHVkZSAiaGlmX3R4X21pYi5oIg0KKw0KK3N0YXRpYyB2b2lkIF9faWVlZTgwMjExX3NjYW5fY29t cGxldGVkX2NvbXBhdChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBhYm9ydGVkKQ0KK3sN CisJc3RydWN0IGNmZzgwMjExX3NjYW5faW5mbyBpbmZvID0gew0KKwkJLmFib3J0ZWQgPSBhYm9y dGVkID8gMSA6IDAsDQorCX07DQorDQorCWllZWU4MDIxMV9zY2FuX2NvbXBsZXRlZChodywgJmlu Zm8pOw0KK30NCisNCitzdGF0aWMgaW50IHdmeF9zY2FuX3N0YXJ0KHN0cnVjdCB3ZnhfdmlmICp3 dmlmLCBzdHJ1Y3Qgd2Z4X3NjYW5fcGFyYW1zICpzY2FuKQ0KK3sNCisJaW50IHJldDsNCisJaW50 IHRtbyA9IDUwMDsNCisNCisJdG1vICs9IHNjYW4tPnNjYW5fcmVxLm51bV9vZl9jaGFubmVscyAq DQorCSAgICAgICAoKDIwICogKHNjYW4tPnNjYW5fcmVxLm1heF9jaGFubmVsX3RpbWUpKSArIDEw KTsNCisJYXRvbWljX3NldCgmd3ZpZi0+c2Nhbi5pbl9wcm9ncmVzcywgMSk7DQorCWF0b21pY19z ZXQoJnd2aWYtPndkZXYtPnNjYW5faW5fcHJvZ3Jlc3MsIDEpOw0KKw0KKwlzY2hlZHVsZV9kZWxh eWVkX3dvcmsoJnd2aWYtPnNjYW4udGltZW91dCwgbXNlY3NfdG9famlmZmllcyh0bW8pKTsNCisJ cmV0ID0gaGlmX3NjYW4od3ZpZiwgc2Nhbik7DQorCWlmIChyZXQpIHsNCisJCXdmeF9zY2FuX2Zh aWxlZF9jYih3dmlmKTsNCisJCWF0b21pY19zZXQoJnd2aWYtPnNjYW4uaW5fcHJvZ3Jlc3MsIDAp Ow0KKwkJYXRvbWljX3NldCgmd3ZpZi0+d2Rldi0+c2Nhbl9pbl9wcm9ncmVzcywgMCk7DQorCQlj YW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJnd2aWYtPnNjYW4udGltZW91dCk7DQorCX0NCisJcmV0 dXJuIHJldDsNCit9DQorDQoraW50IHdmeF9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3 LA0KKwkJICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwNCisJCSAgIHN0cnVjdCBpZWVlODAy MTFfc2Nhbl9yZXF1ZXN0ICpod19yZXEpDQorew0KKwlzdHJ1Y3Qgd2Z4X2RldiAqd2RldiA9IGh3 LT5wcml2Ow0KKwlzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiA9IChzdHJ1Y3Qgd2Z4X3ZpZiAqKSB2aWYt PmRydl9wcml2Ow0KKwlzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXEgPSAmaHdfcmVx LT5yZXE7DQorCXN0cnVjdCBza19idWZmICpza2I7DQorCWludCBpLCByZXQ7DQorCXN0cnVjdCBo aWZfbWliX3RlbXBsYXRlX2ZyYW1lICpwOw0KKw0KKwlpZiAoIXd2aWYpDQorCQlyZXR1cm4gLUVJ TlZBTDsNCisNCisJaWYgKHJlcS0+bl9zc2lkcyA9PSAxICYmICFyZXEtPnNzaWRzWzBdLnNzaWRf bGVuKQ0KKwkJcmVxLT5uX3NzaWRzID0gMDsNCisNCisJaWYgKHJlcS0+bl9zc2lkcyA+IEhJRl9B UElfTUFYX05CX1NTSURTKQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQorDQorCXNrYiA9IGllZWU4MDIx MV9wcm9iZXJlcV9nZXQoaHcsIHd2aWYtPnZpZi0+YWRkciwgTlVMTCwgMCwgcmVxLT5pZV9sZW4p Ow0KKwlpZiAoIXNrYikNCisJCXJldHVybiAtRU5PTUVNOw0KKw0KKwlpZiAocmVxLT5pZV9sZW4p DQorCQltZW1jcHkoc2tiX3B1dChza2IsIHJlcS0+aWVfbGVuKSwgcmVxLT5pZSwgcmVxLT5pZV9s ZW4pOw0KKw0KKwltdXRleF9sb2NrKCZ3ZGV2LT5jb25mX211dGV4KTsNCisNCisJcCA9IChzdHJ1 Y3QgaGlmX21pYl90ZW1wbGF0ZV9mcmFtZSAqKXNrYl9wdXNoKHNrYiwgNCk7DQorCXAtPmZyYW1l X3R5cGUgPSBISUZfVE1QTFRfUFJCUkVROw0KKwlwLT5mcmFtZV9sZW5ndGggPSBjcHVfdG9fbGUx Nihza2ItPmxlbiAtIDQpOw0KKwlyZXQgPSBoaWZfc2V0X3RlbXBsYXRlX2ZyYW1lKHd2aWYsIHAp Ow0KKwlza2JfcHVsbChza2IsIDQpOw0KKw0KKwlpZiAoIXJldCkNCisJCS8qIEhvc3Qgd2FudCB0 byBiZSB0aGUgcHJvYmUgcmVzcG9uZGVyLiAqLw0KKwkJcmV0ID0gd2Z4X2Z3ZF9wcm9iZV9yZXEo d3ZpZiwgdHJ1ZSk7DQorCWlmIChyZXQpIHsNCisJCW11dGV4X3VubG9jaygmd2Rldi0+Y29uZl9t dXRleCk7DQorCQlkZXZfa2ZyZWVfc2tiKHNrYik7DQorCQlyZXR1cm4gcmV0Ow0KKwl9DQorDQor CXdmeF90eF9sb2NrX2ZsdXNoKHdkZXYpOw0KKw0KKwlCVUdfT04od3ZpZi0+c2Nhbi5yZXEpOw0K Kwl3dmlmLT5zY2FuLnJlcSA9IHJlcTsNCisJd3ZpZi0+c2Nhbi5uX3NzaWRzID0gMDsNCisJd3Zp Zi0+c2Nhbi5zdGF0dXMgPSAwOw0KKwl3dmlmLT5zY2FuLmJlZ2luID0gJnJlcS0+Y2hhbm5lbHNb MF07DQorCXd2aWYtPnNjYW4uY3VyciA9IHd2aWYtPnNjYW4uYmVnaW47DQorCXd2aWYtPnNjYW4u ZW5kID0gJnJlcS0+Y2hhbm5lbHNbcmVxLT5uX2NoYW5uZWxzXTsNCisJd3ZpZi0+c2Nhbi5vdXRw dXRfcG93ZXIgPSB3ZGV2LT5vdXRwdXRfcG93ZXI7DQorDQorCWZvciAoaSA9IDA7IGkgPCByZXEt Pm5fc3NpZHM7ICsraSkgew0KKwkJc3RydWN0IGhpZl9zc2lkX2RlZiAqZHN0ID0gJnd2aWYtPnNj YW4uc3NpZHNbd3ZpZi0+c2Nhbi5uX3NzaWRzXTsNCisNCisJCW1lbWNweSgmZHN0LT5zc2lkWzBd LCByZXEtPnNzaWRzW2ldLnNzaWQsIHNpemVvZihkc3QtPnNzaWQpKTsNCisJCWRzdC0+c3NpZF9s ZW5ndGggPSByZXEtPnNzaWRzW2ldLnNzaWRfbGVuOw0KKwkJKyt3dmlmLT5zY2FuLm5fc3NpZHM7 DQorCX0NCisNCisJbXV0ZXhfdW5sb2NrKCZ3ZGV2LT5jb25mX211dGV4KTsNCisNCisJaWYgKHNr YikNCisJCWRldl9rZnJlZV9za2Ioc2tiKTsNCisJc2NoZWR1bGVfd29yaygmd3ZpZi0+c2Nhbi53 b3JrKTsNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3ZvaWQgd2Z4X3NjYW5fd29yayhzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmspDQorew0KKwlzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiA9IGNvbnRhaW5lcl9v Zih3b3JrLCBzdHJ1Y3Qgd2Z4X3ZpZiwgc2Nhbi53b3JrKTsNCisJc3RydWN0IGllZWU4MDIxMV9j aGFubmVsICoqaXQ7DQorCXN0cnVjdCB3Znhfc2Nhbl9wYXJhbXMgc2NhbiA9IHsNCisJCS5zY2Fu X3JlcS5zY2FuX3R5cGUudHlwZSA9IDAsICAgIC8qIEZvcmVncm91bmQgKi8NCisJfTsNCisJc3Ry dWN0IGllZWU4MDIxMV9jaGFubmVsICpmaXJzdDsNCisJaW50IGk7DQorDQorCWRvd24oJnd2aWYt PnNjYW4ubG9jayk7DQorCW11dGV4X2xvY2soJnd2aWYtPndkZXYtPmNvbmZfbXV0ZXgpOw0KKw0K KwlpZiAoIXd2aWYtPnNjYW4ucmVxIHx8IHd2aWYtPnNjYW4uY3VyciA9PSB3dmlmLT5zY2FuLmVu ZCkgew0KKwkJaWYgKHd2aWYtPnNjYW4ub3V0cHV0X3Bvd2VyICE9IHd2aWYtPndkZXYtPm91dHB1 dF9wb3dlcikNCisJCQloaWZfc2V0X291dHB1dF9wb3dlcih3dmlmLCB3dmlmLT53ZGV2LT5vdXRw dXRfcG93ZXIgKiAxMCk7DQorDQorCQlpZiAod3ZpZi0+c2Nhbi5zdGF0dXMgPCAwKQ0KKwkJCWRl dl93YXJuKHd2aWYtPndkZXYtPmRldiwgInNjYW4gZmFpbGVkXG4iKTsNCisJCWVsc2UgaWYgKHd2 aWYtPnNjYW4ucmVxKQ0KKwkJCWRldl9kYmcod3ZpZi0+d2Rldi0+ZGV2LCAic2NhbiBjb21wbGV0 ZWRcbiIpOw0KKwkJZWxzZQ0KKwkJCWRldl9kYmcod3ZpZi0+d2Rldi0+ZGV2LCAic2NhbiBjYW5j ZWxlZFxuIik7DQorDQorCQl3dmlmLT5zY2FuLnJlcSA9IE5VTEw7DQorCQl3ZnhfdHhfdW5sb2Nr KHd2aWYtPndkZXYpOw0KKwkJbXV0ZXhfdW5sb2NrKCZ3dmlmLT53ZGV2LT5jb25mX211dGV4KTsN CisJCV9faWVlZTgwMjExX3NjYW5fY29tcGxldGVkX2NvbXBhdCh3dmlmLT53ZGV2LT5odywgd3Zp Zi0+c2Nhbi5zdGF0dXMgPyAxIDogMCk7DQorCQl1cCgmd3ZpZi0+c2Nhbi5sb2NrKTsNCisJCXJl dHVybjsNCisJfQ0KKwlmaXJzdCA9ICp3dmlmLT5zY2FuLmN1cnI7DQorDQorCWZvciAoaXQgPSB3 dmlmLT5zY2FuLmN1cnIgKyAxLCBpID0gMTsNCisJICAgICBpdCAhPSB3dmlmLT5zY2FuLmVuZCAm JiBpIDwgSElGX0FQSV9NQVhfTkJfQ0hBTk5FTFM7DQorCSAgICAgKytpdCwgKytpKSB7DQorCQlp ZiAoKCppdCktPmJhbmQgIT0gZmlyc3QtPmJhbmQpDQorCQkJYnJlYWs7DQorCQlpZiAoKCgqaXQp LT5mbGFncyBeIGZpcnN0LT5mbGFncykgJg0KKwkJCQlJRUVFODAyMTFfQ0hBTl9OT19JUikNCisJ CQlicmVhazsNCisJCWlmICghKGZpcnN0LT5mbGFncyAmIElFRUU4MDIxMV9DSEFOX05PX0lSKSAm Jg0KKwkJICAgICgqaXQpLT5tYXhfcG93ZXIgIT0gZmlyc3QtPm1heF9wb3dlcikNCisJCQlicmVh azsNCisJfQ0KKwlzY2FuLnNjYW5fcmVxLmJhbmQgPSBmaXJzdC0+YmFuZDsNCisNCisJaWYgKHd2 aWYtPnNjYW4ucmVxLT5ub19jY2spDQorCQlzY2FuLnNjYW5fcmVxLm1heF90cmFuc21pdF9yYXRl ID0gQVBJX1JBVEVfSU5ERVhfR182TUJQUzsNCisJZWxzZQ0KKwkJc2Nhbi5zY2FuX3JlcS5tYXhf dHJhbnNtaXRfcmF0ZSA9IEFQSV9SQVRFX0lOREVYX0JfMU1CUFM7DQorCXNjYW4uc2Nhbl9yZXEu bnVtX29mX3Byb2JlX3JlcXVlc3RzID0NCisJCShmaXJzdC0+ZmxhZ3MgJiBJRUVFODAyMTFfQ0hB Tl9OT19JUikgPyAwIDogMjsNCisJc2Nhbi5zY2FuX3JlcS5udW1fb2Zfc3NpX2RzID0gd3ZpZi0+ c2Nhbi5uX3NzaWRzOw0KKwlzY2FuLnNzaWRzID0gJnd2aWYtPnNjYW4uc3NpZHNbMF07DQorCXNj YW4uc2Nhbl9yZXEubnVtX29mX2NoYW5uZWxzID0gaXQgLSB3dmlmLT5zY2FuLmN1cnI7DQorCXNj YW4uc2Nhbl9yZXEucHJvYmVfZGVsYXkgPSAxMDA7DQorDQorCXNjYW4uY2ggPSBrY2FsbG9jKHNj YW4uc2Nhbl9yZXEubnVtX29mX2NoYW5uZWxzLCBzaXplb2YodTgpLCBHRlBfS0VSTkVMKTsNCisN CisJaWYgKCFzY2FuLmNoKSB7DQorCQl3dmlmLT5zY2FuLnN0YXR1cyA9IC1FTk9NRU07DQorCQln b3RvIGZhaWw7DQorCX0NCisJZm9yIChpID0gMDsgaSA8IHNjYW4uc2Nhbl9yZXEubnVtX29mX2No YW5uZWxzOyArK2kpDQorCQlzY2FuLmNoW2ldID0gd3ZpZi0+c2Nhbi5jdXJyW2ldLT5od192YWx1 ZTsNCisNCisJaWYgKHd2aWYtPnNjYW4uY3VyclswXS0+ZmxhZ3MgJiBJRUVFODAyMTFfQ0hBTl9O T19JUikgew0KKwkJc2Nhbi5zY2FuX3JlcS5taW5fY2hhbm5lbF90aW1lID0gNTA7DQorCQlzY2Fu LnNjYW5fcmVxLm1heF9jaGFubmVsX3RpbWUgPSAxNTA7DQorCX0gZWxzZSB7DQorCQlzY2FuLnNj YW5fcmVxLm1pbl9jaGFubmVsX3RpbWUgPSAxMDsNCisJCXNjYW4uc2Nhbl9yZXEubWF4X2NoYW5u ZWxfdGltZSA9IDUwOw0KKwl9DQorCWlmICghKGZpcnN0LT5mbGFncyAmIElFRUU4MDIxMV9DSEFO X05PX0lSKSAmJg0KKwkgICAgd3ZpZi0+c2Nhbi5vdXRwdXRfcG93ZXIgIT0gZmlyc3QtPm1heF9w b3dlcikgew0KKwkJd3ZpZi0+c2Nhbi5vdXRwdXRfcG93ZXIgPSBmaXJzdC0+bWF4X3Bvd2VyOw0K KwkJaGlmX3NldF9vdXRwdXRfcG93ZXIod3ZpZiwgd3ZpZi0+c2Nhbi5vdXRwdXRfcG93ZXIgKiAx MCk7DQorCX0NCisJd3ZpZi0+c2Nhbi5zdGF0dXMgPSB3Znhfc2Nhbl9zdGFydCh3dmlmLCAmc2Nh bik7DQorCWtmcmVlKHNjYW4uY2gpOw0KKwlpZiAod3ZpZi0+c2Nhbi5zdGF0dXMpDQorCQlnb3Rv IGZhaWw7DQorCXd2aWYtPnNjYW4uY3VyciA9IGl0Ow0KKwltdXRleF91bmxvY2soJnd2aWYtPndk ZXYtPmNvbmZfbXV0ZXgpOw0KKwlyZXR1cm47DQorDQorZmFpbDoNCisJd3ZpZi0+c2Nhbi5jdXJy ID0gd3ZpZi0+c2Nhbi5lbmQ7DQorCW11dGV4X3VubG9jaygmd3ZpZi0+d2Rldi0+Y29uZl9tdXRl eCk7DQorCXVwKCZ3dmlmLT5zY2FuLmxvY2spOw0KKwlzY2hlZHVsZV93b3JrKCZ3dmlmLT5zY2Fu LndvcmspOw0KK30NCisNCitzdGF0aWMgdm9pZCB3Znhfc2Nhbl9jb21wbGV0ZShzdHJ1Y3Qgd2Z4 X3ZpZiAqd3ZpZikNCit7DQorCXVwKCZ3dmlmLT5zY2FuLmxvY2spOw0KKwlhdG9taWNfc2V0KCZ3 dmlmLT53ZGV2LT5zY2FuX2luX3Byb2dyZXNzLCAwKTsNCisNCisJd2Z4X3NjYW5fd29yaygmd3Zp Zi0+c2Nhbi53b3JrKTsNCit9DQorDQordm9pZCB3Znhfc2Nhbl9mYWlsZWRfY2Ioc3RydWN0IHdm eF92aWYgKnd2aWYpDQorew0KKwlpZiAoY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZ3dmlmLT5z Y2FuLnRpbWVvdXQpID4gMCkgew0KKwkJd3ZpZi0+c2Nhbi5zdGF0dXMgPSAtRUlPOw0KKwkJc2No ZWR1bGVfd29yaygmd3ZpZi0+c2Nhbi50aW1lb3V0LndvcmspOw0KKwl9DQorfQ0KKw0KK3ZvaWQg d2Z4X3NjYW5fY29tcGxldGVfY2Ioc3RydWN0IHdmeF92aWYgKnd2aWYsIHN0cnVjdCBoaWZfaW5k X3NjYW5fY21wbCAqYXJnKQ0KK3sNCisJaWYgKGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmd3Zp Zi0+c2Nhbi50aW1lb3V0KSA+IDApIHsNCisJCXd2aWYtPnNjYW4uc3RhdHVzID0gMTsNCisJCXNj aGVkdWxlX3dvcmsoJnd2aWYtPnNjYW4udGltZW91dC53b3JrKTsNCisJfQ0KK30NCisNCit2b2lk IHdmeF9zY2FuX3RpbWVvdXQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KK3sNCisJc3RydWN0 IHdmeF92aWYgKnd2aWYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHdmeF92aWYsIHNjYW4u dGltZW91dC53b3JrKTsNCisNCisJaWYgKGF0b21pY194Y2hnKCZ3dmlmLT5zY2FuLmluX3Byb2dy ZXNzLCAwKSkgew0KKwkJaWYgKHd2aWYtPnNjYW4uc3RhdHVzID4gMCkgew0KKwkJCXd2aWYtPnNj YW4uc3RhdHVzID0gMDsNCisJCX0gZWxzZSBpZiAoIXd2aWYtPnNjYW4uc3RhdHVzKSB7DQorCQkJ ZGV2X3dhcm4od3ZpZi0+d2Rldi0+ZGV2LCAidGltZW91dCB3YWl0aW5nIGZvciBzY2FuIGNvbXBs ZXRlIG5vdGlmaWNhdGlvblxuIik7DQorCQkJd3ZpZi0+c2Nhbi5zdGF0dXMgPSAtRVRJTUVET1VU Ow0KKwkJCXd2aWYtPnNjYW4uY3VyciA9IHd2aWYtPnNjYW4uZW5kOw0KKwkJCWhpZl9zdG9wX3Nj YW4od3ZpZik7DQorCQl9DQorCQl3Znhfc2Nhbl9jb21wbGV0ZSh3dmlmKTsNCisJfQ0KK30NCmRp ZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L3NjYW4uaCBiL2RyaXZlcnMvc3RhZ2luZy93 Zngvc2Nhbi5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi5iNGRk ZDA3NzFhOWINCi0tLSAvZGV2L251bGwNCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93Zngvc2Nhbi5o DQpAQCAtMCwwICsxLDQyIEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt b25seSAqLw0KKy8qDQorICogU2NhbiByZWxhdGVkIGZ1bmN0aW9ucy4NCisgKg0KKyAqIENvcHly aWdodCAoYykgMjAxNy0yMDE5LCBTaWxpY29uIExhYm9yYXRvcmllcywgSW5jLg0KKyAqIENvcHly aWdodCAoYykgMjAxMCwgU1QtRXJpY3Nzb24NCisgKi8NCisjaWZuZGVmIFdGWF9TQ0FOX0gNCisj ZGVmaW5lIFdGWF9TQ0FOX0gNCisNCisjaW5jbHVkZSA8bGludXgvc2VtYXBob3JlLmg+DQorI2lu Y2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPg0KKyNpbmNsdWRlIDxuZXQvbWFjODAyMTEuaD4NCisN CisjaW5jbHVkZSAiaGlmX2FwaV9jbWQuaCINCisNCitzdHJ1Y3Qgd2Z4X2RldjsNCitzdHJ1Y3Qg d2Z4X3ZpZjsNCisNCitzdHJ1Y3Qgd2Z4X3NjYW4gew0KKwlzdHJ1Y3Qgc2VtYXBob3JlIGxvY2s7 DQorCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOw0KKwlzdHJ1Y3QgZGVsYXllZF93b3JrIHRpbWVv dXQ7DQorCXN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnJlcTsNCisJc3RydWN0IGllZWU4 MDIxMV9jaGFubmVsICoqYmVnaW47DQorCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqKmN1cnI7 DQorCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqKmVuZDsNCisJc3RydWN0IGhpZl9zc2lkX2Rl ZiBzc2lkc1tISUZfQVBJX01BWF9OQl9TU0lEU107DQorCWludCBvdXRwdXRfcG93ZXI7DQorCWlu dCBuX3NzaWRzOw0KKwlpbnQgc3RhdHVzOw0KKwlhdG9taWNfdCBpbl9wcm9ncmVzczsNCit9Ow0K Kw0KK2ludCB3ZnhfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4 MDIxMV92aWYgKnZpZiwNCisJCXN0cnVjdCBpZWVlODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXEpOw0K K3ZvaWQgd2Z4X3NjYW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOw0KK3ZvaWQgd2Z4 X3NjYW5fdGltZW91dChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOw0KK3ZvaWQgd2Z4X3NjYW5f Y29tcGxldGVfY2Ioc3RydWN0IHdmeF92aWYgKnd2aWYsIHN0cnVjdCBoaWZfaW5kX3NjYW5fY21w bCAqYXJnKTsNCit2b2lkIHdmeF9zY2FuX2ZhaWxlZF9jYihzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZik7 DQorDQorI2VuZGlmIC8qIFdGWF9TQ0FOX0ggKi8NCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdp bmcvd2Z4L3N0YS5jIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9zdGEuYw0KaW5kZXggNTcxNGFiYTE0 MzJjLi41YTgxNDAxMDBlOTcgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L3N0YS5j DQorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L3N0YS5jDQpAQCAtOSw5ICs5LDE4IEBADQogDQog I2luY2x1ZGUgInN0YS5oIg0KICNpbmNsdWRlICJ3ZnguaCINCisjaW5jbHVkZSAic2Nhbi5oIg0K KyNpbmNsdWRlICJoaWZfdHhfbWliLmgiDQogDQogI2RlZmluZSBUWE9QX1VOSVQgMzINCiANCitp bnQgd2Z4X2Z3ZF9wcm9iZV9yZXEoc3RydWN0IHdmeF92aWYgKnd2aWYsIGJvb2wgZW5hYmxlKQ0K K3sNCisJd3ZpZi0+ZndkX3Byb2JlX3JlcSA9IGVuYWJsZTsNCisJcmV0dXJuIGhpZl9zZXRfcnhf ZmlsdGVyKHd2aWYsIHd2aWYtPmZpbHRlcl9ic3NpZCwNCisJCQkJIHd2aWYtPmZ3ZF9wcm9iZV9y ZXEpOw0KK30NCisNCiBzdGF0aWMgaW50IHdmeF9zZXRfdGltX2ltcGwoc3RydWN0IHdmeF92aWYg Knd2aWYsIGJvb2wgYWlkMF9iaXRfc2V0KQ0KIHsNCiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsNCkBA IC0xMjgsNiArMTM3LDggQEAgaW50IHdmeF9hZGRfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFf aHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKQ0KIAkJZGVmYXVsdF9lZGNhX3BhcmFt c1tJRUVFODAyMTFfQUNfQktdLnF1ZXVlX2lkID0gSElGX1FVRVVFX0lEX0JFU1RFRkZPUlQ7DQog CX0NCiANCisJbXV0ZXhfbG9jaygmd2Rldi0+Y29uZl9tdXRleCk7DQorDQogCWZvciAoaSA9IDA7 IGkgPCBBUlJBWV9TSVpFKHdkZXYtPnZpZik7IGkrKykgew0KIAkJaWYgKCF3ZGV2LT52aWZbaV0p IHsNCiAJCQl3ZGV2LT52aWZbaV0gPSB2aWY7DQpAQCAtMTM1LDggKzE0NiwxMCBAQCBpbnQgd2Z4 X2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFf dmlmICp2aWYpDQogCQkJYnJlYWs7DQogCQl9DQogCX0NCi0JaWYgKGkgPT0gQVJSQVlfU0laRSh3 ZGV2LT52aWYpKQ0KKwlpZiAoaSA9PSBBUlJBWV9TSVpFKHdkZXYtPnZpZikpIHsNCisJCW11dGV4 X3VubG9jaygmd2Rldi0+Y29uZl9tdXRleCk7DQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7DQorCX0N CiAJd3ZpZi0+dmlmID0gdmlmOw0KIAl3dmlmLT53ZGV2ID0gd2RldjsNCiANCkBAIC0xNDgsNiAr MTYxLDEyIEBAIGludCB3ZnhfYWRkX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywg c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZikNCiAJSU5JVF9XT1JLKCZ3dmlmLT5tY2FzdF9zdGFy dF93b3JrLCB3ZnhfbWNhc3Rfc3RhcnRfd29yayk7DQogCUlOSVRfV09SSygmd3ZpZi0+bWNhc3Rf c3RvcF93b3JrLCB3ZnhfbWNhc3Rfc3RvcF93b3JrKTsNCiAJdGltZXJfc2V0dXAoJnd2aWYtPm1j YXN0X3RpbWVvdXQsIHdmeF9tY2FzdF90aW1lb3V0LCAwKTsNCisNCisJc2VtYV9pbml0KCZ3dmlm LT5zY2FuLmxvY2ssIDEpOw0KKwlJTklUX1dPUksoJnd2aWYtPnNjYW4ud29yaywgd2Z4X3NjYW5f d29yayk7DQorCUlOSVRfREVMQVlFRF9XT1JLKCZ3dmlmLT5zY2FuLnRpbWVvdXQsIHdmeF9zY2Fu X3RpbWVvdXQpOw0KKw0KKwltdXRleF91bmxvY2soJndkZXYtPmNvbmZfbXV0ZXgpOw0KIAlCVUdf T04oQVJSQVlfU0laRShkZWZhdWx0X2VkY2FfcGFyYW1zKSAhPSBBUlJBWV9TSVpFKHd2aWYtPmVk Y2EucGFyYW1zKSk7DQogCWZvciAoaSA9IDA7IGkgPCBJRUVFODAyMTFfTlVNX0FDUzsgaSsrKQ0K IAkJbWVtY3B5KCZ3dmlmLT5lZGNhLnBhcmFtc1tpXSwgJmRlZmF1bHRfZWRjYV9wYXJhbXNbaV0s IHNpemVvZihkZWZhdWx0X2VkY2FfcGFyYW1zW2ldKSk7DQpAQCAtMTc1LDcgKzE5NCw5IEBAIHZv aWQgd2Z4X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpDQogCXN0cnVjdCB3ZnhfZGV2ICp3 ZGV2ID0gaHctPnByaXY7DQogDQogCXdmeF90eF9sb2NrX2ZsdXNoKHdkZXYpOw0KKwltdXRleF9s b2NrKCZ3ZGV2LT5jb25mX211dGV4KTsNCiAJd2Z4X3R4X3F1ZXVlc19jbGVhcih3ZGV2KTsNCisJ bXV0ZXhfdW5sb2NrKCZ3ZGV2LT5jb25mX211dGV4KTsNCiAJd2Z4X3R4X3VubG9jayh3ZGV2KTsN CiAJV0FSTihhdG9taWNfcmVhZCgmd2Rldi0+dHhfbG9jayksICJ0eF9sb2NrIGlzIGxvY2tlZCIp Ow0KIH0NCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L3N0YS5oIGIvZHJpdmVycy9z dGFnaW5nL3dmeC9zdGEuaA0KaW5kZXggZjM2ZDk0ZjkwN2M3Li5kZDFiNmIzZmMyZjEgMTAwNjQ0 DQotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L3N0YS5oDQorKysgYi9kcml2ZXJzL3N0YWdpbmcv d2Z4L3N0YS5oDQpAQCAtMTIsNiArMTIsOCBAQA0KIA0KICNpbmNsdWRlICJoaWZfYXBpX2NtZC5o Ig0KIA0KK3N0cnVjdCB3ZnhfdmlmOw0KKw0KIHN0cnVjdCB3ZnhfZWRjYV9wYXJhbXMgew0KIAkv KiBOT1RFOiBpbmRleCBpcyBhIGxpbnV4IHF1ZXVlIGlkLiAqLw0KIAlzdHJ1Y3QgaGlmX3JlcV9l ZGNhX3F1ZXVlX3BhcmFtcyBwYXJhbXNbSUVFRTgwMjExX05VTV9BQ1NdOw0KQEAgLTI5LDQgKzMx LDYgQEAgdm9pZCB3Znhfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7DQogaW50IHdmeF9h ZGRfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3Zp ZiAqdmlmKTsNCiB2b2lkIHdmeF9yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcg Kmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKTsNCiANCitpbnQgd2Z4X2Z3ZF9wcm9iZV9y ZXEoc3RydWN0IHdmeF92aWYgKnd2aWYsIGJvb2wgZW5hYmxlKTsNCisNCiAjZW5kaWYgLyogV0ZY X1NUQV9IICovDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dmeC93ZnguaCBiL2RyaXZl cnMvc3RhZ2luZy93Zngvd2Z4LmgNCmluZGV4IDExNzc1YjFlMDZlZi4uNTBjMGQ5YzBlNTI4IDEw MDY0NA0KLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dmeC93ZnguaA0KKysrIGIvZHJpdmVycy9zdGFn aW5nL3dmeC93ZnguaA0KQEAgLTE5LDYgKzE5LDcgQEANCiAjaW5jbHVkZSAicXVldWUuaCINCiAj aW5jbHVkZSAic2VjdXJlX2xpbmsuaCINCiAjaW5jbHVkZSAic3RhLmgiDQorI2luY2x1ZGUgInNj YW4uaCINCiAjaW5jbHVkZSAiaGlmX3R4LmgiDQogI2luY2x1ZGUgImhpZl9hcGlfZ2VuZXJhbC5o Ig0KIA0KQEAgLTM5LDYgKzQwLDcgQEAgc3RydWN0IHdmeF9kZXYgew0KIAlzdHJ1Y3Qgd2Z4X2hp ZgkJaGlmOw0KIAlzdHJ1Y3Qgc2xfY29udGV4dAlzbDsNCiAJaW50CQkJY2hpcF9mcm96ZW47DQor CXN0cnVjdCBtdXRleAkJY29uZl9tdXRleDsNCiANCiAJc3RydWN0IHdmeF9oaWZfY21kCWhpZl9j bWQ7DQogCXN0cnVjdCB3ZnhfcXVldWUJdHhfcXVldWVbNF07DQpAQCAtNDgsNiArNTAsOSBAQCBz dHJ1Y3Qgd2Z4X2RldiB7DQogDQogCXN0cnVjdCBoaWZfcnhfc3RhdHMJcnhfc3RhdHM7DQogCXN0 cnVjdCBtdXRleAkJcnhfc3RhdHNfbG9jazsNCisNCisJaW50CQkJb3V0cHV0X3Bvd2VyOw0KKwlh dG9taWNfdAkJc2Nhbl9pbl9wcm9ncmVzczsNCiB9Ow0KIA0KIHN0cnVjdCB3ZnhfdmlmIHsNCkBA IC03MSwxMSArNzYsMTcgQEAgc3RydWN0IHdmeF92aWYgew0KIA0KIAlzdHJ1Y3QgdHhfcG9saWN5 X2NhY2hlCXR4X3BvbGljeV9jYWNoZTsNCiAJc3RydWN0IHdvcmtfc3RydWN0CXR4X3BvbGljeV91 cGxvYWRfd29yazsNCisNCiAJdTMyCQkJc3RhX2FzbGVlcF9tYXNrOw0KIAl1MzIJCQlwc3BvbGxf bWFzazsNCiAJc3BpbmxvY2tfdAkJcHNfc3RhdGVfbG9jazsNCiANCisJYm9vbAkJCWZpbHRlcl9i c3NpZDsNCisJYm9vbAkJCWZ3ZF9wcm9iZV9yZXE7DQorDQogCXN0cnVjdCB3ZnhfZWRjYV9wYXJh bXMJZWRjYTsNCisNCisJc3RydWN0IHdmeF9zY2FuCQlzY2FuOw0KIH07DQogDQogc3RhdGljIGlu bGluZSBzdHJ1Y3Qgd2Z4X3ZpZiAqd2Rldl90b193dmlmKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBp bnQgdmlmX2lkKQ0KLS0gDQoyLjIwLjENCg==