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=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 50340C47094 for ; Thu, 10 Jun 2021 13:16:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 37D0E613C9 for ; Thu, 10 Jun 2021 13:16:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230317AbhFJNSy (ORCPT ); Thu, 10 Jun 2021 09:18:54 -0400 Received: from userp2120.oracle.com ([156.151.31.85]:37948 "EHLO userp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230084AbhFJNSy (ORCPT ); Thu, 10 Jun 2021 09:18:54 -0400 Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 15ADAGnY107682; Thu, 10 Jun 2021 13:16:56 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=corp-2020-01-29; bh=uVDV5nlYNpOk6CZLOldf9/XT4z6YY6ytcNFgmRLYeLg=; b=ag/KGT5z5yg/wg2MZ/XDKud78Licujju8whYtni3okYyTETo1oS1pNC0jc9e4JgedTrl Kb6fWWSLlGQpK9+aS7vdL6mXlaRaS6Qc+83r2AdcWtGkYgxRKgsJ9ZNme6XxOrxx4fl9 ML5njBLwtQyssIwsxWL2CUEcB9clw5m9bqio0p9BqfLFS4N6A7WpUVZF50/9VkyKLy+c H8SGbgsmUsxOB7phwUx+Dj0jtkLaE+MsFv8zoAtHk8r+Qdo4V/QJRMFP+cS0TGw5tfU6 sltMTXYBa4r4euTCevKZ84RCHfpiqogh+cFAfxYops7u6wodPHKukVt6cOCt53s1uz9a xA== Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by userp2120.oracle.com with ESMTP id 3914qutgbb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 10 Jun 2021 13:16:56 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 15ADAkwS121598; Thu, 10 Jun 2021 13:16:55 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2103.outbound.protection.outlook.com [104.47.55.103]) by aserp3020.oracle.com with ESMTP id 3922wy7md2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 10 Jun 2021 13:16:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I4Vc527j5vSiZoSSbKa45dwAzXFQk49mFE8F1TLe5iNTDZiJ1Xfpq4G4wq4IRx2qp73tNnxT/mWmtXuH4x6CKojzHm3yofB96ITz8zhrBI4sWX9IJHonu3b9aqoZdIdaP9TNonT9/WFrKpy4wV7ueTQrx1IrtpciGfNxxT79i6UrLboAszvsVtBn/q9R1RDnblB3qqjeoyAPYWjK4mVMXBhUuwQh/2m9LcBhDzMtPg7IlzChNYRcXv5Mux9IHn51kJtsvNmwYL6U5kXk55zIcggn7GLNqBvIz76RtnJGKsbWzWPGhYsxoho4eqfFd6zYTuoLEI32r4fV0VrBQIBEWA== 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=uVDV5nlYNpOk6CZLOldf9/XT4z6YY6ytcNFgmRLYeLg=; b=nZLMFk/GxRPlKgbLLz8XiftUc6W1Q9GjnFui+ZQrq/QjVj9vJfE+3EORcnXgzKWt78HoC8domrg3quhOp19Dob3nzhzCiLu/IA2D9CtiRKiUMRbZE5OXanyZQmdTxJ4eJ0+aDqArlljZq4cIJAJEXhuJ6hEw57jwEqMrp4s+8NaM71IeuyZlJCOPEL4aZ3C+sCCtfFpycGEIgLyhzdnaAdCXiJSvoQBz335vbfl/Ptog85SQIujX7nJMiQaFCyGt6ZFph/uFUxcbo7DDlcz8amI/b+aRcQjnuFkimpJHKPYz5luEj9pcnfekWyzVbvHxXhihDXzZsjb39pff0Oi6UQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uVDV5nlYNpOk6CZLOldf9/XT4z6YY6ytcNFgmRLYeLg=; b=j8MbaYwg1OVXu9aOgaJFIAkueTqNe+aDtfGepkmD3dma/7gurwHu4AmVJ6foWZho61wtkZJjq5KToYpbYTKpuBJMQ8EG+5JTTzSWQYXJ5n7Nv0A81pjAxufIZLtdqtXa0wiNNQgNuKTULX1U+yNRD6bHyHxuvAnPL6qz2DKH4eU= Received: from CY4PR10MB1989.namprd10.prod.outlook.com (2603:10b6:903:11a::12) by CY4PR10MB1302.namprd10.prod.outlook.com (2603:10b6:903:27::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21; Thu, 10 Jun 2021 13:16:52 +0000 Received: from CY4PR10MB1989.namprd10.prod.outlook.com ([fe80::2cda:5611:238a:17a3]) by CY4PR10MB1989.namprd10.prod.outlook.com ([fe80::2cda:5611:238a:17a3%8]) with mapi id 15.20.4195.032; Thu, 10 Jun 2021 13:16:52 +0000 From: Haakon Bugge To: Devesh Sharma CC: OFED mailing list Subject: Re: [PATCH V4 rdma-core 5/5] bnxt_re/lib: Move hardware queue to 16B aligned indices Thread-Topic: [PATCH V4 rdma-core 5/5] bnxt_re/lib: Move hardware queue to 16B aligned indices Thread-Index: AQHXXeZ1YQsvwulq9Ey63dKWzaT5qasNOfEA Date: Thu, 10 Jun 2021 13:16:52 +0000 Message-ID: <6D0F0C1F-0AAA-4E52-AF50-9147E5A68797@oracle.com> References: <20210610104910.1147756-1-devesh.sharma@broadcom.com> <20210610104910.1147756-6-devesh.sharma@broadcom.com> In-Reply-To: <20210610104910.1147756-6-devesh.sharma@broadcom.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3654.100.0.2.22) authentication-results: broadcom.com; dkim=none (message not signed) header.d=none;broadcom.com; dmarc=none action=none header.from=oracle.com; x-originating-ip: [51.175.204.144] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 148e22bc-f339-45fa-1d22-08d92c120333 x-ms-traffictypediagnostic: CY4PR10MB1302: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:513; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: eyw6qEWxPYPbWRH37v8YTtJyyXbkaPjUZvLt1Db5wnpkf104ixXZkebYhQYjIXo5VnyZ7mFs9gBikRuRzQeIVFvjfILm4a/o2gzlhMRPmqg3Muu69UCQkOyuURJONDTJeiAtsGXDWUjK/76VcxCnE89YSllyfZRqAq5lFlxJGBnmF4TsWEyD4apFQei4KkucCLEPJBfh76oeo74vC/oIUx+H/u2cIPCsoSNvPzmLA0qinvHp33zt/JIuAbXDrd8Gc/T0TvnbU0K34OQrnak9OQ4meCh8a02PRiluAYH/ixUmPR7qGD5vpH3RvUm6RUyl8UOEEkW5sW4iRB0eBp2UacqOvmVMU1IB3rG63NryN6Ksx2jgvUzKiRO+6EiKBH+64CH5sszuF6t9nfbVdagANnq0IWdn4B/4U8Fn4oWeKVfqSUgPTzLtkznYny3DpoybuA8NplLsoQbFj5wSh5QVkx6ApdEHLBIZi9U2LuwzfyeYzZeHCacPSL/IS7accrKf9xUfmRW7d9ujYVVBHwC/+ByjD/9L2hAXY/sKidXq465w9YQlrPASnS0jV/0Co/JMs4SS5Ldmrh7VY0cu8JxZuOvyExwLapMaDZoWjQwR45D5M3frTHDlbPHzXdXEPEkTzM6txXd20TfDPERUYpSdL6mURd99SDxGoVjQq3ENI1k= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR10MB1989.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(346002)(396003)(136003)(39860400002)(376002)(76116006)(122000001)(36756003)(66556008)(8936002)(2616005)(66476007)(38100700002)(2906002)(5660300002)(66946007)(478600001)(316002)(186003)(53546011)(64756008)(86362001)(6512007)(66574015)(6506007)(66446008)(83380400001)(6916009)(8676002)(6486002)(44832011)(71200400001)(91956017)(4326008)(33656002)(30864003)(26005)(45980500001)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OGxQdlBUeEd0WldmVjlSOEtvK2xOb0lCa2ZwVERHTncvQnlrQ0dmSU14eE1u?= =?utf-8?B?aHJNamlVY2tHTkpKQVRIcVNQaDF1Y1g0ajAvLzdlOU5XWXVCRTdzeWo2MUt4?= =?utf-8?B?aGQ2b2FqWkVxeWdReHFodnNGRnlUU2gzVGNyUFBBLzhPalNJU2NyNWJwR0Zu?= =?utf-8?B?dmxkRExQRHBKdG5tSUtpTkM0QkpNUkU0NmhrYndJTnRTL0J3K09lNk9mS0Jq?= =?utf-8?B?Y0NncnNUWS9oZkF2Wm11NUFrVWlWNmp0dFo3eFZBT2QzbGdWYkhyK3NXVng2?= =?utf-8?B?alVZRmVzNmxjSDZCZTZCcGl4aXdtRmx4emxzV0RFVjFjeWt6Tk42UC9GaFFG?= =?utf-8?B?dTVjVTVNUUNPcWhheUNtNFVmRkhuMi9vdzFtUzNqclZNVkhIaEpHY1JodUxx?= =?utf-8?B?eFN3OXJwSGpOeGRkZkxFT3dIcENGdDc1TzJpR3piRkhCang0dWk2TDhlSmhJ?= =?utf-8?B?VFVEMm9Fdks0bzlucDJNU0w5OFkwVDFYYVIvR1RVOTVRRFlzbnM0NXdCNEg1?= =?utf-8?B?RTFQakVKOXR3WldydDJzZ3grZ09SbGxsSWtENmtTRkluVGNCdzlkbllKSE82?= =?utf-8?B?TitWSlJkUjFHL3lyTE9lNmwxZVFGanQxblVvQ011ZHViS1gvNGRsN3FCbGFq?= =?utf-8?B?SjlPMTJqdVJSTE9Xa00zK3g3aHRUUlRsZlFIUjlNTzJFQXBzYUdRbzRjV3N3?= =?utf-8?B?bFFHbjFxSklMY08zRmdwd2F4SmY1c2JPcHA1dWlDQk9UYXo4Zzh3blZuWUFY?= =?utf-8?B?VjVNMHdsV3FjUkk4UGxmaGRBeTA1aHhWZ2I5eEwvc0llYTgwUEpUM0xJY0Vo?= =?utf-8?B?Zi9tZHlZbSs3cmFRWnBnTEpBek5LZFlVK0MxOG1OR0NOUXB0OU8zemVIOWhQ?= =?utf-8?B?eTZjalNaRlBmcW9EVFZtc2N4M2Zld05sOC9qQ3FCSzhOOGNVWnIvaVJTUEFF?= =?utf-8?B?aXI2OEl5N2dpMTVacHo1WVJVZU5kMzJjY2NPSk1DWnVLYXlqTTNORGdPRm52?= =?utf-8?B?dXhPRnlrYlJ4RnlnZ1J5b2xXNTUwS241TUptWWFWSHJTcHZ3VEg5bmdwU2hN?= =?utf-8?B?ZUNkTkhCVlZOelkwSlBoTndvajZXbkEvU1pKYlVWVEZNcnc4cnBuMzg0YlB4?= =?utf-8?B?TGZsOGFreUdEcWFTNzNrWDRzZ2xlTE1WWHIrTHBnTDlhdDJTVlV3K0R3WE1q?= =?utf-8?B?OHREbTdmYnhUeTFVRnE4eU5GTWJucVhVMDFCdnNjMEhoaGMvZHhnVjJUY3Zn?= =?utf-8?B?QVBML3RMVUlkb2VMU3hGc0s0bkU2b3k0bTB3K0ZHeGRydEtFU3g2SklkYWc3?= =?utf-8?B?VGZPbzJ2YmwxcEZTV0NCU1M3QmhwcDZxeTVSSHRERzlLcjVuNTVKamw3OE8v?= =?utf-8?B?U29jVmhtYWJZb2NUMmQyWWxlOTJwOVRVZkJsb3g1cXN1aGxtd0JEdHc2NmJj?= =?utf-8?B?WnJOWHIrTVZJeWZCV0R4OU9KL3ZYYTVzdFVNY2ZtemRqdGc3TVdhRHZmRytk?= =?utf-8?B?cXpjUGg1U0tqeUh1VUphZTNVZDBEMVpDMjZQcG41cEtoK29IU1NBVURRMU9t?= =?utf-8?B?ZHBhVHR2WTJXRzkzVjVyZC9vMysyNjJIRDdSK1B5UEJyKzFHb3d6SU9nZUJE?= =?utf-8?B?Y1FZczZJalJWM01oWk15c3FodEhqS1VPbGM2VzZKVkJVb0ZHZ05lTWppTkEr?= =?utf-8?B?a1puRU1pdWtIS0RwTUFMS21kcU5SRHlseGFRdHdxSmNyT0Vaa3dJdFY0WFc1?= =?utf-8?B?RVJjWEFPYk9YcXNDeXNQQktGeFM5eXJMQ3FZdVQrTFpWUG5RKzMxTk8wTTU1?= =?utf-8?B?ajlDSjE0bElTM1pGL2ZDUT09?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR10MB1989.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 148e22bc-f339-45fa-1d22-08d92c120333 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2021 13:16:52.3171 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: GkLrKF/Afn+Wqi4wutekY6lyn5FWphOOIMluoCHEbaMP3RwrrWUbSBCMv5IaVyoE7C09TMOp4ud0ZUYVyLQ/CA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR10MB1302 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10011 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 suspectscore=0 malwarescore=0 mlxscore=0 spamscore=0 phishscore=0 bulkscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2106100086 X-Proofpoint-ORIG-GUID: r0oY48ekcfq7XIJ95_32l3mSr-jNP1PA X-Proofpoint-GUID: r0oY48ekcfq7XIJ95_32l3mSr-jNP1PA X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10011 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0 phishscore=0 spamscore=0 malwarescore=0 clxscore=1011 lowpriorityscore=0 priorityscore=1501 adultscore=0 mlxscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2106100086 Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org DQoNCj4gT24gMTAgSnVuIDIwMjEsIGF0IDEyOjQ5LCBEZXZlc2ggU2hhcm1hIDxkZXZlc2guc2hh cm1hQGJyb2FkY29tLmNvbT4gd3JvdGU6DQo+IA0KPiBNb3ZlIFNRIGFuZCBSUSBpbmRpY2VzIGZy b20gV1FFIGJvdW5kYXJ5IHRvDQo+IDE2QiBib3VuZGFyeSBhbGlnbm1lbnQuIENoYW5naW5nIHRo ZSBTUS13cWUgcG9zdGluZw0KPiBhbGdvcml0aG0gYWNjb3JkaW5nbHkuIFRoZSBuZXcgYWxpZ25t ZW50IG5lZWRzIHRvIHB1bGwNCj4gYSAxNkIgc2xvdCBmcm9tIHRoZSBoYXJkd2FyZSBxdWV1ZSBh bmQgaW5pdGlhbGl6ZSB0aGUNCj4gY3VycmVudCAxNkIgaW50byB0aGUgaGFyZHdhcmUgYnVmZmVy LiBEZXBlbmRpbmcgb24gdGhlDQo+IG1heCBwb3NzaWJsZSB3cWUgc2l6ZSBzdXBwb3J0ZWQgYnkg aGFyZHdhcmUsIHRoZSBudW1iZXINCj4gb2YgMTZCIHNsb3RzIGFyZSBjYWxjdWxhdGVkIGFuZCBw dWxsZWQgZm9yIGluaXRpYWxpemF0aW9uLg0KPiBDdXJyZW50bHkgMTI4QiB3cWUgaXMgc3VwcG9y dGVkIGFuZCBpdCByZXF1aXJlcyA4IHNsb3RzLg0KDQpQbGVhc2UgYWxpZ24gdG8gNzQgY2hhcnMu DQoNCg0KPiANCj4gU2lnbmVkLW9mZi1ieTogRGV2ZXNoIFNoYXJtYSA8ZGV2ZXNoLnNoYXJtYUBi cm9hZGNvbS5jb20+DQo+IC0tLQ0KPiBwcm92aWRlcnMvYm54dF9yZS9kYi5jICAgICB8ICAxMCAr LQ0KPiBwcm92aWRlcnMvYm54dF9yZS9tYWluLmggICB8ICAgMSArDQo+IHByb3ZpZGVycy9ibnh0 X3JlL21lbW9yeS5oIHwgIDMzICsrKy0NCj4gcHJvdmlkZXJzL2JueHRfcmUvdmVyYnMuYyAgfCAz NzEgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQ0KPiA0IGZpbGVzIGNoYW5n ZWQsIDI5NCBpbnNlcnRpb25zKCspLCAxMjEgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0 IGEvcHJvdmlkZXJzL2JueHRfcmUvZGIuYyBiL3Byb3ZpZGVycy9ibnh0X3JlL2RiLmMNCj4gaW5k ZXggM2M3OTc1NzMuLmU5OWI3YjYyIDEwMDY0NA0KPiAtLS0gYS9wcm92aWRlcnMvYm54dF9yZS9k Yi5jDQo+ICsrKyBiL3Byb3ZpZGVycy9ibnh0X3JlL2RiLmMNCj4gQEAgLTYyLDE4ICs2MiwyMCBA QCBzdGF0aWMgdm9pZCBibnh0X3JlX2luaXRfZGJfaGRyKHN0cnVjdCBibnh0X3JlX2RiX2hkciAq aGRyLCB1aW50MzJfdCBpbmR4LA0KPiB2b2lkIGJueHRfcmVfcmluZ19ycV9kYihzdHJ1Y3QgYm54 dF9yZV9xcCAqcXApDQo+IHsNCj4gCXN0cnVjdCBibnh0X3JlX2RiX2hkciBoZHI7DQo+ICsJdWlu dDMyX3QgdGFpbDsNCj4gDQo+IC0JYm54dF9yZV9pbml0X2RiX2hkcigmaGRyLCBxcC0+anJxcS0+ aHdxdWUtPnRhaWwsDQo+IC0JCQkgICAgcXAtPnFwaWQsIEJOWFRfUkVfUVVFX1RZUEVfUlEpOw0K PiArCXRhaWwgPSBxcC0+anJxcS0+aHdxdWUtPnRhaWwgLyBxcC0+anJxcS0+aHdxdWUtPm1heF9z bG90czsNCj4gKwlibnh0X3JlX2luaXRfZGJfaGRyKCZoZHIsIHRhaWwsIHFwLT5xcGlkLCBCTlhU X1JFX1FVRV9UWVBFX1JRKTsNCj4gCWJueHRfcmVfcmluZ19kYihxcC0+dWRwaSwgJmhkcik7DQo+ IH0NCj4gDQo+IHZvaWQgYm54dF9yZV9yaW5nX3NxX2RiKHN0cnVjdCBibnh0X3JlX3FwICpxcCkN Cj4gew0KPiAJc3RydWN0IGJueHRfcmVfZGJfaGRyIGhkcjsNCj4gKwl1aW50MzJfdCB0YWlsOw0K PiANCj4gLQlibnh0X3JlX2luaXRfZGJfaGRyKCZoZHIsIHFwLT5qc3FxLT5od3F1ZS0+dGFpbCwN Cj4gLQkJCSAgICBxcC0+cXBpZCwgQk5YVF9SRV9RVUVfVFlQRV9TUSk7DQo+ICsJdGFpbCA9IHFw LT5qc3FxLT5od3F1ZS0+dGFpbCAvIHFwLT5qc3FxLT5od3F1ZS0+bWF4X3Nsb3RzOw0KPiArCWJu eHRfcmVfaW5pdF9kYl9oZHIoJmhkciwgdGFpbCwgcXAtPnFwaWQsIEJOWFRfUkVfUVVFX1RZUEVf U1EpOw0KPiAJYm54dF9yZV9yaW5nX2RiKHFwLT51ZHBpLCAmaGRyKTsNCj4gfQ0KPiANCj4gZGlm ZiAtLWdpdCBhL3Byb3ZpZGVycy9ibnh0X3JlL21haW4uaCBiL3Byb3ZpZGVycy9ibnh0X3JlL21h aW4uaA0KPiBpbmRleCBhZDY2MGUxYS4uYWI3YWM1MjEgMTAwNjQ0DQo+IC0tLSBhL3Byb3ZpZGVy cy9ibnh0X3JlL21haW4uaA0KPiArKysgYi9wcm92aWRlcnMvYm54dF9yZS9tYWluLmgNCj4gQEAg LTQ0LDYgKzQ0LDcgQEANCj4gI2luY2x1ZGUgPHN0ZGRlZi5oPg0KPiAjaW5jbHVkZSA8ZW5kaWFu Lmg+DQo+ICNpbmNsdWRlIDxwdGhyZWFkLmg+DQo+ICsjaW5jbHVkZSA8c3lzL3BhcmFtLmg+DQo+ IA0KPiAjaW5jbHVkZSA8aW5maW5pYmFuZC9kcml2ZXIuaD4NCj4gI2luY2x1ZGUgPHV0aWwvdWRt YV9iYXJyaWVyLmg+DQo+IGRpZmYgLS1naXQgYS9wcm92aWRlcnMvYm54dF9yZS9tZW1vcnkuaCBi L3Byb3ZpZGVycy9ibnh0X3JlL21lbW9yeS5oDQo+IGluZGV4IDViY2RlZjlhLi5lYmJjM2M1MSAx MDA2NDQNCj4gLS0tIGEvcHJvdmlkZXJzL2JueHRfcmUvbWVtb3J5LmgNCj4gKysrIGIvcHJvdmlk ZXJzL2JueHRfcmUvbWVtb3J5LmgNCj4gQEAgLTU3LDYgKzU3LDggQEAgc3RydWN0IGJueHRfcmVf cXVldWUgew0KPiAJICogYW5kIHRoZSBjb25zdW1lciBpbmRpY2VzIGluIHRoZSBxdWV1ZQ0KPiAJ ICovDQo+IAl1aW50MzJfdCBkaWZmOw0KPiArCXVpbnQzMl90IGVzaXplOw0KPiArCXVpbnQzMl90 IG1heF9zbG90czsNCj4gCXB0aHJlYWRfc3BpbmxvY2tfdCBxbG9jazsNCj4gfTsNCj4gDQo+IEBA IC04MiwyOSArODQsNDQgQEAgaW50IGJueHRfcmVfYWxsb2NfYWxpZ25lZChzdHJ1Y3QgYm54dF9y ZV9xdWV1ZSAqcXVlLCB1aW50MzJfdCBwZ19zaXplKTsNCj4gdm9pZCBibnh0X3JlX2ZyZWVfYWxp Z25lZChzdHJ1Y3QgYm54dF9yZV9xdWV1ZSAqcXVlKTsNCj4gDQo+IC8qIEJhc2ljIHF1ZXVlIG9w ZXJhdGlvbiAqLw0KPiAtc3RhdGljIGlubGluZSB1aW50MzJfdCBibnh0X3JlX2lzX3F1ZV9mdWxs KHN0cnVjdCBibnh0X3JlX3F1ZXVlICpxdWUpDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgKmJueHRf cmVfZ2V0X2h3cWUoc3RydWN0IGJueHRfcmVfcXVldWUgKnF1ZSwgdWludDMyX3QgaWR4KQ0KPiB7 DQo+IC0JcmV0dXJuICgoKHF1ZS0+ZGlmZiArIHF1ZS0+dGFpbCkgJiAocXVlLT5kZXB0aCAtIDEp KSA9PSBxdWUtPmhlYWQpOw0KPiArCWlkeCArPSBxdWUtPnRhaWw7DQo+ICsJaWYgKGlkeCA+PSBx dWUtPmRlcHRoKQ0KPiArCQlpZHggLT0gcXVlLT5kZXB0aDsNCj4gKwlyZXR1cm4gKHZvaWQgKiko cXVlLT52YSArIChpZHggPDwgNCkpOw0KPiB9DQo+IA0KPiAtc3RhdGljIGlubGluZSB1aW50MzJf dCBibnh0X3JlX2lzX3F1ZV9lbXB0eShzdHJ1Y3QgYm54dF9yZV9xdWV1ZSAqcXVlKQ0KPiArc3Rh dGljIGlubGluZSB1aW50MzJfdCBibnh0X3JlX2lzX3F1ZV9mdWxsKHN0cnVjdCBibnh0X3JlX3F1 ZXVlICpxdWUsDQo+ICsJCQkJCSAgIHVpbnQzMl90IHNsb3RzKQ0KPiB7DQo+IC0JcmV0dXJuIHF1 ZS0+dGFpbCA9PSBxdWUtPmhlYWQ7DQo+ICsJaW50MzJfdCBhdmFpbCwgaGVhZCwgdGFpbDsNCj4g Kw0KPiArCWhlYWQgPSBxdWUtPmhlYWQ7DQo+ICsJdGFpbCA9IHF1ZS0+dGFpbDsNCj4gKwlhdmFp bCA9IGhlYWQgLSB0YWlsOw0KPiArCWlmIChoZWFkIDw9IHRhaWwpDQo+ICsJCWF2YWlsICs9IHF1 ZS0+ZGVwdGg7DQo+ICsJcmV0dXJuIGF2YWlsIDw9IChzbG90cyArIHF1ZS0+ZGlmZik7DQoNCk1h a2UgZnVuY3Rpb24gdHlwZSBib29sPw0KDQo+IH0NCj4gDQo+IC1zdGF0aWMgaW5saW5lIHVpbnQz Ml90IGJueHRfcmVfaW5jcih1aW50MzJfdCB2YWwsIHVpbnQzMl90IG1heCkNCj4gK3N0YXRpYyBp bmxpbmUgdWludDMyX3QgYm54dF9yZV9pc19xdWVfZW1wdHkoc3RydWN0IGJueHRfcmVfcXVldWUg KnF1ZSkNCj4gew0KPiAtCXJldHVybiAoKyt2YWwgJiAobWF4IC0gMSkpOw0KPiArCXJldHVybiBx dWUtPnRhaWwgPT0gcXVlLT5oZWFkOw0KDQpkaXR0bw0KDQo+IH0NCj4gDQo+IHN0YXRpYyBpbmxp bmUgdm9pZCBibnh0X3JlX2luY3JfdGFpbChzdHJ1Y3QgYm54dF9yZV9xdWV1ZSAqcXVlLCB1aW50 OF90IGNudCkNCj4gew0KPiAtCXF1ZS0+dGFpbCA9IChxdWUtPnRhaWwgKyBjbnQpICYgKHF1ZS0+ ZGVwdGggLSAxKTsNCj4gKwlxdWUtPnRhaWwgKz0gY250Ow0KPiArCWlmIChxdWUtPnRhaWwgPj0g cXVlLT5kZXB0aCkNCj4gKwkJcXVlLT50YWlsICU9IHF1ZS0+ZGVwdGg7DQo+IH0NCj4gDQo+IHN0 YXRpYyBpbmxpbmUgdm9pZCBibnh0X3JlX2luY3JfaGVhZChzdHJ1Y3QgYm54dF9yZV9xdWV1ZSAq cXVlLCB1aW50OF90IGNudCkNCj4gew0KPiAtCXF1ZS0+aGVhZCA9IChxdWUtPmhlYWQgKyBjbnQp ICYgKHF1ZS0+ZGVwdGggLSAxKTsNCj4gKwlxdWUtPmhlYWQgKz0gY250Ow0KPiArCWlmIChxdWUt PmhlYWQgPj0gcXVlLT5kZXB0aCkNCj4gKwkJcXVlLT5oZWFkICU9IHF1ZS0+ZGVwdGg7DQo+IH0N Cj4gDQo+ICNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvcHJvdmlkZXJzL2JueHRfcmUvdmVyYnMuYyBi L3Byb3ZpZGVycy9ibnh0X3JlL3ZlcmJzLmMNCj4gaW5kZXggMjY4ZjQ0M2MuLjRkYWE4OTQ0IDEw MDY0NA0KPiAtLS0gYS9wcm92aWRlcnMvYm54dF9yZS92ZXJicy5jDQo+ICsrKyBiL3Byb3ZpZGVy cy9ibnh0X3JlL3ZlcmJzLmMNCj4gQEAgLTg4NSw3ICs4ODUsODAgQEAgc3RhdGljIGludCBibnh0 X3JlX2FsbG9jX2luaXRfc3dxdWUoc3RydWN0IGJueHRfcmVfam9pbnRfcXVldWUgKmpxcSwgaW50 IG53cikNCj4gCXJldHVybiAwOw0KPiB9DQo+IA0KPiAtc3RhdGljIGludCBibnh0X3JlX2FsbG9j X3F1ZXVlcyhzdHJ1Y3QgYm54dF9yZV9xcCAqcXAsDQo+ICtzdGF0aWMgaW50IGJueHRfcmVfY2Fs Y193cWVfc3ooaW50IG5zZ2UpDQo+ICt7DQo+ICsJLyogVGhpcyBpcyB1c2VkIGZvciBib3RoIHNx IGFuZCBycS4gSW4gY2FzZSBoZHIgc2l6ZSBkaWZmZXJzDQo+ICsJICogaW4gZnV0dXJlIG1vdmUg dG8gaW5kaXZpZHVhbCBmdW5jdGlvbnMuDQo+ICsJICovDQo+ICsJcmV0dXJuIHNpemVvZihzdHJ1 Y3QgYm54dF9yZV9zZ2UpICogbnNnZSArIGJueHRfcmVfZ2V0X3NxZV9oZHJfc3ooKTsNCj4gK30N Cj4gKw0KPiArc3RhdGljIGludCBibnh0X3JlX2dldF9ycV9zbG90cyhzdHJ1Y3QgYm54dF9yZV9k ZXYgKnJkZXYsDQo+ICsJCQkJc3RydWN0IGJueHRfcmVfcXAgKnFwLCB1aW50MzJfdCBucndyLA0K PiArCQkJCXVpbnQzMl90IG5zZ2UpDQo+ICt7DQo+ICsJdWludDMyX3QgbWF4X3dxZXN6Ow0KPiAr CXVpbnQzMl90IHdxZV9zaXplOw0KPiArCXVpbnQzMl90IHN0cmlkZTsNCj4gKwl1aW50MzJfdCBz bG90czsNCj4gKw0KPiArCXN0cmlkZSA9IHNpemVvZihzdHJ1Y3QgYm54dF9yZV9zZ2UpOw0KPiAr CW1heF93cWVzeiA9IGJueHRfcmVfY2FsY193cWVfc3oocmRldi0+ZGV2YXR0ci5tYXhfc2dlKTsN Cj4gKw0KPiArCXdxZV9zaXplID0gYm54dF9yZV9jYWxjX3dxZV9zeihuc2dlKTsNCj4gKwlpZiAo d3FlX3NpemUgPiBtYXhfd3Flc3opDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KDQo+ICsNCj4gKwlp ZiAocXAtPnFwbW9kZSA9PSBCTlhUX1JFX1dRRV9NT0RFX1NUQVRJQykNCj4gKwkJd3FlX3NpemUg PSBibnh0X3JlX2NhbGNfd3FlX3N6KDYpOw0KPiArDQo+ICsJcXAtPmpycXEtPmh3cXVlLT5lc2l6 ZSA9IHdxZV9zaXplOw0KPiArCXFwLT5qcnFxLT5od3F1ZS0+bWF4X3Nsb3RzID0gd3FlX3NpemUg LyBzdHJpZGU7DQo+ICsNCj4gKwlzbG90cyA9IChucndyICogd3FlX3NpemUpIC8gc3RyaWRlOw0K PiArCXJldHVybiBzbG90czsNCg0KQmV0dGVyOg0KDQoJcmV0dXJuIChucndyICogd3FlX3NpemUp IC8gc3RyaWRlOw0KDQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgYm54dF9yZV9nZXRfc3Ffc2xv dHMoc3RydWN0IGJueHRfcmVfZGV2ICpyZGV2LA0KPiArCQkJCXN0cnVjdCBibnh0X3JlX3FwICpx cCwgdWludDMyX3QgbnN3ciwNCj4gKwkJCQl1aW50MzJfdCBuc2dlLCB1aW50MzJfdCAqaWxzKQ0K PiArew0KPiArCXVpbnQzMl90IG1heF93cWVzejsNCj4gKwl1aW50MzJfdCB3cWVfc2l6ZTsNCj4g Kwl1aW50MzJfdCBjYWxfaWxzOw0KPiArCXVpbnQzMl90IHN0cmlkZTsNCj4gKwl1aW50MzJfdCBp bHNpemU7DQo+ICsJdWludDMyX3QgaGRyX3N6Ow0KPiArCXVpbnQzMl90IHNsb3RzOw0KPiArDQo+ ICsJaGRyX3N6ID0gYm54dF9yZV9nZXRfc3FlX2hkcl9zeigpOw0KPiArCXN0cmlkZSA9IHNpemVv ZihzdHJ1Y3QgYm54dF9yZV9zZ2UpOw0KPiArCW1heF93cWVzeiA9IGJueHRfcmVfY2FsY193cWVf c3oocmRldi0+ZGV2YXR0ci5tYXhfc2dlKTsNCj4gKwlpbHNpemUgPSBnZXRfYWxpZ25lZCgqaWxz LCBoZHJfc3opOw0KPiArDQo+ICsJd3FlX3NpemUgPSBibnh0X3JlX2NhbGNfd3FlX3N6KG5zZ2Up Ow0KPiArCWlmIChpbHNpemUpIHsNCj4gKwkJY2FsX2lscyA9IGhkcl9zeiArIGlsc2l6ZTsNCj4g KwkJd3FlX3NpemUgPSBNQVgoY2FsX2lscywgd3FlX3NpemUpOw0KPiArCQl3cWVfc2l6ZSA9IGdl dF9hbGlnbmVkKHdxZV9zaXplLCBoZHJfc3opOw0KPiArCX0NCj4gKwlpZiAod3FlX3NpemUgPiBt YXhfd3Flc3opDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KDQo+ICsNCj4gKwlpZiAocXAtPnFwbW9k ZSA9PSBCTlhUX1JFX1dRRV9NT0RFX1NUQVRJQykNCj4gKwkJd3FlX3NpemUgPSBibnh0X3JlX2Nh bGNfd3FlX3N6KDYpOw0KPiArDQo+ICsJaWYgKCppbHMpDQo+ICsJCSppbHMgPSB3cWVfc2l6ZSAt IGhkcl9zejsNCj4gKwlxcC0+anNxcS0+aHdxdWUtPmVzaXplID0gd3FlX3NpemU7DQo+ICsJcXAt PmpzcXEtPmh3cXVlLT5tYXhfc2xvdHMgPSAocXAtPnFwbW9kZSA9PSBCTlhUX1JFX1dRRV9NT0RF X1NUQVRJQykgPw0KPiArCQl3cWVfc2l6ZSAvIHN0cmlkZSA6IDE7DQo+ICsJc2xvdHMgPSAobnN3 ciAqIHdxZV9zaXplKSAvIHN0cmlkZTsNCj4gKwlyZXR1cm4gc2xvdHM7DQoNCmRpdHRvDQoNCj4g K30NCj4gKw0KPiArc3RhdGljIGludCBibnh0X3JlX2FsbG9jX3F1ZXVlcyhzdHJ1Y3QgYm54dF9y ZV9kZXYgKmRldiwNCj4gKwkJCQlzdHJ1Y3QgYm54dF9yZV9xcCAqcXAsDQo+IAkJCQlzdHJ1Y3Qg aWJ2X3FwX2luaXRfYXR0ciAqYXR0ciwNCj4gCQkJCXVpbnQzMl90IHBnX3NpemUpDQo+IHsNCj4g QEAgLTg5MywxNyArOTY2LDI3IEBAIHN0YXRpYyBpbnQgYm54dF9yZV9hbGxvY19xdWV1ZXMoc3Ry dWN0IGJueHRfcmVfcXAgKnFwLA0KPiAJc3RydWN0IGJueHRfcmVfd3JpZCAqc3dxdWU7DQo+IAlz dHJ1Y3QgYm54dF9yZV9xdWV1ZSAqcXVlOw0KPiAJc3RydWN0IGJueHRfcmVfcHNucyAqcHNuczsN Cj4gKwl1aW50MzJfdCBuc3dyLCBkaWZmOw0KPiAJdWludDMyX3QgcHNuX2RlcHRoOw0KPiAJdWlu dDMyX3QgcHNuX3NpemU7DQo+ICsJdWludDMyX3QgbnNnZTsNCj4gCWludCByZXQsIGluZHg7DQo+ IC0JdWludDMyX3QgbnN3cjsNCj4gKwlpbnQgbnNsb3RzOw0KPiANCj4gCXF1ZSA9IHFwLT5qc3Fx LT5od3F1ZTsNCj4gLQlxdWUtPnN0cmlkZSA9IGJueHRfcmVfZ2V0X3NxZV9zeigpOw0KPiAtCS8q IDg5MTYgYWRqdXN0bWVudCAqLw0KPiAtCW5zd3IgID0gcm91bmR1cF9wb3dfb2ZfdHdvKGF0dHIt PmNhcC5tYXhfc2VuZF93ciArIDEgKw0KPiAtCQkJCSAgIEJOWFRfUkVfRlVMTF9GTEFHX0RFTFRB KTsNCj4gLQlxdWUtPmRpZmYgPSBuc3dyIC0gYXR0ci0+Y2FwLm1heF9zZW5kX3dyOw0KPiArCWRp ZmYgPSAocXAtPnFwbW9kZSA9PSBCTlhUX1JFX1dRRV9NT0RFX1ZBUklBQkxFKSA/DQo+ICsJCTAg OiBCTlhUX1JFX0ZVTExfRkxBR19ERUxUQTsNCj4gKwluc3dyID0gcm91bmR1cF9wb3dfb2ZfdHdv KGF0dHItPmNhcC5tYXhfc2VuZF93ciArIDEgKyBkaWZmKTsNCj4gKwluc2dlID0gYXR0ci0+Y2Fw Lm1heF9zZW5kX3NnZTsNCj4gKwlpZiAobnNnZSAlIDIpDQo+ICsJCW5zZ2UrKzsNCj4gKwluc2xv dHMgPSBibnh0X3JlX2dldF9zcV9zbG90cyhkZXYsIHFwLCBuc3dyLCBuc2dlLA0KPiArCQkJCSAg ICAgICZhdHRyLT5jYXAubWF4X2lubGluZV9kYXRhKTsNCj4gKwlpZiAobnNsb3RzIDwgMCkNCj4g KwkJcmV0dXJuIG5zbG90czsNCj4gKwlxdWUtPnN0cmlkZSA9IHNpemVvZihzdHJ1Y3QgYm54dF9y ZV9zZ2UpOw0KPiArCXF1ZS0+ZGVwdGggPSBuc2xvdHM7DQo+ICsJcXVlLT5kaWZmID0gKGRpZmYg KiBxdWUtPmVzaXplKSAvIHF1ZS0+c3RyaWRlOw0KPiANCj4gCS8qIHBzbl9kZXB0aCBleHRyYSBl bnRyaWVzIG9mIHNpemUgcXVlLT5zdHJpZGUgKi8NCj4gCXBzbl9zaXplID0gYm54dF9yZV9pc19j aGlwX2dlbl9wNShxcC0+Y2N0eCkgPw0KPiBAQCAtOTEyLDcgKzk5NSw3IEBAIHN0YXRpYyBpbnQg Ym54dF9yZV9hbGxvY19xdWV1ZXMoc3RydWN0IGJueHRfcmVfcXAgKnFwLA0KPiAJcHNuX2RlcHRo ID0gKG5zd3IgKiBwc25fc2l6ZSkgLyBxdWUtPnN0cmlkZTsNCj4gCWlmICgobnN3ciAqIHBzbl9z aXplKSAlIHF1ZS0+c3RyaWRlKQ0KPiAJCXBzbl9kZXB0aCsrOw0KPiAtCXF1ZS0+ZGVwdGggPSBu c3dyICsgcHNuX2RlcHRoOw0KPiArCXF1ZS0+ZGVwdGggKz0gcHNuX2RlcHRoOw0KPiAJLyogUFNO LXNlYXJjaCBtZW1vcnkgaXMgYWxsb2NhdGVkIHdpdGhvdXQgY2hlY2tpbmcgZm9yDQo+IAkgKiBR UC1UeXBlLiBLZW5yZWwgZHJpdmVyIGRvIG5vdCBtYXAgdGhpcyBtZW1vcnkgaWYgaXQNCj4gCSAq IGlzIFVELXFwLiBVRC1xcCB1c2UgdGhpcyBtZW1vcnkgdG8gbWFpbnRhaW4gV0Mtb3Bjb2RlLg0K PiBAQCAtOTI0LDcgKzEwMDcsNyBAQCBzdGF0aWMgaW50IGJueHRfcmVfYWxsb2NfcXVldWVzKHN0 cnVjdCBibnh0X3JlX3FwICpxcCwNCj4gCS8qIGV4Y2x1ZGUgcHNucyBkZXB0aCovDQo+IAlxdWUt PmRlcHRoIC09IHBzbl9kZXB0aDsNCj4gCS8qIHN0YXJ0IG9mIHNwc24gc3BhY2Ugc2l6ZW9mKHN0 cnVjdCBibnh0X3JlX3BzbnMpIGVhY2guICovDQo+IC0JcHNucyA9IChxdWUtPnZhICsgcXVlLT5z dHJpZGUgKiBuc3dyKTsNCj4gKwlwc25zID0gKHF1ZS0+dmEgKyBxdWUtPnN0cmlkZSAqIHF1ZS0+ ZGVwdGgpOw0KPiAJcHNuc19leHQgPSAoc3RydWN0IGJueHRfcmVfcHNuc19leHQgKilwc25zOw0K PiANCj4gCXJldCA9IGJueHRfcmVfYWxsb2NfaW5pdF9zd3F1ZShxcC0+anNxcSwgbnN3cik7DQo+ IEBAIC05NDcsMTAgKzEwMzAsMTkgQEAgc3RhdGljIGludCBibnh0X3JlX2FsbG9jX3F1ZXVlcyhz dHJ1Y3QgYm54dF9yZV9xcCAqcXAsDQo+IA0KPiAJaWYgKHFwLT5qcnFxKSB7DQo+IAkJcXVlID0g cXAtPmpycXEtPmh3cXVlOw0KPiAtCQlxdWUtPnN0cmlkZSA9IGJueHRfcmVfZ2V0X3JxZV9zeigp Ow0KPiAJCW5zd3IgPSByb3VuZHVwX3Bvd19vZl90d28oYXR0ci0+Y2FwLm1heF9yZWN2X3dyICsg MSk7DQo+IC0JCXF1ZS0+ZGVwdGggPSBuc3dyOw0KPiAtCQlxdWUtPmRpZmYgPSBuc3dyIC0gYXR0 ci0+Y2FwLm1heF9yZWN2X3dyOw0KPiArCQluc2dlID0gYXR0ci0+Y2FwLm1heF9yZWN2X3NnZTsN Cj4gKwkJaWYgKG5zZ2UgJSAyKQ0KPiArCQkJbnNnZSsrOw0KPiArCQluc2xvdHMgPSBibnh0X3Jl X2dldF9ycV9zbG90cyhkZXYsIHFwLCBuc3dyLCBuc2dlKTsNCj4gKwkJaWYgKG5zbG90cyA8IDAp IHsNCj4gKwkJCXJldCA9IG5zbG90czsNCj4gKwkJCWdvdG8gZmFpbDsNCj4gKwkJfQ0KPiArCQlx dWUtPnN0cmlkZSA9IHNpemVvZihzdHJ1Y3QgYm54dF9yZV9zZ2UpOw0KPiArCQlxdWUtPmRlcHRo ID0gbnNsb3RzOw0KPiArCQlxdWUtPmRpZmYgPSAwOw0KPiArDQo+IAkJcmV0ID0gYm54dF9yZV9h bGxvY19hbGlnbmVkKHF1ZSwgcGdfc2l6ZSk7DQo+IAkJaWYgKHJldCkNCj4gCQkJZ290byBmYWls Ow0KPiBAQCAtOTcxLDEwICsxMDYzLDEwIEBAIGZhaWw6DQo+IHN0cnVjdCBpYnZfcXAgKmJueHRf cmVfY3JlYXRlX3FwKHN0cnVjdCBpYnZfcGQgKmlidnBkLA0KPiAJCQkJIHN0cnVjdCBpYnZfcXBf aW5pdF9hdHRyICphdHRyKQ0KPiB7DQo+IC0Jc3RydWN0IGJueHRfcmVfcXAgKnFwOw0KPiAtCXN0 cnVjdCB1Ym54dF9yZV9xcCByZXE7DQo+IAlzdHJ1Y3QgdWJueHRfcmVfcXBfcmVzcCByZXNwOw0K PiAJc3RydWN0IGJueHRfcmVfcXBjYXAgKmNhcDsNCj4gKwlzdHJ1Y3QgdWJueHRfcmVfcXAgcmVx Ow0KPiArCXN0cnVjdCBibnh0X3JlX3FwICpxcDsNCj4gDQo+IAlzdHJ1Y3QgYm54dF9yZV9jb250 ZXh0ICpjbnR4ID0gdG9fYm54dF9yZV9jb250ZXh0KGlidnBkLT5jb250ZXh0KTsNCj4gCXN0cnVj dCBibnh0X3JlX2RldiAqZGV2ID0gdG9fYm54dF9yZV9kZXYoY250eC0+aWJ2Y3R4LmNvbnRleHQu ZGV2aWNlKTsNCj4gQEAgLTk5MSw3ICsxMDgzLDcgQEAgc3RydWN0IGlidl9xcCAqYm54dF9yZV9j cmVhdGVfcXAoc3RydWN0IGlidl9wZCAqaWJ2cGQsDQo+IAkvKiBhbGxvYyBxdWV1ZXMgKi8NCj4g CXFwLT5jY3R4ID0gJmNudHgtPmNjdHg7DQo+IAlxcC0+cXBtb2RlID0gY250eC0+d3FlX21vZGUg JiBCTlhUX1JFX1dRRV9NT0RFX1ZBUklBQkxFOw0KPiAtCWlmIChibnh0X3JlX2FsbG9jX3F1ZXVl cyhxcCwgYXR0ciwgZGV2LT5wZ19zaXplKSkNCj4gKwlpZiAoYm54dF9yZV9hbGxvY19xdWV1ZXMo ZGV2LCBxcCwgYXR0ciwgZGV2LT5wZ19zaXplKSkNCj4gCQlnb3RvIGZhaWxxOw0KPiAJLyogRmls bCBpYnZfY21kICovDQo+IAljYXAgPSAmcXAtPmNhcDsNCj4gQEAgLTEwOTUsOCArMTE4Nyw0NCBA QCBpbnQgYm54dF9yZV9kZXN0cm95X3FwKHN0cnVjdCBpYnZfcXAgKmlidnFwKQ0KPiAJcmV0dXJu IDA7DQo+IH0NCj4gDQo+ICtzdGF0aWMgaW50IGJueHRfcmVfY2FsY19pbmxpbmVfbGVuKHN0cnVj dCBpYnZfc2VuZF93ciAqc3dyLCB1aW50MzJfdCBtYXhfaWxzKQ0KPiArew0KPiArCWludCBpbGxl biwgaW5keDsNCj4gKw0KPiArCWlsbGVuID0gMDsNCj4gKwlmb3IgKGluZHggPSAwOyBpbmR4IDwg c3dyLT5udW1fc2dlOyBpbmR4KyspDQo+ICsJCWlsbGVuICs9IHN3ci0+c2dfbGlzdFtpbmR4XS5s ZW5ndGg7DQo+ICsJaWYgKGlsbGVuID4gbWF4X2lscykNCj4gKwkJaWxsZW4gPSBtYXhfaWxzOw0K PiArCXJldHVybiBpbGxlbjsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBibnh0X3JlX2NhbGNf cG9zdGVkX3dxZV9zbG90cyhzdHJ1Y3QgYm54dF9yZV9xdWV1ZSAqcXVlLCB2b2lkICp3ciwNCj4g KwkJCQkJIHVpbnQzMl90IG1heF9pbHMsIGJvb2wgaXNfcnEpDQo+ICt7DQo+ICsJc3RydWN0IGli dl9zZW5kX3dyICpzd3I7DQo+ICsJc3RydWN0IGlidl9yZWN2X3dyICpyd3I7DQo+ICsJdWludDMy X3Qgd3FlX2J5dGU7DQo+ICsJdWludDMyX3QgbnNnZTsNCj4gKwlpbnQgaWxzaXplOw0KPiArDQo+ ICsJc3dyID0gd3I7DQo+ICsJcndyID0gd3I7DQo+ICsNCj4gKwluc2dlID0gaXNfcnEgPyByd3It Pm51bV9zZ2UgOiBzd3ItPm51bV9zZ2U7DQo+ICsJd3FlX2J5dGUgPSBibnh0X3JlX2NhbGNfd3Fl X3N6KG5zZ2UpOw0KPiArCWlmICghaXNfcnEgJiYgKHN3ci0+c2VuZF9mbGFncyAmIElCVl9TRU5E X0lOTElORSkpIHsNCj4gKwkJaWxzaXplID0gYm54dF9yZV9jYWxjX2lubGluZV9sZW4oc3dyLCBt YXhfaWxzKTsNCj4gKwkJd3FlX2J5dGUgPSBnZXRfYWxpZ25lZChpbHNpemUsIHNpemVvZihzdHJ1 Y3QgYm54dF9yZV9zZ2UpKTsNCj4gKwkJd3FlX2J5dGUgKz0gc2l6ZW9mKHN0cnVjdCBibnh0X3Jl X2JzcWUpOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiAod3FlX2J5dGUgLyBxdWUtPnN0cmlkZSk7 DQo+ICt9DQo+ICsNCj4gc3RhdGljIGlubGluZSB1aW50OF90IGJueHRfcmVfc2V0X2hkcl9mbGFn cyhzdHJ1Y3QgYm54dF9yZV9ic3FlICpoZHIsDQo+IC0JCQkJCSAgICB1aW50MzJfdCBzZW5kX2Zs YWdzLCB1aW50OF90IHNxc2lnKQ0KPiArCQkJCQkgICAgdWludDMyX3Qgc2VuZF9mbGFncywgdWlu dDhfdCBzcXNpZywNCj4gKwkJCQkJICAgIHVpbnQzMl90IHNsb3RzKQ0KPiB7DQo+IAl1aW50OF90 IGlzX2lubGluZSA9IGZhbHNlOw0KPiAJdWludDMyX3QgaGRydmFsID0gMDsNCj4gQEAgLTExMTcs MzYgKzEyNDUsMzggQEAgc3RhdGljIGlubGluZSB1aW50OF90IGJueHRfcmVfc2V0X2hkcl9mbGFn cyhzdHJ1Y3QgYm54dF9yZV9ic3FlICpoZHIsDQo+IAkJCSAgICA8PCBCTlhUX1JFX0hEUl9GTEFH U19TSElGVCk7DQo+IAkJaXNfaW5saW5lID0gdHJ1ZTsNCj4gCX0NCj4gKwloZHJ2YWwgfD0gKHNs b3RzICYgQk5YVF9SRV9IRFJfV1NfTUFTSykgPDwgQk5YVF9SRV9IRFJfV1NfU0hJRlQ7DQo+IAlo ZHItPnJzdl93c19mbF93dCA9IGh0b2xlMzIoaGRydmFsKTsNCj4gDQo+IAlyZXR1cm4gaXNfaW5s aW5lOw0KDQptYWtlIGZ1bmN0aW9uIHR5cGUgYm9vbD8NCg0KPiB9DQo+IA0KPiAtc3RhdGljIGlu dCBibnh0X3JlX2J1aWxkX3NnZShzdHJ1Y3QgYm54dF9yZV9zZ2UgKnNnZSwgc3RydWN0IGlidl9z Z2UgKnNnX2xpc3QsDQo+IC0JCQkgICAgIHVpbnQzMl90IG51bV9zZ2UsIHVpbnQ4X3QgaXNfaW5s aW5lKSB7DQo+ICtzdGF0aWMgaW50IGJueHRfcmVfYnVpbGRfc2dlKHN0cnVjdCBibnh0X3JlX3F1 ZXVlICpxdWUsIHN0cnVjdCBpYnZfc2dlICpzZ19saXN0LA0KPiArCQkJICAgICB1aW50MzJfdCBu dW1fc2dlLCB1aW50OF90IGlzX2lubGluZSwNCj4gKwkJCSAgICAgdWludDMyX3QgKmlkeCkNCj4g K3sNCj4gKwlzdHJ1Y3QgYm54dF9yZV9zZ2UgKnNnZTsNCj4gCWludCBpbmR4LCBsZW5ndGggPSAw Ow0KPiAJdm9pZCAqZHN0Ow0KPiANCj4gLQlpZiAoIW51bV9zZ2UpIHsNCj4gLQkJbWVtc2V0KHNn ZSwgMCwgc2l6ZW9mKCpzZ2UpKTsNCj4gKwlpZiAoIW51bV9zZ2UpDQo+IAkJcmV0dXJuIDA7DQo+ IC0JfQ0KPiANCj4gCWlmIChpc19pbmxpbmUpIHsNCj4gLQkJZHN0ID0gc2dlOw0KPiAJCWZvciAo aW5keCA9IDA7IGluZHggPCBudW1fc2dlOyBpbmR4KyspIHsNCj4gKwkJCWRzdCA9IGJueHRfcmVf Z2V0X2h3cWUocXVlLCAqaWR4KTsNCj4gKwkJCSgqaWR4KSsrOw0KPiAJCQlsZW5ndGggKz0gc2df bGlzdFtpbmR4XS5sZW5ndGg7DQo+IC0JCQlpZiAobGVuZ3RoID4gQk5YVF9SRV9NQVhfSU5MSU5F X1NJWkUpDQo+IC0JCQkJcmV0dXJuIC1FTk9NRU07DQo+IAkJCW1lbWNweShkc3QsICh2b2lkICop KHVpbnRwdHJfdClzZ19saXN0W2luZHhdLmFkZHIsDQo+IAkJCSAgICAgICBzZ19saXN0W2luZHhd Lmxlbmd0aCk7DQo+IC0JCQlkc3QgPSBkc3QgKyBzZ19saXN0W2luZHhdLmxlbmd0aDsNCj4gCQl9 DQo+IAl9IGVsc2Ugew0KPiAJCWZvciAoaW5keCA9IDA7IGluZHggPCBudW1fc2dlOyBpbmR4Kysp IHsNCj4gLQkJCXNnZVtpbmR4XS5wYSA9IGh0b2xlNjQoc2dfbGlzdFtpbmR4XS5hZGRyKTsNCj4g LQkJCXNnZVtpbmR4XS5sa2V5ID0gaHRvbGUzMihzZ19saXN0W2luZHhdLmxrZXkpOw0KPiAtCQkJ c2dlW2luZHhdLmxlbmd0aCA9IGh0b2xlMzIoc2dfbGlzdFtpbmR4XS5sZW5ndGgpOw0KPiArCQkJ c2dlID0gYm54dF9yZV9nZXRfaHdxZShxdWUsICppZHgpOw0KPiArCQkJKCppZHgpKys7DQo+ICsJ CQlzZ2UtPnBhID0gaHRvbGU2NChzZ19saXN0W2luZHhdLmFkZHIpOw0KPiArCQkJc2dlLT5sa2V5 ID0gaHRvbGUzMihzZ19saXN0W2luZHhdLmxrZXkpOw0KPiArCQkJc2dlLT5sZW5ndGggPSBodG9s ZTMyKHNnX2xpc3RbaW5keF0ubGVuZ3RoKTsNCj4gCQkJbGVuZ3RoICs9IHNnX2xpc3RbaW5keF0u bGVuZ3RoOw0KPiAJCX0NCj4gCX0NCj4gQEAgLTExNjQsNiArMTI5NCw3IEBAIHN0YXRpYyB2b2lk IGJueHRfcmVfZmlsbF9wc25zKHN0cnVjdCBibnh0X3JlX3FwICpxcCwgc3RydWN0IGJueHRfcmVf d3JpZCAqd3JpZCwNCj4gDQo+IAlwc25zID0gd3JpZC0+cHNuczsNCj4gCXBzbnNfZXh0ID0gd3Jp ZC0+cHNuc19leHQ7DQo+ICsJbGVuID0gd3JpZC0+Ynl0ZXM7DQo+IA0KPiAJaWYgKHFwLT5xcHR5 cCA9PSBJQlZfUVBUX1JDKSB7DQo+IAkJb3BjX3Nwc24gPSBxcC0+c3FfcHNuICYgQk5YVF9SRV9Q U05TX1NQU05fTUFTSzsNCj4gQEAgLTExODMsNyArMTMxNCw3IEBAIHN0YXRpYyB2b2lkIGJueHRf cmVfZmlsbF9wc25zKHN0cnVjdCBibnh0X3JlX3FwICpxcCwgc3RydWN0IGJueHRfcmVfd3JpZCAq d3JpZCwNCj4gCXBzbnMtPm9wY19zcHNuID0gaHRvbGUzMihvcGNfc3Bzbik7DQo+IAlwc25zLT5m bGdfbnBzbiA9IGh0b2xlMzIoZmxnX25wc24pOw0KPiAJaWYgKGJueHRfcmVfaXNfY2hpcF9nZW5f cDUocXAtPmNjdHgpKQ0KPiAtCQlwc25zX2V4dC0+c3Rfc2xvdF9pZHggPSAwOw0KPiArCQlwc25z X2V4dC0+c3Rfc2xvdF9pZHggPSB3cmlkLT5zdF9zbG90X2lkeDsNCj4gfQ0KPiANCj4gc3RhdGlj IHZvaWQgYm54dF9yZV9maWxsX3dyaWQoc3RydWN0IGJueHRfcmVfd3JpZCAqd3JpZCwgdWludDY0 X3Qgd3JfaWQsDQo+IEBAIC0xMTk5LDE2ICsxMzMwLDE5IEBAIHN0YXRpYyB2b2lkIGJueHRfcmVf ZmlsbF93cmlkKHN0cnVjdCBibnh0X3JlX3dyaWQgKndyaWQsIHVpbnQ2NF90IHdyX2lkLA0KPiAJ d3JpZC0+c2xvdHMgPSBzbG90czsNCj4gfQ0KPiANCj4gLXN0YXRpYyBpbnQgYm54dF9yZV9idWls ZF9zZW5kX3NxZShzdHJ1Y3QgYm54dF9yZV9xcCAqcXAsIHZvaWQgKndxZSwNCj4gLQkJCQkgIHN0 cnVjdCBpYnZfc2VuZF93ciAqd3IsIHVpbnQ4X3QgaXNfaW5saW5lKQ0KPiArc3RhdGljIGludCBi bnh0X3JlX2J1aWxkX3NlbmRfc3FlKHN0cnVjdCBibnh0X3JlX3FwICpxcCwNCj4gKwkJCQkgIHN0 cnVjdCBpYnZfc2VuZF93ciAqd3IsDQo+ICsJCQkJICBzdHJ1Y3QgYm54dF9yZV9ic3FlICpoZHIs DQo+ICsJCQkJICB1aW50OF90IGlzX2lubGluZSwgdWludDMyX3QgKmlkeCkNCj4gew0KPiAtCXN0 cnVjdCBibnh0X3JlX3NnZSAqc2dlID0gKCh2b2lkICopd3FlICsgYm54dF9yZV9nZXRfc3FlX2hk cl9zeigpKTsNCj4gLQlzdHJ1Y3QgYm54dF9yZV9ic3FlICpoZHIgPSB3cWU7DQo+IC0JdWludDMy X3Qgd3JsZW4sIGhkcnZhbCA9IDA7DQo+IC0JdWludDhfdCBvcGNvZGUsIHFlc2l6ZTsNCj4gKwlz dHJ1Y3QgYm54dF9yZV9xdWV1ZSAqcXVlOw0KPiArCXVpbnQzMl90IGhkcnZhbCA9IDA7DQo+ICsJ dWludDhfdCBvcGNvZGU7DQo+IAlpbnQgbGVuOw0KPiANCj4gLQlsZW4gPSBibnh0X3JlX2J1aWxk X3NnZShzZ2UsIHdyLT5zZ19saXN0LCB3ci0+bnVtX3NnZSwgaXNfaW5saW5lKTsNCj4gKwlxdWUg PSBxcC0+anNxcS0+aHdxdWU7DQo+ICsJbGVuID0gYm54dF9yZV9idWlsZF9zZ2UocXVlLCB3ci0+ c2dfbGlzdCwgd3ItPm51bV9zZ2UsDQo+ICsJCQkJaXNfaW5saW5lLCBpZHgpOw0KPiAJaWYgKGxl biA8IDApDQo+IAkJcmV0dXJuIGxlbjsNCj4gCWhkci0+bGhkci5xa2V5X2xlbiA9IGh0b2xlNjQo KHVpbnQ2NF90KWxlbik7DQo+IEBAIC0xMjE4LDM0ICsxMzUyLDIyIEBAIHN0YXRpYyBpbnQgYm54 dF9yZV9idWlsZF9zZW5kX3NxZShzdHJ1Y3QgYm54dF9yZV9xcCAqcXAsIHZvaWQgKndxZSwNCj4g CWlmIChvcGNvZGUgPT0gQk5YVF9SRV9XUl9PUENEX0lOVkFMKQ0KPiAJCXJldHVybiAtRUlOVkFM Ow0KDQo+IAloZHJ2YWwgPSAob3Bjb2RlICYgQk5YVF9SRV9IRFJfV1RfTUFTSyk7DQo+IC0NCj4g LQlpZiAoaXNfaW5saW5lKSB7DQo+IC0JCXdybGVuID0gZ2V0X2FsaWduZWQobGVuLCAxNik7DQo+ IC0JCXFlc2l6ZSA9IHdybGVuID4+IDQ7DQo+IC0JfSBlbHNlIHsNCj4gLQkJcWVzaXplID0gd3It Pm51bV9zZ2U7DQo+IC0JfQ0KPiAtCS8qIEhXIHJlcXVpcmVzIHdxZSBzaXplIGhhcyByb29tIGZv ciBhdGxlYXN0IG9uZSBzZ2UgZXZlbiBpZiBub25lIHdhcw0KPiAtCSAqIHN1cHBsaWVkIGJ5IGFw cGxpY2F0aW9uDQo+IC0JICovDQo+IC0JaWYgKCF3ci0+bnVtX3NnZSkNCj4gLQkJcWVzaXplKys7 DQo+IC0JcWVzaXplICs9IChibnh0X3JlX2dldF9zcWVfaGRyX3N6KCkgPj4gNCk7DQo+IC0JaGRy dmFsIHw9IChxZXNpemUgJiBCTlhUX1JFX0hEUl9XU19NQVNLKSA8PCBCTlhUX1JFX0hEUl9XU19T SElGVDsNCj4gCWhkci0+cnN2X3dzX2ZsX3d0IHw9IGh0b2xlMzIoaGRydmFsKTsNCj4gCXJldHVy biBsZW47DQo+IH0NCj4gDQo+IC1zdGF0aWMgaW50IGJueHRfcmVfYnVpbGRfdWRfc3FlKHN0cnVj dCBibnh0X3JlX3FwICpxcCwgdm9pZCAqd3FlLA0KPiAtCQkJCXN0cnVjdCBpYnZfc2VuZF93ciAq d3IsIHVpbnQ4X3QgaXNfaW5saW5lKQ0KPiArc3RhdGljIGludCBibnh0X3JlX2J1aWxkX3VkX3Nx ZShzdHJ1Y3QgYm54dF9yZV9xcCAqcXAsIHN0cnVjdCBpYnZfc2VuZF93ciAqd3IsDQo+ICsJCQkJ c3RydWN0IGJueHRfcmVfYnNxZSAqaGRyLCB1aW50OF90IGlzX2lubGluZSwNCj4gKwkJCQl1aW50 MzJfdCAqaWR4KQ0KPiB7DQo+IC0Jc3RydWN0IGJueHRfcmVfc2VuZCAqc3FlID0gKCh2b2lkICop d3FlICsgc2l6ZW9mKHN0cnVjdCBibnh0X3JlX2JzcWUpKTsNCj4gLQlzdHJ1Y3QgYm54dF9yZV9i c3FlICpoZHIgPSB3cWU7DQo+ICsJc3RydWN0IGJueHRfcmVfc2VuZCAqc3FlOw0KPiAJc3RydWN0 IGJueHRfcmVfYWggKmFoOw0KPiAJdWludDY0X3QgcWtleTsNCj4gCWludCBsZW47DQo+IA0KPiAt CWxlbiA9IGJueHRfcmVfYnVpbGRfc2VuZF9zcWUocXAsIHdxZSwgd3IsIGlzX2lubGluZSk7DQo+ ICsJc3FlID0gYm54dF9yZV9nZXRfaHdxZShxcC0+anNxcS0+aHdxdWUsICppZHgpOw0KPiArCSgq aWR4KSsrOw0KPiArCWxlbiA9IGJueHRfcmVfYnVpbGRfc2VuZF9zcWUocXAsIHdyLCBoZHIsIGlz X2lubGluZSwgaWR4KTsNCj4gCWlmICghd3ItPndyLnVkLmFoKSB7DQo+IAkJbGVuID0gLUVJTlZB TDsNCg0KPiAJCWdvdG8gYmFpbDsNCj4gQEAgLTEyNTksMjggKzEzODEsMzMgQEAgYmFpbDoNCj4g CXJldHVybiBsZW47DQo+IH0NCj4gDQo+IC1zdGF0aWMgaW50IGJueHRfcmVfYnVpbGRfcmRtYV9z cWUoc3RydWN0IGJueHRfcmVfcXAgKnFwLCB2b2lkICp3cWUsDQo+IC0JCQkJICBzdHJ1Y3QgaWJ2 X3NlbmRfd3IgKndyLCB1aW50OF90IGlzX2lubGluZSkNCj4gK3N0YXRpYyBpbnQgYm54dF9yZV9i dWlsZF9yZG1hX3NxZShzdHJ1Y3QgYm54dF9yZV9xcCAqcXAsDQo+ICsJCQkJICBzdHJ1Y3QgYm54 dF9yZV9ic3FlICpoZHIsDQo+ICsJCQkJICBzdHJ1Y3QgaWJ2X3NlbmRfd3IgKndyLA0KPiArCQkJ CSAgdWludDhfdCBpc19pbmxpbmUsIHVpbnQzMl90ICppZHgpDQo+IHsNCj4gLQlzdHJ1Y3QgYm54 dF9yZV9yZG1hICpzcWUgPSAoKHZvaWQgKil3cWUgKyBzaXplb2Yoc3RydWN0IGJueHRfcmVfYnNx ZSkpOw0KPiArCXN0cnVjdCBibnh0X3JlX3JkbWEgKnNxZTsNCj4gCWludCBsZW47DQo+IA0KPiAt CWxlbiA9IGJueHRfcmVfYnVpbGRfc2VuZF9zcWUocXAsIHdxZSwgd3IsIGlzX2lubGluZSk7DQo+ ICsJc3FlID0gYm54dF9yZV9nZXRfaHdxZShxcC0+anNxcS0+aHdxdWUsICppZHgpOw0KPiArCSgq aWR4KSsrOw0KPiArCWxlbiA9IGJueHRfcmVfYnVpbGRfc2VuZF9zcWUocXAsIHdyLCBoZHIsIGlz X2lubGluZSwgaWR4KTsNCj4gCXNxZS0+cnZhID0gaHRvbGU2NCh3ci0+d3IucmRtYS5yZW1vdGVf YWRkcik7DQo+IAlzcWUtPnJrZXkgPSBodG9sZTMyKHdyLT53ci5yZG1hLnJrZXkpOw0KPiANCj4g CXJldHVybiBsZW47DQo+IH0NCj4gDQo+IC1zdGF0aWMgaW50IGJueHRfcmVfYnVpbGRfY25zX3Nx ZShzdHJ1Y3QgYm54dF9yZV9xcCAqcXAsIHZvaWQgKndxZSwNCj4gLQkJCQkgc3RydWN0IGlidl9z ZW5kX3dyICp3cikNCj4gK3N0YXRpYyBpbnQgYm54dF9yZV9idWlsZF9jbnNfc3FlKHN0cnVjdCBi bnh0X3JlX3FwICpxcCwNCj4gKwkJCQkgc3RydWN0IGJueHRfcmVfYnNxZSAqaGRyLA0KPiArCQkJ CSBzdHJ1Y3QgaWJ2X3NlbmRfd3IgKndyLCB1aW50MzJfdCAqaWR4KQ0KPiB7DQo+IC0Jc3RydWN0 IGJueHRfcmVfYnNxZSAqaGRyID0gd3FlOw0KPiAtCXN0cnVjdCBibnh0X3JlX2F0b21pYyAqc3Fl ID0gKCh2b2lkICopd3FlICsNCj4gLQkJCQkgICAgICBzaXplb2Yoc3RydWN0IGJueHRfcmVfYnNx ZSkpOw0KPiArCXN0cnVjdCBibnh0X3JlX2F0b21pYyAqc3FlOw0KPiAJaW50IGxlbjsNCj4gDQo+ IC0JbGVuID0gYm54dF9yZV9idWlsZF9zZW5kX3NxZShxcCwgd3FlLCB3ciwgZmFsc2UpOw0KPiAr CXNxZSA9IGJueHRfcmVfZ2V0X2h3cWUocXAtPmpzcXEtPmh3cXVlLCAqaWR4KTsNCj4gKwkoKmlk eCkrKzsNCj4gKwlsZW4gPSBibnh0X3JlX2J1aWxkX3NlbmRfc3FlKHFwLCB3ciwgaGRyLCBmYWxz ZSwgaWR4KTsNCj4gCWhkci0+a2V5X2ltbWQgPSBodG9sZTMyKHdyLT53ci5hdG9taWMucmtleSk7 DQo+IAloZHItPmxoZHIucnZhID0gaHRvbGU2NCh3ci0+d3IuYXRvbWljLnJlbW90ZV9hZGRyKTsN Cj4gCXNxZS0+Y21wX2R0ID0gaHRvbGU2NCh3ci0+d3IuYXRvbWljLmNvbXBhcmVfYWRkKTsNCj4g QEAgLTEyODksMTUgKzE0MTYsMTYgQEAgc3RhdGljIGludCBibnh0X3JlX2J1aWxkX2Nuc19zcWUo c3RydWN0IGJueHRfcmVfcXAgKnFwLCB2b2lkICp3cWUsDQo+IAlyZXR1cm4gbGVuOw0KPiB9DQo+ IA0KPiAtc3RhdGljIGludCBibnh0X3JlX2J1aWxkX2ZuYV9zcWUoc3RydWN0IGJueHRfcmVfcXAg KnFwLCB2b2lkICp3cWUsDQo+IC0JCQkJIHN0cnVjdCBpYnZfc2VuZF93ciAqd3IpDQo+ICtzdGF0 aWMgaW50IGJueHRfcmVfYnVpbGRfZm5hX3NxZShzdHJ1Y3QgYm54dF9yZV9xcCAqcXAsDQo+ICsJ CQkJIHN0cnVjdCBibnh0X3JlX2JzcWUgKmhkciwNCj4gKwkJCQkgc3RydWN0IGlidl9zZW5kX3dy ICp3ciwgdWludDMyX3QgKmlkeCkNCj4gew0KPiAtCXN0cnVjdCBibnh0X3JlX2JzcWUgKmhkciA9 IHdxZTsNCj4gLQlzdHJ1Y3QgYm54dF9yZV9hdG9taWMgKnNxZSA9ICgodm9pZCAqKXdxZSArDQo+ IC0JCQkJICAgICAgc2l6ZW9mKHN0cnVjdCBibnh0X3JlX2JzcWUpKTsNCj4gKwlzdHJ1Y3QgYm54 dF9yZV9hdG9taWMgKnNxZTsNCj4gCWludCBsZW47DQo+IA0KPiAtCWxlbiA9IGJueHRfcmVfYnVp bGRfc2VuZF9zcWUocXAsIHdxZSwgd3IsIGZhbHNlKTsNCj4gKwlzcWUgPSBibnh0X3JlX2dldF9o d3FlKHFwLT5qc3FxLT5od3F1ZSwgKmlkeCk7DQo+ICsJKCppZHgpKys7DQo+ICsJbGVuID0gYm54 dF9yZV9idWlsZF9zZW5kX3NxZShxcCwgd3IsIGhkciwgZmFsc2UsIGlkeCk7DQo+IAloZHItPmtl eV9pbW1kID0gaHRvbGUzMih3ci0+d3IuYXRvbWljLnJrZXkpOw0KPiAJaGRyLT5saGRyLnJ2YSA9 IGh0b2xlNjQod3ItPndyLmF0b21pYy5yZW1vdGVfYWRkcik7DQo+IAlzcWUtPmNtcF9kdCA9IGh0 b2xlNjQod3ItPndyLmF0b21pYy5jb21wYXJlX2FkZCk7DQo+IEBAIC0xMzExLDEzICsxNDM5LDE2 IEBAIGludCBibnh0X3JlX3Bvc3Rfc2VuZChzdHJ1Y3QgaWJ2X3FwICppYnZxcCwgc3RydWN0IGli dl9zZW5kX3dyICp3ciwNCj4gCXN0cnVjdCBibnh0X3JlX3FwICpxcCA9IHRvX2JueHRfcmVfcXAo aWJ2cXApOw0KPiAJc3RydWN0IGJueHRfcmVfcXVldWUgKnNxID0gcXAtPmpzcXEtPmh3cXVlOw0K PiAJc3RydWN0IGJueHRfcmVfd3JpZCAqd3JpZDsNCj4gKwlzdHJ1Y3QgYm54dF9yZV9zZW5kICpz cWU7DQo+IAl1aW50OF90IGlzX2lubGluZSA9IGZhbHNlOw0KPiAJc3RydWN0IGJueHRfcmVfYnNx ZSAqaGRyOw0KPiArCXVpbnQzMl90IHN3cV9pZHgsIHNsb3RzOw0KPiAJaW50IHJldCA9IDAsIGJ5 dGVzID0gMDsNCj4gCWJvb2wgcmluZ19kYiA9IGZhbHNlOw0KPiAtCXVpbnQzMl90IHN3cV9pZHg7 DQo+IC0JdWludDMyX3Qgc2lnOw0KPiAtCXZvaWQgKnNxZTsNCj4gKwl1aW50MzJfdCB3cWVfc2l6 ZTsNCj4gKwl1aW50MzJfdCBtYXhfaWxzOw0KPiArCXVpbnQ4X3Qgc2lnID0gMDsNCj4gKwl1aW50 MzJfdCBpZHg7DQo+IA0KPiAJcHRocmVhZF9zcGluX2xvY2soJnNxLT5xbG9jayk7DQo+IAl3aGls ZSAod3IpIHsNCj4gQEAgLTEzMzUsMTggKzE0NjYsMjAgQEAgaW50IGJueHRfcmVfcG9zdF9zZW5k KHN0cnVjdCBpYnZfcXAgKmlidnFwLCBzdHJ1Y3QgaWJ2X3NlbmRfd3IgKndyLA0KPiAJCQlnb3Rv IGJhZF93cjsNCj4gCQl9DQo+IA0KPiAtCQlpZiAoYm54dF9yZV9pc19xdWVfZnVsbChzcSkgfHwN Cj4gKwkJbWF4X2lscyA9IHFwLT5jYXAubWF4X2lubGluZTsNCj4gKwkJd3FlX3NpemUgPSBibnh0 X3JlX2NhbGNfcG9zdGVkX3dxZV9zbG90cyhzcSwgd3IsIG1heF9pbHMsIGZhbHNlKTsNCj4gKwkJ c2xvdHMgPSAocXAtPnFwbW9kZSA9PSBCTlhUX1JFX1dRRV9NT0RFX1NUQVRJQykgPyA4IDogd3Fl X3NpemU7DQo+ICsJCWlmIChibnh0X3JlX2lzX3F1ZV9mdWxsKHNxLCBzbG90cykgfHwNCj4gCQkg ICAgd3ItPm51bV9zZ2UgPiBxcC0+Y2FwLm1heF9zc2dlKSB7DQo+IAkJCSpiYWQgPSB3cjsNCj4g CQkJcmV0ID0gRU5PTUVNOw0KDQpOb3QgcGFydCBvZiBjb21taXQsIGJ1dCAtRU5PTUVNPyBZb3Ug dXNlIC1FSU5WQUwgYmVsb3cuIE9uZSBvZiB0aGVtIGlzIHByb2JhYmx5IHdyb25nLg0KDQoNClRo eHMsIEjDpWtvbg0KDQoNCg0KPiAJCQlnb3RvIGJhZF93cjsNCj4gCQl9DQo+IA0KPiAtCQlzcWUg PSAodm9pZCAqKShzcS0+dmEgKyAoc3EtPnRhaWwgKiBzcS0+c3RyaWRlKSk7DQo+IC0JCW1lbXNl dChzcWUsIDAsIGJueHRfcmVfZ2V0X3NxZV9zeigpKTsNCj4gLQkJaGRyID0gc3FlOw0KPiArCQlp ZHggPSAwOw0KPiArCQloZHIgPSBibnh0X3JlX2dldF9od3FlKHNxLCBpZHgrKyk7DQo+IAkJaXNf aW5saW5lID0gYm54dF9yZV9zZXRfaGRyX2ZsYWdzKGhkciwgd3ItPnNlbmRfZmxhZ3MsDQo+IC0J CQkJCQkgIHFwLT5jYXAuc3FzaWcpOw0KPiArCQkJCQkJICBxcC0+Y2FwLnNxc2lnLCB3cWVfc2l6 ZSk7DQo+IAkJc3dpdGNoICh3ci0+b3Bjb2RlKSB7DQo+IAkJY2FzZSBJQlZfV1JfU0VORF9XSVRI X0lNTToNCj4gCQkJLyogU2luY2Ugb3VyIGgvdyBpcyBMRSBhbmQgdXNlciBzdXBwbGllcyByYXct ZGF0YSBpbg0KPiBAQCAtMTM1NywyNyArMTQ5MCwzMSBAQCBpbnQgYm54dF9yZV9wb3N0X3NlbmQo c3RydWN0IGlidl9xcCAqaWJ2cXAsIHN0cnVjdCBpYnZfc2VuZF93ciAqd3IsDQo+IAkJCWhkci0+ a2V5X2ltbWQgPSBodG9sZTMyKGJlMzJ0b2god3ItPmltbV9kYXRhKSk7DQo+IAkJCVNXSVRDSF9G QUxMVEhST1VHSDsNCj4gCQljYXNlIElCVl9XUl9TRU5EOg0KPiAtCQkJaWYgKHFwLT5xcHR5cCA9 PSBJQlZfUVBUX1VEKQ0KPiAtCQkJCWJ5dGVzID0gYm54dF9yZV9idWlsZF91ZF9zcWUocXAsIHNx ZSwgd3IsDQo+IC0JCQkJCQkJICAgICBpc19pbmxpbmUpOw0KPiAtCQkJZWxzZQ0KPiAtCQkJCWJ5 dGVzID0gYm54dF9yZV9idWlsZF9zZW5kX3NxZShxcCwgc3FlLCB3ciwNCj4gLQkJCQkJCQkgICAg ICAgaXNfaW5saW5lKTsNCj4gKwkJCWlmIChxcC0+cXB0eXAgPT0gSUJWX1FQVF9VRCkgew0KPiAr CQkJCWJ5dGVzID0gYm54dF9yZV9idWlsZF91ZF9zcWUocXAsIHdyLCBoZHIsDQo+ICsJCQkJCQkJ ICAgICBpc19pbmxpbmUsICZpZHgpOw0KPiArCQkJfSBlbHNlIHsNCj4gKwkJCQlzcWUgPSBibnh0 X3JlX2dldF9od3FlKHNxLCBpZHgrKyk7DQo+ICsJCQkJbWVtc2V0KHNxZSwgMCwgc2l6ZW9mKHN0 cnVjdCBibnh0X3JlX3NlbmQpKTsNCj4gKwkJCQlieXRlcyA9IGJueHRfcmVfYnVpbGRfc2VuZF9z cWUocXAsIHdyLCBoZHIsDQo+ICsJCQkJCQkJICAgICAgIGlzX2lubGluZSwNCj4gKwkJCQkJCQkg ICAgICAgJmlkeCk7DQo+ICsJCQl9DQo+IAkJCWJyZWFrOw0KPiAJCWNhc2UgSUJWX1dSX1JETUFf V1JJVEVfV0lUSF9JTU06DQo+IAkJCWhkci0+a2V5X2ltbWQgPSBodG9sZTMyKGJlMzJ0b2god3It PmltbV9kYXRhKSk7DQo+IAkJCVNXSVRDSF9GQUxMVEhST1VHSDsNCj4gCQljYXNlIElCVl9XUl9S RE1BX1dSSVRFOg0KPiAtCQkJYnl0ZXMgPSBibnh0X3JlX2J1aWxkX3JkbWFfc3FlKHFwLCBzcWUs IHdyLCBpc19pbmxpbmUpOw0KPiArCQkJYnl0ZXMgPSBibnh0X3JlX2J1aWxkX3JkbWFfc3FlKHFw LCBoZHIsIHdyLCBpc19pbmxpbmUsICZpZHgpOw0KPiAJCQlicmVhazsNCj4gCQljYXNlIElCVl9X Ul9SRE1BX1JFQUQ6DQo+IC0JCQlieXRlcyA9IGJueHRfcmVfYnVpbGRfcmRtYV9zcWUocXAsIHNx ZSwgd3IsIGZhbHNlKTsNCj4gKwkJCWJ5dGVzID0gYm54dF9yZV9idWlsZF9yZG1hX3NxZShxcCwg aGRyLCB3ciwgZmFsc2UsICZpZHgpOw0KPiAJCQlicmVhazsNCj4gCQljYXNlIElCVl9XUl9BVE9N SUNfQ01QX0FORF9TV1A6DQo+IC0JCQlieXRlcyA9IGJueHRfcmVfYnVpbGRfY25zX3NxZShxcCwg c3FlLCB3cik7DQo+ICsJCQlieXRlcyA9IGJueHRfcmVfYnVpbGRfY25zX3NxZShxcCwgaGRyLCB3 ciwgJmlkeCk7DQo+IAkJCWJyZWFrOw0KPiAJCWNhc2UgSUJWX1dSX0FUT01JQ19GRVRDSF9BTkRf QUREOg0KPiAtCQkJYnl0ZXMgPSBibnh0X3JlX2J1aWxkX2ZuYV9zcWUocXAsIHNxZSwgd3IpOw0K PiArCQkJYnl0ZXMgPSBibnh0X3JlX2J1aWxkX2ZuYV9zcWUocXAsIGhkciwgd3IsICZpZHgpOw0K PiAJCQlicmVhazsNCj4gCQlkZWZhdWx0Og0KPiAJCQlieXRlcyA9IC1FSU5WQUw7DQoNCj4gQEAg LTEzOTIsMTAgKzE1MjksMTEgQEAgaW50IGJueHRfcmVfcG9zdF9zZW5kKHN0cnVjdCBpYnZfcXAg KmlidnFwLCBzdHJ1Y3QgaWJ2X3NlbmRfd3IgKndyLA0KPiANCj4gCQl3cmlkID0gYm54dF9yZV9n ZXRfc3dxZShxcC0+anNxcSwgJnN3cV9pZHgpOw0KPiAJCXNpZyA9ICgod3ItPnNlbmRfZmxhZ3Mg JiBJQlZfU0VORF9TSUdOQUxFRCkgfHwgcXAtPmNhcC5zcXNpZyk7DQo+IC0JCWJueHRfcmVfZmls bF93cmlkKHdyaWQsIHdyLT53cl9pZCwgYnl0ZXMsIHNpZywgc3EtPnRhaWwsIDEpOw0KPiArCQli bnh0X3JlX2ZpbGxfd3JpZCh3cmlkLCB3ci0+d3JfaWQsIGJ5dGVzLA0KPiArCQkJCSAgc2lnLCBz cS0+dGFpbCwgc2xvdHMpOw0KPiAJCWJueHRfcmVfZmlsbF9wc25zKHFwLCB3cmlkLCB3ci0+b3Bj b2RlLCBieXRlcyk7DQo+IAkJYm54dF9yZV9qcXFfbW9kX3N0YXJ0KHFwLT5qc3FxLCBzd3FfaWR4 KTsNCj4gLQkJYm54dF9yZV9pbmNyX3RhaWwoc3EsIDEpOw0KPiArCQlibnh0X3JlX2luY3JfdGFp bChzcSwgc2xvdHMpOw0KPiAJCXFwLT53cWVfY250Kys7DQo+IAkJd3IgPSB3ci0+bmV4dDsNCj4g CQlyaW5nX2RiID0gdHJ1ZTsNCj4gQEAgLTE0MjEsMTcgKzE1NTksMTQgQEAgYmFkX3dyOg0KPiAJ cmV0dXJuIHJldDsNCj4gfQ0KPiANCj4gLXN0YXRpYyBpbnQgYm54dF9yZV9idWlsZF9ycWUoc3Ry dWN0IGJueHRfcmVfcXAgKnFwLCBzdHJ1Y3QgaWJ2X3JlY3Zfd3IgKndyLA0KPiAtCQkJICAgICB2 b2lkICpycWUsIHVpbnQzMl90IGlkeCkNCj4gK3N0YXRpYyBpbnQgYm54dF9yZV9idWlsZF9ycWUo c3RydWN0IGJueHRfcmVfcXVldWUgKnJxLCBzdHJ1Y3QgaWJ2X3JlY3Zfd3IgKndyLA0KPiArCQkJ ICAgICBzdHJ1Y3QgYm54dF9yZV9icnFlICpoZHIsIHVpbnQzMl90IHdxZV9zeiwNCj4gKwkJCSAg ICAgdWludDMyX3QgKmlkeCwgdWludDMyX3Qgd3FlX2lkeCkNCj4gew0KPiAtCXN0cnVjdCBibnh0 X3JlX2JycWUgKmhkciA9IHJxZTsNCj4gLQlzdHJ1Y3QgYm54dF9yZV9zZ2UgKnNnZTsNCj4gLQlp bnQgd3FlX3N6LCBsZW47DQo+IAl1aW50MzJfdCBoZHJ2YWw7DQo+ICsJaW50IGxlbjsNCj4gDQo+ IC0Jc2dlID0gKHJxZSArIGJueHRfcmVfZ2V0X3JxZV9oZHJfc3ooKSk7DQo+IC0NCj4gLQlsZW4g PSBibnh0X3JlX2J1aWxkX3NnZShzZ2UsIHdyLT5zZ19saXN0LCB3ci0+bnVtX3NnZSwgZmFsc2Up Ow0KPiArCWxlbiA9IGJueHRfcmVfYnVpbGRfc2dlKHJxLCB3ci0+c2dfbGlzdCwgd3ItPm51bV9z Z2UsIGZhbHNlLCBpZHgpOw0KPiAJd3FlX3N6ID0gd3ItPm51bV9zZ2UgKyAoYm54dF9yZV9nZXRf cnFlX2hkcl9zeigpID4+IDQpOyAvKiAxNkIgYWxpZ24gKi8NCj4gCS8qIEhXIHJlcXVpcmVzIHdx ZSBzaXplIGhhcyByb29tIGZvciBhdGxlYXN0IG9uZSBzZ2UgZXZlbiBpZiBub25lIHdhcw0KPiAJ ICogc3VwcGxpZWQgYnkgYXBwbGljYXRpb24NCj4gQEAgLTE0NDEsNyArMTU3Niw3IEBAIHN0YXRp YyBpbnQgYm54dF9yZV9idWlsZF9ycWUoc3RydWN0IGJueHRfcmVfcXAgKnFwLCBzdHJ1Y3QgaWJ2 X3JlY3Zfd3IgKndyLA0KPiAJaGRydmFsID0gQk5YVF9SRV9XUl9PUENEX1JFQ1Y7DQo+IAloZHJ2 YWwgfD0gKCh3cWVfc3ogJiBCTlhUX1JFX0hEUl9XU19NQVNLKSA8PCBCTlhUX1JFX0hEUl9XU19T SElGVCk7DQo+IAloZHItPnJzdl93c19mbF93dCA9IGh0b2xlMzIoaGRydmFsKTsNCj4gLQloZHIt PndyaWQgPSBodG9sZTMyKGlkeCk7DQo+ICsJaGRyLT53cmlkID0gaHRvbGUzMih3cWVfaWR4KTsN Cj4gDQo+IAlyZXR1cm4gbGVuOw0KPiB9DQo+IEBAIC0xNDUyLDggKzE1ODcsMTEgQEAgaW50IGJu eHRfcmVfcG9zdF9yZWN2KHN0cnVjdCBpYnZfcXAgKmlidnFwLCBzdHJ1Y3QgaWJ2X3JlY3Zfd3Ig KndyLA0KPiAJc3RydWN0IGJueHRfcmVfcXAgKnFwID0gdG9fYm54dF9yZV9xcChpYnZxcCk7DQo+ IAlzdHJ1Y3QgYm54dF9yZV9xdWV1ZSAqcnEgPSBxcC0+anJxcS0+aHdxdWU7DQo+IAlzdHJ1Y3Qg Ym54dF9yZV93cmlkICpzd3F1ZTsNCj4gLQl1aW50MzJfdCBzd3FfaWR4Ow0KPiAtCXZvaWQgKnJx ZTsNCj4gKwlzdHJ1Y3QgYm54dF9yZV9icnFlICpoZHI7DQo+ICsJc3RydWN0IGJueHRfcmVfcnFl ICpycWU7DQo+ICsJdWludDMyX3Qgc2xvdHMsIHN3cV9pZHg7DQo+ICsJdWludDMyX3Qgd3FlX3Np emU7DQo+ICsJdWludDMyX3QgaWR4ID0gMDsNCj4gCWludCByZXQ7DQo+IA0KPiAJcHRocmVhZF9z cGluX2xvY2soJnJxLT5xbG9jayk7DQo+IEBAIC0xNDY1LDE3ICsxNjAzLDI0IEBAIGludCBibnh0 X3JlX3Bvc3RfcmVjdihzdHJ1Y3QgaWJ2X3FwICppYnZxcCwgc3RydWN0IGlidl9yZWN2X3dyICp3 ciwNCj4gCQkJcmV0dXJuIEVJTlZBTDsNCj4gCQl9DQo+IA0KPiAtCQlpZiAoYm54dF9yZV9pc19x dWVfZnVsbChycSkgfHwNCj4gKwkJd3FlX3NpemUgPSBibnh0X3JlX2NhbGNfcG9zdGVkX3dxZV9z bG90cyhycSwgd3IsIDAsIHRydWUpOw0KPiArCQlzbG90cyA9IHJxLT5tYXhfc2xvdHM7DQo+ICsJ CWlmIChibnh0X3JlX2lzX3F1ZV9mdWxsKHJxLCBzbG90cykgfHwNCj4gCQkgICAgd3ItPm51bV9z Z2UgPiBxcC0+Y2FwLm1heF9yc2dlKSB7DQo+IAkJCXB0aHJlYWRfc3Bpbl91bmxvY2soJnJxLT5x bG9jayk7DQo+IAkJCSpiYWQgPSB3cjsNCj4gCQkJcmV0dXJuIEVOT01FTTsNCj4gCQl9DQo+IA0K PiAtCQlycWUgPSAodm9pZCAqKShycS0+dmEgKyAocnEtPnRhaWwgKiBycS0+c3RyaWRlKSk7DQo+ IC0JCW1lbXNldChycWUsIDAsIGJueHRfcmVfZ2V0X3JxZV9zeigpKTsNCj4gKwkJaWR4ID0gMDsN Cj4gCQlzd3F1ZSA9IGJueHRfcmVfZ2V0X3N3cWUocXAtPmpycXEsICZzd3FfaWR4KTsNCj4gLQkJ cmV0ID0gYm54dF9yZV9idWlsZF9ycWUocXAsIHdyLCBycWUsIHN3cV9pZHgpOw0KPiArCQloZHIg PSBibnh0X3JlX2dldF9od3FlKHJxLCBpZHgrKyk7DQo+ICsJCS8qIEp1c3QgdG8gYnVpbGQgY2xl YW4gcnFlICovDQo+ICsJCXJxZSA9IGJueHRfcmVfZ2V0X2h3cWUocnEsIGlkeCsrKTsNCj4gKwkJ bWVtc2V0KHJxZSwgMCwgc2l6ZW9mKHN0cnVjdCBibnh0X3JlX3JxZSkpOw0KPiArCQkvKiBGaWxs ICBTR0VzICovDQo+ICsNCj4gKwkJcmV0ID0gYm54dF9yZV9idWlsZF9ycWUocnEsIHdyLCBoZHIs IHdxZV9zaXplLCAmaWR4LCBzd3FfaWR4KTsNCj4gCQlpZiAocmV0IDwgMCkgew0KPiAJCQlwdGhy ZWFkX3NwaW5fdW5sb2NrKCZycS0+cWxvY2spOw0KPiAJCQkqYmFkID0gd3I7DQo+IEBAIC0xNDgz LDkgKzE2MjgsOSBAQCBpbnQgYm54dF9yZV9wb3N0X3JlY3Yoc3RydWN0IGlidl9xcCAqaWJ2cXAs IHN0cnVjdCBpYnZfcmVjdl93ciAqd3IsDQo+IAkJfQ0KPiANCj4gCQlzd3F1ZSA9IGJueHRfcmVf Z2V0X3N3cWUocXAtPmpycXEsIE5VTEwpOw0KPiAtCQlibnh0X3JlX2ZpbGxfd3JpZChzd3F1ZSwg d3ItPndyX2lkLCByZXQsIDAsIHJxLT50YWlsLCAxKTsNCj4gKwkJYm54dF9yZV9maWxsX3dyaWQo c3dxdWUsIHdyLT53cl9pZCwgcmV0LCAwLCBycS0+dGFpbCwgc2xvdHMpOw0KPiAJCWJueHRfcmVf anFxX21vZF9zdGFydChxcC0+anJxcSwgc3dxX2lkeCk7DQo+IC0JCWJueHRfcmVfaW5jcl90YWls KHJxLCAxKTsNCj4gKwkJYm54dF9yZV9pbmNyX3RhaWwocnEsIHNsb3RzKTsNCj4gCQl3ciA9IHdy LT5uZXh0Ow0KPiAJCWJueHRfcmVfcmluZ19ycV9kYihxcCk7DQo+IAl9DQo+IEBAIC0xNjQ0LDEy ICsxNzg5LDIwIEBAIHN0YXRpYyBpbnQgYm54dF9yZV9idWlsZF9zcnFlKHN0cnVjdCBibnh0X3Jl X3NycSAqc3JxLA0KPiAJc3RydWN0IGJueHRfcmVfd3JpZCAqd3JpZDsNCj4gCWludCB3cWVfc3os IGxlbiwgbmV4dDsNCj4gCXVpbnQzMl90IGhkcnZhbCA9IDA7DQo+ICsJaW50IGluZHg7DQo+IA0K PiAJc2dlID0gKHNycWUgKyBibnh0X3JlX2dldF9zcnFlX2hkcl9zeigpKTsNCj4gCW5leHQgPSBz cnEtPnN0YXJ0X2lkeDsNCj4gCXdyaWQgPSAmc3JxLT5zcndyaWRbbmV4dF07DQo+IA0KPiAtCWxl biA9IGJueHRfcmVfYnVpbGRfc2dlKHNnZSwgd3ItPnNnX2xpc3QsIHdyLT5udW1fc2dlLCBmYWxz ZSk7DQo+ICsJbGVuID0gMDsNCj4gKwlmb3IgKGluZHggPSAwOyBpbmR4IDwgd3ItPm51bV9zZ2U7 IGluZHgrKywgc2dlKyspIHsNCj4gKwkJc2dlLT5wYSA9IGh0b2xlNjQod3ItPnNnX2xpc3RbaW5k eF0uYWRkcik7DQo+ICsJCXNnZS0+bGtleSA9IGh0b2xlMzIod3ItPnNnX2xpc3RbaW5keF0ubGtl eSk7DQo+ICsJCXNnZS0+bGVuZ3RoID0gaHRvbGUzMih3ci0+c2dfbGlzdFtpbmR4XS5sZW5ndGgp Ow0KPiArCQlsZW4gKz0gd3ItPnNnX2xpc3RbaW5keF0ubGVuZ3RoOw0KPiArCX0NCj4gKw0KPiAJ aGRydmFsID0gQk5YVF9SRV9XUl9PUENEX1JFQ1Y7DQo+IAl3cWVfc3ogPSB3ci0+bnVtX3NnZSAr IChibnh0X3JlX2dldF9zcnFlX2hkcl9zeigpID4+IDQpOyAvKiAxNkIgYWxpZ24gKi8NCj4gCWhk cnZhbCB8PSAoKHdxZV9zeiAmIEJOWFRfUkVfSERSX1dTX01BU0spIDw8IEJOWFRfUkVfSERSX1dT X1NISUZUKTsNCj4gLS0gDQo+IDIuMjUuMQ0KPiANCg0K