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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AB23FC4332F for ; Wed, 9 Nov 2022 08:07:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229627AbiKIIHk (ORCPT ); Wed, 9 Nov 2022 03:07:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58112 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229452AbiKIIHg (ORCPT ); Wed, 9 Nov 2022 03:07:36 -0500 Received: from esa2.hgst.iphmx.com (esa2.hgst.iphmx.com [68.232.143.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 591D61CB3C; Wed, 9 Nov 2022 00:07:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1667981253; x=1699517253; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=IEY0vUhik72rgSkoEJzSks2AHQWDtGCa//t8SkekUOs=; b=L2joXfsoXYuBgS9jc2Rt40LDM1yFDvUhavSBwEVUhL2hGS1f5lKi/cFr oB+X74ofJRq8k+NB+kFylyptsHK34aDBJaSjX4rusAsXPbINDE9Axj/8y Y05UkuuE1CpOzlNqiemItOAoCLUUKcX9Q2gCdS3awcv4PNjZo1VJjSmoC kDSNJkhU0GkEQDR7yf4+ma5ZH71JdUWGdwTwDj397+nvTcUgBI3TkTww0 qRePowG2UK6Swr+JrOZBahWRh4pFwU0Fv9odznsbZKr2tJGPa/EeYRtLS 13rff64bADcmV4rU6rjkfBtcxodY3spkJbHAZ19zfj4oBId5K+RuGgVId Q==; X-IronPort-AV: E=Sophos;i="5.96,149,1665417600"; d="scan'208";a="320176466" Received: from mail-co1nam11lp2170.outbound.protection.outlook.com (HELO NAM11-CO1-obe.outbound.protection.outlook.com) ([104.47.56.170]) by ob1.hgst.iphmx.com with ESMTP; 09 Nov 2022 16:07:30 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IevTBr1KtKmPvo30N+LJqN3Jagbu/TuJYfTFVmR9lgSK5hjeYCIn5zuGYLh9Cx5uKwVCC3OmF3f8Gy4GxD/vssq0YgVFr2XltH+9cpyRQ8wj0znRzmnNakOnaqkIgY/hyrwD9/LLAoRNvHQYLFirQzUbknnRY0kav9/TehC3OGry9mZQ8qrBUDglEgg/LcknvBfSrqn1F8gfnoxfccadBmjvCxYXB1HIDb1xmIlV2vBsQo5dykHeSQ2KVQapJMyNfTbR42N7RhhdHwbMiu+Gwp0t5t6HSHrm3TI/XQpx/LjrIyLiU9cxET5Vv7UwXpkYHNuDTVobV9zBfZcpW6r6Vg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IEY0vUhik72rgSkoEJzSks2AHQWDtGCa//t8SkekUOs=; b=fyQlGxMfSd+4BgyyM7bgrbaptwqrEwLJabBkp18fOy8V2HzhWHXpRhLuhXJlTTq0NdCZ/7ftzTTCOTYWqAhBFVWu0mFCVsHY7HcEJgZCrvojvvl47u8EsYI2bo4w9kmBsUD/2Q2gYfxEyHRAPqHf77xbe+vjgSxZkZqiH9hBnam9Rr0HstHhCjpsGKMx3onjnQuFPqYB3MTW5/n0LPvxpQR2baWTOwpmoC+5O8v8nwyuoUdViqsY2qmwuYe01vxgZ4jh8lTewetpIr5qkgH82QR+UGG9wB3TAEOFORFRYLSxYcC7STEA4VNfGz3QfWGuHP6jjK+LY3PATP6PhYhlmw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wdc.com; dmarc=pass action=none header.from=wdc.com; dkim=pass header.d=wdc.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector2-sharedspace-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IEY0vUhik72rgSkoEJzSks2AHQWDtGCa//t8SkekUOs=; b=dqrM1B7tqi0UYGVhzIhDf8xSp2sO6bPtGn02ubexq2++riD/8k+QmMNJW8Ws0/ugmOahC/4yCHbR+FBqOunhkYivXb5z3/kbjmOY0GUr0XXYxcLYDHU/ZSIDFOYoPlzOOCx8uPSUtdc8pksmYcuSV76Dx0g+ao38g5jEscuFuUk= Received: from DM6PR04MB6575.namprd04.prod.outlook.com (2603:10b6:5:1b7::7) by SA2PR04MB7722.namprd04.prod.outlook.com (2603:10b6:806:14c::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Wed, 9 Nov 2022 08:07:28 +0000 Received: from DM6PR04MB6575.namprd04.prod.outlook.com ([fe80::1afa:ab74:ef51:1e72]) by DM6PR04MB6575.namprd04.prod.outlook.com ([fe80::1afa:ab74:ef51:1e72%3]) with mapi id 15.20.5791.027; Wed, 9 Nov 2022 08:07:28 +0000 From: Avri Altman To: Bean Huo , "alim.akhtar@samsung.com" , "jejb@linux.ibm.com" , "martin.petersen@oracle.com" , "stanley.chu@mediatek.com" , "beanhuo@micron.com" , "bvanassche@acm.org" , "tomas.winkler@intel.com" , "daejun7.park@samsung.com" , "quic_cang@quicinc.com" , "quic_nguyenb@quicinc.com" , "quic_xiaosenh@quicinc.com" , "quic_richardp@quicinc.com" , "quic_asutoshd@quicinc.com" , "hare@suse.de" CC: "linux-scsi@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [RFC PATCH v1 2/2] ufs: core: Add advanced RPMB support in ufs_bsg Thread-Topic: [RFC PATCH v1 2/2] ufs: core: Add advanced RPMB support in ufs_bsg Thread-Index: AQHY8qptmsmbt7vqGEOmo5IvpfPIBq42K7ew Date: Wed, 9 Nov 2022 08:07:28 +0000 Message-ID: References: <20221107131038.201724-1-beanhuo@iokpp.de> <20221107131038.201724-3-beanhuo@iokpp.de> In-Reply-To: <20221107131038.201724-3-beanhuo@iokpp.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=wdc.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM6PR04MB6575:EE_|SA2PR04MB7722:EE_ x-ms-office365-filtering-correlation-id: 80adbc48-7153-4f50-66e0-08dac22971e0 wdcipoutbound: EOP-TRUE x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: U/n6a6qWwSwLeCzGIZl0G/04MqrFDcsL52Y1zrnIP8MmwH7YUD1cc3y/fJFWUlYXsVinHUqkMdKuwp9Zdi3Kp+a+mYwHWpztcTPkxuzCET4xzHB7A5KSRDBp1na2HaW4yvjtjY/QSD6apoLjJcDgoZqpMVNYZ1ExYVoaEcZoQR54cXUCpYk9EN4wb5B9MnEx1VbjVLiGRKCMyY5U2f6ep36m8JAMyjPyTCGcBla475bnc+HfTGf9Q0ID2zbrVFcFMhm6PZn/kOPzOjpCm1mEu/IKgLIP897xvo0K1tvInNa5ENm6gV7wGqNNAOr2QoG8ydFZer86ETi3ClsAfq6mE5FqsyyXQAmDj4B8Qsne1YEKtsTNqWLEafPKtxhX+Onnn1CEy5ablMwda3DHI4NQQ/78Eco1YskgM9Cvn5KnsclFMpaUHqmXfy8g0EE13B1R6XeB4d03AxOECqSPhaYw7mgGRYlfg5lR61CmhfhAA4+IAcLLGNVqaEM5Uprg3bTAC8q8LkrSsGDE4W+CxaYjuEM813tBGQq2b04EwbuQdJW7Vql9A3hJdoKwKw19GEiOQiQ+Sw3AHcXnH31bJGOf1dz3boFUCtdrcwa3PUuILaAysj8WM7k/wAL7cxnMNaH/bmRdCtOej/zUvZVk/7tSggcF2CwklOGCE5vSRcLhNEpcKQgi/XcW5DK76aSlyZEq7xzqwFxbOsXcSrggKxgbDzYoPhf9d/lxlh5Y4I4/emL9JPm3/8y43FBaV2HirJ2yW/FZuqGTCF+YTZkUxRfyvCXaYnF4iD2DBk/DC7g0eM4= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR04MB6575.namprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(376002)(366004)(396003)(39860400002)(136003)(346002)(451199015)(33656002)(86362001)(921005)(478600001)(38070700005)(55016003)(82960400001)(38100700002)(83380400001)(122000001)(186003)(9686003)(26005)(7696005)(6506007)(2906002)(52536014)(8936002)(7416002)(5660300002)(71200400001)(41300700001)(54906003)(30864003)(110136005)(316002)(8676002)(4326008)(64756008)(66446008)(76116006)(66556008)(66946007)(66476007)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OVpwemEybTJ3a281NTJqL2JKeFE4a1kvY3JTMXdpVy8xditWS3dHbmFnNjZB?= =?utf-8?B?eFVYWHpFYkVheU9XVXJFMlYvQkNFSnQ2dnRLWmsrNS9jYUEvelZYN2NLTDcx?= =?utf-8?B?ZFN6ZjI3MlpBcFpwTy8rTEZUc1JXaDVsQlpsSllIQ2o4RkhWNHV3V0pDRXlS?= =?utf-8?B?U09ncXI1dTZOZDhWMzNGeFhCb0JhUFZ0NTRjenRUQWowYVp2WE90SC96czVZ?= =?utf-8?B?UDRNWTc1RW9KOC9zaGc3cjE5WSswcGl0a0RjdW1vb01pWmdVYjlYamthanVQ?= =?utf-8?B?cDdjRUNnVkw5b1BkeE8yWmp6RnVYbCs5SmwzQkl3ZDNOdVMraUd4YXBpRCtI?= =?utf-8?B?bDRoTTJhZTlXWXdQTld5YnRRVU1BTzJDdndVdVUwSnFJNnUxRGtzaWJIc2FQ?= =?utf-8?B?cEgxeWZxU1JkeU5jbHY0cFdIZndHMGcxRVQrcStJV3R4VUtxd3hna2N3UWFx?= =?utf-8?B?VG5ZTFlFdHA4cEI4R2t3RlNCbEY4Wmszb2ZhL3lvczNYZUhCTmh1MU1yY3F3?= =?utf-8?B?RytmOXcxREw1YTRIdHl1M0FpSnNPb3gxZ0RncDdwenJGbVg4LzU1ZXNhWmNF?= =?utf-8?B?Z3ZNaDB5Q0o2YmIxamsrMFdLSlJzTzFrNnUzY00rOU1FMFhMSHZ6OVQyUHNT?= =?utf-8?B?UDFkWDN1dkN6QXU1OVR0SThBcDZKdWlmbkpHMCsrZHNZN0JQQ1B3VXNTUUtk?= =?utf-8?B?RUE2SDVhMURMTys1VGI3WG56WjdFNHdSU1I1QjNEQXpoMFQrN2luaGZVaVAr?= =?utf-8?B?WGc0NFJrNWZhaHhpaC92OVo3ZmpXSG9pWDFBOWdldVYzM1ZrWXZ0RXYxRlBJ?= =?utf-8?B?MlhMZnE1c2ZpTTBIUGxUZUNuVXg0RVVLVU1mcGtNTi85dE9hRUV3cDMxdENK?= =?utf-8?B?elFHSUY5NEd1R09XZTl0ZzFkTSt0TmRib1ZOK2FKQTlwWm9QQ2JIZStWelp6?= =?utf-8?B?VDFCYUwwTXlONEZETWVwdjhEWTR3R1BjcmZhdXpMclZQUGpHa2FZVzRnbXRx?= =?utf-8?B?NmI3NjJDKzcyNWVvOExYVXBTWWpqaEI0R0Znekg1NVJrdzd4TFB2aHJjVHFN?= =?utf-8?B?ZW1Tc04zZ0lMMElCWW0wK1EwOEVINE9HOHhJQ3luZEQwWTNXMDBZbTlYc2xU?= =?utf-8?B?VW1qNndlS3BiMUNnRG5ZSDhEeFlIeVdSeksrbURweXVQNS9xTGQ3dlQ5MG90?= =?utf-8?B?b21RMkN4c2JoZVhtWHdDTWhQcEZHWFJCVTBRbWdOVGhVa3g1WmgzYnlrbGF5?= =?utf-8?B?WnVjNzVUenMrcVdGcVBVYUFaYlB4WHlpdk40cmR1VDlXb1ZZVGZ5NnByY1ha?= =?utf-8?B?VDF2TTVydXF3dG1EMXRDSUtxRXNXaDJieU16b3p6OTd1Y3Nha0FtN0JUcVRp?= =?utf-8?B?blNLN0N0M084Ykxzb2lsUkx6ZVVJazNUVmdxL2lRanZhSjIyMTlQa1BVSlQr?= =?utf-8?B?bGhxTDVlVmh6eE9tQTl4dTErUEZwWHp2Tm9rVmh5OERFeXJvcUphRVozWkJY?= =?utf-8?B?RGRxdkxnZU1PYlBDRDZ6UHFDbnhVUkFodVVFSFRTcFducDFQdXZLbDVxOFdY?= =?utf-8?B?VlVWcVlEaC8zaGY5V3ViVHE1Y0twemVoaUJRc0cyOUFyMHU4TzlCK2pHeXRy?= =?utf-8?B?WDVVZjBUT1ZnWFdZUEU5WW5vc2FHNEhVZEU4QlZGT3VPQ1M4eVJKaFVLQWpp?= =?utf-8?B?UWZON05uOVJLbGtlbG04c2ovTXpzK0Q4a1hmL0RqUDAxY1dHTnpHT00rTWhR?= =?utf-8?B?ZUxpeG90ayt4TzdMV0lpakxhV0hXeWUvMGJwNHc3bmNPalNYMU40VWhtQ29U?= =?utf-8?B?WWIzUDE0S1RNcTUveHExVGlnYzZCOVdyNVorVnVLR2pmZlUvdTl1RnIxYm5D?= =?utf-8?B?QzE4V1gvNDZDd09kWlhIUGxleFFVR1R3VjdlSFQ5aVQvRTBpZGlNM1JxQzJa?= =?utf-8?B?NWlQRmp4VVFhR1pSRnFoQW80UlNWaVFLWWhZVDBNa1VpMVYvcVZ3dHJ2UWdM?= =?utf-8?B?VlFMczFjWWg0M3FUT1lBamh6N2gxbG5mNndLWk1DVkRZOVA5MnpBNFZ1ck5O?= =?utf-8?B?eXYra29lV0c5djhyN2hwNEhmVUVyM1dSTnpFU0hiTWF0bDBNVmJ6dEYvNWM1?= =?utf-8?Q?s+EovtawRG15PpvoxSM2wKmlU?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR04MB6575.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 80adbc48-7153-4f50-66e0-08dac22971e0 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2022 08:07:28.6169 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: pGDBxGgFXYY15FSwRITIrGFyU95wJnERHIreHELRSm3DzH2kl51KGAn92/oXlJs6FsN5nJBcEVFpfWlMHTD6nA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR04MB7722 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiANCj4gQWRkIGFkdmFuY2VkIFJQTUIgc3VwcG9ydCBpbiB1ZnNfYnNnLiBGb3IgdGhlc2UgcmVh c29ucywgd2UgdHJ5IHRvDQo+IGltcGxlbWVudCBBZHZhbmNlZCBSUE1CIGluIHVmc19ic2c6DQo+ IA0KPiAxLiBBY2NvcmRpbmcgdG8gdGhlIFVGUyBzcGVjaWZpY2F0aW9uLCBvbmx5IG9uZSBSUE1C IG9wZXJhdGlvbiBjYW4gYmUNCj4gcGVyZm9ybWVkIGF0IGFueSB0aW1lLiBXZSBjYW4gZW5zdXJl IHRoaXMgYnkgdXNpbmcgcmVzZXJ2ZWQgc2xvdCBhbmQgaXRzDQo+IGRldl9jbWQgc3luYyBvcGVy YXRpb24gcHJvdGVjdGlvbiBtZWNoYW5pc20uDQo+IA0KPiAyLiBGb3J0IHRoZSBBZHZhbmNlZCBS UE1CLCBSUE1CIG1ldGFkYXRhIGlzIHBhY2thZ2VkIGluIGFuIEVIUyAodG8gZGV2aWNlKQ0KRm9y IHRoZQ0KDQo+IG9mIHRoZSBVUElVLCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgcmVwbHkgRUhTIChm cm9tIHRoZSBkZXZpY2UpIHNob3VsZCBhbHNvIGJlDQpNYXliZTogb2YgYSAqY29tbWFuZCogVVBJ VQ0KQW5kIGV2ZW4gcmVmZXIgdG8gYW4gaW1wbGVtZW50YXRpb24gaW4sIGUuZy4gdWZzLXV0aWxz DQoNCj4gcmV0dXJuZWQgdG8gdGhlIHVzZXIgc3BhY2UuIGJzZ19qb2ItPnJldXFlc3QgYW5kIGJz Z19qb2ItPnJlcGx5IGFsbG93IHVzIHRvDQo+IHBhc3MgYW5kIHJldHVybiBFSFMgZnJvbS9iYWNr IHRvIHVzZXJzcGFjZS4NCj4gDQo+IENvbXBhcmVkIHRvIG5vcm1hbC9sZWdhY3kgUlBNQiwgdGhl IGFkdmFudGFnZSBvZiBhZHZhbmNlZCBSUE1CIGFyZToNCj4gDQo+IDEuIFRoZSBkYXRhIGxlbmd0 aCBpbiB0aGUgUlBCTSBkYXRhIHJlYWQvd3JpdGUgY29tbWFuZCBjb3VsZCBiZSA+IDRLQi4gRm9y DQo+IHRoZSBsZWdhY3kgUlBNQiwgdGhlIGRhdGEgbGVuZ3RoIGluIGEgc2luZ2xlIFJQTUIgZGF0 YSB0cmFuc2ZlciBpcyAyNTYgYnl0ZXMuDQo+IDIuICBBbGwgb2YgdGhlIGFkdmFuY2VkIFJQTUIg b3BlcmF0aW9ucyB3aWxsIGJlIGEgc2luZ2xlIGNvbW1hbmQgc2hvdC4gYnV0IGZvcg0KPiB0aGUg bGVnYWN5ICBSUEJNLCB0YWtlIHRoZSByZWFkIHdyaXRlLWNvdW50ZXIgdmFsdWUgIGFzIGFuIGV4 YW1wbGUsIHlvdSBuZWVkDQo+IHR3byBjb21tYW5kcyhmaXJzdCBTRUNVUklUWSBQUk9UT0NPTCBP VVQsIHRoZW4gdGhlIHNlY29uZCBTRUNVUklUWQ0KPiBQUk9UT0NPTCBJTikNCj4gDQo+IFNpZ25l ZC1vZmYtYnk6IEJlYW4gSHVvIDxiZWFuaHVvQGlva3BwLmRlPg0KPiAtLS0NCj4gIGRyaXZlcnMv dWZzL2NvcmUvdWZzX2JzZy5jICAgICAgIHwgMTE1ICsrKysrKysrKysrKystLS0tLS0tLS0NCj4g IGRyaXZlcnMvdWZzL2NvcmUvdWZzaGNkLmMgICAgICAgIHwgMTU3ICsrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0NCj4gIGluY2x1ZGUvdWFwaS9zY3NpL3Njc2lfYnNnX3Vmcy5oIHwgIDMw ICsrKysrLQ0KPiAgaW5jbHVkZS91ZnMvdWZzaGNkLmggICAgICAgICAgICAgfCAgIDUgKw0KPiAg NCBmaWxlcyBjaGFuZ2VkLCAyMjYgaW5zZXJ0aW9ucygrKSwgODEgZGVsZXRpb25zKC0pDQo+IA0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91ZnMvY29yZS91ZnNfYnNnLmMgYi9kcml2ZXJzL3Vmcy9j b3JlL3Vmc19ic2cuYyBpbmRleA0KPiBiOTllM2YzZGM0ZWYuLjZjNmEyN2FkNDlkNSAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy91ZnMvY29yZS91ZnNfYnNnLmMNCj4gKysrIGIvZHJpdmVycy91ZnMv Y29yZS91ZnNfYnNnLmMNCj4gQEAgLTgsOCArOCwxMCBAQA0KPiAgI2luY2x1ZGUgPGxpbnV4L2Jz Zy1saWIuaD4NCj4gICNpbmNsdWRlIDxzY3NpL3Njc2kuaD4NCj4gICNpbmNsdWRlIDxzY3NpL3Nj c2lfaG9zdC5oPg0KPiAtI2luY2x1ZGUgInVmc19ic2cuaCINCj4gKyNpbmNsdWRlIDxsaW51eC9k bWEtbWFwcGluZy5oPg0KPiAgI2luY2x1ZGUgPHVmcy91ZnNoY2QuaD4NCj4gKw0KPiArI2luY2x1 ZGUgInVmc19ic2cuaCINCj4gICNpbmNsdWRlICJ1ZnNoY2QtcHJpdi5oIg0KPiANCj4gIHN0YXRp YyBpbnQgdWZzX2JzZ19nZXRfcXVlcnlfZGVzY19zaXplKHN0cnVjdCB1ZnNfaGJhICpoYmEsIGlu dCAqZGVzY19sZW4sIEBADQo+IC0zMCwyMSArMzIsNiBAQCBzdGF0aWMgaW50IHVmc19ic2dfZ2V0 X3F1ZXJ5X2Rlc2Nfc2l6ZShzdHJ1Y3QgdWZzX2hiYSAqaGJhLA0KPiBpbnQgKmRlc2NfbGVuLA0K PiAgICAgICAgIHJldHVybiAwOw0KPiAgfQ0KPiANCj4gLXN0YXRpYyBpbnQgdWZzX2JzZ192ZXJp ZnlfcXVlcnlfc2l6ZShzdHJ1Y3QgdWZzX2hiYSAqaGJhLA0KPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlcXVlc3RfbGVuLA0KPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlcGx5X2xlbikNCj4gLXsN Cj4gLSAgICAgICBpbnQgbWluX3JlcV9sZW4gPSBzaXplb2Yoc3RydWN0IHVmc19ic2dfcmVxdWVz dCk7DQo+IC0gICAgICAgaW50IG1pbl9yc3BfbGVuID0gc2l6ZW9mKHN0cnVjdCB1ZnNfYnNnX3Jl cGx5KTsNCj4gLQ0KPiAtICAgICAgIGlmIChtaW5fcmVxX2xlbiA+IHJlcXVlc3RfbGVuIHx8IG1p bl9yc3BfbGVuID4gcmVwbHlfbGVuKSB7DQo+IC0gICAgICAgICAgICAgICBkZXZfZXJyKGhiYS0+ ZGV2LCAibm90IGVub3VnaCBzcGFjZSBhc3NpZ25lZFxuIik7DQo+IC0gICAgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsNCj4gLSAgICAgICB9DQo+IC0NCj4gLSAgICAgICByZXR1cm4gMDsNCj4g LX0NCk1heWJlIHB1dCB0aGlzIGluIGEgc2VwYXJhdGUgY2xlYW51cCBwYXRjaD8NCg0KPiAtDQo+ ICBzdGF0aWMgaW50IHVmc19ic2dfYWxsb2NfZGVzY19idWZmZXIoc3RydWN0IHVmc19oYmEgKmhi YSwgc3RydWN0IGJzZ19qb2IgKmpvYiwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQ4X3QgKipkZXNjX2J1ZmYsIGludCAqZGVzY19sZW4sDQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHF1ZXJ5X29wY29kZSBkZXNjX29wKSBAQCAt ODMsMjMgKzcwLDUzIEBADQo+IHN0YXRpYyBpbnQgdWZzX2JzZ19hbGxvY19kZXNjX2J1ZmZlcihz dHJ1Y3QgdWZzX2hiYSAqaGJhLCBzdHJ1Y3QgYnNnX2pvYiAqam9iLA0KPiAgICAgICAgIHJldHVy biAwOw0KPiAgfQ0KPiANCj4gK3N0YXRpYyBpbnQgdWZzaGNkX2V4ZWNfYWR2YW5jZWRfcnBtYl9y ZXEoc3RydWN0IHVmc19oYmEgKmhiYSwgc3RydWN0DQp1ZnNfYnNnX2V4ZWNfYWR2YW5jZWRfcnBt Yl9yZXENCg0KPiBic2dfam9iICpqb2IsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGJzZ19idWZmZXIgKmJidWYsIGludA0KPiArbXNnY29kZSwgaW50 IGxlbikgew0KPiArICAgICAgIHN0cnVjdCB1ZnNfcnBtYl9yZXF1ZXN0ICpycG1iX3JlcXVlc3Qg PSBqb2ItPnJlcXVlc3Q7DQo+ICsgICAgICAgc3RydWN0IHVmc19ycG1iX3JlcGx5ICpycG1iX3Jl cGx5ID0gam9iLT5yZXBseTsNCj4gKyAgICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIg PSBETUFfTk9ORTsNCj4gKyAgICAgICBpbnQgbWFwcGVkX3NnX2NudDsNCj4gKyAgICAgICBpbnQg cmV0Ow0KPiArDQo+ICsgICAgICAgaWYgKGhiYS0+dWZzX3ZlcnNpb24gPCB1ZnNoY2lfdmVyc2lv big0LCAwKSB8fCAhaGJhLQ0KPiA+ZGV2X2luZm8uYl9hZHZhbmNlZF9ycG1iX2VuKQ0KPiArICAg ICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQpJIHRoaW5rIHlvdSBhbHNvIG5lZWQgdGhhdCBF SFNMVVRSRFMgaXMgMQ0KDQo+ICsNCj4gKyAgICAgICBpZiAobXNnY29kZSA9PSBVUElVX1RSQU5T QUNUSU9OX0FSUE1CX0RBVEFfV1JJVEUpDQo+ICsgICAgICAgICAgICAgICBkaXIgPSBETUFfVE9f REVWSUNFOw0KPiArICAgICAgIGVsc2UgaWYgKG1zZ2NvZGUgPT0gVVBJVV9UUkFOU0FDVElPTl9B UlBNQl9EQVRBX1JFQUQpDQo+ICsgICAgICAgICAgICAgICBkaXIgPSBETUFfRlJPTV9ERVZJQ0U7 DQo+ICsNCj4gKyAgICAgICBpZiAoZGlyICE9IERNQV9OT05FICYmIGJidWYtPnNnX2NudCkgew0K PiArICAgICAgICAgICAgICAgbWFwcGVkX3NnX2NudCA9IGRtYV9tYXBfc2coaGJhLT5ob3N0LT5k bWFfZGV2LCBiYnVmLT5zZ19saXN0LA0KPiBiYnVmLT5zZ19jbnQsIGRpcik7DQo+ICsgICAgICAg ICAgICAgICBpZiAodW5saWtlbHkoIW1hcHBlZF9zZ19jbnQpKQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICByZXQg PSB1ZnNoY2RfYWR2YW5jZWRfcnBtYl9yZXFfaGFuZGxlcihoYmEsICZycG1iX3JlcXVlc3QtDQo+ ID5ic2dfcmVxdWVzdC51cGl1X3JlcSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmcnBtYl9yZXBseS0+YnNnX3JlcGx5LnVwaXVfcnNwLCAmcnBtYl9yZXF1ZXN0LQ0KPiA+ ZWhzX3JlcSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcnBtYl9yZXBs eS0+ZWhzX3JzcCwgbWFwcGVkX3NnX2NudCwgYmJ1Zi0+c2dfbGlzdCwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkaXIsIGxlbik7DQo+ICsNCj4gKyAgICAgICBpZiAoZGly ICE9IERNQV9OT05FICYmIGJidWYtPnNnX2NudCkNCj4gKyAgICAgICAgICAgICAgIGRtYV91bm1h cF9zZyhoYmEtPmhvc3QtPmRtYV9kZXYsIGJidWYtPnNnX2xpc3QsDQo+ICsgYmJ1Zi0+c2dfY250 LCBkaXIpOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiAgc3RhdGlj IGludCB1ZnNfYnNnX3JlcXVlc3Qoc3RydWN0IGJzZ19qb2IgKmpvYikgIHsNCj4gICAgICAgICBz dHJ1Y3QgdWZzX2JzZ19yZXF1ZXN0ICpic2dfcmVxdWVzdCA9IGpvYi0+cmVxdWVzdDsNCj4gICAg ICAgICBzdHJ1Y3QgdWZzX2JzZ19yZXBseSAqYnNnX3JlcGx5ID0gam9iLT5yZXBseTsNCj4gICAg ICAgICBzdHJ1Y3QgdWZzX2hiYSAqaGJhID0gc2hvc3RfcHJpdihkZXZfdG9fc2hvc3Qoam9iLT5k ZXYtPnBhcmVudCkpOw0KPiAtICAgICAgIHVuc2lnbmVkIGludCByZXFfbGVuID0gam9iLT5yZXF1 ZXN0X2xlbjsNCj4gLSAgICAgICB1bnNpZ25lZCBpbnQgcmVwbHlfbGVuID0gam9iLT5yZXBseV9s ZW47DQo+ICAgICAgICAgc3RydWN0IHVpY19jb21tYW5kIHVjID0ge307DQo+ICAgICAgICAgaW50 IG1zZ2NvZGU7DQo+IC0gICAgICAgdWludDhfdCAqZGVzY19idWZmID0gTlVMTDsNCj4gKyAgICAg ICB1aW50OF90ICpidWZmID0gTlVMTDsNCj4gICAgICAgICBpbnQgZGVzY19sZW4gPSAwOw0KPiAg ICAgICAgIGVudW0gcXVlcnlfb3Bjb2RlIGRlc2Nfb3AgPSBVUElVX1FVRVJZX09QQ09ERV9OT1A7 DQo+ICAgICAgICAgaW50IHJldDsNCj4gLQ0KPiAtICAgICAgIHJldCA9IHVmc19ic2dfdmVyaWZ5 X3F1ZXJ5X3NpemUoaGJhLCByZXFfbGVuLCByZXBseV9sZW4pOw0KPiAtICAgICAgIGlmIChyZXQp DQo+IC0gICAgICAgICAgICAgICBnb3RvIG91dDsNCj4gKyAgICAgICBzdHJ1Y3QgYnNnX2J1ZmZl ciAqYmJ1ZiA9IE5VTEw7DQo+ICsgICAgICAgYm9vbCBycG1iID0gZmFsc2U7DQo+IA0KPiAgICAg ICAgIGJzZ19yZXBseS0+cmVwbHlfcGF5bG9hZF9yY3ZfbGVuID0gMDsNCj4gDQo+IEBAIC0xMDks MzQgKzEyNiw1MiBAQCBzdGF0aWMgaW50IHVmc19ic2dfcmVxdWVzdChzdHJ1Y3QgYnNnX2pvYiAq am9iKQ0KPiAgICAgICAgIHN3aXRjaCAobXNnY29kZSkgew0KPiAgICAgICAgIGNhc2UgVVBJVV9U UkFOU0FDVElPTl9RVUVSWV9SRVE6DQo+ICAgICAgICAgICAgICAgICBkZXNjX29wID0gYnNnX3Jl cXVlc3QtPnVwaXVfcmVxLnFyLm9wY29kZTsNCj4gLSAgICAgICAgICAgICAgIHJldCA9IHVmc19i c2dfYWxsb2NfZGVzY19idWZmZXIoaGJhLCBqb2IsICZkZXNjX2J1ZmYsDQo+ICsgICAgICAgICAg ICAgICByZXQgPSB1ZnNfYnNnX2FsbG9jX2Rlc2NfYnVmZmVyKGhiYSwgam9iLCAmYnVmZiwNCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlc2NfbGVu LCBkZXNjX29wKTsNCj4gLSAgICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgdWZzaGNkX3JwbV9wdXRfc3luYyhoYmEpOw0KPiArICAgICAgICAgICAgICAg aWYgKHJldCkNCj4gICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7DQo+IC0gICAgICAg ICAgICAgICB9DQo+IA0KPiAgICAgICAgICAgICAgICAgZmFsbHRocm91Z2g7DQo+ICAgICAgICAg Y2FzZSBVUElVX1RSQU5TQUNUSU9OX05PUF9PVVQ6DQo+ICAgICAgICAgY2FzZSBVUElVX1RSQU5T QUNUSU9OX1RBU0tfUkVROg0KPiAgICAgICAgICAgICAgICAgcmV0ID0gdWZzaGNkX2V4ZWNfcmF3 X3VwaXVfY21kKGhiYSwgJmJzZ19yZXF1ZXN0LT51cGl1X3JlcSwNCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnNnX3JlcGx5LT51cGl1X3JzcCwgbXNn Y29kZSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk ZXNjX2J1ZmYsICZkZXNjX2xlbiwgZGVzY19vcCk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnVmZiwgJmRlc2NfbGVuLA0KPiArIGRlc2Nfb3ApOw0K PiAgICAgICAgICAgICAgICAgaWYgKHJldCkNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgZGV2 X2VycihoYmEtPmRldiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhlIHJh dyB1cGl1OiBlcnJvciBjb2RlICVkXG4iLCByZXQpOw0KPiArICAgICAgICAgICAgICAgICAgICAg ICBkZXZfZXJyKGhiYS0+ZGV2LCAiZXhlIHJhdyB1cGl1OiBlcnJvciBjb2RlICVkXG4iLCByZXQp Ow0KPiArICAgICAgICAgICAgICAgZWxzZSBpZiAoZGVzY19vcCA9PSBVUElVX1FVRVJZX09QQ09E RV9SRUFEX0RFU0MgJiYNCj4gZGVzY19sZW4pDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJz Z19yZXBseS0+cmVwbHlfcGF5bG9hZF9yY3ZfbGVuID0NCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZ19jb3B5X2Zyb21fYnVmZmVyKGpvYi0+cmVxdWVzdF9wYXlsb2FkLnNnX2xp c3QsDQo+ICsNCj4gKyBqb2ItPnJlcXVlc3RfcGF5bG9hZC5zZ19jbnQsIGJ1ZmYsIGRlc2NfbGVu KTsNClRoaXMgcGFydCBjYW4gZ28gaW50byB0aGF0IGNsZWFudXAgcGF0Y2ggYXMgd2VsbA0KDQo+ IA0KPiAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICAgICAgICAgY2FzZSBVUElVX1RSQU5TQUNU SU9OX1VJQ19DTUQ6DQo+ICAgICAgICAgICAgICAgICBtZW1jcHkoJnVjLCAmYnNnX3JlcXVlc3Qt PnVwaXVfcmVxLnVjLCBVSUNfQ01EX1NJWkUpOw0KPiAgICAgICAgICAgICAgICAgcmV0ID0gdWZz aGNkX3NlbmRfdWljX2NtZChoYmEsICZ1Yyk7DQo+ICAgICAgICAgICAgICAgICBpZiAocmV0KQ0K PiAtICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGhiYS0+ZGV2LA0KPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJzZW5kIHVpYyBjbWQ6IGVycm9yIGNvZGUgJWRcbiIsIHJl dCk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoaGJhLT5kZXYsICJzZW5kIHVp YyBjbWQ6IGVycm9yIGNvZGUNCj4gKyAlZFxuIiwgcmV0KTsNCj4gDQo+ICAgICAgICAgICAgICAg ICBtZW1jcHkoJmJzZ19yZXBseS0+dXBpdV9yc3AudWMsICZ1YywgVUlDX0NNRF9TSVpFKTsNCj4g DQo+ICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICBjYXNlIFVQSVVfVFJBTlNBQ1RJ T05fQVJQTUJfREFUQV9SRUFEOg0KPiArICAgICAgIGNhc2UgVVBJVV9UUkFOU0FDVElPTl9BUlBN Ql9EQVRBX1dSSVRFOg0KPiArICAgICAgICAgICAgICAgaWYgKCFqb2ItPnJlcXVlc3RfcGF5bG9h ZC5wYXlsb2FkX2xlbiB8fCBqb2ItDQo+ID5yZXF1ZXN0X3BheWxvYWQucGF5bG9hZF9sZW4gPiA0 MDk2KSB7DQpJc24ndCB0aGUgcGF5bG9hZCBjYW4gYmUgaW50ZWdlciBudW1iZXIgb2YgNEsgdXAg dG8gYlJQTUJfUmVhZFdyaXRlU2l6ZT8NCg0KPiArICAgICAgICAgICAgICAgICAgICAgICByZXQg PSAgLUVJTlZBTDsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7DQo+ICsgICAg ICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICAgICBiYnVmID0gJmpvYi0+cmVxdWVzdF9wYXls b2FkOw0KPiArICAgICAgICAgICAgICAgZmFsbHRocm91Z2g7DQo+ICsgICAgICAgY2FzZSBVUElV X1RSQU5TQUNUSU9OX0FSUE1CX1BST0dSQU1fS0VZOg0KPiArICAgICAgIGNhc2UgVVBJVV9UUkFO U0FDVElPTl9BUlBNQl9SRUFEX0NPVU5URVI6DQpSZWFkIGNvdW50ZXIgcGF5bG9hZCBpcyBkb24n dCBjYXJlLCBidXQgcHJvZ3JhbSBrZXkgcGF5bG9hZCBzaG91bGQgYmUgMCAtIHNlZSB0YWJsZSAx Mi4yMQ0KDQpBbHNvLCB0aGVyZSBhcmUgOSB0eXBlcyBvZiBycG1iIG9wZXJhdGlvbnMgLSB3aGVy ZSBhcmUgYWxsIHRoZSByZXN0Pw0KDQo+ICsgICAgICAgICAgICAgICBycG1iID0gdHJ1ZTsNCj4g KyAgICAgICAgICAgICAgIHJldCA9IHVmc2hjZF9leGVjX2FkdmFuY2VkX3JwbWJfcmVxKGhiYSwg am9iLCBiYnVmLCBtc2djb2RlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgam9iLT5yZXF1ZXN0X3BheWxvYWQucGF5bG9hZF9sZW4pOw0KPiAr ICAgICAgICAgICAgICAgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X2Vy cihoYmEtPmRldiwgIlJQTUIgT1AgZmFpbGVkOiBlcnJvciBjb2RlICAlZFxuIiwgcmV0KTsNCj4g KyAgICAgICAgICAgICAgIGVsc2UgaWYgKG1zZ2NvZGUgPT0gVVBJVV9UUkFOU0FDVElPTl9BUlBN Ql9SRUFEX0NPVU5URVIpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJzZ19yZXBseS0+cmVw bHlfcGF5bG9hZF9yY3ZfbGVuID0gam9iLQ0KPiA+cmVxdWVzdF9wYXlsb2FkLnBheWxvYWRfbGVu Ow0KPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ICAgICAgICAgZGVmYXVsdDoNCj4gICAgICAg ICAgICAgICAgIHJldCA9IC1FTk9UU1VQUDsNCj4gICAgICAgICAgICAgICAgIGRldl9lcnIoaGJh LT5kZXYsICJ1bnN1cHBvcnRlZCBtc2djb2RlIDB4JXhcbiIsIG1zZ2NvZGUpOyBAQCAtDQo+IDE0 NCwyMiArMTc5LDEyIEBAIHN0YXRpYyBpbnQgdWZzX2JzZ19yZXF1ZXN0KHN0cnVjdCBic2dfam9i ICpqb2IpDQo+ICAgICAgICAgICAgICAgICBicmVhazsNCj4gICAgICAgICB9DQo+IA0KPiArb3V0 Og0KPiAgICAgICAgIHVmc2hjZF9ycG1fcHV0X3N5bmMoaGJhKTsNCj4gKyAgICAgICBrZnJlZShi dWZmKTsNCj4gDQo+IC0gICAgICAgaWYgKCFkZXNjX2J1ZmYpDQo+IC0gICAgICAgICAgICAgICBn b3RvIG91dDsNCj4gLQ0KPiAtICAgICAgIGlmIChkZXNjX29wID09IFVQSVVfUVVFUllfT1BDT0RF X1JFQURfREVTQyAmJiBkZXNjX2xlbikNCj4gLSAgICAgICAgICAgICAgIGJzZ19yZXBseS0+cmVw bHlfcGF5bG9hZF9yY3ZfbGVuID0NCj4gLSAgICAgICAgICAgICAgICAgICAgICAgc2dfY29weV9m cm9tX2J1ZmZlcihqb2ItPnJlcXVlc3RfcGF5bG9hZC5zZ19saXN0LA0KPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvYi0+cmVxdWVzdF9wYXlsb2FkLnNnX2Nu dCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjX2J1 ZmYsIGRlc2NfbGVuKTsNCj4gLQ0KPiAtICAgICAgIGtmcmVlKGRlc2NfYnVmZik7DQo+IC0NCj4g LW91dDoNCj4gICAgICAgICBic2dfcmVwbHktPnJlc3VsdCA9IHJldDsNCj4gLSAgICAgICBqb2It PnJlcGx5X2xlbiA9IHNpemVvZihzdHJ1Y3QgdWZzX2JzZ19yZXBseSk7DQo+ICsgICAgICAgam9i LT5yZXBseV9sZW4gPSAhcnBtYiA/IHNpemVvZihzdHJ1Y3QgdWZzX2JzZ19yZXBseSkgOg0KPiAr IHNpemVvZihzdHJ1Y3QgdWZzX3JwbWJfcmVwbHkpOw0KPiAgICAgICAgIC8qIGNvbXBsZXRlIHRo ZSBqb2IgaGVyZSBvbmx5IGlmIG5vIGVycm9yICovDQo+ICAgICAgICAgaWYgKHJldCA9PSAwKQ0K PiAgICAgICAgICAgICAgICAgYnNnX2pvYl9kb25lKGpvYiwgcmV0LCBic2dfcmVwbHktPnJlcGx5 X3BheWxvYWRfcmN2X2xlbik7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Vmcy9jb3JlL3Vmc2hj ZC5jIGIvZHJpdmVycy91ZnMvY29yZS91ZnNoY2QuYyBpbmRleA0KPiBkNDllN2EwYjgyY2EuLjU5 MmVlMzgwOWMxNiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy91ZnMvY29yZS91ZnNoY2QuYw0KPiAr KysgYi9kcml2ZXJzL3Vmcy9jb3JlL3Vmc2hjZC5jDQo+IEBAIC01Niw2ICs1Niw5IEBADQo+ICAv KiBRdWVyeSByZXF1ZXN0IHRpbWVvdXQgKi8NCj4gICNkZWZpbmUgUVVFUllfUkVRX1RJTUVPVVQg MTUwMCAvKiAxLjUgc2Vjb25kcyAqLw0KPiANCj4gKy8qIEFkdmFuY2VkIFJQTUIgcmVxdWVzdCB0 aW1lb3V0ICovDQo+ICsjZGVmaW5lIEFEVkFOQ0VEX1JQTUJfUkVRX1RJTUVPVVQgIDQ1MDAgLyog MyBzZWNvbmRzICovDQo0LjUgc2Vjb25kcw0KDQo+ICsNCj4gIC8qIFRhc2sgbWFuYWdlbWVudCBj b21tYW5kIHRpbWVvdXQgKi8NCj4gICNkZWZpbmUgVE1fQ01EX1RJTUVPVVQgMTAwIC8qIG1zZWNz ICovDQo+IA0KPiBAQCAtMjM5OSw0MCArMjQwMiwzMiBAQCBpbnQgdWZzaGNkX3NlbmRfdWljX2Nt ZChzdHJ1Y3QgdWZzX2hiYSAqaGJhLA0KPiBzdHJ1Y3QgdWljX2NvbW1hbmQgKnVpY19jbWQpICB9 DQo+IA0KPiAgLyoqDQo+IC0gKiB1ZnNoY2RfbWFwX3NnIC0gTWFwIHNjYXR0ZXItZ2F0aGVyIGxp c3QgdG8gcHJkdA0KPiAtICogQGhiYTogcGVyIGFkYXB0ZXIgaW5zdGFuY2UNCj4gLSAqIEBscmJw OiBwb2ludGVyIHRvIGxvY2FsIHJlZmVyZW5jZSBibG9jaw0KPiAtICoNCj4gLSAqIFJldHVybnMg MCBpbiBjYXNlIG9mIHN1Y2Nlc3MsIG5vbi16ZXJvIHZhbHVlIGluIGNhc2Ugb2YgZmFpbHVyZQ0K PiArICogdWZzaGNkX3NnbF90b19wcmR0IC0gU0cgbGlzdCB0byBQUlREIChQaHlzaWNhbCBSZWdp b24gRGVzY3JpcHRpb24gVGFibGUsDQo+IDREVyBmb3JtYXQpDQo+ICsgKiBAaGJhOiAgICAgICBw ZXItYWRhcHRlciBpbnN0YW5jZQ0KPiArICogQGxyYnA6ICAgICAgcG9pbnRlciB0byBsb2NhbCBy ZWZlcmVuY2UgYmxvY2sNCj4gKyAqIEBzZ19lbnRyaWVzOiAgICAgICAgVGhlIG51bWJlciBvZiBz ZyBsaXN0cyBhY3R1YWxseSB1c2VkDQo+ICsgKiBAc2dfbGlzdDogICBQb2ludGVyIHRvIFNHIGxp c3QNCj4gICAqLw0KPiAtc3RhdGljIGludCB1ZnNoY2RfbWFwX3NnKHN0cnVjdCB1ZnNfaGJhICpo YmEsIHN0cnVjdCB1ZnNoY2RfbHJiICpscmJwKQ0KPiArc3RhdGljIHZvaWQgdWZzaGNkX3NnbF90 b19wcmR0KHN0cnVjdCB1ZnNfaGJhICpoYmEsIHN0cnVjdCB1ZnNoY2RfbHJiICpscmJwLCBpbnQN Cj4gc2dfZW50cmllcywNCj4gKyAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NhdHRlcmxpc3Qg KnNnX2xpc3QpDQo+ICsNCj4gIHsNCj4gICAgICAgICBzdHJ1Y3QgdWZzaGNkX3NnX2VudHJ5ICpw cmRfdGFibGU7DQo+ICAgICAgICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsNCj4gLSAgICAgICBz dHJ1Y3Qgc2NzaV9jbW5kICpjbWQ7DQo+IC0gICAgICAgaW50IHNnX3NlZ21lbnRzOw0KPiAgICAg ICAgIGludCBpOw0KPiANCj4gLSAgICAgICBjbWQgPSBscmJwLT5jbWQ7DQo+IC0gICAgICAgc2df c2VnbWVudHMgPSBzY3NpX2RtYV9tYXAoY21kKTsNCj4gLSAgICAgICBpZiAoc2dfc2VnbWVudHMg PCAwKQ0KPiAtICAgICAgICAgICAgICAgcmV0dXJuIHNnX3NlZ21lbnRzOw0KPiAtDQo+IC0gICAg ICAgaWYgKHNnX3NlZ21lbnRzKSB7DQo+ICsgICAgICAgaWYgKHNnX2VudHJpZXMpIHsNCj4gDQo+ ICAgICAgICAgICAgICAgICBpZiAoaGJhLT5xdWlya3MgJiBVRlNIQ0RfUVVJUktfUFJEVF9CWVRF X0dSQU4pDQo+ICAgICAgICAgICAgICAgICAgICAgICAgIGxyYnAtPnV0cl9kZXNjcmlwdG9yX3B0 ci0+cHJkX3RhYmxlX2xlbmd0aCA9DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3B1X3RvX2xlMTYoKHNnX3NlZ21lbnRzICoNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgdWZzaGNkX3NnX2VudHJ5KSkpOw0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV90b19sZTE2KChzZ19lbnRyaWVzICogc2l6ZW9m KHN0cnVjdA0KPiArIHVmc2hjZF9zZ19lbnRyeSkpKTsNCj4gICAgICAgICAgICAgICAgIGVsc2UN Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgbHJicC0+dXRyX2Rlc2NyaXB0b3JfcHRyLT5wcmRf dGFibGVfbGVuZ3RoID0NCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfdG9f bGUxNihzZ19zZWdtZW50cyk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGxyYnAtPnV0cl9k ZXNjcmlwdG9yX3B0ci0+cHJkX3RhYmxlX2xlbmd0aCA9DQo+ICsgY3B1X3RvX2xlMTYoc2dfZW50 cmllcyk7DQo+IA0KPiAgICAgICAgICAgICAgICAgcHJkX3RhYmxlID0gbHJicC0+dWNkX3ByZHRf cHRyOw0KPiANCj4gLSAgICAgICAgICAgICAgIHNjc2lfZm9yX2VhY2hfc2coY21kLCBzZywgc2df c2VnbWVudHMsIGkpIHsNCj4gKyAgICAgICAgICAgICAgIGZvcl9lYWNoX3NnKHNnX2xpc3QsIHNn LCBzZ19lbnRyaWVzLCBpKSB7DQo+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln bmVkIGludCBsZW4gPSBzZ19kbWFfbGVuKHNnKTsNCj4gLQ0KPiAgICAgICAgICAgICAgICAgICAg ICAgICAvKg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgKiBGcm9tIHRoZSBVRlNIQ0kgc3Bl YzogIkRhdGEgQnl0ZSBDb3VudCAoREJDKTogQSAnMCcNCj4gICAgICAgICAgICAgICAgICAgICAg ICAgICogYmFzZWQgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgdGhlIGxlbmd0aCwgaW4gYnl0ZXMsIG9m IEBAIC0yNDQ5LDYNCj4gKzI0NDQsMjYgQEAgc3RhdGljIGludCB1ZnNoY2RfbWFwX3NnKHN0cnVj dCB1ZnNfaGJhICpoYmEsIHN0cnVjdCB1ZnNoY2RfbHJiDQo+ICpscmJwKQ0KPiAgICAgICAgIH0g ZWxzZSB7DQo+ICAgICAgICAgICAgICAgICBscmJwLT51dHJfZGVzY3JpcHRvcl9wdHItPnByZF90 YWJsZV9sZW5ndGggPSAwOw0KPiAgICAgICAgIH0NCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgKiB1 ZnNoY2RfbWFwX3NnIC0gTWFwIHNjYXR0ZXItZ2F0aGVyIGxpc3QgdG8gcHJkdA0KPiArICogQGhi YTogcGVyIGFkYXB0ZXIgaW5zdGFuY2UNCj4gKyAqIEBscmJwOiBwb2ludGVyIHRvIGxvY2FsIHJl ZmVyZW5jZSBibG9jaw0KPiArICoNCj4gKyAqIFJldHVybnMgMCBpbiBjYXNlIG9mIHN1Y2Nlc3Ms IG5vbi16ZXJvIHZhbHVlIGluIGNhc2Ugb2YgZmFpbHVyZSAgKi8NCj4gK3N0YXRpYyBpbnQgdWZz aGNkX21hcF9zZyhzdHJ1Y3QgdWZzX2hiYSAqaGJhLCBzdHJ1Y3QgdWZzaGNkX2xyYiAqbHJicCkN Cj4gK3sNCj4gKyAgICAgICBzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQ7DQo+ICsgICAgICAgaW50IHNn X3NlZ21lbnRzOw0KPiArDQo+ICsgICAgICAgY21kID0gbHJicC0+Y21kOw0KPiArICAgICAgIHNn X3NlZ21lbnRzID0gc2NzaV9kbWFfbWFwKGNtZCk7DQo+ICsgICAgICAgaWYgKHNnX3NlZ21lbnRz IDwgMCkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiBzZ19zZWdtZW50czsNCj4gKw0KPiArICAg ICAgIHVmc2hjZF9zZ2xfdG9fcHJkdChoYmEsIGxyYnAsIHNnX3NlZ21lbnRzLCBzY3NpX3NnbGlz dChjbWQpKTsNCj4gDQo+ICAgICAgICAgcmV0dXJuIDA7DQo+ICB9DQpDYW4gdGhvc2UgY2hhbmdl cyBpbiB1ZmFoY2RfbWFwX3NnIGNhbiBiZSBtYWRlIGFzIGEgcHJlcGFyYXRvcnkgcGF0Y2g/DQoN Cg0KPiBAQCAtMjQ5NiwxNCArMjUxMSwxNCBAQCBzdGF0aWMgdm9pZCB1ZnNoY2RfZGlzYWJsZV9p bnRyKHN0cnVjdCB1ZnNfaGJhDQo+ICpoYmEsIHUzMiBpbnRycykgIH0NCj4gDQo+ICAvKioNCj4g LSAqIHVmc2hjZF9wcmVwYXJlX3JlcV9kZXNjX2hkcigpIC0gRmlsbHMgdGhlIHJlcXVlc3RzIGhl YWRlcg0KPiAtICogZGVzY3JpcHRvciBhY2NvcmRpbmcgdG8gcmVxdWVzdA0KPiAtICogQGxyYnA6 IHBvaW50ZXIgdG8gbG9jYWwgcmVmZXJlbmNlIGJsb2NrDQo+ICsgKiB1ZnNoY2RfcHJlcGFyZV9y ZXFfZGVzY19oZHIgLSBGaWxscyBVVFAgVHJhbnNmZXIgcmVxdWVzdCBkZXNjcmlwdG9yDQo+IGhl YWRlciBhY2NvcmRpbmcgdG8gcmVxdWVzdA0KPiArICogQGxyYnA6ICAgICAgcG9pbnRlciB0byBs b2NhbCByZWZlcmVuY2UgYmxvY2sNCj4gICAqIEB1cGl1X2ZsYWdzOiBmbGFncyByZXF1aXJlZCBp biB0aGUgaGVhZGVyDQo+IC0gKiBAY21kX2RpcjogcmVxdWVzdHMgZGF0YSBkaXJlY3Rpb24NCj4g KyAqIEBjbWRfZGlyOiAgIHJlcXVlc3RzIGRhdGEgZGlyZWN0aW9uDQo+ICsgKiBAZWhzX2xlbmd0 aDogVG90YWwgRUhTIExlbmd0aCAoaW4gMzLigJBieXRlcyB1bml0cyBvZiBhbGwgRXh0cmEgSGVh ZGVyDQo+ICsgU2VnbWVudHMpDQo+ICAgKi8NCj4gLXN0YXRpYyB2b2lkIHVmc2hjZF9wcmVwYXJl X3JlcV9kZXNjX2hkcihzdHJ1Y3QgdWZzaGNkX2xyYiAqbHJicCwNCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgdTggKnVwaXVfZmxhZ3MsIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGNtZF9kaXIp DQo+ICtzdGF0aWMgdm9pZCB1ZnNoY2RfcHJlcGFyZV9yZXFfZGVzY19oZHIoc3RydWN0IHVmc2hj ZF9scmIgKmxyYnAsIHU4DQo+ICp1cGl1X2ZsYWdzLA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gY21kX2RpciwNCj4gK2lu dCBlaHNfbGVuZ3RoKQ0KPiAgew0KPiAgICAgICAgIHN0cnVjdCB1dHBfdHJhbnNmZXJfcmVxX2Rl c2MgKnJlcV9kZXNjID0gbHJicC0+dXRyX2Rlc2NyaXB0b3JfcHRyOw0KPiAgICAgICAgIHUzMiBk YXRhX2RpcmVjdGlvbjsNCj4gQEAgLTI1MjIsOCArMjUzNyw5IEBAIHN0YXRpYyB2b2lkIHVmc2hj ZF9wcmVwYXJlX3JlcV9kZXNjX2hkcihzdHJ1Y3QNCj4gdWZzaGNkX2xyYiAqbHJicCwNCj4gICAg ICAgICAgICAgICAgICp1cGl1X2ZsYWdzID0gVVBJVV9DTURfRkxBR1NfTk9ORTsNCj4gICAgICAg ICB9DQo+IA0KPiAtICAgICAgIGR3b3JkXzAgPSBkYXRhX2RpcmVjdGlvbiB8IChscmJwLT5jb21t YW5kX3R5cGUNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBVUElVX0NPTU1B TkRfVFlQRV9PRkZTRVQpOw0KPiArICAgICAgIGR3b3JkXzAgPSBkYXRhX2RpcmVjdGlvbiB8IChs cmJwLT5jb21tYW5kX3R5cGUgPDwNCj4gVVBJVV9DT01NQU5EX1RZUEVfT0ZGU0VUKSB8DQo+ICsg ICAgICAgICAgICAgICBlaHNfbGVuZ3RoIDw8IDg7DQo+ICsNCj4gICAgICAgICBpZiAobHJicC0+ aW50cl9jbWQpDQo+ICAgICAgICAgICAgICAgICBkd29yZF8wIHw9IFVUUF9SRVFfREVTQ19JTlRf Q01EOw0KPiANCj4gQEAgLTI1NDYsOCArMjU2Miw3IEBAIHN0YXRpYyB2b2lkIHVmc2hjZF9wcmVw YXJlX3JlcV9kZXNjX2hkcihzdHJ1Y3QNCj4gdWZzaGNkX2xyYiAqbHJicCwgIH0NCj4gDQo+ICAv KioNCj4gLSAqIHVmc2hjZF9wcmVwYXJlX3V0cF9zY3NpX2NtZF91cGl1KCkgLSBmaWxscyB0aGUg dXRwX3RyYW5zZmVyX3JlcV9kZXNjLA0KPiAtICogZm9yIHNjc2kgY29tbWFuZHMNCj4gKyAqIHVm c2hjZF9wcmVwYXJlX3V0cF9zY3NpX2NtZF91cGl1KCkgLSBmaWxscyB0aGUgdXRwX3RyYW5zZmVy X3JlcV9kZXNjDQo+ICsgZm9yIHNjc2kgY29tbWFuZHMNCj4gICAqIEBscmJwOiBsb2NhbCByZWZl cmVuY2UgYmxvY2sgcG9pbnRlcg0KPiAgICogQHVwaXVfZmxhZ3M6IGZsYWdzDQo+ICAgKi8NCj4g QEAgLTI1NzgsOCArMjU5Myw3IEBAIHZvaWQgdWZzaGNkX3ByZXBhcmVfdXRwX3Njc2lfY21kX3Vw aXUoc3RydWN0DQo+IHVmc2hjZF9scmIgKmxyYnAsIHU4IHVwaXVfZmxhZ3MpICB9DQo+IA0KPiAg LyoqDQo+IC0gKiB1ZnNoY2RfcHJlcGFyZV91dHBfcXVlcnlfcmVxX3VwaXUoKSAtIGZpbGxzIHRo ZSB1dHBfdHJhbnNmZXJfcmVxX2Rlc2MsDQo+IC0gKiBmb3IgcXVlcnkgcmVxdXN0cw0KPiArICog dWZzaGNkX3ByZXBhcmVfdXRwX3F1ZXJ5X3JlcV91cGl1KCkgLSBmaWxscyB0aGUNCj4gKyB1dHBf dHJhbnNmZXJfcmVxX2Rlc2MgZm9yIHF1ZXJ5IHJlcXVzdHMNCj4gICAqIEBoYmE6IFVGUyBoYmEN Cj4gICAqIEBscmJwOiBsb2NhbCByZWZlcmVuY2UgYmxvY2sgcG9pbnRlcg0KPiAgICogQHVwaXVf ZmxhZ3M6IGZsYWdzDQo+IEBAIC0yNjUwLDcgKzI2NjQsNyBAQCBzdGF0aWMgaW50IHVmc2hjZF9j b21wb3NlX2Rldm1hbl91cGl1KHN0cnVjdA0KPiB1ZnNfaGJhICpoYmEsDQo+ICAgICAgICAgZWxz ZQ0KPiAgICAgICAgICAgICAgICAgbHJicC0+Y29tbWFuZF90eXBlID0gVVRQX0NNRF9UWVBFX1VG U19TVE9SQUdFOw0KPiANCj4gLSAgICAgICB1ZnNoY2RfcHJlcGFyZV9yZXFfZGVzY19oZHIobHJi cCwgJnVwaXVfZmxhZ3MsIERNQV9OT05FKTsNCj4gKyAgICAgICB1ZnNoY2RfcHJlcGFyZV9yZXFf ZGVzY19oZHIobHJicCwgJnVwaXVfZmxhZ3MsIERNQV9OT05FLCAwKTsNCj4gICAgICAgICBpZiAo aGJhLT5kZXZfY21kLnR5cGUgPT0gREVWX0NNRF9UWVBFX1FVRVJZKQ0KPiAgICAgICAgICAgICAg ICAgdWZzaGNkX3ByZXBhcmVfdXRwX3F1ZXJ5X3JlcV91cGl1KGhiYSwgbHJicCwgdXBpdV9mbGFn cyk7DQo+ICAgICAgICAgZWxzZSBpZiAoaGJhLT5kZXZfY21kLnR5cGUgPT0gREVWX0NNRF9UWVBF X05PUCkgQEAgLTI2NzksNw0KPiArMjY5Myw3IEBAIHN0YXRpYyBpbnQgdWZzaGNkX2NvbXBfc2Nz aV91cGl1KHN0cnVjdCB1ZnNfaGJhICpoYmEsIHN0cnVjdA0KPiB1ZnNoY2RfbHJiICpscmJwKQ0K PiANCj4gICAgICAgICBpZiAobGlrZWx5KGxyYnAtPmNtZCkpIHsNCj4gICAgICAgICAgICAgICAg IHVmc2hjZF9wcmVwYXJlX3JlcV9kZXNjX2hkcihscmJwLCAmdXBpdV9mbGFncywNCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHJicC0+Y21kLT5zY19k YXRhX2RpcmVjdGlvbik7DQo+ICsNCj4gKyBscmJwLT5jbWQtPnNjX2RhdGFfZGlyZWN0aW9uLCAw KTsNCj4gICAgICAgICAgICAgICAgIHVmc2hjZF9wcmVwYXJlX3V0cF9zY3NpX2NtZF91cGl1KGxy YnAsIHVwaXVfZmxhZ3MpOw0KPiAgICAgICAgIH0gZWxzZSB7DQo+ICAgICAgICAgICAgICAgICBy ZXQgPSAtRUlOVkFMOw0KPiBAQCAtMjk0NSw2ICsyOTU5LDEyIEBAIHVmc2hjZF9kZXZfY21kX2Nv bXBsZXRpb24oc3RydWN0IHVmc19oYmEgKmhiYSwNCj4gc3RydWN0IHVmc2hjZF9scmIgKmxyYnAp DQo+ICAgICAgICAgICAgICAgICBkZXZfZXJyKGhiYS0+ZGV2LCAiJXM6IFJlamVjdCBVUElVIG5v dCBmdWxseSBpbXBsZW1lbnRlZFxuIiwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfX2Z1bmNfXyk7DQo+ICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICBjYXNlIFVQ SVVfVFJBTlNBQ1RJT05fUkVTUE9OU0U6DQo+ICsgICAgICAgICAgICAgICBpZiAoaGJhLT5kZXZf Y21kLnR5cGUgIT0gREVWX0NNRF9UWVBFX1JQTUIpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgZXJyID0gLUVJTlZBTDsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihoYmEt PmRldiwgIiVzOiB1bmV4cGVjdGVkIHJlc3BvbnNlICV4XG4iLCBfX2Z1bmNfXywNCj4gcmVzcCk7 DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gICAgICAg ICBkZWZhdWx0Og0KPiAgICAgICAgICAgICAgICAgZXJyID0gLUVJTlZBTDsNCj4gICAgICAgICAg ICAgICAgIGRldl9lcnIoaGJhLT5kZXYsICIlczogSW52YWxpZCBkZXZpY2UgbWFuYWdlbWVudCBj bWQgcmVzcG9uc2U6DQo+ICV4XG4iLCBAQCAtNjgzOCw3ICs2ODU4LDcgQEAgc3RhdGljIGludA0K PiB1ZnNoY2RfaXNzdWVfZGV2bWFuX3VwaXVfY21kKHN0cnVjdCB1ZnNfaGJhICpoYmEsDQo+ICAg ICAgICAgLyogdXBkYXRlIHRoZSB0YXNrIHRhZyBpbiB0aGUgcmVxdWVzdCB1cGl1ICovDQo+ICAg ICAgICAgcmVxX3VwaXUtPmhlYWRlci5kd29yZF8wIHw9IGNwdV90b19iZTMyKHRhZyk7DQo+IA0K PiAtICAgICAgIHVmc2hjZF9wcmVwYXJlX3JlcV9kZXNjX2hkcihscmJwLCAmdXBpdV9mbGFncywg RE1BX05PTkUpOw0KPiArICAgICAgIHVmc2hjZF9wcmVwYXJlX3JlcV9kZXNjX2hkcihscmJwLCAm dXBpdV9mbGFncywgRE1BX05PTkUsIDApOw0KPiANCj4gICAgICAgICAvKiBqdXN0IGNvcHkgdGhl IHVwaXUgcmVxdWVzdCBhcyBpdCBpcyAqLw0KPiAgICAgICAgIG1lbWNweShscmJwLT51Y2RfcmVx X3B0ciwgcmVxX3VwaXUsIHNpemVvZigqbHJicC0+dWNkX3JlcV9wdHIpKTsgQEAgLQ0KPiA2OTYx LDYgKzY5ODEsNzMgQEAgaW50IHVmc2hjZF9leGVjX3Jhd191cGl1X2NtZChzdHJ1Y3QgdWZzX2hi YSAqaGJhLA0KPiAgICAgICAgIHJldHVybiBlcnI7DQo+ICB9DQo+IA0KPiAraW50IHVmc2hjZF9h ZHZhbmNlZF9ycG1iX3JlcV9oYW5kbGVyKHN0cnVjdCB1ZnNfaGJhICpoYmEsIHN0cnVjdA0KPiB1 dHBfdXBpdV9yZXEgKnJlcV91cGl1LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHV0cF91cGl1X3JlcSAqcnNwX3VwaXUsIHN0cnVjdCB1ZnNfZWhzICplaHNfcmVxLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHVmc19laHMgKmVoc19yc3AsIGludCBzZ19jbnQs IHN0cnVjdCBzY2F0dGVybGlzdCAqc2dfbGlzdCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpciwgaW50IGxlbikgew0KPiArICAgICAgIERFQ0xB UkVfQ09NUExFVElPTl9PTlNUQUNLKHdhaXQpOw0KPiArICAgICAgIGNvbnN0IHUzMiB0YWcgPSBo YmEtPnJlc2VydmVkX3Nsb3Q7DQo+ICsgICAgICAgc3RydWN0IHVmc2hjZF9scmIgKmxyYnA7DQo+ ICsgICAgICAgaW50IGVyciA9IDA7DQo+ICsgICAgICAgdTggdXBpdV9mbGFnczsNCj4gKw0KPiAr ICAgICAgIC8qIFByb3RlY3RzIHVzZSBvZiBoYmEtPnJlc2VydmVkX3Nsb3QuICovDQo+ICsgICAg ICAgdWZzaGNkX2hvbGQoaGJhLCBmYWxzZSk7DQo+ICsgICAgICAgbXV0ZXhfbG9jaygmaGJhLT5k ZXZfY21kLmxvY2spOw0KPiArICAgICAgIGRvd25fcmVhZCgmaGJhLT5jbGtfc2NhbGluZ19sb2Nr KTsNCj4gKw0KPiArICAgICAgIGxyYnAgPSAmaGJhLT5scmJbdGFnXTsNCj4gKyAgICAgICBXQVJO X09OKGxyYnAtPmNtZCk7DQo+ICsgICAgICAgbHJicC0+Y21kID0gTlVMTDsNCj4gKyAgICAgICBs cmJwLT50YXNrX3RhZyA9IHRhZzsNCj4gKyAgICAgICBscmJwLT5sdW4gPSBVRlNfVVBJVV9SUE1C X1dMVU47DQo+ICsNCj4gKyAgICAgICBscmJwLT5pbnRyX2NtZCA9IHRydWU7DQo+ICsgICAgICAg dWZzaGNkX3ByZXBhcmVfbHJicF9jcnlwdG8oTlVMTCwgbHJicCk7DQo+ICsgICAgICAgaGJhLT5k ZXZfY21kLnR5cGUgPSBERVZfQ01EX1RZUEVfUlBNQjsNCj4gKw0KPiArICAgICAgIGxyYnAtPmNv bW1hbmRfdHlwZSA9IFVUUF9DTURfVFlQRV9VRlNfU1RPUkFHRTsNCj4gKw0KPiArICAgICAgIHVm c2hjZF9wcmVwYXJlX3JlcV9kZXNjX2hkcihscmJwLCAmdXBpdV9mbGFncywgZGlyLCBsZW4vMzIp Ow0KPiArDQo+ICsgICAgICAgLyogdXBkYXRlIHRoZSB0YXNrIHRhZyBhbmQgTFVOIGluIHRoZSBy ZXF1ZXN0IHVwaXUgKi8NCj4gKyAgICAgICByZXFfdXBpdS0+aGVhZGVyLmR3b3JkXzAgfD0gY3B1 X3RvX2JlMzIodXBpdV9mbGFncyA8PCAxNiB8DQo+ICsgVUZTX1VQSVVfUlBNQl9XTFVOIDw8IDgg fCB0YWcpOw0KPiArDQo+ICsgICAgICAgLyogY29weSB0aGUgdXBpdSByZXF1ZXN0IGFzIGl0IGlz ICovDQo+ICsgICAgICAgbWVtY3B5KGxyYnAtPnVjZF9yZXFfcHRyLCByZXFfdXBpdSwgc2l6ZW9m KCpscmJwLT51Y2RfcmVxX3B0cikpOw0KPiArICAgICAgIC8qIGNvcHkgZWhzICovDQo+ICsgICAg ICAgbWVtY3B5KGxyYnAtPnVjZF9yZXFfcHRyICsgMSwgZWhzX3JlcSwgc2l6ZW9mKCplaHNfcmVx KSk7DQo+ICsNCj4gKyAgICAgICBpZiAoZGlyICE9IERNQV9OT05FICYmIHNnX2xpc3QpDQo+ICsg ICAgICAgICAgICAgICB1ZnNoY2Rfc2dsX3RvX3ByZHQoaGJhLCBscmJwLCBzZ19jbnQsIHNnX2xp c3QpOw0KPiArDQo+ICsNCj4gKyAgICAgICBtZW1zZXQobHJicC0+dWNkX3JzcF9wdHIsIDAsIHNp emVvZihzdHJ1Y3QgdXRwX3VwaXVfcnNwKSk7DQo+ICsNCj4gKyAgICAgICBoYmEtPmRldl9jbWQu Y29tcGxldGUgPSAmd2FpdDsNCj4gKw0KPiArICAgICAgIHVmc2hjZF9zZW5kX2NvbW1hbmQoaGJh LCB0YWcpOw0KPiArDQo+ICsgICAgICAgZXJyID0gdWZzaGNkX3dhaXRfZm9yX2Rldl9jbWQoaGJh LCBscmJwLA0KPiArIEFEVkFOQ0VEX1JQTUJfUkVRX1RJTUVPVVQpOw0KPiArDQo+ICsgICAgICAg aWYgKCFlcnIpIHsNCj4gKyAgICAgICAgICAgICAgIC8qIGp1c3QgY29weSB0aGUgdXBpdSByZXNw b25zZSBhcyBpdCBpcyAqLw0KPiArICAgICAgICAgICAgICAgbWVtY3B5KHJzcF91cGl1LCBscmJw LT51Y2RfcnNwX3B0ciwgc2l6ZW9mKCpyc3BfdXBpdSkpOw0KPiArDQo+ICsgICAgICAgICAgICAg ICB1OCAqZGVzY3AgPSAodTggKilscmJwLT51Y2RfcnNwX3B0ciArIHNpemVvZigqcnNwX3VwaXUp Ow0KU2hvdWxkbid0IG1peCBkZWNsYXJhdGlvbiAmIGNvZGUNCk5vdCBzdXJlIGRlc2NwIGlzIGFu IGFwcHJvcHJpYXRlIG5hbWUgZm9yIHRoZSBFSFMgZGF0YQ0KTWF5YmUganVzdCB1OCBlaHNfZGF0 YSA9IGxyYnAtPnVjZF9yc3BfcHRyICsgMTsNCg0KPiArICAgICAgICAgICAgICAgdTE2IGVoc19s ZW4gPQ0KPiArIGJlMzJfdG9fY3B1KGxyYnAtPnVjZF9yc3BfcHRyLT5oZWFkZXIuZHdvcmRfMikg Pj4gMjQ7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGlmIChlaHNfbGVuID09IDIgICYmIGVoc19y c3ApDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShlaHNfcnNwLCBkZXNjcCwgZWhz X2xlbiAqIDMyKTsNCj4gKyAgICAgICB9DQpNYXliZSBhZGQgYSBjb21tZW50OiBlaHNfbGVuIGlz IGFsd2F5cyAyIHVubGVzcyB0aGVyZSB3YXMgYW4gZXJyb3IgDQoNCg0KVGhhbmtzLA0KQXZyaQ0K DQo+ICsNCj4gKyAgICAgICB1cF9yZWFkKCZoYmEtPmNsa19zY2FsaW5nX2xvY2spOw0KPiArICAg ICAgIG11dGV4X3VubG9jaygmaGJhLT5kZXZfY21kLmxvY2spOw0KPiArICAgICAgIHVmc2hjZF9y ZWxlYXNlKGhiYSk7DQo+ICsgICAgICAgcmV0dXJuIGVycjsNCj4gK30NCj4gKw0KPiAgLyoqDQo+ ICAgKiB1ZnNoY2RfZWhfZGV2aWNlX3Jlc2V0X2hhbmRsZXIoKSAtIFJlc2V0IGEgc2luZ2xlIGxv Z2ljYWwgdW5pdC4NCj4gICAqIEBjbWQ6IFNDU0kgY29tbWFuZCBwb2ludGVyDQo+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL3VhcGkvc2NzaS9zY3NpX2JzZ191ZnMuaCBiL2luY2x1ZGUvdWFwaS9zY3Np L3Njc2lfYnNnX3Vmcy5oDQo+IGluZGV4IGQ1NWYyMTc2ZGZkNC4uYTc5YWRiYzg5Y2MwIDEwMDY0 NA0KPiAtLS0gYS9pbmNsdWRlL3VhcGkvc2NzaS9zY3NpX2JzZ191ZnMuaA0KPiArKysgYi9pbmNs dWRlL3VhcGkvc2NzaS9zY3NpX2JzZ191ZnMuaA0KPiBAQCAtMTQsNyArMTQsMTYgQEANCj4gICAq Lw0KPiANCj4gICNkZWZpbmUgVUZTX0NEQl9TSVpFICAgMTYNCj4gLSNkZWZpbmUgVVBJVV9UUkFO U0FDVElPTl9VSUNfQ01EIDB4MUYNCj4gKw0KPiArZW51bSB1ZnNfYnNnX21zZ19jb2RlIHsNCj4g KyAgICAgICBVUElVX1RSQU5TQUNUSU9OX1VJQ19DTUQgPSAweDFGLA0KPiArICAgICAgIFVQSVVf VFJBTlNBQ1RJT05fQVJQTUJfREFUQV9XUklURSwNCj4gKyAgICAgICBVUElVX1RSQU5TQUNUSU9O X0FSUE1CX0RBVEFfUkVBRCwNCj4gKyAgICAgICBVUElVX1RSQU5TQUNUSU9OX0FSUE1CX1BST0dS QU1fS0VZLA0KPiArICAgICAgIFVQSVVfVFJBTlNBQ1RJT05fQVJQTUJfUkVBRF9DT1VOVEVSLA0K PiArDQo+ICt9Ow0KPiArDQo+ICAvKiB1aWMgY29tbWFuZHMgYXJlIDREVyBsb25nLCBwZXIgVUZT SENJIFYyLjEgcGFyYWdyYXBoIDUuNi4xICovICAjZGVmaW5lDQo+IFVJQ19DTURfU0laRSAoc2l6 ZW9mKF9fdTMyKSAqIDQpDQo+IA0KPiBAQCAtNzksNiArODgsMTQgQEAgc3RydWN0IHV0cF91cGl1 X3JlcSB7DQo+ICAgICAgICAgfTsNCj4gIH07DQo+IA0KPiArc3RydWN0IHVmc19laHMgew0KPiAr ICAgICAgIF9fdTggYmxlbmdodDsNCj4gKyAgICAgICBfX3U4IGxlaHNfdHlwZTsNCj4gKyAgICAg ICBfX3UxNiB3ZWhzc3ViX3R5cGU7DQo+ICsgICAgICAgX191OCBtZXRhWzI4XTsNCj4gKyAgICAg ICBfX3U4IG1hY19rZXlbMzJdOw0KPiArfTsNCj4gKw0KPiAgLyogcmVxdWVzdCAoQ0RCKSBzdHJ1 Y3R1cmUgb2YgdGhlIHNnX2lvX3Y0ICovICBzdHJ1Y3QgdWZzX2JzZ19yZXF1ZXN0IHsNCj4gICAg ICAgICBfX3UzMiBtc2djb2RlOw0KPiBAQCAtMTAyLDQgKzExOSwxNSBAQCBzdHJ1Y3QgdWZzX2Jz Z19yZXBseSB7DQo+IA0KPiAgICAgICAgIHN0cnVjdCB1dHBfdXBpdV9yZXEgdXBpdV9yc3A7DQo+ ICB9Ow0KPiArDQo+ICtzdHJ1Y3QgdWZzX3JwbWJfcmVxdWVzdCB7DQo+ICsgICAgICAgc3RydWN0 IHVmc19ic2dfcmVxdWVzdCBic2dfcmVxdWVzdDsNCj4gKyAgICAgICBzdHJ1Y3QgdWZzX2VocyBl aHNfcmVxOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IHVmc19ycG1iX3JlcGx5IHsNCj4gKyAgICAg ICBzdHJ1Y3QgdWZzX2JzZ19yZXBseSBic2dfcmVwbHk7DQo+ICsgICAgICAgc3RydWN0IHVmc19l aHMgZWhzX3JzcDsNCj4gK307DQo+ICsNCj4gICNlbmRpZiAvKiBVRlNfQlNHX0ggKi8NCj4gZGlm ZiAtLWdpdCBhL2luY2x1ZGUvdWZzL3Vmc2hjZC5oIGIvaW5jbHVkZS91ZnMvdWZzaGNkLmggaW5k ZXgNCj4gOTY1MzhlYjNhNmMwLi41OTkwNmNjN2Q4ZDMgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUv dWZzL3Vmc2hjZC5oDQo+ICsrKyBiL2luY2x1ZGUvdWZzL3Vmc2hjZC5oDQo+IEBAIC0zMCw2ICsz MCw3IEBAIHN0cnVjdCB1ZnNfaGJhOw0KPiAgZW51bSBkZXZfY21kX3R5cGUgew0KPiAgICAgICAg IERFVl9DTURfVFlQRV9OT1AgICAgICAgICAgICAgICAgPSAweDAsDQo+ICAgICAgICAgREVWX0NN RF9UWVBFX1FVRVJZICAgICAgICAgICAgICA9IDB4MSwNCj4gKyAgICAgICBERVZfQ01EX1RZUEVf UlBNQiAgICAgICAgICAgICAgID0gMHgyLA0KPiAgfTsNCj4gDQo+ICBlbnVtIHVmc19ldmVudF90 eXBlIHsNCj4gQEAgLTEyMDgsNiArMTIwOSwxMCBAQCBpbnQgdWZzaGNkX2V4ZWNfcmF3X3VwaXVf Y21kKHN0cnVjdCB1ZnNfaGJhDQo+ICpoYmEsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdTggKmRlc2NfYnVmZiwgaW50ICpidWZmX2xlbiwNCj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbnVtIHF1ZXJ5X29wY29kZSBkZXNjX29wKTsNCj4gDQo+ICtpbnQgdWZzaGNkX2Fk dmFuY2VkX3JwbWJfcmVxX2hhbmRsZXIoc3RydWN0IHVmc19oYmEgKmhiYSwgc3RydWN0DQo+IHV0 cF91cGl1X3JlcSAqcmVxX3VwaXUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg dXRwX3VwaXVfcmVxICpyc3BfdXBpdSwgc3RydWN0IHVmc19laHMgKmVoc19yZXEsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWZzX2VocyAqZWhzX3JzcCwgaW50IHNnX2NudCwg c3RydWN0IHNjYXR0ZXJsaXN0ICpzZ19saXN0LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyLCBpbnQgbGVuKTsNCj4gIGludCB1ZnNoY2Rfd2Jf dG9nZ2xlKHN0cnVjdCB1ZnNfaGJhICpoYmEsIGJvb2wgZW5hYmxlKTsgIGludA0KPiB1ZnNoY2Rf d2JfdG9nZ2xlX2J1Zl9mbHVzaChzdHJ1Y3QgdWZzX2hiYSAqaGJhLCBib29sIGVuYWJsZSk7ICBp bnQNCj4gdWZzaGNkX3N1c3BlbmRfcHJlcGFyZShzdHJ1Y3QgZGV2aWNlICpkZXYpOw0KPiAtLQ0K PiAyLjI1LjENCg0K