From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id 56E123858404 for ; Thu, 13 Oct 2022 10:52:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 56E123858404 Received: from pps.filterd (m0098420.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 29DAO6gj020145; Thu, 13 Oct 2022 10:52:17 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2174.outbound.protection.outlook.com [104.47.59.174]) by mx0b-001b2d01.pphosted.com (PPS) with ESMTPS id 3k6gw0rq3g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 13 Oct 2022 10:52:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i+tFZ1bGI1e9Gs43w3rq9syV3/AsMponTWp1J5Yy9kh5lL3O4zhueVz9X699rdSscGFiN1vBkhBLGvvKFKozYIz256GTx+BKgWA1ef1H3+sv04cXy/Ropg0BU7tdkMlAzi7xaFLxskLnFIVDTtcH7enZdnYztVbH6YqfbI4z+UE833IcTmmfqFzNEe1vIefb3ZrupuAJl908uC49hrX4jNlSDkKnYSgDrCoVsv7At9zT4kJrmZUdxoRiVvqBj2A4EMtXRLgwlwSzvpAU70BbUWip0pY52TttjotDO0GTdiKDQ7CnbK3bRLU8oFndltwkzdMpGyPq5aOn9ABCnCbPqg== 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=mZ5DtI5XiSyoMYRXU41NMauRGIoSuNSQ8K5MAqVfvtM=; b=HsZuimh9aJoOZIkztiPP4sY3r7zTmxL1YyybrLIiho1/QG56NMwobsIWaYJdu5hPF5JXagrD+Yz275YARoaLn6JAhZulB5Lsnyr8T/U9NAYCQfwwFhQxtscDU9JswnzCuNKievv5Jr7Xp5hhOo8AcsTdwCO9RuSvsinfEYGib/Dq4ZWzDZnWXTyLk+vL6INtbK5coTIXn81dHiIxLPlAxuctgNWv91yDQ3Hc0AFxjvvA9493rXwR9P/dePLP+DtOYr46aVYNQCYhsm8OJiO8HVW8YR47jFTb7SvG2S9sifQ1gFTB8OA+RmgwATpJEI+LcDT7m4Fup/erR5ymGor1FQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ibm.com; dmarc=pass action=none header.from=ibm.com; dkim=pass header.d=ibm.com; arc=none Received: from CH2PR15MB3544.namprd15.prod.outlook.com (2603:10b6:610:5::26) by SA0PR15MB4079.namprd15.prod.outlook.com (2603:10b6:806:8d::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Thu, 13 Oct 2022 10:52:14 +0000 Received: from CH2PR15MB3544.namprd15.prod.outlook.com ([fe80::159e:3e92:9c5:72e3]) by CH2PR15MB3544.namprd15.prod.outlook.com ([fe80::159e:3e92:9c5:72e3%4]) with mapi id 15.20.5709.021; Thu, 13 Oct 2022 10:52:14 +0000 From: Aditya Kamath1 To: Aditya Kamath1 via Gdb-patches , Ulrich Weigand , "simark@simark.ca" CC: Sangamesh Mallayya , Aditya Kamath1 Subject: [PATCH] Enable vector instruction debugging for AIX Thread-Topic: [PATCH] Enable vector instruction debugging for AIX Thread-Index: AQHY3u6lF+eu5MBiPkac4T2UQTTsTQ== Date: Thu, 13 Oct 2022 10:52:14 +0000 Message-ID: Accept-Language: en-IN, en-US Content-Language: en-IN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH2PR15MB3544:EE_|SA0PR15MB4079:EE_ x-ms-office365-filtering-correlation-id: fddd113d-5df9-425a-f792-08daad08fcf5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: eolx+i6MnwCg8v2srBmo/n8/sMFE8fMfsV6XW+RbHMl01eFdK5pttBaqsxCXmPm4ELHORau1/4rE4GbibxAZioaz8tO0YUhvSEzz2RrMLW7fjc4O+gmaIkIexM5XMRTQElCw8iPWd/S0VwuCCkr59G8w+Oz7Cyb6ZAywI0Ia9dDz+Pnh2G+yKplg7d7n4xHqGk/Jqm+CRZRoRCPgFp74M8wKrInG5T88wWNOFbDffHGFZOU8epmdWoB8/R4FOrHtHCmJUVzqoX0NUx67ArX+IzQ2SW+9sAWuWUBsI3UT44KDR/ntYsKXYeraXO1wKx1SKs/SZTL/v4z7c6gTbIpZC2pSJUjH4+Ri50evBhGIWAFA8ewBoib4qEk5OM4dmSpyNtayC66y6pF88KZ1xvhZi4IKZ1I9VUm5T773pFSf+ckYzcn/yEGSTYjoPjSjETZLpTSeoLDJ8SEJVnc9RM+GgEk44BC8oTQUjnrqyAlU7xhya+S/zreGJar8BbOgP6f8WFhLrBB0b9uMUo4imr2KPrHZ4VRdsb2UMgxlDBWlpWTCulDeefRpY2jw++mzX8gyKymSqOU6UBwempHwQsorwqgeliv5OcYkQwvp8Ita5ZQdakXe0JBjQ2DHtQ1lbKCFvGSKBwfWxvMNRPMm6rNrzgnzkJrSMlTK3cP7or7A8GEQsnQ4p7SxMbZ4m1zHstjKJf5UUotI49ttLvDflavRAiNGMkWJEXomsbtFhw/AW/LbsfRVu+6V2PjAcRNlxYya+p05Rt+KS+l9N02B9W3jVg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR15MB3544.namprd15.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(366004)(39860400002)(136003)(376002)(346002)(396003)(451199015)(2906002)(19627405001)(316002)(91956017)(8676002)(4326008)(64756008)(66446008)(66476007)(66556008)(66946007)(76116006)(40140700001)(54906003)(33656002)(110136005)(52536014)(41300700001)(5660300002)(478600001)(71200400001)(83380400001)(8936002)(122000001)(26005)(186003)(99936003)(7696005)(6506007)(86362001)(9686003)(38100700002)(38070700005)(55016003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?+kJlv3J4M+jPtI1u6iyibNAYOJxi2J/2fp0dFuqayaQCjAHK1PpZYIY/ND?= =?iso-8859-1?Q?Ons2jeAbkajRcpjPXo8pkRn0J5eYAb+spv6yjfh6LGlKI94KRUsbiUD/Fh?= =?iso-8859-1?Q?YA92HP+rORs/aEvayhzc6kEQaxoC4dHv5S3UYpd+OFKWbQrk6NBzwcFL5B?= =?iso-8859-1?Q?J7qM+WSdnjiDT5k1TepBapkWz3h6Hj6rJKhoUOuQQewSNAwkwLKe1PQ6+r?= =?iso-8859-1?Q?58wDEa/SpG/lnPiF4uKwYenACJkdehIx3ofxntys42ssujxrVg571wW1Yf?= =?iso-8859-1?Q?pLfZULiFEIHdy95nsfIkqh3lyNjy862RTBFG1LlhdWJ7KWZLVJ/qmTAGCJ?= =?iso-8859-1?Q?9toZHKBctZclVhpEtRFnsOQIOZAug4FaUGhs/kli5+rzs35PK83rMqXnhc?= =?iso-8859-1?Q?+sxu8k8rEzv7QexHOhNPdTzbMZ7qj/cUXEDXlnHLZJ+j0EIWIG57n+8FIy?= =?iso-8859-1?Q?ztpQy7HLIt6WAu/8tMOxvwLjeshh6Qrs+sADOTe7WHeQtcddD2otY+xD+O?= =?iso-8859-1?Q?PyDGhw2qY+VeYoAcgkjf/eCSDWXFt654683Bfouj5ki+quSYoQXRVHUl2L?= =?iso-8859-1?Q?V0LNoasPjuij5Ip751nOjE1hYb5ietY00ccV3MTU9NXr65E7n3pIyu4F2B?= =?iso-8859-1?Q?Aej7u8dEhFV37JyBlW12xzmgj9f8zVJ0Hk37eukGmRlcixFllK9ByAwzEg?= =?iso-8859-1?Q?UtcsrVFdpfGlxh2MkdAJu4bQTmyy0TVX6HUDvZs5kEfdPfNHZA9CNNEqvQ?= =?iso-8859-1?Q?WE9Ar8V0fwm/VHdivF9FInwsq/8iOpDiLDF+4ZS9xa1j/9TZU6ThrSqRPU?= =?iso-8859-1?Q?obXFBAFnxCKlLE3nHYparHfVUs15uD+dHNi9cyEyy2gSmV8Xowg/BPtswI?= =?iso-8859-1?Q?sK3EcckLXel/fRZoWoY3PWXoiK/AqQPJSSeQvS9R1bduuPGQkm+fZR/3Q4?= =?iso-8859-1?Q?mm0eLQjonRwLtUwII41960avLj0Qz8fDz5KIRnpGlaKuT/e0Ukxc9QMAaj?= =?iso-8859-1?Q?ErgrGsYCDAGw3gorB95g4jlBLLwIDm+PBbMEUp0/f41ZtUMW1V1qU7o4sY?= =?iso-8859-1?Q?wmeokuFS5lmdBv2MWvgO0PSEOU/ObQw18L+EJtr8vI2FkT0GvNTej8QpT0?= =?iso-8859-1?Q?HrujfhTKIxVb5f4rGDOmCBti/de2zoGNZ/zNxymuEHTbDyO7wXh6UIrPw8?= =?iso-8859-1?Q?hG9lOurvWzVVkIUO5Uwqdwse0GcGAcuGe5eSyHs9sKDhZlkCRhp/PxGhcw?= =?iso-8859-1?Q?ZP4QLBFVEjbM+pRqJBElJyz2G2lCRVm2Sf3/gGcmGziLeCMBiPr+Ljr6OZ?= =?iso-8859-1?Q?OIJz6/OzrLODStoO67QOU2v3h3YDnb2tNSr2DIkxRjQqlwKkuWIk8Yo+1W?= =?iso-8859-1?Q?+lCNmYuk/hzgJwYpAD8uiFq7n4O6ewxXBpo2aD975HdfuXMWm3HWSN5i2x?= =?iso-8859-1?Q?yWvvvTEya5O0t2dheFrd0Eem3GmkdNqtvstwvq0aOsbXEudjV0QFpcqrTr?= =?iso-8859-1?Q?Bn/4vchUV7VPLa4eLN5HcwxkvMDafkeUmkrot84Gw6slHb11OuyQtALtpi?= =?iso-8859-1?Q?VESm7ig/cuxLwNnxN8L1VFwi09EE16jJ3u6+22rrw67ERZk9kQdeTev4vC?= =?iso-8859-1?Q?XdwWPe18Lp1QNuM7H4KCfp5Bmw7L3N9gIP?= Content-Type: multipart/mixed; boundary="_004_CH2PR15MB354415C815824AF9A966CC8FD6259CH2PR15MB3544namp_" MIME-Version: 1.0 X-OriginatorOrg: ibm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR15MB3544.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fddd113d-5df9-425a-f792-08daad08fcf5 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Oct 2022 10:52:14.1199 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: fcf67057-50c9-4ad4-98f3-ffca64add9e9 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: PT9O/n2ZhbENR0P3mYs8iu6+niln++pn2QVblN/I+VNgI07eI7uf3j5VAOq26WCIpEoTr0FF5msnsgYVpnaT4g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR15MB4079 X-Proofpoint-ORIG-GUID: jU1vXWENcqwh56eI55AUaatMkPrMMRim X-Proofpoint-GUID: jU1vXWENcqwh56eI55AUaatMkPrMMRim X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-10-13_06,2022-10-13_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1011 priorityscore=1501 impostorscore=0 suspectscore=0 mlxscore=0 malwarescore=0 phishscore=0 spamscore=0 bulkscore=0 lowpriorityscore=0 adultscore=0 mlxlogscore=446 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2210130062 X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, HTML_MESSAGE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Oct 2022 10:52:44 -0000 --_004_CH2PR15MB354415C815824AF9A966CC8FD6259CH2PR15MB3544namp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi all, Brief Introduction:- Vector registers are an extension to the POWERPC proce= ssor architecture in order to support vector and matrix mathematical functi= ons. This is to improve graphics and multimedia. For example, the vector AL= U SIMD- style arithmetic unit where a single instruction performs the same = operation on all the data elements of each vector. The problem:- While a user finds bugs in applications which uses vector ins= tructions, they would like to debug vector registers or set vector register= s to a particular value to figure it out. Currently in AIX, we have not ena= bled vector instruction debugging. This patch is used to enable vector inst= ruction debugging. Please find attached the patch. [See 0001-PATCH-Enable-Vector-support-for-A= IX.patch] A sample program is as shown below:- #include int main () { vector int Arr1[5] =3D { { 1, 2, 3, 4 }, { 11, 22, 33, 44 }, { 111, 222, 333, 444 }, { 1111, 2222, 3333, 4444 }, { 11111, 22222, 33333, 44444 } }; vector int Arr2[5] =3D { { 1, 2, 3, 4 }, { 11, 22, 33, 44 }, { 111, 222, 333, 444 }, { 1111, 2222, 3333, 4444 }, { 11111, 22222, 33333, 44444 } }; vector int Arr3[5] =3D { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }; printf("Adding Arrays\n"); Arr3[1] =3D Arr1[2] + Arr2[3]; printf("Arr3[1] =3D { %d, %d, %d, %d }\n", Arr3[1][0], Arr3[1][1], = Arr3[1][2], Arr3[1][3]); return 0; } The output expected is as follows:- (gdb) b main Breakpoint 1 at 0x1000052c: file /home/XYZ/gdb_tests/vector_lab_test.c, lin= e 3. (gdb) r Starting program: /home/XYZ/gdb_tests/vector_lab_test Breakpoint 1, main () at /home/XYZ/gdb_tests/vector_lab_test.c:3 3 vector int Arr1[5] =3D { (gdb) n 10 vector int Arr2[5] =3D { (gdb) n 17 vector int Arr3[5] =3D { (gdb) n 24 printf("Adding Arrays\n"); (gdb) n Adding Arrays 25 Arr3[1] =3D Arr1[2] + Arr2[3]; (gdb) n 26 printf("Arr3[1] =3D { %d, %d, %d, %d }\n", Arr3[1][0], Arr3= [1][1], Arr3[1][2], Arr3[1][3]); (gdb) info reg vr0 vr0 {uint128 =3D 0x4c60000098c00000e5200001318, v4_float =3D {0x= 4c6, 0x98c, 0xe52, 0x1318}, v4_int32 =3D {0x4c6, 0x98c, 0xe52, 0x1318}, v8_= int16 =3D {0x0, 0x4c6, 0x0, 0x98c, 0x0, 0xe52, 0x0, 0x1318}, v16_int8 =3D {= 0x0, 0x0, 0x4, 0xc6, 0x0, 0x0, 0x9, 0x8c, 0x0, 0x0, 0xe, 0x52, 0x0, 0x0, 0x= 13, 0x18}} (gdb) set $vr0.v4_int32[3] =3D 1 (gdb) info reg vr0 vr0 {uint128 =3D 0x4c60000098c00000e5200000001, v4_float =3D {0x= 4c6, 0x98c, 0xe52, 0x1}, v4_int32 =3D {0x4c6, 0x98c, 0xe52, 0x1}, v8_int16 = =3D {0x0, 0x4c6, 0x0, 0x98c, 0x0, 0xe52, 0x0, 0x1}, v16_int8 =3D {0x0, 0x0,= 0x4, 0xc6, 0x0, 0x0, 0x9, 0x8c, 0x0, 0x0, 0xe, 0x52, 0x0, 0x0, 0x0, 0x1}} (gdb) ------------------------------------------------------------------------- Kindly note in AIX unless and until a debugee uses vector registers the deb= ugger cannot set or get the same. Kindly let me know if this patch works. If yes, kindly push it else kindly = give me feedback for changes. Have a nice day ahead. Thanks and regards, Aditya. --_004_CH2PR15MB354415C815824AF9A966CC8FD6259CH2PR15MB3544namp_ Content-Type: application/octet-stream; name="0001-PATCH-Enable-Vector-support-for-AIX.patch" Content-Description: 0001-PATCH-Enable-Vector-support-for-AIX.patch Content-Disposition: attachment; filename="0001-PATCH-Enable-Vector-support-for-AIX.patch"; size=26055; creation-date="Thu, 13 Oct 2022 10:50:35 GMT"; modification-date="Thu, 13 Oct 2022 10:52:14 GMT" Content-Transfer-Encoding: base64 RnJvbSBlMWRiODhiMTZmN2U3OGNkODMxMmVlYjcyOTg1OTI5OGNjOGQwZWFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFkaGFyIEthbWF0aCA8QWRpdHlhLkthbWF0 aDFAaWJtLmNvbT4KRGF0ZTogVGh1LCAxMyBPY3QgMjAyMiAwNToyMTozNiAtMDUwMApTdWJqZWN0 OiBbUEFUQ0hdIEVuYWJsZSB2ZWN0b3IgaW5zdHJ1Y3Rpb24gZGVidWdnaW5nIGZvciBBSVgKCi0t LQogZ2RiL2FpeC10aHJlYWQuYyAgICAgIHwgMTE0ICsrKysrKysrKysrKysrKysrKysrKy0KIGdk Yi9yczYwMDAtYWl4LW5hdC5jICB8IDIyMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0KIGdkYi9yczYwMDAtYWl4LXRkZXAuYyB8IDIxMyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystCiBnZGIvcnM2MDAwLXRkZXAuYyAgICAgfCAgNjcgKysr KysrLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCA1NjggaW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2RiL2FpeC10aHJlYWQuYyBiL2dkYi9haXgtdGhyZWFkLmMK aW5kZXggNTdlNTc1NmUxNDQuLjE1NDAwZjViOTBkIDEwMDY0NAotLS0gYS9nZGIvYWl4LXRocmVh ZC5jCisrKyBiL2dkYi9haXgtdGhyZWFkLmMKQEAgLTEzNDcsMTEgKzEzNDcsNzUgQEAgZmV0Y2hf cmVnc19rZXJuZWxfdGhyZWFkIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8s CiAJICBzdXBwbHlfc3ByczMyIChyZWdjYWNoZSwgc3ByczMyLnB0X2lhciwgc3ByczMyLnB0X21z ciwgc3ByczMyLnB0X2NyLAogCQkJIHNwcnMzMi5wdF9sciwgc3ByczMyLnB0X2N0ciwgc3ByczMy LnB0X3hlciwKIAkJCSBzcHJzMzIucHRfZnBzY3IpOwotCi0JICBpZiAodGRlcC0+cHBjX21xX3Jl Z251bSA+PSAwKQotCSAgICByZWdjYWNoZS0+cmF3X3N1cHBseSAodGRlcC0+cHBjX21xX3JlZ251 bSwgKGNoYXIgKikgJnNwcnMzMi5wdF9tcSk7CiAJfQorICAgICB9CisgIC8qIHZlY3RvciByZWdp c3RlcnMgKi8KKyAgaWYgKHRkZXAtPnBwY192cjBfcmVnbnVtICE9IC0xICYmIHJlZ25vID49IHRk ZXAtPnBwY192cjBfcmVnbnVtKQorICB7CisgICAgaW50IHJldCA9IDA7CisgICAgaW50IG51bV9v Zl92cnJlZ3MgPSB0ZGVwLT5wcGNfdnJzYXZlX3JlZ251bSAtIHRkZXAtPnBwY192cjBfcmVnbnVt ICsgMTsKKyAgICBfX3ZteF9jb250ZXh0X3Qgdm14OworICAgIG1lbXNldCgmdm14LCAwLCBzaXpl b2YoX192bXhfY29udGV4dF90KSk7CisgICAgaWYgKF9fcG93ZXJfdm14KCkpCisgICAgeworICAg ICAgIHJldCA9IHB0cmFjZTY0IChQVFRfUkVBRF9WRUMsIHRpZCwgKGxvbmcgbG9uZykgJnZteCwg MCwgMCk7CisgICAgICAgaWYgKHJldCA8IDApCisgICAgICAgeworICAgICAgICAgaWYgKGVycm5v ID09IEVOWElPKQorICAgICAgICAgICByZXR1cm47CisgICAgICAgICBwZXJyb3Jfd2l0aF9uYW1l IChfKCJVbmFibGUgdG8gZmV0Y2ggQWx0aVZlYyByZWdpc3RlcnMiKSk7CisgICAgICAgfQorICAg ICAgIGZvciAoaSA9IDA7IGkgPCBudW1fb2ZfdnJyZWdzOyBpKyspCisgICAgICAgICByZWdjYWNo ZS0+cmF3X3N1cHBseSAodGRlcC0+cHBjX3ZyMF9yZWdudW0gKyBpLCAmKHZteC5fX3ZyW2ldKSk7 CisgICAgfQorICB9CisKKyAgLyogdnN4IHJlZ2lzdGVycyAqLworICBpZiAodGRlcC0+cHBjX3Zz cjBfdXBwZXJfcmVnbnVtICE9IC0xICYmIHJlZ25vID49IHRkZXAtPnBwY192c3IwX3VwcGVyX3Jl Z251bSkKKyAgeworICAgIF9fdnN4X2NvbnRleHRfdCB2c3g7CisgICAgbWVtc2V0KCZ2c3gsIDAs IHNpemVvZihfX3ZzeF9jb250ZXh0X3QpKTsKKyAgICBpZiAoX19wb3dlcl92c3goKSkKKyAgICB7 CisgICAgICBpbnQgcmV0ID0gMDsKKyAgICAgIHJldCA9IHB0cmFjZTY0IChQVFRfUkVBRF9WU1gs IHRpZCwgKGxvbmcgbG9uZykgJnZzeCwgMCwgMCk7CisgICAgICBpZiAocmV0IDwgMCkKKyAgICAg IHsKKyAgICAgICAgaWYgKGVycm5vID09IEVOWElPKQorICAgICAgICAgIHJldHVybjsKKyAgICAg ICAgcGVycm9yX3dpdGhfbmFtZSAoXygiVW5hYmxlIHRvIGZldGNoIFZTWCByZWdpc3RlcnMiKSk7 CisgICAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IHBwY19udW1fdnNocnM7IGkrKykKKyAgICAg IHJlZ2NhY2hlLT5yYXdfc3VwcGx5ICh0ZGVwLT5wcGNfdnNyMF91cHBlcl9yZWdudW0gKyBpLCAm KHZzeC5fX3Zzcl9kdzFbaV0pKTsKICAgICB9CisgIH0gCit9CisKK3N0YXRpYyB2b2lkCitmaWxs X2FsdGl2ZWMgKGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIF9fdm14X2NvbnRleHRf dCAqdm14KQoreworICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgp OworICBwcGNfZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwPHBwY19nZGJhcmNoX3Rk ZXA+IChnZGJhcmNoKTsKKyAgaW50IG51bV9vZl92cnJlZ3MgPSB0ZGVwLT5wcGNfdnJzYXZlX3Jl Z251bSAtIHRkZXAtPnBwY192cjBfcmVnbnVtICsgMTsKKyAgaW50IHJlZ25vOworCisgIGZvciAo cmVnbm8gPSAwOyByZWdubyA8IG51bV9vZl92cnJlZ3M7IHJlZ25vKyspCisgICAgaWYgKFJFR19W QUxJRCA9PSByZWdjYWNoZS0+Z2V0X3JlZ2lzdGVyX3N0YXR1cyAodGRlcC0+cHBjX3ZyMF9yZWdu dW0gKyByZWdubykpCisgICAgICByZWdjYWNoZS0+cmF3X2NvbGxlY3QgKHRkZXAtPnBwY192cjBf cmVnbnVtICsgcmVnbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHZteC0+ X192clswXSkgKyByZWdubyk7Cit9CisKK3N0YXRpYyB2b2lkCitmaWxsX3ZzeCAoY29uc3Qgc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgX192c3hfY29udGV4dF90ICAqdnN4KQoreworICBzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgpOworICBwcGNfZ2RiYXJjaF90 ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwPHBwY19nZGJhcmNoX3RkZXA+IChnZGJhcmNoKTsKKyAg aW50IHJlZ25vOworCisgIGZvciAocmVnbm8gPSAwOyByZWdubyA8IHBwY19udW1fdnNocnM7IHJl Z25vKyspCisgICAgaWYgKFJFR19WQUxJRCA9PSByZWdjYWNoZS0+Z2V0X3JlZ2lzdGVyX3N0YXR1 cyAoIHRkZXAtPnBwY192c3IwX3VwcGVyX3JlZ251bSArIHJlZ25vKSkKKyAgICAgIHJlZ2NhY2hl LT5yYXdfY29sbGVjdCAodGRlcC0+cHBjX3ZzcjBfdXBwZXJfcmVnbnVtICsgcmVnbm8sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYodnN4LT5fX3Zzcl9kdzFbMF0pICsgcmVn bm8pOwogfQogCiAvKiBGZXRjaCByZWdpc3RlciBSRUdOTyBpZiAhPSAtMSBvciBhbGwgcmVnaXN0 ZXJzIG90aGVyd2lzZSBmcm9tIHRoZQpAQCAtMTY5Miw2ICsxNzU2LDUwIEBAIHN0b3JlX3JlZ3Nf a2VybmVsX3RocmVhZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25v LAogCSAgcHRyYWNlMzIgKFBUVF9XUklURV9TUFJTLCB0aWQsICh1aW50cHRyX3QpICZzcHJzMzIs IDAsIE5VTEwpOwogCX0KICAgICB9CisgICAgaWYgKHRkZXAtPnBwY192cjBfcmVnbnVtICE9IC0x ICYmIHJlZ25vID49IHRkZXAtPnBwY192cjBfcmVnbnVtKQorICAgIHsKKyAgICAgIGludCByZXQg PSAwOworICAgICAgX192bXhfY29udGV4dF90IHZteDsKKyAgICAgIG1lbXNldCgmdm14LCAwLCBz aXplb2YoX192bXhfY29udGV4dF90KSk7CisgICAgICBpZiAoX19wb3dlcl92bXgoKSkKKyAgICAg IHsKKyAgICAgICAgIHJldCA9IHB0cmFjZTY0IChQVFRfUkVBRF9WRUMsIHRpZCwgKGxvbmcgbG9u ZykgJnZteCwgMCwgMCk7CisgICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgIHsKKyAgICAg ICAgICAgaWYgKGVycm5vID09IEVOWElPKQorICAgICAgICAgICB7CisgICAgICAgICAgICAgd2Fy bmluZyAoXygiVW5hYmxlIHRvIGZldGNoIEFsdGlWZWMgcmVnaXN0ZXJzLiIpKTsKKyAgICAgICAg ICAgICByZXR1cm47CisgICAgICAgICAgIH0KKyAgICAgICAgICAgZmlsbF9hbHRpdmVjKHJlZ2Nh Y2hlLCAmdm14KTsKKyAgICAgICAgICAgcmV0ID0gcHRyYWNlNjQgKFBUVF9XUklURV9WRUMsIHRp ZCwgKGxvbmcgbG9uZykgJnZteCwgMCwgMCk7CisgICAgICAgICAgIGlmIChyZXQgPCAwKQorICAg ICAgICAgICAgIHBlcnJvcl93aXRoX25hbWUgKF8oIlVuYWJsZSB0byBzdG9yZSBBbHRpVmVjIHJl Z2lzdGVyLiIpKTsKKyAgICAgICB9CisgICAgIH0KKyAgIH0KKyAgIC8qIHZteCByZWdpc3RlcnMg Ki8KKyAgIGlmICh0ZGVwLT5wcGNfdnNyMF91cHBlcl9yZWdudW0gIT0gLTEgJiYgcmVnbm8gPj0g dGRlcC0+cHBjX3ZzcjBfdXBwZXJfcmVnbnVtKQorICAgeworICAgICBfX3ZzeF9jb250ZXh0X3Qg dnN4OworICAgICBtZW1zZXQoJnZzeCwgMCwgc2l6ZW9mKF9fdnN4X2NvbnRleHRfdCkpOworICAg ICBpZiAoX19wb3dlcl92c3goKSkKKyAgICAgeworICAgICAgICBpbnQgcmV0ID0gIHB0cmFjZTY0 IChQVFRfUkVBRF9WU1gsIHRpZCwgKGxvbmcgbG9uZykgJnZzeCwgMCwgMCk7CisgICAgICAgIGlm IChyZXQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgaWYgKGVycm5vID09IEVOWElPKQorICAg ICAgICAgIHsKKyAgICAgICAgICAgIHdhcm5pbmcgKF8oIlVuYWJsZSB0byBmZXRjaCBWU1ggcmVn aXN0ZXJzLiIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICB9CisgICAgICAgIH0K KyAgICAgICAgZmlsbF92c3ggKHJlZ2NhY2hlLCAmdnN4KTsKKyAgICAgICAgcmV0ID0gcHRyYWNl NjQgKFBUVF9XUklURV9WU1gsIHRpZCwgKGxvbmcgbG9uZykgJnZzeCwgMCwgMCk7CisgICAgICAg IGlmIChyZXQgPCAwKQorICAgICAgICAgIHBlcnJvcl93aXRoX25hbWUgKF8oIlVuYWJsZSB0byBz dG9yZSBWU1ggcmVnaXN0ZXIuIikpOworICAgIH0KKyAgfQogfQogCiAvKiBTdG9yZSBnZGIncyBj dXJyZW50IHZpZXcgb2YgdGhlIHJlZ2lzdGVyIHNldCBpbnRvIHRoZQpkaWZmIC0tZ2l0IGEvZ2Ri L3JzNjAwMC1haXgtbmF0LmMgYi9nZGIvcnM2MDAwLWFpeC1uYXQuYwppbmRleCBjYjE0MTQyNzY5 Ni4uZTk4OWE5YTY3MzkgMTAwNjQ0Ci0tLSBhL2dkYi9yczYwMDAtYWl4LW5hdC5jCisrKyBiL2dk Yi9yczYwMDAtYWl4LW5hdC5jCkBAIC01NCw2ICs1NCwxOSBAQAogI2luY2x1ZGUgPHN5cy9sZHIu aD4KICNpbmNsdWRlIDxzeXMvc3lzdGVtY2ZnLmg+CiAKKyNpbmNsdWRlICJnZGJ0aHJlYWQuaCIK KyNpbmNsdWRlIDxzeXMvY29udGV4dC5oPgorI2luY2x1ZGUgPHN5cy9wdGhkZWJ1Zy5oPgorCisj aW5jbHVkZSAiZmVhdHVyZXMvcnM2MDAwL3Bvd2VycGMtdnN4NjQuYyIKKyNpbmNsdWRlICJmZWF0 dXJlcy9yczYwMDAvcG93ZXJwYy12c3gzMi5jIgorI2luY2x1ZGUgImZlYXR1cmVzL3JzNjAwMC9w b3dlcnBjLWFsdGl2ZWMzMi5jIgorI2luY2x1ZGUgImZlYXR1cmVzL3JzNjAwMC9wb3dlcnBjLWFs dGl2ZWM2NC5jIgorCitpbnQgaGF2ZV9wdHJhY2VfZ2V0dnJyZWdzID0gMTsKKworaW50IGhhdmVf cHRyYWNlX2dldHNldHZzeHJlZ3MgPSAxOworCiAvKiBPbiBBSVg0LjMrLCBzeXMvbGRyLmggcHJv dmlkZXMgZGlmZmVyZW50IHZlcnNpb25zIG9mIHN0cnVjdCBsZF9pbmZvIGZvcgogICAgZGVidWdn aW5nIDMyLWJpdCBhbmQgNjQtYml0IHByb2Nlc3Nlcy4gIERlZmluZSBhIHR5cGVkZWYgYW5kIG1h Y3JvcyBmb3IKICAgIGFjY2Vzc2luZyBmaWVsZHMgaW4gdGhlIGFwcHJvcHJpYXRlIHN0cnVjdHVy ZXMuICAqLwpAQCAtOTEsNiArMTA0LDggQEAgY2xhc3MgcnM2MDAwX25hdF90YXJnZXQgZmluYWwg OiBwdWJsaWMgaW5mX3B0cmFjZV90YXJnZXQKIAogICBwdGlkX3Qgd2FpdCAocHRpZF90LCBzdHJ1 Y3QgdGFyZ2V0X3dhaXRzdGF0dXMgKiwgdGFyZ2V0X3dhaXRfZmxhZ3MpIG92ZXJyaWRlOwogCisg IGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqcmVhZF9kZXNjcmlwdGlvbiAoKSAgb3ZlcnJpZGU7 CisKIHByb3RlY3RlZDoKIAogICB2b2lkIHBvc3Rfc3RhcnR1cF9pbmZlcmlvciAocHRpZF90IHB0 aWQpIG92ZXJyaWRlCkBAIC0xMDcsNiArMTIyLDgyIEBAIGNsYXNzIHJzNjAwMF9uYXRfdGFyZ2V0 IGZpbmFsIDogcHVibGljIGluZl9wdHJhY2VfdGFyZ2V0CiAKIHN0YXRpYyByczYwMDBfbmF0X3Rh cmdldCB0aGVfcnM2MDAwX25hdF90YXJnZXQ7CiAKK3N0YXRpYyB2b2lkCitzdG9yZV92c3hfcmVn aXN0ZXJfYWl4IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8pCit7CisgIGlu dCByZXQ7CisgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gcmVnY2FjaGUtPmFyY2ggKCk7Cisg IHBwY19nZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXA8cHBjX2dkYmFyY2hfdGRlcD4g KGdkYmFyY2gpOworICBzdHJ1Y3QgdGhyZGVudHJ5NjQgdGhyZGVudHJ5OworICBfX3ZzeF9jb250 ZXh0X3QgdnN4OworICBwaWRfdCBwaWQgPSBpbmZlcmlvcl9wdGlkLnBpZCAoKTsKKyAgdGlkNjRf dCAgdGhyZF9pID0gMDsKKworICBpZiAoZ2V0dGhyZHM2NChwaWQsICZ0aHJkZW50cnksIHNpemVv ZihzdHJ1Y3QgdGhyZGVudHJ5NjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmdGhyZF9pLCAxKSA9PSAxKQorICAgIHRocmRfaSA9IHRocmRlbnRyeS50aV90 aWQ7CisgIG1lbXNldCgmdnN4LCAwLCBzaXplb2YoX192c3hfY29udGV4dF90KSk7CisgIGlmIChf X3Bvd2VyX3ZzeCgpKSAKKyAgeworICAgIHJldCA9IHB0cmFjZTY0IChQVFRfUkVBRF9WU1gsIHRo cmRfaSwgKGxvbmcgbG9uZykgJnZzeCwgMCwgMCk7CisgICAgaWYgKHJldCA8IDApCisgICAgewor ICAgICAgIGlmIChlcnJubyA9PSBFTlhJTykKKyAgICAgICB7CisgICAgICAgICAvKiBoYXZlX3B0 cmFjZV9nZXRzZXR2c3hyZWdzID0gMDsgKi8KKyAgICAgICAgIHdhcm5pbmcgKF8oIlVuYWJsZSB0 byBmZXRjaCBWU1ggcmVnaXN0ZXJzLiIpKTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgICB9Cisg ICAgfQorICB9CisgIHJlZ2NhY2hlLT5yYXdfY29sbGVjdCAocmVnbm8sICYodnN4Ll9fdnNyX2R3 MVswXSkrCisgICAgICAgICAgICAgICAgICAgICAgIHJlZ25vIC0gdGRlcC0+cHBjX3ZzcjBfdXBw ZXJfcmVnbnVtKTsKKworICByZXQgPSBwdHJhY2U2NCAoUFRUX1dSSVRFX1ZTWCwgdGhyZF9pLCAo bG9uZyBsb25nKSAmdnN4LCAwLCAwKTsKKworICBpZiAocmV0IDwgMCkKKyAgICBwZXJyb3Jfd2l0 aF9uYW1lIChfKCJVbmFibGUgdG8gc3RvcmUgVlNYIHJlZ2lzdGVyLiIpKTsKK30KKworc3RhdGlj IHZvaWQKK3N0b3JlX2FsdGl2ZWNfcmVnaXN0ZXJfYWl4IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCBpbnQgcmVnbm8pCit7CisgIGludCByZXQ7CisgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo ID0gcmVnY2FjaGUtPmFyY2ggKCk7CisgIHBwY19nZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNo X3RkZXA8cHBjX2dkYmFyY2hfdGRlcD4gKGdkYmFyY2gpOworICBpbnQgdnJyZWdzaXplID0gcmVn aXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgdGRlcC0+cHBjX3ZyMF9yZWdudW0pOworICBzdHJ1Y3QgdGhy ZGVudHJ5NjQgdGhyZGVudHJ5OworICBfX3ZteF9jb250ZXh0X3Qgdm14OworICBwaWRfdCBwaWQg PSBpbmZlcmlvcl9wdGlkLnBpZCAoKTsKKyAgdGlkNjRfdCAgdGhyZF9pID0gMDsKKworICBpZiAo Z2V0dGhyZHM2NChwaWQsICZ0aHJkZW50cnksIHNpemVvZihzdHJ1Y3QgdGhyZGVudHJ5NjQpLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhyZF9pLCAxKSA9 PSAxKQorICAgIHRocmRfaSA9IHRocmRlbnRyeS50aV90aWQ7CisgIG1lbXNldCgmdm14LCAwLCBz aXplb2YoX192bXhfY29udGV4dF90KSk7CisgIGlmIChfX3Bvd2VyX3ZteCgpKSAgCisgIHsKKyAg ICByZXQgPSBwdHJhY2U2NCAoUFRUX1JFQURfVkVDLCB0aHJkX2ksIChsb25nIGxvbmcpICZ2bXgs IDAsIDApOworICAgIGlmIChyZXQgPCAwKQorICAgIHsKKyAgICAgICBpZiAoZXJybm8gPT0gRU5Y SU8pCisgICAgICAgeworICAgICAgICAgLyogaGF2ZV9wdHJhY2VfZ2V0dnJyZWdzID0gMDsgKi8K KyAgICAgICAgIHdhcm5pbmcgKF8oIlVuYWJsZSB0byBmZXRjaCBBbHRpVmVjIHJlZ2lzdGVycy4i KSk7CisgICAgICAgICByZXR1cm47CisgICAgICAgfQorICAgIH0KKyAgfSAgIAorCisgIHJlZ2Nh Y2hlLT5yYXdfY29sbGVjdCAocmVnbm8sICYodm14Ll9fdnJbMF0pICsgcmVnbm8KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLSB0ZGVwLT5wcGNfdnIwX3JlZ251bSk7CisKKyAgcmV0 ID0gcHRyYWNlNjQgKFBUVF9XUklURV9WRUMsIHRocmRfaSwgKGxvbmcgbG9uZykgJnZteCwgMCwg MCk7CisgIGlmIChyZXQgPCAwKQorICAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJVbmFibGUgdG8g c3RvcmUgQWx0aVZlYyByZWdpc3Rlci4iKSk7CisKK30KKwogLyogR2l2ZW4gUkVHTk8sIGEgZ2Ri IHJlZ2lzdGVyIG51bWJlciwgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nCiAgICBudW1iZXIgc3Vp dGFibGUgZm9yIHVzZSBhcyBhIHB0cmFjZSgpIHBhcmFtZXRlci4gIFJldHVybiAtMSBpZgogICAg dGhlcmUncyBubyBzdWl0YWJsZSBtYXBwaW5nLiAgQWxzbywgc2V0IHRoZSBpbnQgcG9pbnRlZCB0 byBieQpAQCAtMjY0LDYgKzM1NSwxNyBAQCBzdG9yZV9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgaW50IHJlZ25vKQogCiAgIG5yID0gcmVnbWFwIChnZGJhcmNoLCByZWdubywg JmlzZmxvYXQpOwogCisgIGlmIChhbHRpdmVjX3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ25vKSkK KyAgeworICAgIHN0b3JlX2FsdGl2ZWNfcmVnaXN0ZXJfYWl4IChyZWdjYWNoZSwgcmVnbm8pOwor ICAgIHJldHVybjsKKyAgfQorICBpZiAodnN4X3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ25vKSkK KyAgeworICAgIHN0b3JlX3ZzeF9yZWdpc3Rlcl9haXggKHJlZ2NhY2hlLCByZWdubyk7CisgICAg cmV0dXJuOworICB9CisKICAgLyogRmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLiAgKi8KICAgaWYg KGlzZmxvYXQpCiAgICAgcnM2MDAwX3B0cmFjZTMyIChQVF9XUklURV9GUFIsIHBpZCwgYWRkciwg bnIsIDApOwpAQCAtMzA1LDYgKzQwNyw5OCBAQCBzdG9yZV9yZWdpc3RlciAoc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSwgaW50IHJlZ25vKQogICAgIH0KIH0KIAorc3RhdGljIHZvaWQKK3N1cHBs eV92c3hyZWdzZXRfYWl4IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBfX3ZzeF9jb250ZXh0 X3QgKnZzeCkKK3sKKworICBpbnQgaTsKKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSByZWdj YWNoZS0+YXJjaCAoKTsKKyAgcHBjX2dkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcDxw cGNfZ2RiYXJjaF90ZGVwPiAoZ2RiYXJjaCk7CisKKyAgZm9yIChpID0gMDsgaSA8IHBwY19udW1f dnNocnM7IGkrKykKKyAgIHJlZ2NhY2hlLT5yYXdfc3VwcGx5ICh0ZGVwLT5wcGNfdnNyMF91cHBl cl9yZWdudW0gKyBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHZzeC0+ X192c3JfZHcxW2ldKSk7Cit9CisKK3N0YXRpYyB2b2lkCitmZXRjaF92c3hfcmVnaXN0ZXJzX2Fp eCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKK3sKKyAgaW50IHJldDsKKyAgc3RydWN0IHRo cmRlbnRyeTY0IHRocmRlbnRyeTsKKyAgX192c3hfY29udGV4dF90IHZzeDsKKyAgcGlkX3QgcGlk ID0gY3VycmVudF9pbmZlcmlvciAoKS0+cGlkOworICB0aWQ2NF90ICB0aHJkX2kgPSAwOworCisg IGlmIChnZXR0aHJkczY0KHBpZCwgJnRocmRlbnRyeSwgc2l6ZW9mKHN0cnVjdCB0aHJkZW50cnk2 NCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aHJkX2ks IDEpID09IDEpCisgICAgdGhyZF9pID0gdGhyZGVudHJ5LnRpX3RpZDsKKyAgbWVtc2V0KCZ2c3gs IDAsIHNpemVvZihfX3ZzeF9jb250ZXh0X3QpKTsKKyAgaWYgKF9fcG93ZXJfdnN4KCkpICAKKyAg eworICAgIHJldCA9IHB0cmFjZTY0IChQVFRfUkVBRF9WU1gsIHRocmRfaSwgKGxvbmcgbG9uZykg JnZzeCwgMCwgMCk7CisgICAgaWYgKHJldCA8IDApCisgICAgeworICAgICAgIC8qIEp1c3QgZmls bCB3aXRoIDAgemVybyBpbnN0ZWFkIG9mIGVycm9yIHJldHVybiAqLworICAgICAgICNpZiAwCisg ICAgICAgICBpZiAoZXJybm8gPT0gRU5YSU8pCisgICAgICAgICB7CisgICAgICAgICAgIGhhdmVf cHRyYWNlX2dldHNldHZzeHJlZ3MgPSAwOworICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg IHBlcnJvcl93aXRoX25hbWUgKF8oIlVuYWJsZSB0byBmZXRjaCBWU1ggcmVnaXN0ZXJzIikpOwor ICAgICAgICAgfQorICAgICAgICNlbmRpZgorICAgIH0KKyAgfQorICBzdXBwbHlfdnN4cmVnc2V0 X2FpeCAocmVnY2FjaGUsICZ2c3gpOworfQorCitzdGF0aWMgdm9pZAorc3VwcGx5X3ZycmVnc2V0 X2FpeCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgX192bXhfY29udGV4dF90ICp2bXgpCit7 CisgIGludCBpOworICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgp OworICBwcGNfZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwPHBwY19nZGJhcmNoX3Rk ZXA+IChnZGJhcmNoKTsKKyAgaW50IG51bV9vZl92cnJlZ3MgPSB0ZGVwLT5wcGNfdnJzYXZlX3Jl Z251bSAtIHRkZXAtPnBwY192cjBfcmVnbnVtICsgMTsKKworICBmb3IgKGkgPSAwOyBpIDwgbnVt X29mX3ZycmVnczsgaSsrKQorICAgIHJlZ2NhY2hlLT5yYXdfc3VwcGx5ICh0ZGVwLT5wcGNfdnIw X3JlZ251bSArIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHZteC0+ X192cltpXSkpOworfQorCitzdGF0aWMgdm9pZAorZmV0Y2hfYWx0aXZlY19yZWdpc3RlcnNfYWl4 IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQoreworICBpbnQgcmV0OworICBzdHJ1Y3QgdGhy ZGVudHJ5NjQgdGhyZGVudHJ5OworICBfX3ZteF9jb250ZXh0X3Qgdm14OworICBwaWRfdCBwaWQg PSBjdXJyZW50X2luZmVyaW9yICgpLT5waWQ7CisgIHRpZDY0X3QgIHRocmRfaSA9IDA7CisKKyAg aWYgKGdldHRocmRzNjQocGlkLCAmdGhyZGVudHJ5LCBzaXplb2Yoc3RydWN0IHRocmRlbnRyeTY0 KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhyZF9pLCAxKSA9PSAxKQorICAg IHRocmRfaSA9IHRocmRlbnRyeS50aV90aWQ7CisKKyAgbWVtc2V0KCZ2bXgsIDAsIHNpemVvZihf X3ZteF9jb250ZXh0X3QpKTsKKyAgaWYgKF9fcG93ZXJfdm14KCkpCisgIHsgIAorICAgIHJldCA9 IHB0cmFjZTY0IChQVFRfUkVBRF9WRUMsIHRocmRfaSwgKGxvbmcgbG9uZykgJnZteCwgMCwgMCk7 CisgICAgaWYgKHJldCA8IDApCisgICAgeworICAgICAgIC8qIEp1c3QgZmlsbCB3aXRoIDAgemVy byBpbnN0ZWFkIG9mIGVycm9yIHJldHVybiAqLworICAgICAgICNpZiAwCisgICAgICAgIGlmIChl cnJubyA9PSBFTlhJTykKKyAgICAgICAgIHsKKyAgICAgICAgICAgaGF2ZV9wdHJhY2VfZ2V0dnJy ZWdzID0gMDsKKyAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICBwZXJyb3Jfd2l0aF9uYW1l IChfKCJVbmFibGUgdG8gZmV0Y2ggQWx0aVZlYyByZWdpc3RlcnMiKSk7CisgICAgICAgICB9Cisg ICAgICAgI2VuZGlmCisgICAgfQorICB9ICAgCisgIHN1cHBseV92cnJlZ3NldF9haXggKHJlZ2Nh Y2hlLCAmdm14KTsKK30KKworCiAvKiBSZWFkIGZyb20gdGhlIGluZmVyaW9yIGFsbCByZWdpc3Rl cnMgaWYgUkVHTk8gPT0gLTEgYW5kIGp1c3QgcmVnaXN0ZXIKICAgIFJFR05PIG90aGVyd2lzZS4g ICovCiAKQEAgLTMxMiwxMCArNTA2LDYgQEAgdm9pZAogcnM2MDAwX25hdF90YXJnZXQ6OmZldGNo X3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vKQogewogICBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgpOwotICBpZiAocmVnbm8g IT0gLTEpCi0gICAgZmV0Y2hfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdubyk7Ci0KLSAgZWxzZQog ICAgIHsKICAgICAgIHBwY19nZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXA8cHBjX2dk YmFyY2hfdGRlcD4gKGdkYmFyY2gpOwogCkBAIC0zMzEsNyArNTIxLDE4IEBAIHJzNjAwMF9uYXRf dGFyZ2V0OjpmZXRjaF9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCBy ZWdubykKICAgICAgIGlmICh0ZGVwLT5wcGNfZnAwX3JlZ251bSA+PSAwKQogCWZvciAocmVnbm8g PSAwOyByZWdubyA8IHBwY19udW1fZnByczsgcmVnbm8rKykKIAkgIGZldGNoX3JlZ2lzdGVyIChy ZWdjYWNoZSwgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyByZWdubyk7Ci0KKyAgICAgIAorICAgICAg aWYgKGhhdmVfcHRyYWNlX2dldHZycmVncykKKyAgICAgICAgaWYgKHRkZXAtPnBwY192cjBfcmVn bnVtICE9IC0xICYmIHRkZXAtPnBwY192cnNhdmVfcmVnbnVtICE9IC0xKSAKKyAgICAgICAgewor ICAgICAgICAgICBmZXRjaF9hbHRpdmVjX3JlZ2lzdGVyc19haXggKHJlZ2NhY2hlKTsKKyAgICAg ICAgfQorCisgICAgIGlmIChoYXZlX3B0cmFjZV9nZXRzZXR2c3hyZWdzKQorICAgICAgICAgaWYg KHRkZXAtPnBwY192c3IwX3VwcGVyX3JlZ251bSAhPSAtMSkKKyAgICAgICAgICB7CisgICAgICAg ICAgICBmZXRjaF92c3hfcmVnaXN0ZXJzX2FpeCAocmVnY2FjaGUpOworICAgICAgICAgIH0KICAg ICAgIC8qIFJlYWQgc3BlY2lhbCByZWdpc3RlcnMuICAqLwogICAgICAgZmV0Y2hfcmVnaXN0ZXIg KHJlZ2NhY2hlLCBnZGJhcmNoX3BjX3JlZ251bSAoZ2RiYXJjaCkpOwogICAgICAgZmV0Y2hfcmVn aXN0ZXIgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfcHNfcmVnbnVtKTsKQEAgLTM0Niw2ICs1NDcsMTUg QEAgcnM2MDAwX25hdF90YXJnZXQ6OmZldGNoX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpy ZWdjYWNoZSwgaW50IHJlZ25vKQogICAgIH0KIH0KIAorY29uc3Qgc3RydWN0IHRhcmdldF9kZXNj ICoKK3JzNjAwMF9uYXRfdGFyZ2V0OjpyZWFkX2Rlc2NyaXB0aW9uICgpCit7CisgICBpZiAoQVJD SDY0KCkpCisgICAgICByZXR1cm4gdGRlc2NfcG93ZXJwY192c3g2NDsKKyAgIGVsc2UKKyAgICAg IHJldHVybiB0ZGVzY19wb3dlcnBjX3ZzeDMyOworfQorCiAvKiBTdG9yZSBvdXIgcmVnaXN0ZXIg dmFsdWVzIGJhY2sgaW50byB0aGUgaW5mZXJpb3IuCiAgICBJZiBSRUdOTyBpcyAtMSwgZG8gdGhp cyBmb3IgYWxsIHJlZ2lzdGVycy4KICAgIE90aGVyd2lzZSwgUkVHTk8gc3BlY2lmaWVzIHdoaWNo IHJlZ2lzdGVyIChzbyB3ZSBjYW4gc2F2ZSB0aW1lKS4gICovCmRpZmYgLS1naXQgYS9nZGIvcnM2 MDAwLWFpeC10ZGVwLmMgYi9nZGIvcnM2MDAwLWFpeC10ZGVwLmMKaW5kZXggZDQ3OTc0YjUxZDEu LjY3YWU4YTZhNTRhIDEwMDY0NAotLS0gYS9nZGIvcnM2MDAwLWFpeC10ZGVwLmMKKysrIGIvZ2Ri L3JzNjAwMC1haXgtdGRlcC5jCkBAIC02OCw2ICs2OCwyMiBAQAogLyogTWluaW11bSBwb3NzaWJs ZSB0ZXh0IGFkZHJlc3MgaW4gQUlYLiAgKi8KICNkZWZpbmUgQUlYX1RFWFRfU0VHTUVOVF9CQVNF IDB4MTAwMDAwMDAKIAorc3RydWN0IHJzNjAwMF9haXhfcmVnX3ZycmVnX29mZnNldAoreworICBp bnQgdnIwX29mZnNldDsKKyAgaW50IHZzY3Jfb2Zmc2V0OworICBpbnQgdnJzYXZlX29mZnNldDsK K307CisKK3N0YXRpYyBzdHJ1Y3QgcnM2MDAwX2FpeF9yZWdfdnJyZWdfb2Zmc2V0IHJzNjAwMF9h aXhfdnJyZWdfb2Zmc2V0ID0KK3sKKyAgIC8qIEFsdGlWZWMgcmVnaXN0ZXJzLiAgKi8KKyAgMzIs IC8qIHZyMF9vZmZzZXQgKi8KKyAgNTQ0LCAvKiB2c2NyX29mZnNldC4gKi8KKyAgNTYwIC8qIHZy c2F2ZV9vZmZzZXQgKi8KK307CisgICAKKyAgCiBzdGF0aWMgc3RydWN0IHRyYWRfZnJhbWVfY2Fj aGUgKgogYWl4X3NpZ2hhbmRsZV9mcmFtZV9jYWNoZSAoZnJhbWVfaW5mb19wdHIgdGhpc19mcmFt ZSwKIAkJCSAgIHZvaWQgKip0aGlzX2NhY2hlKQpAQCAtMTQ1LDcgKzE2MSw3IEBAIGFpeF9zaWdo YW5kbGVfZnJhbWVfcHJldl9yZWdpc3RlciAoZnJhbWVfaW5mb19wdHIgdGhpc19mcmFtZSwKIAog c3RhdGljIGludAogYWl4X3NpZ2hhbmRsZV9mcmFtZV9zbmlmZmVyIChjb25zdCBzdHJ1Y3QgZnJh bWVfdW53aW5kICpzZWxmLAotCQkJICAgICBmcmFtZV9pbmZvX3B0ciB0aGlzX2ZyYW1lLAorCQkJ ICAgICBmcmFtZV9pbmZvX3B0ciB0aGlzX2ZyYW1lLCAKIAkJCSAgICAgdm9pZCAqKnRoaXNfcHJv bG9ndWVfY2FjaGUpCiB7CiAgIENPUkVfQUREUiBwYyA9IGdldF9mcmFtZV9wYyAodGhpc19mcmFt ZSk7CkBAIC0yMzcsNiArMjUzLDE5MCBAQCByczYwMDBfYWl4X2NvbGxlY3RfcmVnc2V0IChjb25z dCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsCiAgIHBwY19jb2xsZWN0X2ZwcmVnc2V0IChyZWdzZXQs IHJlZ2NhY2hlLCByZWdudW0sIGdyZWdzLCBsZW4pOwogfQogCisvKiBSZXR1cm4gbm9uLXplcm8g aWYgdGhlIGFyY2hpdGVjdHVyZSBkZXNjcmliZWQgYnkgR0RCQVJDSCBoYXMKKyAgIFZTWCByZWdp c3RlcnMgKHZzcjAgLS0tIHZzcjYzKS4gICovCitzdGF0aWMgaW50CityczYwMDBfYWl4X3ZzeF9z dXBwb3J0X3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQoreworICBwcGNfZ2RiYXJjaF90ZGVw ICp0ZGVwID0gZ2RiYXJjaF90ZGVwPHBwY19nZGJhcmNoX3RkZXA+IChnZGJhcmNoKTsKKyAgcmV0 dXJuIHRkZXAtPnBwY192c3IwX3JlZ251bSA+PSAwOworfQorCisvKiBSZXR1cm4gbm9uLXplcm8g aWYgdGhlIGFyY2hpdGVjdHVyZSBkZXNjcmliZWQgYnkgR0RCQVJDSCBoYXMKKyAgIEFsdGl2ZWMg cmVnaXN0ZXJzICh2cjAgLS0tIHZyMzEsIHZyc2F2ZSBhbmQgdnNjcikuICAqLworc3RhdGljIGlu dAorcnM2MDAwX2FpeF9hbHRpdmVjX3N1cHBvcnRfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gp Cit7CisgIHBwY19nZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXA8cHBjX2dkYmFyY2hf dGRlcD4gKGdkYmFyY2gpOworICByZXR1cm4gKHRkZXAtPnBwY192cjBfcmVnbnVtID49IDAKKyAg ICYmIHRkZXAtPnBwY192cnNhdmVfcmVnbnVtID49IDApOworfQorCitzdGF0aWMgaW50CityczYw MDBfYWl4X2dldF92cnJlZ19vZmZzZXQgKHBwY19nZGJhcmNoX3RkZXAgKnRkZXAsCisgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcnM2MDAwX2FpeF9yZWdfdnJyZWdfb2Zmc2V0ICpvZmZz ZXRzLAorICAgICAgICAgICAgICAgICAgaW50IHJlZ251bSkKK3sKKyAgaWYgKHJlZ251bSA+PSB0 ZGVwLT5wcGNfdnIwX3JlZ251bSAmJgorICByZWdudW0gPCB0ZGVwLT5wcGNfdnIwX3JlZ251bSAr IHBwY19udW1fdnJzKQorICAgIHJldHVybiBvZmZzZXRzLT52cjBfb2Zmc2V0ICsgKHJlZ251bSAt IHRkZXAtPnBwY192cjBfcmVnbnVtKSAqIDE2OworCisgIGlmIChyZWdudW0gPT0gdGRlcC0+cHBj X3Zyc2F2ZV9yZWdudW0gLSAxKQorICAgIHJldHVybiBvZmZzZXRzLT52c2NyX29mZnNldDsKKwor ICBpZiAocmVnbnVtID09IHRkZXAtPnBwY192cnNhdmVfcmVnbnVtKQorICAgIHJldHVybiBvZmZz ZXRzLT52cnNhdmVfb2Zmc2V0OworCisgIHJldHVybiAtMTsKK30KKworc3RhdGljIHZvaWQKK3Jz NjAwMF9haXhfc3VwcGx5X3ZycmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsIHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisgICAgICAgICAgICAgICAgICAgICBpbnQgcmVnbnVt LCBjb25zdCB2b2lkICp2cnJlZ3MsIHNpemVfdCBsZW4pCit7CisgIHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoID0gcmVnY2FjaGUtPmFyY2ggKCk7CisgIGNvbnN0IHN0cnVjdCByczYwMDBfYWl4X3Jl Z192cnJlZ19vZmZzZXQgICpvZmZzZXRzOworICBzaXplX3Qgb2Zmc2V0OworCisgIGlmICghcnM2 MDAwX2FpeF9hbHRpdmVjX3N1cHBvcnRfcCAoZ2RiYXJjaCkpCisgICAgcmV0dXJuOworICAKKyAg cHBjX2dkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcDxwcGNfZ2RiYXJjaF90ZGVwPiAo Z2RiYXJjaCk7CisgIG9mZnNldHMgPSAoY29uc3Qgc3RydWN0IHJzNjAwMF9haXhfcmVnX3ZycmVn X29mZnNldCAqKSByZWdzZXQtPnJlZ21hcDsKKyAgaWYgKHJlZ251bSA9PSAtMSkKKyAgeworICAg IGludCBpOworCisgICAgZm9yIChpID0gdGRlcC0+cHBjX3ZyMF9yZWdudW0sIG9mZnNldCA9IG9m ZnNldHMtPnZyMF9vZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgaSA8IHRkZXAtPnBw Y192cjBfcmVnbnVtICsgcHBjX251bV92cnM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaSsrLCBvZmZzZXQgKz0gMTYpCisgICAgICAgIHBwY19zdXBwbHlf cmVnIChyZWdjYWNoZSwgaSwgKGNvbnN0IGdkYl9ieXRlICopIHZycmVncywgb2Zmc2V0LCAxNik7 CisKKyAgICBwcGNfc3VwcGx5X3JlZyAocmVnY2FjaGUsICh0ZGVwLT5wcGNfdnJzYXZlX3JlZ251 bSAtIDEpLAorICAgICAgICAoY29uc3QgZ2RiX2J5dGUgKikgdnJyZWdzLCBvZmZzZXRzLT52c2Ny X29mZnNldCwgNCk7CisKKyAgICBwcGNfc3VwcGx5X3JlZyAocmVnY2FjaGUsIHRkZXAtPnBwY192 cnNhdmVfcmVnbnVtLAorICAgIChjb25zdCBnZGJfYnl0ZSAqKSB2cnJlZ3MsIG9mZnNldHMtPnZy c2F2ZV9vZmZzZXQsIDQpOworCisgICAgcmV0dXJuOworICB9CisgIG9mZnNldCA9IHJzNjAwMF9h aXhfZ2V0X3ZycmVnX29mZnNldCAodGRlcCwgb2Zmc2V0cywgcmVnbnVtKTsKKyAgaWYgKHJlZ251 bSAhPSB0ZGVwLT5wcGNfdnJzYXZlX3JlZ251bQorICAgICYmIHJlZ251bSAhPSB0ZGVwLT5wcGNf dnJzYXZlX3JlZ251bSAtIDEpCisgICAgcHBjX3N1cHBseV9yZWcgKHJlZ2NhY2hlLCByZWdudW0s IChjb25zdCBnZGJfYnl0ZSAqKSB2cnJlZ3MsIG9mZnNldCwgMTYpOworICBlbHNlCisgICAgcHBj X3N1cHBseV9yZWcgKHJlZ2NhY2hlLCByZWdudW0sCisgICAgIChjb25zdCBnZGJfYnl0ZSAqKSB2 cnJlZ3MsIG9mZnNldCwgNCk7CisgIAorfQorCitzdGF0aWMgdm9pZAorcnM2MDAwX2FpeF9zdXBw bHlfdnN4cmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsIHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsCisgICAgICAgICAgICAgICAgICAgICBpbnQgcmVnbnVtLCBjb25zdCB2b2lk ICp2c3hyZWdzLCBzaXplX3QgbGVuKQoreworICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IHJl Z2NhY2hlLT5hcmNoICgpOworCisgIGlmICghcnM2MDAwX2FpeF92c3hfc3VwcG9ydF9wIChnZGJh cmNoKSkKKyAgICByZXR1cm47CisKKyAgcHBjX2dkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hf dGRlcDxwcGNfZ2RiYXJjaF90ZGVwPiAoZ2RiYXJjaCk7CisgIGlmIChyZWdudW0gPT0gLTEpCisg IHsKKyAgICBpbnQgaSwgb2Zmc2V0ID0gMDsKKworICAgIGZvciAoaSA9IHRkZXAtPnBwY192c3Iw X3VwcGVyX3JlZ251bTsKKyAgICAgaSA8IHRkZXAtPnBwY192c3IwX3VwcGVyX3JlZ251bSArIDMy OworICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrLCBvZmZzZXQrKykKKyAgICAgIHBwY19z dXBwbHlfcmVnIChyZWdjYWNoZSwgaSwgKGNvbnN0IGdkYl9ieXRlICopIHZzeHJlZ3MsIG9mZnNl dCAqIDgsIDgpOworCisgICAgcmV0dXJuOworICB9CisgIGVsc2UKKyAgICBwcGNfc3VwcGx5X3Jl ZyAocmVnY2FjaGUsIHJlZ251bSwgKGNvbnN0IGdkYl9ieXRlICopIHZzeHJlZ3MsIDAsIDgpOwor fQorCisKK3N0YXRpYyB2b2lkCityczYwMDBfYWl4X2NvbGxlY3RfdnN4cmVnc2V0IChjb25zdCBz dHJ1Y3QgcmVnc2V0ICpyZWdzZXQsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVnbnVtLCB2 b2lkICp2c3hyZWdzLCBzaXplX3QgbGVuKQoreworICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9 IHJlZ2NhY2hlLT5hcmNoICgpOworCisgIGlmICghcnM2MDAwX2FpeF92c3hfc3VwcG9ydF9wIChn ZGJhcmNoKSkKKyAgICByZXR1cm47CisKKyAgcHBjX2dkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFy Y2hfdGRlcDxwcGNfZ2RiYXJjaF90ZGVwPiAoZ2RiYXJjaCk7CisKKyAgaWYgKHJlZ251bSA9PSAt MSkKKyAgeworICAgIGludCBpOworCisgICAgZm9yIChpID0gdGRlcC0+cHBjX3ZzcjBfdXBwZXJf cmVnbnVtOworICAgICBpIDwgdGRlcC0+cHBjX3ZzcjBfdXBwZXJfcmVnbnVtICsgMzI7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrKQorICAgICAgcHBjX2NvbGxlY3Rf cmVnIChyZWdjYWNoZSwgaSwgKGdkYl9ieXRlICopIHZzeHJlZ3MsIDAsIDgpOworCisgICAgcmV0 dXJuOworICB9CisKKyBlbHNlCisgICAgcHBjX2NvbGxlY3RfcmVnIChyZWdjYWNoZSwgcmVnbnVt LCAoZ2RiX2J5dGUgKikgdnN4cmVncywgMCwgOCk7Cit9IAorCisKK3N0YXRpYyB2b2lkCityczYw MDBfYWl4X2NvbGxlY3RfdnJyZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3NldCwKKyAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorICAg ICAgICAgICAgICAgICAgICAgIGludCByZWdudW0sIHZvaWQgKnZycmVncywgc2l6ZV90IGxlbikK K3sKKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSByZWdjYWNoZS0+YXJjaCAoKTsKKyAgY29u c3Qgc3RydWN0IHJzNjAwMF9haXhfcmVnX3ZycmVnX29mZnNldCAqb2Zmc2V0czsKKyAgc2l6ZV90 IG9mZnNldDsKKworICBpZiAoIXJzNjAwMF9haXhfYWx0aXZlY19zdXBwb3J0X3AgKGdkYmFyY2gp KQorICAgIHJldHVybjsKKworICBwcGNfZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVw PHBwY19nZGJhcmNoX3RkZXA+IChnZGJhcmNoKTsKKyAgb2Zmc2V0cyA9IChjb25zdCBzdHJ1Y3Qg cnM2MDAwX2FpeF9yZWdfdnJyZWdfb2Zmc2V0ICopIHJlZ3NldC0+cmVnbWFwOworICBpZiAocmVn bnVtID09IC0xKQorICB7CisgICAgaW50IGk7CisKKyAgICBmb3IgKGkgPSB0ZGVwLT5wcGNfdnIw X3JlZ251bSwgb2Zmc2V0ID0gb2Zmc2V0cy0+dnIwX29mZnNldDsKKyAgICAgICAgICAgICAgICAg ICAgICAgICBpIDwgdGRlcC0+cHBjX3ZyMF9yZWdudW0gKyBwcGNfbnVtX3ZyczsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKyssIG9mZnNldCArPSAxNikK KyAgICAgIHBwY19jb2xsZWN0X3JlZyAocmVnY2FjaGUsIGksIChnZGJfYnl0ZSAqKSB2cnJlZ3Ms IG9mZnNldCwgMTYpOworCisgICAgcHBjX2NvbGxlY3RfcmVnIChyZWdjYWNoZSwgKHRkZXAtPnBw Y192cnNhdmVfcmVnbnVtIC0gMSksCisgICAgICAgICAgICAgICAoZ2RiX2J5dGUgKikgdnJyZWdz LCBvZmZzZXRzLT52c2NyX29mZnNldCwgNCk7CisKKyAgICBwcGNfY29sbGVjdF9yZWcgKHJlZ2Nh Y2hlLCB0ZGVwLT5wcGNfdnJzYXZlX3JlZ251bSwKKyAgICAgICAgICAgICAoZ2RiX2J5dGUgKikg dnJyZWdzLCBvZmZzZXRzLT52cnNhdmVfb2Zmc2V0LCA0KTsKKworICAgIHJldHVybjsKKyAgfQor CisgIG9mZnNldCA9IHJzNjAwMF9haXhfZ2V0X3ZycmVnX29mZnNldCAodGRlcCwgb2Zmc2V0cywg cmVnbnVtKTsKKyAgaWYgKHJlZ251bSAhPSB0ZGVwLT5wcGNfdnJzYXZlX3JlZ251bQorICAgICAg JiYgcmVnbnVtICE9IHRkZXAtPnBwY192cnNhdmVfcmVnbnVtIC0gMSkKKyAgICBwcGNfY29sbGVj dF9yZWcgKHJlZ2NhY2hlLCByZWdudW0sIChnZGJfYnl0ZSAqKSB2cnJlZ3MsIG9mZnNldCwgMTYp OworICBlbHNlCisgICAgcHBjX2NvbGxlY3RfcmVnIChyZWdjYWNoZSwgcmVnbnVtLAorICAgICAg ICAgICAgICAgICAgIChnZGJfYnl0ZSAqKSB2cnJlZ3MsIG9mZnNldCwgNCk7Cit9CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgcmVnc2V0IHJzNjAwMF9haXgzMl92cnJlZ3NldCA9IHsKKyAgJnJzNjAw MF9haXhfdnJyZWdfb2Zmc2V0LAorICByczYwMDBfYWl4X3N1cHBseV92cnJlZ3NldCwKKyAgcnM2 MDAwX2FpeF9jb2xsZWN0X3ZycmVnc2V0Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ3Nl dCByczYwMDBfYWl4MzJfdnN4cmVnc2V0ID0geworICAmcnM2MDAwX2FpeF92cnJlZ19vZmZzZXQs CisgIHJzNjAwMF9haXhfc3VwcGx5X3ZzeHJlZ3NldCwKKyAgcnM2MDAwX2FpeF9jb2xsZWN0X3Zz eHJlZ3NldAorfTsKIC8qIEFJWCByZWdpc3RlciBzZXQuICAqLwogCiBzdGF0aWMgY29uc3Qgc3Ry dWN0IHJlZ3NldCByczYwMDBfYWl4MzJfcmVnc2V0ID0KQEAgLTI2MiwxMCArNDYyLDE5IEBAIHJz NjAwMF9haXhfaXRlcmF0ZV9vdmVyX3JlZ3NldF9zZWN0aW9ucyAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsCiAJCQkJCSBjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQogewogICBwcGNf Z2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwPHBwY19nZGJhcmNoX3RkZXA+IChnZGJh cmNoKTsKKyAgaW50IGhhdmVfYWx0aXZlYyA9IHRkZXAtPnBwY192cjBfcmVnbnVtICE9IC0xOwor ICBpbnQgaGF2ZV92c3ggPSB0ZGVwLT5wcGNfdnNyMF91cHBlcl9yZWdudW0gIT0gLTE7CisgICAK ICAgaWYgKHRkZXAtPndvcmRzaXplID09IDQpCiAgICAgY2IgKCIucmVnIiwgNTkyLCA1OTIsICZy czYwMDBfYWl4MzJfcmVnc2V0LCBOVUxMLCBjYl9kYXRhKTsKICAgZWxzZQogICAgIGNiICgiLnJl ZyIsIDU3NiwgNTc2LCAmcnM2MDAwX2FpeDY0X3JlZ3NldCwgTlVMTCwgY2JfZGF0YSk7CisgCisg IGlmIChoYXZlX2FsdGl2ZWMpCisgICBjYiAoIi5haXgtdm14IiwgNTYwLCA1NjAsICZyczYwMDBf YWl4MzJfdnJyZWdzZXQsICJBSVggYWx0aXZlYyIsIGNiX2RhdGEpOworCisgIGlmIChoYXZlX3Zz eCkKKyAgIGNiICgiLmFpeC12c3giLCAyNTYsIDI1NiwgJnJzNjAwMF9haXgzMl92c3hyZWdzZXQs ICJBSVggdnN4IiwgY2JfZGF0YSk7ICAgIAogfQogCiAKQEAgLTM1MSw3ICs1NjAsNyBAQCByczYw MDBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHZhbHVl ICpmdW5jdGlvbiwKIAogICAgICAgYXJnID0gYXJnc1thcmdub107CiAgICAgICB0eXBlID0gY2hl Y2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnKSk7Ci0gICAgICBsZW4gPSB0eXBlLT5sZW5ndGgg KCk7CisgICAgICBsZW4gPSB0eXBlLT5sZW5ndGggKCk7IAogCiAgICAgICBpZiAodHlwZS0+Y29k ZSAoKSA9PSBUWVBFX0NPREVfRkxUKQogCXsKZGlmZiAtLWdpdCBhL2dkYi9yczYwMDAtdGRlcC5j IGIvZ2RiL3JzNjAwMC10ZGVwLmMKaW5kZXggOGI2ZDY2NmJiZTcuLjZlOGZmYzVmYjBkIDEwMDY0 NAotLS0gYS9nZGIvcnM2MDAwLXRkZXAuYworKysgYi9nZGIvcnM2MDAwLXRkZXAuYwpAQCAtMTk3 Miw3ICsxOTcyLDggQEAgc2tpcF9wcm9sb2d1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENP UkVfQUREUiBwYywgQ09SRV9BRERSIGxpbV9wYywKICAgICAgIC8qIDAwMTExMCAwMDAwMCAwMDAw MCBpaWlpIGlpaWkgaWlpaSBpaWlpICAqLwogICAgICAgLyogMDAxMTEwIDAxMTEwIDAwMDAwIGlp aWkgaWlpaSBpaWlpIGlpaWkgICovCiAgICAgICBlbHNlIGlmICgob3AgJiAweGZmZmYwMDAwKSA9 PSAweDM4MDAwMDAwICAgICAgICAgLyogbGkgcjAsIFNJTU0gKi8KLQkgICAgICAgfHwgKG9wICYg MHhmZmZmMDAwMCkgPT0gMHgzOWMwMDAwMCkgICAgIC8qIGxpIHIxNCwgU0lNTSAqLworCSAgICAg ICB8fCAob3AgJiAweGZmZmYwMDAwKSA9PSAweDM5YzAwMDAwICAgICAvKiBsaSByMTQsIFNJTU0g Ki8KKyAgICAgICAgICAgICAgIHx8IChvcCAmIDB4ZmYwZjAwMDApID09IDB4MzgwMDAwMDApICAg ICAvKiBsaSwgcjQsIFNJTU0gKi8gCiAJewogCSAgaWYgKChvcCAmIDB4ZmZmZjAwMDApID09IDB4 MzgwMDAwMDApCiAJICAgIHIwX2NvbnRhaW5zX2FyZyA9IDA7CkBAIC0xOTg2LDI0ICsxOTg3LDIx IEBAIHNraXBfcHJvbG9ndWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMs IENPUkVfQUREUiBsaW1fcGMsCiAJfQogICAgICAgLyogU3RvcmUgdmVjdG9yIHJlZ2lzdGVyIFMg YXQgKHIzMStyMCkgYWxpZ25lZCB0byAxNiBieXRlcy4gICovICAgICAgCiAgICAgICAvKiAwMTEx MTEgc3Nzc3MgMTExMTEgMDAwMDAgMDAxMTEwMDExMTAgKi8KLSAgICAgIGVsc2UgaWYgKChvcCAm IDB4ZmMxZmZmZmYpID09IDB4N2MxZjAxY2UpICAgLyogc3R2eCBWcywgUjMxLCBSMCAqLwotCXsK LQkgIGlmIChwYyA9PSAobGlfZm91bmRfcGMgKyA0KSkKLQkgICAgewotCSAgICAgIHZyX3JlZyA9 IEdFVF9TUkNfUkVHIChvcCk7Ci0JICAgICAgLyogSWYgdGhpcyBpcyB0aGUgZmlyc3QgdmVjdG9y IHJlZyB0byBiZSBzYXZlZCwgb3IgaWYKLQkJIGl0IGhhcyBhIGxvd2VyIG51bWJlciB0aGFuIG90 aGVycyBwcmV2aW91c2x5IHNlZW4sCi0JCSByZXVwZGF0ZSB0aGUgZnJhbWUgaW5mby4gICovCi0J ICAgICAgaWYgKGZkYXRhLT5zYXZlZF92ciA9PSAtMSB8fCBmZGF0YS0+c2F2ZWRfdnIgPiB2cl9y ZWcpCi0JCXsKLQkJICBmZGF0YS0+c2F2ZWRfdnIgPSB2cl9yZWc7Ci0JCSAgZmRhdGEtPnZyX29m ZnNldCA9IHZyX3NhdmVkX29mZnNldCArIG9mZnNldDsKLQkJfQotCSAgICAgIHZyX3NhdmVkX29m ZnNldCA9IC0xOwotCSAgICAgIHZyX3JlZyA9IC0xOwotCSAgICAgIGxpX2ZvdW5kX3BjID0gMDsK LQkgICAgfQotCX0KKyAgICAgIGVsc2UgaWYgKChvcCAmIDB4ZmMxZmZmZmYpID09IDB4N2MxZjAx Y2UgICAvKiBzdHZ4IFZzLCBSMzEsIFIwICovCisgICAgICAgICAgICAgICB8fCAob3AgJiAweGZj MWZmZmZmKSA9PSAweDdjMDEyZjk5IC8qIHN0eHZkMnggVnMscjEsIHI1ICovCisgICAgICAgICAg ICAgICB8fCAob3AgJiAweGZjMWZmZmZmKSA9PSAweDdjMDEyZjk4IC8qIHN0eHZkMnggdnMwLCBy MSwgcjUgKi8KKyAgICAgICAgICAgICAgIHx8IChvcCAmIDB4ZmMxZmYwMDApID09IDB4N2MwMTIw MDApICAgCisgICAgICB7CisgICAgICAgIHZyX3JlZyA9IEdFVF9TUkNfUkVHIChvcCk7CisgICAg ICAgIC8qIElmIHRoaXMgaXMgdGhlIGZpcnN0IHZlY3RvciByZWcgdG8gYmUgc2F2ZWQsIG9yIGlm CisgICAgICAgCSAgIGl0IGhhcyBhIGxvd2VyIG51bWJlciB0aGFuIG90aGVycyBwcmV2aW91c2x5 IHNlZW4sCisgICAgICAgCSAgIHJldXBkYXRlIHRoZSBmcmFtZSBpbmZvLiAgKi8KKyAgICAgICAg ZmRhdGEtPnNhdmVkX3ZyID0gdnJfcmVnOworICAgICAgICBmZGF0YS0+dnJfb2Zmc2V0ID0gdnJf c2F2ZWRfb2Zmc2V0OworICAgICAgICB2cl9zYXZlZF9vZmZzZXQgPSAtMTsKKyAgICAgICAgdnJf cmVnID0gLTE7CisgICAgICAgIGxpX2ZvdW5kX3BjID0gMDsKKyAgICAgIH0KICAgICAgIC8qIEVu ZCBBbHRpVmVjIHJlbGF0ZWQgaW5zdHJ1Y3Rpb25zLiAgKi8KIAogICAgICAgLyogU3RhcnQgQm9v a0UgcmVsYXRlZCBpbnN0cnVjdGlvbnMuICAqLwpAQCAtMjY2NSw4ICsyNjYzLDggQEAgcnM2MDAw X2NvbnZlcnRfcmVnaXN0ZXJfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0s CiAJICAmJiByZWdudW0gPj0gdGRlcC0+cHBjX2ZwMF9yZWdudW0KIAkgICYmIHJlZ251bSA8IHRk ZXAtPnBwY19mcDBfcmVnbnVtICsgcHBjX251bV9mcHJzCiAJICAmJiB0eXBlLT5jb2RlICgpID09 IFRZUEVfQ09ERV9GTFQKLQkgICYmICh0eXBlLT5sZW5ndGggKCkKLQkgICAgICAhPSBidWlsdGlu X3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2RvdWJsZS0+bGVuZ3RoICgpKSk7CisgICAgICAgICAg JiYgKHR5cGUtPmxlbmd0aCAoKQorICAgICAgICAgICAgICAhPSBidWlsdGluX3R5cGUgKGdkYmFy Y2gpLT5idWlsdGluX2RvdWJsZS0+bGVuZ3RoICgpKSk7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTM0 NjYsNyArMzQ2NCw3IEBAIHN0cnVjdCBwcGNfdmFyaWFudAogICAgIHVuc2lnbmVkIGxvbmcgbWFj aDsKIAogICAgIC8qIFRhcmdldCBkZXNjcmlwdGlvbiBmb3IgdGhpcyB2YXJpYW50LiAgKi8KLSAg ICBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKip0ZGVzYzsKKyAgICBzdHJ1Y3QgdGFyZ2V0X2Rl c2MgKip0ZGVzYzsKICAgfTsKIAogc3RhdGljIHN0cnVjdCBwcGNfdmFyaWFudCB2YXJpYW50c1td ID0KQEAgLTM0NzQsNyArMzQ3Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgcHBjX3ZhcmlhbnQgdmFyaWFu dHNbXSA9CiAgIHsicG93ZXJwYyIsICJQb3dlclBDIHVzZXItbGV2ZWwiLCBiZmRfYXJjaF9wb3dl cnBjLAogICAgYmZkX21hY2hfcHBjLCAmdGRlc2NfcG93ZXJwY19hbHRpdmVjMzJ9LAogICB7InBv d2VyIiwgIlBPV0VSIHVzZXItbGV2ZWwiLCBiZmRfYXJjaF9yczYwMDAsCi0gICBiZmRfbWFjaF9y czZrLCAmdGRlc2NfcnM2MDAwfSwKKyAgIGJmZF9tYWNoX3JzNmssICZ0ZGVzY19wb3dlcnBjX3Zz eDMyfSwKICAgeyI0MDMiLCAiSUJNIFBvd2VyUEMgNDAzIiwgYmZkX2FyY2hfcG93ZXJwYywKICAg IGJmZF9tYWNoX3BwY180MDMsICZ0ZGVzY19wb3dlcnBjXzQwM30sCiAgIHsiNDA1IiwgIklCTSBQ b3dlclBDIDQwNSIsIGJmZF9hcmNoX3Bvd2VycGMsCkBAIC0zNTA0LDcgKzM1MDIsNyBAQCBzdGF0 aWMgc3RydWN0IHBwY192YXJpYW50IHZhcmlhbnRzW10gPQogICB7InBvd2VycGM2NCIsICJQb3dl clBDIDY0LWJpdCB1c2VyLWxldmVsIiwgYmZkX2FyY2hfcG93ZXJwYywKICAgIGJmZF9tYWNoX3Bw YzY0LCAmdGRlc2NfcG93ZXJwY19hbHRpdmVjNjR9LAogICB7IjYyMCIsICJNb3Rvcm9sYSBQb3dl clBDIDYyMCIsIGJmZF9hcmNoX3Bvd2VycGMsCi0gICBiZmRfbWFjaF9wcGNfNjIwLCAmdGRlc2Nf cG93ZXJwY182NH0sCisgICBiZmRfbWFjaF9wcGNfNjIwLCAmdGRlc2NfcG93ZXJwY192c3g2NH0s CiAgIHsiNjMwIiwgIk1vdG9yb2xhIFBvd2VyUEMgNjMwIiwgYmZkX2FyY2hfcG93ZXJwYywKICAg IGJmZF9tYWNoX3BwY182MzAsICZ0ZGVzY19wb3dlcnBjXzY0fSwKICAgeyJhMzUiLCAiUG93ZXJQ QyBBMzUiLCBiZmRfYXJjaF9wb3dlcnBjLApAQCAtMzY4MCwxOCArMzY3OCwxNSBAQCByczYwMDBf ZnJhbWVfY2FjaGUgKGZyYW1lX2luZm9fcHRyIHRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hl KQogICAvKiBpZiAhPSAtMSwgZmRhdGEuc2F2ZWRfdnIgaXMgdGhlIHNtYWxsZXN0IG51bWJlciBv ZiBzYXZlZF92ci4KICAgICAgQWxsIHZyJ3MgZnJvbSBzYXZlZF92ciB0byB2cjMxIGFyZSBzYXZl ZC4gICovCiAgIGlmICh0ZGVwLT5wcGNfdnIwX3JlZ251bSAhPSAtMSAmJiB0ZGVwLT5wcGNfdnJz YXZlX3JlZ251bSAhPSAtMSkKLSAgICB7Ci0gICAgICBpZiAoZmRhdGEuc2F2ZWRfdnIgPj0gMCkK LQl7Ci0JICBpbnQgaTsKLQkgIENPUkVfQUREUiB2cl9hZGRyID0gY2FjaGUtPmJhc2UgKyBmZGF0 YS52cl9vZmZzZXQ7Ci0JICBmb3IgKGkgPSBmZGF0YS5zYXZlZF92cjsgaSA8IDMyOyBpKyspCi0J ICAgIHsKLQkgICAgICBjYWNoZS0+c2F2ZWRfcmVnc1t0ZGVwLT5wcGNfdnIwX3JlZ251bSArIGld LnNldF9hZGRyICh2cl9hZGRyKTsKLQkgICAgICB2cl9hZGRyICs9IHJlZ2lzdGVyX3NpemUgKGdk YmFyY2gsIHRkZXAtPnBwY192cjBfcmVnbnVtKTsKLQkgICAgfQotCX0KLSAgICB9CisgIHsKKyAg ICBpbnQgaTsKKyAgICBDT1JFX0FERFIgdnJfYWRkciA9IGNhY2hlLT5iYXNlICsgZmRhdGEudnJf b2Zmc2V0OworICAgIGZvciAoaSA9IDA7IGkgPCA2NjsgaSsrKQorICAgIHsKKyAgICAgIGNhY2hl LT5zYXZlZF9yZWdzW3RkZXAtPnBwY192c3IwX3VwcGVyX3JlZ251bSArIGldLnNldF9hZGRyICh2 cl9hZGRyKTsKKyAgICAgIHZyX2FkZHIgKz0gcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgdGRlcC0+ cHBjX3ZzcjBfdXBwZXJfcmVnbnVtKTsKKyAgICB9IAorICB9IAogCiAgIC8qIGlmICE9IC0xLCBm ZGF0YS5zYXZlZF9ldiBpcyB0aGUgc21hbGxlc3QgbnVtYmVyIG9mIHNhdmVkX2V2LgogICAgICBB bGwgdnIncyBmcm9tIHNhdmVkX2V2IHRvIGV2MzEgYXJlIHNhdmVkLiA/Pz8/PyAgKi8KLS0gCjIu MzEuMQoK --_004_CH2PR15MB354415C815824AF9A966CC8FD6259CH2PR15MB3544namp_-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id 56E123858404 for ; Thu, 13 Oct 2022 10:52:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 56E123858404 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=ibm.com Received: from pps.filterd (m0098420.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 29DAO6gj020145; Thu, 13 Oct 2022 10:52:17 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : content-type : mime-version; s=pp1; bh=mZ5DtI5XiSyoMYRXU41NMauRGIoSuNSQ8K5MAqVfvtM=; b=KG2Ffcb3o5z9PeTKJ38HCYKgRTmQ2uxkhzGaihs7CRY4NPgkND3O/bVyP45HGSKhaMqW PeFckb3PdSjxCR85ld13lwyhYqPz2azGKAs8N+X9mPDD+MmW8O9Ovwu2Ne6eLb1Ii3W7 QFuVL2lD7EDXotCOALIbeY7bm7uVs1tN+qVVUtEwX3l0W2ZGhxNKY/dFYHdlMjlHM/72 HU8qFhxw5374gbSUx3OTJX1fanygwfEOXmJeQHGbue5u3CgUUs5bVQFuPZDnrSSkS6FZ LfX7HLJTsMBOkDPy21FDG2C0CnV7b6rYO1pQ5AdTE8dDz/NpZhIG21ylv0c3lE7gP+MU uA== Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2174.outbound.protection.outlook.com [104.47.59.174]) by mx0b-001b2d01.pphosted.com (PPS) with ESMTPS id 3k6gw0rq3g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 13 Oct 2022 10:52:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i+tFZ1bGI1e9Gs43w3rq9syV3/AsMponTWp1J5Yy9kh5lL3O4zhueVz9X699rdSscGFiN1vBkhBLGvvKFKozYIz256GTx+BKgWA1ef1H3+sv04cXy/Ropg0BU7tdkMlAzi7xaFLxskLnFIVDTtcH7enZdnYztVbH6YqfbI4z+UE833IcTmmfqFzNEe1vIefb3ZrupuAJl908uC49hrX4jNlSDkKnYSgDrCoVsv7At9zT4kJrmZUdxoRiVvqBj2A4EMtXRLgwlwSzvpAU70BbUWip0pY52TttjotDO0GTdiKDQ7CnbK3bRLU8oFndltwkzdMpGyPq5aOn9ABCnCbPqg== 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=mZ5DtI5XiSyoMYRXU41NMauRGIoSuNSQ8K5MAqVfvtM=; b=HsZuimh9aJoOZIkztiPP4sY3r7zTmxL1YyybrLIiho1/QG56NMwobsIWaYJdu5hPF5JXagrD+Yz275YARoaLn6JAhZulB5Lsnyr8T/U9NAYCQfwwFhQxtscDU9JswnzCuNKievv5Jr7Xp5hhOo8AcsTdwCO9RuSvsinfEYGib/Dq4ZWzDZnWXTyLk+vL6INtbK5coTIXn81dHiIxLPlAxuctgNWv91yDQ3Hc0AFxjvvA9493rXwR9P/dePLP+DtOYr46aVYNQCYhsm8OJiO8HVW8YR47jFTb7SvG2S9sifQ1gFTB8OA+RmgwATpJEI+LcDT7m4Fup/erR5ymGor1FQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ibm.com; dmarc=pass action=none header.from=ibm.com; dkim=pass header.d=ibm.com; arc=none Received: from CH2PR15MB3544.namprd15.prod.outlook.com (2603:10b6:610:5::26) by SA0PR15MB4079.namprd15.prod.outlook.com (2603:10b6:806:8d::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Thu, 13 Oct 2022 10:52:14 +0000 Received: from CH2PR15MB3544.namprd15.prod.outlook.com ([fe80::159e:3e92:9c5:72e3]) by CH2PR15MB3544.namprd15.prod.outlook.com ([fe80::159e:3e92:9c5:72e3%4]) with mapi id 15.20.5709.021; Thu, 13 Oct 2022 10:52:14 +0000 From: Aditya Kamath1 To: Aditya Kamath1 via Gdb-patches , Ulrich Weigand , "simark@simark.ca" CC: Sangamesh Mallayya , Aditya Kamath1 Subject: [PATCH] Enable vector instruction debugging for AIX Thread-Topic: [PATCH] Enable vector instruction debugging for AIX Thread-Index: AQHY3u6lF+eu5MBiPkac4T2UQTTsTQ== Date: Thu, 13 Oct 2022 10:52:14 +0000 Message-ID: Accept-Language: en-IN, en-US Content-Language: en-IN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH2PR15MB3544:EE_|SA0PR15MB4079:EE_ x-ms-office365-filtering-correlation-id: fddd113d-5df9-425a-f792-08daad08fcf5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: eolx+i6MnwCg8v2srBmo/n8/sMFE8fMfsV6XW+RbHMl01eFdK5pttBaqsxCXmPm4ELHORau1/4rE4GbibxAZioaz8tO0YUhvSEzz2RrMLW7fjc4O+gmaIkIexM5XMRTQElCw8iPWd/S0VwuCCkr59G8w+Oz7Cyb6ZAywI0Ia9dDz+Pnh2G+yKplg7d7n4xHqGk/Jqm+CRZRoRCPgFp74M8wKrInG5T88wWNOFbDffHGFZOU8epmdWoB8/R4FOrHtHCmJUVzqoX0NUx67ArX+IzQ2SW+9sAWuWUBsI3UT44KDR/ntYsKXYeraXO1wKx1SKs/SZTL/v4z7c6gTbIpZC2pSJUjH4+Ri50evBhGIWAFA8ewBoib4qEk5OM4dmSpyNtayC66y6pF88KZ1xvhZi4IKZ1I9VUm5T773pFSf+ckYzcn/yEGSTYjoPjSjETZLpTSeoLDJ8SEJVnc9RM+GgEk44BC8oTQUjnrqyAlU7xhya+S/zreGJar8BbOgP6f8WFhLrBB0b9uMUo4imr2KPrHZ4VRdsb2UMgxlDBWlpWTCulDeefRpY2jw++mzX8gyKymSqOU6UBwempHwQsorwqgeliv5OcYkQwvp8Ita5ZQdakXe0JBjQ2DHtQ1lbKCFvGSKBwfWxvMNRPMm6rNrzgnzkJrSMlTK3cP7or7A8GEQsnQ4p7SxMbZ4m1zHstjKJf5UUotI49ttLvDflavRAiNGMkWJEXomsbtFhw/AW/LbsfRVu+6V2PjAcRNlxYya+p05Rt+KS+l9N02B9W3jVg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR15MB3544.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(366004)(39860400002)(136003)(376002)(346002)(396003)(451199015)(2906002)(19627405001)(316002)(91956017)(8676002)(4326008)(64756008)(66446008)(66476007)(66556008)(66946007)(76116006)(40140700001)(54906003)(33656002)(110136005)(52536014)(41300700001)(5660300002)(478600001)(71200400001)(83380400001)(8936002)(122000001)(26005)(186003)(99936003)(7696005)(6506007)(86362001)(9686003)(38100700002)(38070700005)(55016003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?+kJlv3J4M+jPtI1u6iyibNAYOJxi2J/2fp0dFuqayaQCjAHK1PpZYIY/ND?= =?iso-8859-1?Q?Ons2jeAbkajRcpjPXo8pkRn0J5eYAb+spv6yjfh6LGlKI94KRUsbiUD/Fh?= =?iso-8859-1?Q?YA92HP+rORs/aEvayhzc6kEQaxoC4dHv5S3UYpd+OFKWbQrk6NBzwcFL5B?= =?iso-8859-1?Q?J7qM+WSdnjiDT5k1TepBapkWz3h6Hj6rJKhoUOuQQewSNAwkwLKe1PQ6+r?= =?iso-8859-1?Q?58wDEa/SpG/lnPiF4uKwYenACJkdehIx3ofxntys42ssujxrVg571wW1Yf?= =?iso-8859-1?Q?pLfZULiFEIHdy95nsfIkqh3lyNjy862RTBFG1LlhdWJ7KWZLVJ/qmTAGCJ?= =?iso-8859-1?Q?9toZHKBctZclVhpEtRFnsOQIOZAug4FaUGhs/kli5+rzs35PK83rMqXnhc?= =?iso-8859-1?Q?+sxu8k8rEzv7QexHOhNPdTzbMZ7qj/cUXEDXlnHLZJ+j0EIWIG57n+8FIy?= =?iso-8859-1?Q?ztpQy7HLIt6WAu/8tMOxvwLjeshh6Qrs+sADOTe7WHeQtcddD2otY+xD+O?= =?iso-8859-1?Q?PyDGhw2qY+VeYoAcgkjf/eCSDWXFt654683Bfouj5ki+quSYoQXRVHUl2L?= =?iso-8859-1?Q?V0LNoasPjuij5Ip751nOjE1hYb5ietY00ccV3MTU9NXr65E7n3pIyu4F2B?= =?iso-8859-1?Q?Aej7u8dEhFV37JyBlW12xzmgj9f8zVJ0Hk37eukGmRlcixFllK9ByAwzEg?= =?iso-8859-1?Q?UtcsrVFdpfGlxh2MkdAJu4bQTmyy0TVX6HUDvZs5kEfdPfNHZA9CNNEqvQ?= =?iso-8859-1?Q?WE9Ar8V0fwm/VHdivF9FInwsq/8iOpDiLDF+4ZS9xa1j/9TZU6ThrSqRPU?= =?iso-8859-1?Q?obXFBAFnxCKlLE3nHYparHfVUs15uD+dHNi9cyEyy2gSmV8Xowg/BPtswI?= =?iso-8859-1?Q?sK3EcckLXel/fRZoWoY3PWXoiK/AqQPJSSeQvS9R1bduuPGQkm+fZR/3Q4?= =?iso-8859-1?Q?mm0eLQjonRwLtUwII41960avLj0Qz8fDz5KIRnpGlaKuT/e0Ukxc9QMAaj?= =?iso-8859-1?Q?ErgrGsYCDAGw3gorB95g4jlBLLwIDm+PBbMEUp0/f41ZtUMW1V1qU7o4sY?= =?iso-8859-1?Q?wmeokuFS5lmdBv2MWvgO0PSEOU/ObQw18L+EJtr8vI2FkT0GvNTej8QpT0?= =?iso-8859-1?Q?HrujfhTKIxVb5f4rGDOmCBti/de2zoGNZ/zNxymuEHTbDyO7wXh6UIrPw8?= =?iso-8859-1?Q?hG9lOurvWzVVkIUO5Uwqdwse0GcGAcuGe5eSyHs9sKDhZlkCRhp/PxGhcw?= =?iso-8859-1?Q?ZP4QLBFVEjbM+pRqJBElJyz2G2lCRVm2Sf3/gGcmGziLeCMBiPr+Ljr6OZ?= =?iso-8859-1?Q?OIJz6/OzrLODStoO67QOU2v3h3YDnb2tNSr2DIkxRjQqlwKkuWIk8Yo+1W?= =?iso-8859-1?Q?+lCNmYuk/hzgJwYpAD8uiFq7n4O6ewxXBpo2aD975HdfuXMWm3HWSN5i2x?= =?iso-8859-1?Q?yWvvvTEya5O0t2dheFrd0Eem3GmkdNqtvstwvq0aOsbXEudjV0QFpcqrTr?= =?iso-8859-1?Q?Bn/4vchUV7VPLa4eLN5HcwxkvMDafkeUmkrot84Gw6slHb11OuyQtALtpi?= =?iso-8859-1?Q?VESm7ig/cuxLwNnxN8L1VFwi09EE16jJ3u6+22rrw67ERZk9kQdeTev4vC?= =?iso-8859-1?Q?XdwWPe18Lp1QNuM7H4KCfp5Bmw7L3N9gIP?= Content-Type: multipart/mixed; boundary="_004_CH2PR15MB354415C815824AF9A966CC8FD6259CH2PR15MB3544namp_" MIME-Version: 1.0 X-OriginatorOrg: ibm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR15MB3544.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fddd113d-5df9-425a-f792-08daad08fcf5 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Oct 2022 10:52:14.1199 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: fcf67057-50c9-4ad4-98f3-ffca64add9e9 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: PT9O/n2ZhbENR0P3mYs8iu6+niln++pn2QVblN/I+VNgI07eI7uf3j5VAOq26WCIpEoTr0FF5msnsgYVpnaT4g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR15MB4079 X-Proofpoint-ORIG-GUID: jU1vXWENcqwh56eI55AUaatMkPrMMRim X-Proofpoint-GUID: jU1vXWENcqwh56eI55AUaatMkPrMMRim X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-10-13_06,2022-10-13_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1011 priorityscore=1501 impostorscore=0 suspectscore=0 mlxscore=0 malwarescore=0 phishscore=0 spamscore=0 bulkscore=0 lowpriorityscore=0 adultscore=0 mlxlogscore=446 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2210130062 X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HTML_MESSAGE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Message-ID: <20221013105214.qin-bRwIvG0xCO8pWRigMsZZySfiWJSoT_AKq-3FnLQ@z> --_004_CH2PR15MB354415C815824AF9A966CC8FD6259CH2PR15MB3544namp_ Content-Type: multipart/alternative; boundary="_000_CH2PR15MB354415C815824AF9A966CC8FD6259CH2PR15MB3544namp_" --_000_CH2PR15MB354415C815824AF9A966CC8FD6259CH2PR15MB3544namp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi all, Brief Introduction:- Vector registers are an extension to the POWERPC proce= ssor architecture in order to support vector and matrix mathematical functi= ons. This is to improve graphics and multimedia. For example, the vector AL= U SIMD- style arithmetic unit where a single instruction performs the same = operation on all the data elements of each vector. The problem:- While a user finds bugs in applications which uses vector ins= tructions, they would like to debug vector registers or set vector register= s to a particular value to figure it out. Currently in AIX, we have not ena= bled vector instruction debugging. This patch is used to enable vector inst= ruction debugging. Please find attached the patch. [See 0001-PATCH-Enable-Vector-support-for-A= IX.patch] A sample program is as shown below:- #include int main () { vector int Arr1[5] =3D { { 1, 2, 3, 4 }, { 11, 22, 33, 44 }, { 111, 222, 333, 444 }, { 1111, 2222, 3333, 4444 }, { 11111, 22222, 33333, 44444 } }; vector int Arr2[5] =3D { { 1, 2, 3, 4 }, { 11, 22, 33, 44 }, { 111, 222, 333, 444 }, { 1111, 2222, 3333, 4444 }, { 11111, 22222, 33333, 44444 } }; vector int Arr3[5] =3D { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }; printf("Adding Arrays\n"); Arr3[1] =3D Arr1[2] + Arr2[3]; printf("Arr3[1] =3D { %d, %d, %d, %d }\n", Arr3[1][0], Arr3[1][1], = Arr3[1][2], Arr3[1][3]); return 0; } The output expected is as follows:- (gdb) b main Breakpoint 1 at 0x1000052c: file /home/XYZ/gdb_tests/vector_lab_test.c, lin= e 3. (gdb) r Starting program: /home/XYZ/gdb_tests/vector_lab_test Breakpoint 1, main () at /home/XYZ/gdb_tests/vector_lab_test.c:3 3 vector int Arr1[5] =3D { (gdb) n 10 vector int Arr2[5] =3D { (gdb) n 17 vector int Arr3[5] =3D { (gdb) n 24 printf("Adding Arrays\n"); (gdb) n Adding Arrays 25 Arr3[1] =3D Arr1[2] + Arr2[3]; (gdb) n 26 printf("Arr3[1] =3D { %d, %d, %d, %d }\n", Arr3[1][0], Arr3= [1][1], Arr3[1][2], Arr3[1][3]); (gdb) info reg vr0 vr0 {uint128 =3D 0x4c60000098c00000e5200001318, v4_float =3D {0x= 4c6, 0x98c, 0xe52, 0x1318}, v4_int32 =3D {0x4c6, 0x98c, 0xe52, 0x1318}, v8_= int16 =3D {0x0, 0x4c6, 0x0, 0x98c, 0x0, 0xe52, 0x0, 0x1318}, v16_int8 =3D {= 0x0, 0x0, 0x4, 0xc6, 0x0, 0x0, 0x9, 0x8c, 0x0, 0x0, 0xe, 0x52, 0x0, 0x0, 0x= 13, 0x18}} (gdb) set $vr0.v4_int32[3] =3D 1 (gdb) info reg vr0 vr0 {uint128 =3D 0x4c60000098c00000e5200000001, v4_float =3D {0x= 4c6, 0x98c, 0xe52, 0x1}, v4_int32 =3D {0x4c6, 0x98c, 0xe52, 0x1}, v8_int16 = =3D {0x0, 0x4c6, 0x0, 0x98c, 0x0, 0xe52, 0x0, 0x1}, v16_int8 =3D {0x0, 0x0,= 0x4, 0xc6, 0x0, 0x0, 0x9, 0x8c, 0x0, 0x0, 0xe, 0x52, 0x0, 0x0, 0x0, 0x1}} (gdb) ------------------------------------------------------------------------- Kindly note in AIX unless and until a debugee uses vector registers the deb= ugger cannot set or get the same. Kindly let me know if this patch works. If yes, kindly push it else kindly = give me feedback for changes. Have a nice day ahead. Thanks and regards, Aditya. --_000_CH2PR15MB354415C815824AF9A966CC8FD6259CH2PR15MB3544namp_-- --_004_CH2PR15MB354415C815824AF9A966CC8FD6259CH2PR15MB3544namp_ Content-Type: application/octet-stream; name="0001-PATCH-Enable-Vector-support-for-AIX.patch" Content-Description: 0001-PATCH-Enable-Vector-support-for-AIX.patch Content-Disposition: attachment; filename="0001-PATCH-Enable-Vector-support-for-AIX.patch"; size=26055; creation-date="Thu, 13 Oct 2022 10:50:35 GMT"; modification-date="Thu, 13 Oct 2022 10:52:14 GMT" Content-Transfer-Encoding: base64 RnJvbSBlMWRiODhiMTZmN2U3OGNkODMxMmVlYjcyOTg1OTI5OGNjOGQwZWFi IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFk aGFyIEthbWF0aCA8QWRpdHlhLkthbWF0aDFAaWJtLmNvbT4KRGF0ZTogVGh1 LCAxMyBPY3QgMjAyMiAwNToyMTozNiAtMDUwMApTdWJqZWN0OiBbUEFUQ0hd IEVuYWJsZSB2ZWN0b3IgaW5zdHJ1Y3Rpb24gZGVidWdnaW5nIGZvciBBSVgK Ci0tLQogZ2RiL2FpeC10aHJlYWQuYyAgICAgIHwgMTE0ICsrKysrKysrKysr KysrKysrKysrKy0KIGdkYi9yczYwMDAtYWl4LW5hdC5jICB8IDIyMCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGdkYi9y czYwMDAtYWl4LXRkZXAuYyB8IDIxMyArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystCiBnZGIvcnM2MDAwLXRkZXAuYyAgICAgfCAg NjcgKysrKysrLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCA1NjggaW5zZXJ0 aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2RiL2Fp eC10aHJlYWQuYyBiL2dkYi9haXgtdGhyZWFkLmMKaW5kZXggNTdlNTc1NmUx NDQuLjE1NDAwZjViOTBkIDEwMDY0NAotLS0gYS9nZGIvYWl4LXRocmVhZC5j CisrKyBiL2dkYi9haXgtdGhyZWFkLmMKQEAgLTEzNDcsMTEgKzEzNDcsNzUg QEAgZmV0Y2hfcmVnc19rZXJuZWxfdGhyZWFkIChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCBpbnQgcmVnbm8sCiAJICBzdXBwbHlfc3ByczMyIChyZWdj YWNoZSwgc3ByczMyLnB0X2lhciwgc3ByczMyLnB0X21zciwgc3ByczMyLnB0 X2NyLAogCQkJIHNwcnMzMi5wdF9sciwgc3ByczMyLnB0X2N0ciwgc3ByczMy LnB0X3hlciwKIAkJCSBzcHJzMzIucHRfZnBzY3IpOwotCi0JICBpZiAodGRl cC0+cHBjX21xX3JlZ251bSA+PSAwKQotCSAgICByZWdjYWNoZS0+cmF3X3N1 cHBseSAodGRlcC0+cHBjX21xX3JlZ251bSwgKGNoYXIgKikgJnNwcnMzMi5w dF9tcSk7CiAJfQorICAgICB9CisgIC8qIHZlY3RvciByZWdpc3RlcnMgKi8K KyAgaWYgKHRkZXAtPnBwY192cjBfcmVnbnVtICE9IC0xICYmIHJlZ25vID49 IHRkZXAtPnBwY192cjBfcmVnbnVtKQorICB7CisgICAgaW50IHJldCA9IDA7 CisgICAgaW50IG51bV9vZl92cnJlZ3MgPSB0ZGVwLT5wcGNfdnJzYXZlX3Jl Z251bSAtIHRkZXAtPnBwY192cjBfcmVnbnVtICsgMTsKKyAgICBfX3ZteF9j b250ZXh0X3Qgdm14OworICAgIG1lbXNldCgmdm14LCAwLCBzaXplb2YoX192 bXhfY29udGV4dF90KSk7CisgICAgaWYgKF9fcG93ZXJfdm14KCkpCisgICAg eworICAgICAgIHJldCA9IHB0cmFjZTY0IChQVFRfUkVBRF9WRUMsIHRpZCwg KGxvbmcgbG9uZykgJnZteCwgMCwgMCk7CisgICAgICAgaWYgKHJldCA8IDAp CisgICAgICAgeworICAgICAgICAgaWYgKGVycm5vID09IEVOWElPKQorICAg ICAgICAgICByZXR1cm47CisgICAgICAgICBwZXJyb3Jfd2l0aF9uYW1lIChf KCJVbmFibGUgdG8gZmV0Y2ggQWx0aVZlYyByZWdpc3RlcnMiKSk7CisgICAg ICAgfQorICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fb2ZfdnJyZWdzOyBp KyspCisgICAgICAgICByZWdjYWNoZS0+cmF3X3N1cHBseSAodGRlcC0+cHBj X3ZyMF9yZWdudW0gKyBpLCAmKHZteC5fX3ZyW2ldKSk7CisgICAgfQorICB9 CisKKyAgLyogdnN4IHJlZ2lzdGVycyAqLworICBpZiAodGRlcC0+cHBjX3Zz cjBfdXBwZXJfcmVnbnVtICE9IC0xICYmIHJlZ25vID49IHRkZXAtPnBwY192 c3IwX3VwcGVyX3JlZ251bSkKKyAgeworICAgIF9fdnN4X2NvbnRleHRfdCB2 c3g7CisgICAgbWVtc2V0KCZ2c3gsIDAsIHNpemVvZihfX3ZzeF9jb250ZXh0 X3QpKTsKKyAgICBpZiAoX19wb3dlcl92c3goKSkKKyAgICB7CisgICAgICBp bnQgcmV0ID0gMDsKKyAgICAgIHJldCA9IHB0cmFjZTY0IChQVFRfUkVBRF9W U1gsIHRpZCwgKGxvbmcgbG9uZykgJnZzeCwgMCwgMCk7CisgICAgICBpZiAo cmV0IDwgMCkKKyAgICAgIHsKKyAgICAgICAgaWYgKGVycm5vID09IEVOWElP KQorICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcGVycm9yX3dpdGhfbmFt ZSAoXygiVW5hYmxlIHRvIGZldGNoIFZTWCByZWdpc3RlcnMiKSk7CisgICAg ICB9CisgICAgZm9yIChpID0gMDsgaSA8IHBwY19udW1fdnNocnM7IGkrKykK KyAgICAgIHJlZ2NhY2hlLT5yYXdfc3VwcGx5ICh0ZGVwLT5wcGNfdnNyMF91 cHBlcl9yZWdudW0gKyBpLCAmKHZzeC5fX3Zzcl9kdzFbaV0pKTsKICAgICB9 CisgIH0gCit9CisKK3N0YXRpYyB2b2lkCitmaWxsX2FsdGl2ZWMgKGNvbnN0 IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIF9fdm14X2NvbnRleHRfdCAq dm14KQoreworICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IHJlZ2NhY2hl LT5hcmNoICgpOworICBwcGNfZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJj aF90ZGVwPHBwY19nZGJhcmNoX3RkZXA+IChnZGJhcmNoKTsKKyAgaW50IG51 bV9vZl92cnJlZ3MgPSB0ZGVwLT5wcGNfdnJzYXZlX3JlZ251bSAtIHRkZXAt PnBwY192cjBfcmVnbnVtICsgMTsKKyAgaW50IHJlZ25vOworCisgIGZvciAo cmVnbm8gPSAwOyByZWdubyA8IG51bV9vZl92cnJlZ3M7IHJlZ25vKyspCisg ICAgaWYgKFJFR19WQUxJRCA9PSByZWdjYWNoZS0+Z2V0X3JlZ2lzdGVyX3N0 YXR1cyAodGRlcC0+cHBjX3ZyMF9yZWdudW0gKyByZWdubykpCisgICAgICBy ZWdjYWNoZS0+cmF3X2NvbGxlY3QgKHRkZXAtPnBwY192cjBfcmVnbnVtICsg cmVnbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHZt eC0+X192clswXSkgKyByZWdubyk7Cit9CisKK3N0YXRpYyB2b2lkCitmaWxs X3ZzeCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgX192c3hf Y29udGV4dF90ICAqdnN4KQoreworICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCA9IHJlZ2NhY2hlLT5hcmNoICgpOworICBwcGNfZ2RiYXJjaF90ZGVwICp0 ZGVwID0gZ2RiYXJjaF90ZGVwPHBwY19nZGJhcmNoX3RkZXA+IChnZGJhcmNo KTsKKyAgaW50IHJlZ25vOworCisgIGZvciAocmVnbm8gPSAwOyByZWdubyA8 IHBwY19udW1fdnNocnM7IHJlZ25vKyspCisgICAgaWYgKFJFR19WQUxJRCA9 PSByZWdjYWNoZS0+Z2V0X3JlZ2lzdGVyX3N0YXR1cyAoIHRkZXAtPnBwY192 c3IwX3VwcGVyX3JlZ251bSArIHJlZ25vKSkKKyAgICAgIHJlZ2NhY2hlLT5y YXdfY29sbGVjdCAodGRlcC0+cHBjX3ZzcjBfdXBwZXJfcmVnbnVtICsgcmVn bm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYodnN4 LT5fX3Zzcl9kdzFbMF0pICsgcmVnbm8pOwogfQogCiAvKiBGZXRjaCByZWdp c3RlciBSRUdOTyBpZiAhPSAtMSBvciBhbGwgcmVnaXN0ZXJzIG90aGVyd2lz ZSBmcm9tIHRoZQpAQCAtMTY5Miw2ICsxNzU2LDUwIEBAIHN0b3JlX3JlZ3Nf a2VybmVsX3RocmVhZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgaW50IHJlZ25vLAogCSAgcHRyYWNlMzIgKFBUVF9XUklURV9TUFJTLCB0 aWQsICh1aW50cHRyX3QpICZzcHJzMzIsIDAsIE5VTEwpOwogCX0KICAgICB9 CisgICAgaWYgKHRkZXAtPnBwY192cjBfcmVnbnVtICE9IC0xICYmIHJlZ25v ID49IHRkZXAtPnBwY192cjBfcmVnbnVtKQorICAgIHsKKyAgICAgIGludCBy ZXQgPSAwOworICAgICAgX192bXhfY29udGV4dF90IHZteDsKKyAgICAgIG1l bXNldCgmdm14LCAwLCBzaXplb2YoX192bXhfY29udGV4dF90KSk7CisgICAg ICBpZiAoX19wb3dlcl92bXgoKSkKKyAgICAgIHsKKyAgICAgICAgIHJldCA9 IHB0cmFjZTY0IChQVFRfUkVBRF9WRUMsIHRpZCwgKGxvbmcgbG9uZykgJnZt eCwgMCwgMCk7CisgICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgIHsK KyAgICAgICAgICAgaWYgKGVycm5vID09IEVOWElPKQorICAgICAgICAgICB7 CisgICAgICAgICAgICAgd2FybmluZyAoXygiVW5hYmxlIHRvIGZldGNoIEFs dGlWZWMgcmVnaXN0ZXJzLiIpKTsKKyAgICAgICAgICAgICByZXR1cm47Cisg ICAgICAgICAgIH0KKyAgICAgICAgICAgZmlsbF9hbHRpdmVjKHJlZ2NhY2hl LCAmdm14KTsKKyAgICAgICAgICAgcmV0ID0gcHRyYWNlNjQgKFBUVF9XUklU RV9WRUMsIHRpZCwgKGxvbmcgbG9uZykgJnZteCwgMCwgMCk7CisgICAgICAg ICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgIHBlcnJvcl93aXRoX25h bWUgKF8oIlVuYWJsZSB0byBzdG9yZSBBbHRpVmVjIHJlZ2lzdGVyLiIpKTsK KyAgICAgICB9CisgICAgIH0KKyAgIH0KKyAgIC8qIHZteCByZWdpc3RlcnMg Ki8KKyAgIGlmICh0ZGVwLT5wcGNfdnNyMF91cHBlcl9yZWdudW0gIT0gLTEg JiYgcmVnbm8gPj0gdGRlcC0+cHBjX3ZzcjBfdXBwZXJfcmVnbnVtKQorICAg eworICAgICBfX3ZzeF9jb250ZXh0X3QgdnN4OworICAgICBtZW1zZXQoJnZz eCwgMCwgc2l6ZW9mKF9fdnN4X2NvbnRleHRfdCkpOworICAgICBpZiAoX19w b3dlcl92c3goKSkKKyAgICAgeworICAgICAgICBpbnQgcmV0ID0gIHB0cmFj ZTY0IChQVFRfUkVBRF9WU1gsIHRpZCwgKGxvbmcgbG9uZykgJnZzeCwgMCwg MCk7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICB7CisgICAgICAg ICAgaWYgKGVycm5vID09IEVOWElPKQorICAgICAgICAgIHsKKyAgICAgICAg ICAgIHdhcm5pbmcgKF8oIlVuYWJsZSB0byBmZXRjaCBWU1ggcmVnaXN0ZXJz LiIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICB9CisgICAg ICAgIH0KKyAgICAgICAgZmlsbF92c3ggKHJlZ2NhY2hlLCAmdnN4KTsKKyAg ICAgICAgcmV0ID0gcHRyYWNlNjQgKFBUVF9XUklURV9WU1gsIHRpZCwgKGxv bmcgbG9uZykgJnZzeCwgMCwgMCk7CisgICAgICAgIGlmIChyZXQgPCAwKQor ICAgICAgICAgIHBlcnJvcl93aXRoX25hbWUgKF8oIlVuYWJsZSB0byBzdG9y ZSBWU1ggcmVnaXN0ZXIuIikpOworICAgIH0KKyAgfQogfQogCiAvKiBTdG9y ZSBnZGIncyBjdXJyZW50IHZpZXcgb2YgdGhlIHJlZ2lzdGVyIHNldCBpbnRv IHRoZQpkaWZmIC0tZ2l0IGEvZ2RiL3JzNjAwMC1haXgtbmF0LmMgYi9nZGIv cnM2MDAwLWFpeC1uYXQuYwppbmRleCBjYjE0MTQyNzY5Ni4uZTk4OWE5YTY3 MzkgMTAwNjQ0Ci0tLSBhL2dkYi9yczYwMDAtYWl4LW5hdC5jCisrKyBiL2dk Yi9yczYwMDAtYWl4LW5hdC5jCkBAIC01NCw2ICs1NCwxOSBAQAogI2luY2x1 ZGUgPHN5cy9sZHIuaD4KICNpbmNsdWRlIDxzeXMvc3lzdGVtY2ZnLmg+CiAK KyNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKyNpbmNsdWRlIDxzeXMvY29udGV4 dC5oPgorI2luY2x1ZGUgPHN5cy9wdGhkZWJ1Zy5oPgorCisjaW5jbHVkZSAi ZmVhdHVyZXMvcnM2MDAwL3Bvd2VycGMtdnN4NjQuYyIKKyNpbmNsdWRlICJm ZWF0dXJlcy9yczYwMDAvcG93ZXJwYy12c3gzMi5jIgorI2luY2x1ZGUgImZl YXR1cmVzL3JzNjAwMC9wb3dlcnBjLWFsdGl2ZWMzMi5jIgorI2luY2x1ZGUg ImZlYXR1cmVzL3JzNjAwMC9wb3dlcnBjLWFsdGl2ZWM2NC5jIgorCitpbnQg aGF2ZV9wdHJhY2VfZ2V0dnJyZWdzID0gMTsKKworaW50IGhhdmVfcHRyYWNl X2dldHNldHZzeHJlZ3MgPSAxOworCiAvKiBPbiBBSVg0LjMrLCBzeXMvbGRy LmggcHJvdmlkZXMgZGlmZmVyZW50IHZlcnNpb25zIG9mIHN0cnVjdCBsZF9p bmZvIGZvcgogICAgZGVidWdnaW5nIDMyLWJpdCBhbmQgNjQtYml0IHByb2Nl c3Nlcy4gIERlZmluZSBhIHR5cGVkZWYgYW5kIG1hY3JvcyBmb3IKICAgIGFj Y2Vzc2luZyBmaWVsZHMgaW4gdGhlIGFwcHJvcHJpYXRlIHN0cnVjdHVyZXMu ICAqLwpAQCAtOTEsNiArMTA0LDggQEAgY2xhc3MgcnM2MDAwX25hdF90YXJn ZXQgZmluYWwgOiBwdWJsaWMgaW5mX3B0cmFjZV90YXJnZXQKIAogICBwdGlk X3Qgd2FpdCAocHRpZF90LCBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0dXMgKiwg dGFyZ2V0X3dhaXRfZmxhZ3MpIG92ZXJyaWRlOwogCisgIGNvbnN0IHN0cnVj dCB0YXJnZXRfZGVzYyAqcmVhZF9kZXNjcmlwdGlvbiAoKSAgb3ZlcnJpZGU7 CisKIHByb3RlY3RlZDoKIAogICB2b2lkIHBvc3Rfc3RhcnR1cF9pbmZlcmlv ciAocHRpZF90IHB0aWQpIG92ZXJyaWRlCkBAIC0xMDcsNiArMTIyLDgyIEBA IGNsYXNzIHJzNjAwMF9uYXRfdGFyZ2V0IGZpbmFsIDogcHVibGljIGluZl9w dHJhY2VfdGFyZ2V0CiAKIHN0YXRpYyByczYwMDBfbmF0X3RhcmdldCB0aGVf cnM2MDAwX25hdF90YXJnZXQ7CiAKK3N0YXRpYyB2b2lkCitzdG9yZV92c3hf cmVnaXN0ZXJfYWl4IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQg cmVnbm8pCit7CisgIGludCByZXQ7CisgIHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoID0gcmVnY2FjaGUtPmFyY2ggKCk7CisgIHBwY19nZGJhcmNoX3RkZXAg KnRkZXAgPSBnZGJhcmNoX3RkZXA8cHBjX2dkYmFyY2hfdGRlcD4gKGdkYmFy Y2gpOworICBzdHJ1Y3QgdGhyZGVudHJ5NjQgdGhyZGVudHJ5OworICBfX3Zz eF9jb250ZXh0X3QgdnN4OworICBwaWRfdCBwaWQgPSBpbmZlcmlvcl9wdGlk LnBpZCAoKTsKKyAgdGlkNjRfdCAgdGhyZF9pID0gMDsKKworICBpZiAoZ2V0 dGhyZHM2NChwaWQsICZ0aHJkZW50cnksIHNpemVvZihzdHJ1Y3QgdGhyZGVu dHJ5NjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmdGhyZF9pLCAxKSA9PSAxKQorICAgIHRocmRfaSA9IHRocmRl bnRyeS50aV90aWQ7CisgIG1lbXNldCgmdnN4LCAwLCBzaXplb2YoX192c3hf Y29udGV4dF90KSk7CisgIGlmIChfX3Bvd2VyX3ZzeCgpKSAKKyAgeworICAg IHJldCA9IHB0cmFjZTY0IChQVFRfUkVBRF9WU1gsIHRocmRfaSwgKGxvbmcg bG9uZykgJnZzeCwgMCwgMCk7CisgICAgaWYgKHJldCA8IDApCisgICAgewor ICAgICAgIGlmIChlcnJubyA9PSBFTlhJTykKKyAgICAgICB7CisgICAgICAg ICAvKiBoYXZlX3B0cmFjZV9nZXRzZXR2c3hyZWdzID0gMDsgKi8KKyAgICAg ICAgIHdhcm5pbmcgKF8oIlVuYWJsZSB0byBmZXRjaCBWU1ggcmVnaXN0ZXJz LiIpKTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgICB9CisgICAgfQorICB9 CisgIHJlZ2NhY2hlLT5yYXdfY29sbGVjdCAocmVnbm8sICYodnN4Ll9fdnNy X2R3MVswXSkrCisgICAgICAgICAgICAgICAgICAgICAgIHJlZ25vIC0gdGRl cC0+cHBjX3ZzcjBfdXBwZXJfcmVnbnVtKTsKKworICByZXQgPSBwdHJhY2U2 NCAoUFRUX1dSSVRFX1ZTWCwgdGhyZF9pLCAobG9uZyBsb25nKSAmdnN4LCAw LCAwKTsKKworICBpZiAocmV0IDwgMCkKKyAgICBwZXJyb3Jfd2l0aF9uYW1l IChfKCJVbmFibGUgdG8gc3RvcmUgVlNYIHJlZ2lzdGVyLiIpKTsKK30KKwor c3RhdGljIHZvaWQKK3N0b3JlX2FsdGl2ZWNfcmVnaXN0ZXJfYWl4IChzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8pCit7CisgIGludCBy ZXQ7CisgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gcmVnY2FjaGUtPmFy Y2ggKCk7CisgIHBwY19nZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3Rk ZXA8cHBjX2dkYmFyY2hfdGRlcD4gKGdkYmFyY2gpOworICBpbnQgdnJyZWdz aXplID0gcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgdGRlcC0+cHBjX3ZyMF9y ZWdudW0pOworICBzdHJ1Y3QgdGhyZGVudHJ5NjQgdGhyZGVudHJ5OworICBf X3ZteF9jb250ZXh0X3Qgdm14OworICBwaWRfdCBwaWQgPSBpbmZlcmlvcl9w dGlkLnBpZCAoKTsKKyAgdGlkNjRfdCAgdGhyZF9pID0gMDsKKworICBpZiAo Z2V0dGhyZHM2NChwaWQsICZ0aHJkZW50cnksIHNpemVvZihzdHJ1Y3QgdGhy ZGVudHJ5NjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmdGhyZF9pLCAxKSA9PSAxKQorICAgIHRocmRfaSA9IHRo cmRlbnRyeS50aV90aWQ7CisgIG1lbXNldCgmdm14LCAwLCBzaXplb2YoX192 bXhfY29udGV4dF90KSk7CisgIGlmIChfX3Bvd2VyX3ZteCgpKSAgCisgIHsK KyAgICByZXQgPSBwdHJhY2U2NCAoUFRUX1JFQURfVkVDLCB0aHJkX2ksIChs b25nIGxvbmcpICZ2bXgsIDAsIDApOworICAgIGlmIChyZXQgPCAwKQorICAg IHsKKyAgICAgICBpZiAoZXJybm8gPT0gRU5YSU8pCisgICAgICAgeworICAg ICAgICAgLyogaGF2ZV9wdHJhY2VfZ2V0dnJyZWdzID0gMDsgKi8KKyAgICAg ICAgIHdhcm5pbmcgKF8oIlVuYWJsZSB0byBmZXRjaCBBbHRpVmVjIHJlZ2lz dGVycy4iKSk7CisgICAgICAgICByZXR1cm47CisgICAgICAgfQorICAgIH0K KyAgfSAgIAorCisgIHJlZ2NhY2hlLT5yYXdfY29sbGVjdCAocmVnbm8sICYo dm14Ll9fdnJbMF0pICsgcmVnbm8KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLSB0ZGVwLT5wcGNfdnIwX3JlZ251bSk7CisKKyAgcmV0ID0g cHRyYWNlNjQgKFBUVF9XUklURV9WRUMsIHRocmRfaSwgKGxvbmcgbG9uZykg JnZteCwgMCwgMCk7CisgIGlmIChyZXQgPCAwKQorICAgICBwZXJyb3Jfd2l0 aF9uYW1lIChfKCJVbmFibGUgdG8gc3RvcmUgQWx0aVZlYyByZWdpc3Rlci4i KSk7CisKK30KKwogLyogR2l2ZW4gUkVHTk8sIGEgZ2RiIHJlZ2lzdGVyIG51 bWJlciwgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nCiAgICBudW1iZXIgc3Vp dGFibGUgZm9yIHVzZSBhcyBhIHB0cmFjZSgpIHBhcmFtZXRlci4gIFJldHVy biAtMSBpZgogICAgdGhlcmUncyBubyBzdWl0YWJsZSBtYXBwaW5nLiAgQWxz bywgc2V0IHRoZSBpbnQgcG9pbnRlZCB0byBieQpAQCAtMjY0LDYgKzM1NSwx NyBAQCBzdG9yZV9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgaW50IHJlZ25vKQogCiAgIG5yID0gcmVnbWFwIChnZGJhcmNoLCByZWdu bywgJmlzZmxvYXQpOwogCisgIGlmIChhbHRpdmVjX3JlZ2lzdGVyX3AgKGdk YmFyY2gsIHJlZ25vKSkKKyAgeworICAgIHN0b3JlX2FsdGl2ZWNfcmVnaXN0 ZXJfYWl4IChyZWdjYWNoZSwgcmVnbm8pOworICAgIHJldHVybjsKKyAgfQor ICBpZiAodnN4X3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ25vKSkKKyAgewor ICAgIHN0b3JlX3ZzeF9yZWdpc3Rlcl9haXggKHJlZ2NhY2hlLCByZWdubyk7 CisgICAgcmV0dXJuOworICB9CisKICAgLyogRmxvYXRpbmctcG9pbnQgcmVn aXN0ZXJzLiAgKi8KICAgaWYgKGlzZmxvYXQpCiAgICAgcnM2MDAwX3B0cmFj ZTMyIChQVF9XUklURV9GUFIsIHBpZCwgYWRkciwgbnIsIDApOwpAQCAtMzA1 LDYgKzQwNyw5OCBAQCBzdG9yZV9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgaW50IHJlZ25vKQogICAgIH0KIH0KIAorc3RhdGljIHZv aWQKK3N1cHBseV92c3hyZWdzZXRfYWl4IChzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlLCBfX3ZzeF9jb250ZXh0X3QgKnZzeCkKK3sKKworICBpbnQgaTsK KyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSByZWdjYWNoZS0+YXJjaCAo KTsKKyAgcHBjX2dkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcDxw cGNfZ2RiYXJjaF90ZGVwPiAoZ2RiYXJjaCk7CisKKyAgZm9yIChpID0gMDsg aSA8IHBwY19udW1fdnNocnM7IGkrKykKKyAgIHJlZ2NhY2hlLT5yYXdfc3Vw cGx5ICh0ZGVwLT5wcGNfdnNyMF91cHBlcl9yZWdudW0gKyBpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHZzeC0+X192c3JfZHcx W2ldKSk7Cit9CisKK3N0YXRpYyB2b2lkCitmZXRjaF92c3hfcmVnaXN0ZXJz X2FpeCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKK3sKKyAgaW50IHJl dDsKKyAgc3RydWN0IHRocmRlbnRyeTY0IHRocmRlbnRyeTsKKyAgX192c3hf Y29udGV4dF90IHZzeDsKKyAgcGlkX3QgcGlkID0gY3VycmVudF9pbmZlcmlv ciAoKS0+cGlkOworICB0aWQ2NF90ICB0aHJkX2kgPSAwOworCisgIGlmIChn ZXR0aHJkczY0KHBpZCwgJnRocmRlbnRyeSwgc2l6ZW9mKHN0cnVjdCB0aHJk ZW50cnk2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZ0aHJkX2ksIDEpID09IDEpCisgICAgdGhyZF9pID0gdGhy ZGVudHJ5LnRpX3RpZDsKKyAgbWVtc2V0KCZ2c3gsIDAsIHNpemVvZihfX3Zz eF9jb250ZXh0X3QpKTsKKyAgaWYgKF9fcG93ZXJfdnN4KCkpICAKKyAgewor ICAgIHJldCA9IHB0cmFjZTY0IChQVFRfUkVBRF9WU1gsIHRocmRfaSwgKGxv bmcgbG9uZykgJnZzeCwgMCwgMCk7CisgICAgaWYgKHJldCA8IDApCisgICAg eworICAgICAgIC8qIEp1c3QgZmlsbCB3aXRoIDAgemVybyBpbnN0ZWFkIG9m IGVycm9yIHJldHVybiAqLworICAgICAgICNpZiAwCisgICAgICAgICBpZiAo ZXJybm8gPT0gRU5YSU8pCisgICAgICAgICB7CisgICAgICAgICAgIGhhdmVf cHRyYWNlX2dldHNldHZzeHJlZ3MgPSAwOworICAgICAgICAgICByZXR1cm47 CisgICAgICAgICAgIHBlcnJvcl93aXRoX25hbWUgKF8oIlVuYWJsZSB0byBm ZXRjaCBWU1ggcmVnaXN0ZXJzIikpOworICAgICAgICAgfQorICAgICAgICNl bmRpZgorICAgIH0KKyAgfQorICBzdXBwbHlfdnN4cmVnc2V0X2FpeCAocmVn Y2FjaGUsICZ2c3gpOworfQorCitzdGF0aWMgdm9pZAorc3VwcGx5X3ZycmVn c2V0X2FpeCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgX192bXhfY29u dGV4dF90ICp2bXgpCit7CisgIGludCBpOworICBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgpOworICBwcGNfZ2RiYXJjaF90 ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwPHBwY19nZGJhcmNoX3RkZXA+IChn ZGJhcmNoKTsKKyAgaW50IG51bV9vZl92cnJlZ3MgPSB0ZGVwLT5wcGNfdnJz YXZlX3JlZ251bSAtIHRkZXAtPnBwY192cjBfcmVnbnVtICsgMTsKKworICBm b3IgKGkgPSAwOyBpIDwgbnVtX29mX3ZycmVnczsgaSsrKQorICAgIHJlZ2Nh Y2hlLT5yYXdfc3VwcGx5ICh0ZGVwLT5wcGNfdnIwX3JlZ251bSArIGksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHZteC0+X192 cltpXSkpOworfQorCitzdGF0aWMgdm9pZAorZmV0Y2hfYWx0aXZlY19yZWdp c3RlcnNfYWl4IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQoreworICBp bnQgcmV0OworICBzdHJ1Y3QgdGhyZGVudHJ5NjQgdGhyZGVudHJ5OworICBf X3ZteF9jb250ZXh0X3Qgdm14OworICBwaWRfdCBwaWQgPSBjdXJyZW50X2lu ZmVyaW9yICgpLT5waWQ7CisgIHRpZDY0X3QgIHRocmRfaSA9IDA7CisKKyAg aWYgKGdldHRocmRzNjQocGlkLCAmdGhyZGVudHJ5LCBzaXplb2Yoc3RydWN0 IHRocmRlbnRyeTY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmdGhyZF9pLCAxKSA9PSAxKQorICAgIHRocmRfaSA9IHRocmRlbnRyeS50 aV90aWQ7CisKKyAgbWVtc2V0KCZ2bXgsIDAsIHNpemVvZihfX3ZteF9jb250 ZXh0X3QpKTsKKyAgaWYgKF9fcG93ZXJfdm14KCkpCisgIHsgIAorICAgIHJl dCA9IHB0cmFjZTY0IChQVFRfUkVBRF9WRUMsIHRocmRfaSwgKGxvbmcgbG9u ZykgJnZteCwgMCwgMCk7CisgICAgaWYgKHJldCA8IDApCisgICAgeworICAg ICAgIC8qIEp1c3QgZmlsbCB3aXRoIDAgemVybyBpbnN0ZWFkIG9mIGVycm9y IHJldHVybiAqLworICAgICAgICNpZiAwCisgICAgICAgIGlmIChlcnJubyA9 PSBFTlhJTykKKyAgICAgICAgIHsKKyAgICAgICAgICAgaGF2ZV9wdHJhY2Vf Z2V0dnJyZWdzID0gMDsKKyAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg ICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJVbmFibGUgdG8gZmV0Y2ggQWx0aVZl YyByZWdpc3RlcnMiKSk7CisgICAgICAgICB9CisgICAgICAgI2VuZGlmCisg ICAgfQorICB9ICAgCisgIHN1cHBseV92cnJlZ3NldF9haXggKHJlZ2NhY2hl LCAmdm14KTsKK30KKworCiAvKiBSZWFkIGZyb20gdGhlIGluZmVyaW9yIGFs bCByZWdpc3RlcnMgaWYgUkVHTk8gPT0gLTEgYW5kIGp1c3QgcmVnaXN0ZXIK ICAgIFJFR05PIG90aGVyd2lzZS4gICovCiAKQEAgLTMxMiwxMCArNTA2LDYg QEAgdm9pZAogcnM2MDAwX25hdF90YXJnZXQ6OmZldGNoX3JlZ2lzdGVycyAo c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vKQogewogICBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgpOwot ICBpZiAocmVnbm8gIT0gLTEpCi0gICAgZmV0Y2hfcmVnaXN0ZXIgKHJlZ2Nh Y2hlLCByZWdubyk7Ci0KLSAgZWxzZQogICAgIHsKICAgICAgIHBwY19nZGJh cmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXA8cHBjX2dkYmFyY2hfdGRl cD4gKGdkYmFyY2gpOwogCkBAIC0zMzEsNyArNTIxLDE4IEBAIHJzNjAwMF9u YXRfdGFyZ2V0OjpmZXRjaF9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsIGludCByZWdubykKICAgICAgIGlmICh0ZGVwLT5wcGNfZnAw X3JlZ251bSA+PSAwKQogCWZvciAocmVnbm8gPSAwOyByZWdubyA8IHBwY19u dW1fZnByczsgcmVnbm8rKykKIAkgIGZldGNoX3JlZ2lzdGVyIChyZWdjYWNo ZSwgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyByZWdubyk7Ci0KKyAgICAgIAor ICAgICAgaWYgKGhhdmVfcHRyYWNlX2dldHZycmVncykKKyAgICAgICAgaWYg KHRkZXAtPnBwY192cjBfcmVnbnVtICE9IC0xICYmIHRkZXAtPnBwY192cnNh dmVfcmVnbnVtICE9IC0xKSAKKyAgICAgICAgeworICAgICAgICAgICBmZXRj aF9hbHRpdmVjX3JlZ2lzdGVyc19haXggKHJlZ2NhY2hlKTsKKyAgICAgICAg fQorCisgICAgIGlmIChoYXZlX3B0cmFjZV9nZXRzZXR2c3hyZWdzKQorICAg ICAgICAgaWYgKHRkZXAtPnBwY192c3IwX3VwcGVyX3JlZ251bSAhPSAtMSkK KyAgICAgICAgICB7CisgICAgICAgICAgICBmZXRjaF92c3hfcmVnaXN0ZXJz X2FpeCAocmVnY2FjaGUpOworICAgICAgICAgIH0KICAgICAgIC8qIFJlYWQg c3BlY2lhbCByZWdpc3RlcnMuICAqLwogICAgICAgZmV0Y2hfcmVnaXN0ZXIg KHJlZ2NhY2hlLCBnZGJhcmNoX3BjX3JlZ251bSAoZ2RiYXJjaCkpOwogICAg ICAgZmV0Y2hfcmVnaXN0ZXIgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfcHNfcmVn bnVtKTsKQEAgLTM0Niw2ICs1NDcsMTUgQEAgcnM2MDAwX25hdF90YXJnZXQ6 OmZldGNoX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwg aW50IHJlZ25vKQogICAgIH0KIH0KIAorY29uc3Qgc3RydWN0IHRhcmdldF9k ZXNjICoKK3JzNjAwMF9uYXRfdGFyZ2V0OjpyZWFkX2Rlc2NyaXB0aW9uICgp Cit7CisgICBpZiAoQVJDSDY0KCkpCisgICAgICByZXR1cm4gdGRlc2NfcG93 ZXJwY192c3g2NDsKKyAgIGVsc2UKKyAgICAgIHJldHVybiB0ZGVzY19wb3dl cnBjX3ZzeDMyOworfQorCiAvKiBTdG9yZSBvdXIgcmVnaXN0ZXIgdmFsdWVz IGJhY2sgaW50byB0aGUgaW5mZXJpb3IuCiAgICBJZiBSRUdOTyBpcyAtMSwg ZG8gdGhpcyBmb3IgYWxsIHJlZ2lzdGVycy4KICAgIE90aGVyd2lzZSwgUkVH Tk8gc3BlY2lmaWVzIHdoaWNoIHJlZ2lzdGVyIChzbyB3ZSBjYW4gc2F2ZSB0 aW1lKS4gICovCmRpZmYgLS1naXQgYS9nZGIvcnM2MDAwLWFpeC10ZGVwLmMg Yi9nZGIvcnM2MDAwLWFpeC10ZGVwLmMKaW5kZXggZDQ3OTc0YjUxZDEuLjY3 YWU4YTZhNTRhIDEwMDY0NAotLS0gYS9nZGIvcnM2MDAwLWFpeC10ZGVwLmMK KysrIGIvZ2RiL3JzNjAwMC1haXgtdGRlcC5jCkBAIC02OCw2ICs2OCwyMiBA QAogLyogTWluaW11bSBwb3NzaWJsZSB0ZXh0IGFkZHJlc3MgaW4gQUlYLiAg Ki8KICNkZWZpbmUgQUlYX1RFWFRfU0VHTUVOVF9CQVNFIDB4MTAwMDAwMDAK IAorc3RydWN0IHJzNjAwMF9haXhfcmVnX3ZycmVnX29mZnNldAoreworICBp bnQgdnIwX29mZnNldDsKKyAgaW50IHZzY3Jfb2Zmc2V0OworICBpbnQgdnJz YXZlX29mZnNldDsKK307CisKK3N0YXRpYyBzdHJ1Y3QgcnM2MDAwX2FpeF9y ZWdfdnJyZWdfb2Zmc2V0IHJzNjAwMF9haXhfdnJyZWdfb2Zmc2V0ID0KK3sK KyAgIC8qIEFsdGlWZWMgcmVnaXN0ZXJzLiAgKi8KKyAgMzIsIC8qIHZyMF9v ZmZzZXQgKi8KKyAgNTQ0LCAvKiB2c2NyX29mZnNldC4gKi8KKyAgNTYwIC8q IHZyc2F2ZV9vZmZzZXQgKi8KK307CisgICAKKyAgCiBzdGF0aWMgc3RydWN0 IHRyYWRfZnJhbWVfY2FjaGUgKgogYWl4X3NpZ2hhbmRsZV9mcmFtZV9jYWNo ZSAoZnJhbWVfaW5mb19wdHIgdGhpc19mcmFtZSwKIAkJCSAgIHZvaWQgKip0 aGlzX2NhY2hlKQpAQCAtMTQ1LDcgKzE2MSw3IEBAIGFpeF9zaWdoYW5kbGVf ZnJhbWVfcHJldl9yZWdpc3RlciAoZnJhbWVfaW5mb19wdHIgdGhpc19mcmFt ZSwKIAogc3RhdGljIGludAogYWl4X3NpZ2hhbmRsZV9mcmFtZV9zbmlmZmVy IChjb25zdCBzdHJ1Y3QgZnJhbWVfdW53aW5kICpzZWxmLAotCQkJICAgICBm cmFtZV9pbmZvX3B0ciB0aGlzX2ZyYW1lLAorCQkJICAgICBmcmFtZV9pbmZv X3B0ciB0aGlzX2ZyYW1lLCAKIAkJCSAgICAgdm9pZCAqKnRoaXNfcHJvbG9n dWVfY2FjaGUpCiB7CiAgIENPUkVfQUREUiBwYyA9IGdldF9mcmFtZV9wYyAo dGhpc19mcmFtZSk7CkBAIC0yMzcsNiArMjUzLDE5MCBAQCByczYwMDBfYWl4 X2NvbGxlY3RfcmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQs CiAgIHBwY19jb2xsZWN0X2ZwcmVnc2V0IChyZWdzZXQsIHJlZ2NhY2hlLCBy ZWdudW0sIGdyZWdzLCBsZW4pOwogfQogCisvKiBSZXR1cm4gbm9uLXplcm8g aWYgdGhlIGFyY2hpdGVjdHVyZSBkZXNjcmliZWQgYnkgR0RCQVJDSCBoYXMK KyAgIFZTWCByZWdpc3RlcnMgKHZzcjAgLS0tIHZzcjYzKS4gICovCitzdGF0 aWMgaW50CityczYwMDBfYWl4X3ZzeF9zdXBwb3J0X3AgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoKQoreworICBwcGNfZ2RiYXJjaF90ZGVwICp0ZGVwID0g Z2RiYXJjaF90ZGVwPHBwY19nZGJhcmNoX3RkZXA+IChnZGJhcmNoKTsKKyAg cmV0dXJuIHRkZXAtPnBwY192c3IwX3JlZ251bSA+PSAwOworfQorCisvKiBS ZXR1cm4gbm9uLXplcm8gaWYgdGhlIGFyY2hpdGVjdHVyZSBkZXNjcmliZWQg YnkgR0RCQVJDSCBoYXMKKyAgIEFsdGl2ZWMgcmVnaXN0ZXJzICh2cjAgLS0t IHZyMzEsIHZyc2F2ZSBhbmQgdnNjcikuICAqLworc3RhdGljIGludAorcnM2 MDAwX2FpeF9hbHRpdmVjX3N1cHBvcnRfcCAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gpCit7CisgIHBwY19nZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNo X3RkZXA8cHBjX2dkYmFyY2hfdGRlcD4gKGdkYmFyY2gpOworICByZXR1cm4g KHRkZXAtPnBwY192cjBfcmVnbnVtID49IDAKKyAgICYmIHRkZXAtPnBwY192 cnNhdmVfcmVnbnVtID49IDApOworfQorCitzdGF0aWMgaW50CityczYwMDBf YWl4X2dldF92cnJlZ19vZmZzZXQgKHBwY19nZGJhcmNoX3RkZXAgKnRkZXAs CisgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcnM2MDAwX2FpeF9y ZWdfdnJyZWdfb2Zmc2V0ICpvZmZzZXRzLAorICAgICAgICAgICAgICAgICAg aW50IHJlZ251bSkKK3sKKyAgaWYgKHJlZ251bSA+PSB0ZGVwLT5wcGNfdnIw X3JlZ251bSAmJgorICByZWdudW0gPCB0ZGVwLT5wcGNfdnIwX3JlZ251bSAr IHBwY19udW1fdnJzKQorICAgIHJldHVybiBvZmZzZXRzLT52cjBfb2Zmc2V0 ICsgKHJlZ251bSAtIHRkZXAtPnBwY192cjBfcmVnbnVtKSAqIDE2OworCisg IGlmIChyZWdudW0gPT0gdGRlcC0+cHBjX3Zyc2F2ZV9yZWdudW0gLSAxKQor ICAgIHJldHVybiBvZmZzZXRzLT52c2NyX29mZnNldDsKKworICBpZiAocmVn bnVtID09IHRkZXAtPnBwY192cnNhdmVfcmVnbnVtKQorICAgIHJldHVybiBv ZmZzZXRzLT52cnNhdmVfb2Zmc2V0OworCisgIHJldHVybiAtMTsKK30KKwor c3RhdGljIHZvaWQKK3JzNjAwMF9haXhfc3VwcGx5X3ZycmVnc2V0IChjb25z dCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsIHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsCisgICAgICAgICAgICAgICAgICAgICBpbnQgcmVnbnVtLCBjb25z dCB2b2lkICp2cnJlZ3MsIHNpemVfdCBsZW4pCit7CisgIHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoID0gcmVnY2FjaGUtPmFyY2ggKCk7CisgIGNvbnN0IHN0 cnVjdCByczYwMDBfYWl4X3JlZ192cnJlZ19vZmZzZXQgICpvZmZzZXRzOwor ICBzaXplX3Qgb2Zmc2V0OworCisgIGlmICghcnM2MDAwX2FpeF9hbHRpdmVj X3N1cHBvcnRfcCAoZ2RiYXJjaCkpCisgICAgcmV0dXJuOworICAKKyAgcHBj X2dkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcDxwcGNfZ2RiYXJj aF90ZGVwPiAoZ2RiYXJjaCk7CisgIG9mZnNldHMgPSAoY29uc3Qgc3RydWN0 IHJzNjAwMF9haXhfcmVnX3ZycmVnX29mZnNldCAqKSByZWdzZXQtPnJlZ21h cDsKKyAgaWYgKHJlZ251bSA9PSAtMSkKKyAgeworICAgIGludCBpOworCisg ICAgZm9yIChpID0gdGRlcC0+cHBjX3ZyMF9yZWdudW0sIG9mZnNldCA9IG9m ZnNldHMtPnZyMF9vZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAg aSA8IHRkZXAtPnBwY192cjBfcmVnbnVtICsgcHBjX251bV92cnM7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsr LCBvZmZzZXQgKz0gMTYpCisgICAgICAgIHBwY19zdXBwbHlfcmVnIChyZWdj YWNoZSwgaSwgKGNvbnN0IGdkYl9ieXRlICopIHZycmVncywgb2Zmc2V0LCAx Nik7CisKKyAgICBwcGNfc3VwcGx5X3JlZyAocmVnY2FjaGUsICh0ZGVwLT5w cGNfdnJzYXZlX3JlZ251bSAtIDEpLAorICAgICAgICAoY29uc3QgZ2RiX2J5 dGUgKikgdnJyZWdzLCBvZmZzZXRzLT52c2NyX29mZnNldCwgNCk7CisKKyAg ICBwcGNfc3VwcGx5X3JlZyAocmVnY2FjaGUsIHRkZXAtPnBwY192cnNhdmVf cmVnbnVtLAorICAgIChjb25zdCBnZGJfYnl0ZSAqKSB2cnJlZ3MsIG9mZnNl dHMtPnZyc2F2ZV9vZmZzZXQsIDQpOworCisgICAgcmV0dXJuOworICB9Cisg IG9mZnNldCA9IHJzNjAwMF9haXhfZ2V0X3ZycmVnX29mZnNldCAodGRlcCwg b2Zmc2V0cywgcmVnbnVtKTsKKyAgaWYgKHJlZ251bSAhPSB0ZGVwLT5wcGNf dnJzYXZlX3JlZ251bQorICAgICYmIHJlZ251bSAhPSB0ZGVwLT5wcGNfdnJz YXZlX3JlZ251bSAtIDEpCisgICAgcHBjX3N1cHBseV9yZWcgKHJlZ2NhY2hl LCByZWdudW0sIChjb25zdCBnZGJfYnl0ZSAqKSB2cnJlZ3MsIG9mZnNldCwg MTYpOworICBlbHNlCisgICAgcHBjX3N1cHBseV9yZWcgKHJlZ2NhY2hlLCBy ZWdudW0sCisgICAgIChjb25zdCBnZGJfYnl0ZSAqKSB2cnJlZ3MsIG9mZnNl dCwgNCk7CisgIAorfQorCitzdGF0aWMgdm9pZAorcnM2MDAwX2FpeF9zdXBw bHlfdnN4cmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsIHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisgICAgICAgICAgICAgICAgICAg ICBpbnQgcmVnbnVtLCBjb25zdCB2b2lkICp2c3hyZWdzLCBzaXplX3QgbGVu KQoreworICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5h cmNoICgpOworCisgIGlmICghcnM2MDAwX2FpeF92c3hfc3VwcG9ydF9wIChn ZGJhcmNoKSkKKyAgICByZXR1cm47CisKKyAgcHBjX2dkYmFyY2hfdGRlcCAq dGRlcCA9IGdkYmFyY2hfdGRlcDxwcGNfZ2RiYXJjaF90ZGVwPiAoZ2RiYXJj aCk7CisgIGlmIChyZWdudW0gPT0gLTEpCisgIHsKKyAgICBpbnQgaSwgb2Zm c2V0ID0gMDsKKworICAgIGZvciAoaSA9IHRkZXAtPnBwY192c3IwX3VwcGVy X3JlZ251bTsKKyAgICAgaSA8IHRkZXAtPnBwY192c3IwX3VwcGVyX3JlZ251 bSArIDMyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrLCBvZmZz ZXQrKykKKyAgICAgIHBwY19zdXBwbHlfcmVnIChyZWdjYWNoZSwgaSwgKGNv bnN0IGdkYl9ieXRlICopIHZzeHJlZ3MsIG9mZnNldCAqIDgsIDgpOworCisg ICAgcmV0dXJuOworICB9CisgIGVsc2UKKyAgICBwcGNfc3VwcGx5X3JlZyAo cmVnY2FjaGUsIHJlZ251bSwgKGNvbnN0IGdkYl9ieXRlICopIHZzeHJlZ3Ms IDAsIDgpOworfQorCisKK3N0YXRpYyB2b2lkCityczYwMDBfYWl4X2NvbGxl Y3RfdnN4cmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsCisg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpy ZWdjYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVnbnVtLCB2 b2lkICp2c3hyZWdzLCBzaXplX3QgbGVuKQoreworICBzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgpOworCisgIGlmICghcnM2 MDAwX2FpeF92c3hfc3VwcG9ydF9wIChnZGJhcmNoKSkKKyAgICByZXR1cm47 CisKKyAgcHBjX2dkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcDxw cGNfZ2RiYXJjaF90ZGVwPiAoZ2RiYXJjaCk7CisKKyAgaWYgKHJlZ251bSA9 PSAtMSkKKyAgeworICAgIGludCBpOworCisgICAgZm9yIChpID0gdGRlcC0+ cHBjX3ZzcjBfdXBwZXJfcmVnbnVtOworICAgICBpIDwgdGRlcC0+cHBjX3Zz cjBfdXBwZXJfcmVnbnVtICsgMzI7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaSsrKQorICAgICAgcHBjX2NvbGxlY3RfcmVnIChy ZWdjYWNoZSwgaSwgKGdkYl9ieXRlICopIHZzeHJlZ3MsIDAsIDgpOworCisg ICAgcmV0dXJuOworICB9CisKKyBlbHNlCisgICAgcHBjX2NvbGxlY3RfcmVn IChyZWdjYWNoZSwgcmVnbnVtLCAoZ2RiX2J5dGUgKikgdnN4cmVncywgMCwg OCk7Cit9IAorCisKK3N0YXRpYyB2b2lkCityczYwMDBfYWl4X2NvbGxlY3Rf dnJyZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3NldCwKKyAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLAorICAgICAgICAgICAgICAgICAgICAgIGludCByZWdudW0sIHZvaWQg KnZycmVncywgc2l6ZV90IGxlbikKK3sKKyAgc3RydWN0IGdkYmFyY2ggKmdk YmFyY2ggPSByZWdjYWNoZS0+YXJjaCAoKTsKKyAgY29uc3Qgc3RydWN0IHJz NjAwMF9haXhfcmVnX3ZycmVnX29mZnNldCAqb2Zmc2V0czsKKyAgc2l6ZV90 IG9mZnNldDsKKworICBpZiAoIXJzNjAwMF9haXhfYWx0aXZlY19zdXBwb3J0 X3AgKGdkYmFyY2gpKQorICAgIHJldHVybjsKKworICBwcGNfZ2RiYXJjaF90 ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwPHBwY19nZGJhcmNoX3RkZXA+IChn ZGJhcmNoKTsKKyAgb2Zmc2V0cyA9IChjb25zdCBzdHJ1Y3QgcnM2MDAwX2Fp eF9yZWdfdnJyZWdfb2Zmc2V0ICopIHJlZ3NldC0+cmVnbWFwOworICBpZiAo cmVnbnVtID09IC0xKQorICB7CisgICAgaW50IGk7CisKKyAgICBmb3IgKGkg PSB0ZGVwLT5wcGNfdnIwX3JlZ251bSwgb2Zmc2V0ID0gb2Zmc2V0cy0+dnIw X29mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpIDwgdGRlcC0+ cHBjX3ZyMF9yZWdudW0gKyBwcGNfbnVtX3ZyczsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKyssIG9mZnNldCAr PSAxNikKKyAgICAgIHBwY19jb2xsZWN0X3JlZyAocmVnY2FjaGUsIGksIChn ZGJfYnl0ZSAqKSB2cnJlZ3MsIG9mZnNldCwgMTYpOworCisgICAgcHBjX2Nv bGxlY3RfcmVnIChyZWdjYWNoZSwgKHRkZXAtPnBwY192cnNhdmVfcmVnbnVt IC0gMSksCisgICAgICAgICAgICAgICAoZ2RiX2J5dGUgKikgdnJyZWdzLCBv ZmZzZXRzLT52c2NyX29mZnNldCwgNCk7CisKKyAgICBwcGNfY29sbGVjdF9y ZWcgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfdnJzYXZlX3JlZ251bSwKKyAgICAg ICAgICAgICAoZ2RiX2J5dGUgKikgdnJyZWdzLCBvZmZzZXRzLT52cnNhdmVf b2Zmc2V0LCA0KTsKKworICAgIHJldHVybjsKKyAgfQorCisgIG9mZnNldCA9 IHJzNjAwMF9haXhfZ2V0X3ZycmVnX29mZnNldCAodGRlcCwgb2Zmc2V0cywg cmVnbnVtKTsKKyAgaWYgKHJlZ251bSAhPSB0ZGVwLT5wcGNfdnJzYXZlX3Jl Z251bQorICAgICAgJiYgcmVnbnVtICE9IHRkZXAtPnBwY192cnNhdmVfcmVn bnVtIC0gMSkKKyAgICBwcGNfY29sbGVjdF9yZWcgKHJlZ2NhY2hlLCByZWdu dW0sIChnZGJfYnl0ZSAqKSB2cnJlZ3MsIG9mZnNldCwgMTYpOworICBlbHNl CisgICAgcHBjX2NvbGxlY3RfcmVnIChyZWdjYWNoZSwgcmVnbnVtLAorICAg ICAgICAgICAgICAgICAgIChnZGJfYnl0ZSAqKSB2cnJlZ3MsIG9mZnNldCwg NCk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnc2V0IHJzNjAwMF9h aXgzMl92cnJlZ3NldCA9IHsKKyAgJnJzNjAwMF9haXhfdnJyZWdfb2Zmc2V0 LAorICByczYwMDBfYWl4X3N1cHBseV92cnJlZ3NldCwKKyAgcnM2MDAwX2Fp eF9jb2xsZWN0X3ZycmVnc2V0Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0 IHJlZ3NldCByczYwMDBfYWl4MzJfdnN4cmVnc2V0ID0geworICAmcnM2MDAw X2FpeF92cnJlZ19vZmZzZXQsCisgIHJzNjAwMF9haXhfc3VwcGx5X3ZzeHJl Z3NldCwKKyAgcnM2MDAwX2FpeF9jb2xsZWN0X3ZzeHJlZ3NldAorfTsKIC8q IEFJWCByZWdpc3RlciBzZXQuICAqLwogCiBzdGF0aWMgY29uc3Qgc3RydWN0 IHJlZ3NldCByczYwMDBfYWl4MzJfcmVnc2V0ID0KQEAgLTI2MiwxMCArNDYy LDE5IEBAIHJzNjAwMF9haXhfaXRlcmF0ZV9vdmVyX3JlZ3NldF9zZWN0aW9u cyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAJCQkJCSBjb25zdCBzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKQogewogICBwcGNfZ2RiYXJjaF90ZGVw ICp0ZGVwID0gZ2RiYXJjaF90ZGVwPHBwY19nZGJhcmNoX3RkZXA+IChnZGJh cmNoKTsKKyAgaW50IGhhdmVfYWx0aXZlYyA9IHRkZXAtPnBwY192cjBfcmVn bnVtICE9IC0xOworICBpbnQgaGF2ZV92c3ggPSB0ZGVwLT5wcGNfdnNyMF91 cHBlcl9yZWdudW0gIT0gLTE7CisgICAKICAgaWYgKHRkZXAtPndvcmRzaXpl ID09IDQpCiAgICAgY2IgKCIucmVnIiwgNTkyLCA1OTIsICZyczYwMDBfYWl4 MzJfcmVnc2V0LCBOVUxMLCBjYl9kYXRhKTsKICAgZWxzZQogICAgIGNiICgi LnJlZyIsIDU3NiwgNTc2LCAmcnM2MDAwX2FpeDY0X3JlZ3NldCwgTlVMTCwg Y2JfZGF0YSk7CisgCisgIGlmIChoYXZlX2FsdGl2ZWMpCisgICBjYiAoIi5h aXgtdm14IiwgNTYwLCA1NjAsICZyczYwMDBfYWl4MzJfdnJyZWdzZXQsICJB SVggYWx0aXZlYyIsIGNiX2RhdGEpOworCisgIGlmIChoYXZlX3ZzeCkKKyAg IGNiICgiLmFpeC12c3giLCAyNTYsIDI1NiwgJnJzNjAwMF9haXgzMl92c3hy ZWdzZXQsICJBSVggdnN4IiwgY2JfZGF0YSk7ICAgIAogfQogCiAKQEAgLTM1 MSw3ICs1NjAsNyBAQCByczYwMDBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHZhbHVlICpmdW5jdGlvbiwKIAog ICAgICAgYXJnID0gYXJnc1thcmdub107CiAgICAgICB0eXBlID0gY2hlY2tf dHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnKSk7Ci0gICAgICBsZW4gPSB0eXBl LT5sZW5ndGggKCk7CisgICAgICBsZW4gPSB0eXBlLT5sZW5ndGggKCk7IAog CiAgICAgICBpZiAodHlwZS0+Y29kZSAoKSA9PSBUWVBFX0NPREVfRkxUKQog CXsKZGlmZiAtLWdpdCBhL2dkYi9yczYwMDAtdGRlcC5jIGIvZ2RiL3JzNjAw MC10ZGVwLmMKaW5kZXggOGI2ZDY2NmJiZTcuLjZlOGZmYzVmYjBkIDEwMDY0 NAotLS0gYS9nZGIvcnM2MDAwLXRkZXAuYworKysgYi9nZGIvcnM2MDAwLXRk ZXAuYwpAQCAtMTk3Miw3ICsxOTcyLDggQEAgc2tpcF9wcm9sb2d1ZSAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYywgQ09SRV9BRERS IGxpbV9wYywKICAgICAgIC8qIDAwMTExMCAwMDAwMCAwMDAwMCBpaWlpIGlp aWkgaWlpaSBpaWlpICAqLwogICAgICAgLyogMDAxMTEwIDAxMTEwIDAwMDAw IGlpaWkgaWlpaSBpaWlpIGlpaWkgICovCiAgICAgICBlbHNlIGlmICgob3Ag JiAweGZmZmYwMDAwKSA9PSAweDM4MDAwMDAwICAgICAgICAgLyogbGkgcjAs IFNJTU0gKi8KLQkgICAgICAgfHwgKG9wICYgMHhmZmZmMDAwMCkgPT0gMHgz OWMwMDAwMCkgICAgIC8qIGxpIHIxNCwgU0lNTSAqLworCSAgICAgICB8fCAo b3AgJiAweGZmZmYwMDAwKSA9PSAweDM5YzAwMDAwICAgICAvKiBsaSByMTQs IFNJTU0gKi8KKyAgICAgICAgICAgICAgIHx8IChvcCAmIDB4ZmYwZjAwMDAp ID09IDB4MzgwMDAwMDApICAgICAvKiBsaSwgcjQsIFNJTU0gKi8gCiAJewog CSAgaWYgKChvcCAmIDB4ZmZmZjAwMDApID09IDB4MzgwMDAwMDApCiAJICAg IHIwX2NvbnRhaW5zX2FyZyA9IDA7CkBAIC0xOTg2LDI0ICsxOTg3LDIxIEBA IHNraXBfcHJvbG9ndWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JF X0FERFIgcGMsIENPUkVfQUREUiBsaW1fcGMsCiAJfQogICAgICAgLyogU3Rv cmUgdmVjdG9yIHJlZ2lzdGVyIFMgYXQgKHIzMStyMCkgYWxpZ25lZCB0byAx NiBieXRlcy4gICovICAgICAgCiAgICAgICAvKiAwMTExMTEgc3Nzc3MgMTEx MTEgMDAwMDAgMDAxMTEwMDExMTAgKi8KLSAgICAgIGVsc2UgaWYgKChvcCAm IDB4ZmMxZmZmZmYpID09IDB4N2MxZjAxY2UpICAgLyogc3R2eCBWcywgUjMx LCBSMCAqLwotCXsKLQkgIGlmIChwYyA9PSAobGlfZm91bmRfcGMgKyA0KSkK LQkgICAgewotCSAgICAgIHZyX3JlZyA9IEdFVF9TUkNfUkVHIChvcCk7Ci0J ICAgICAgLyogSWYgdGhpcyBpcyB0aGUgZmlyc3QgdmVjdG9yIHJlZyB0byBi ZSBzYXZlZCwgb3IgaWYKLQkJIGl0IGhhcyBhIGxvd2VyIG51bWJlciB0aGFu IG90aGVycyBwcmV2aW91c2x5IHNlZW4sCi0JCSByZXVwZGF0ZSB0aGUgZnJh bWUgaW5mby4gICovCi0JICAgICAgaWYgKGZkYXRhLT5zYXZlZF92ciA9PSAt MSB8fCBmZGF0YS0+c2F2ZWRfdnIgPiB2cl9yZWcpCi0JCXsKLQkJICBmZGF0 YS0+c2F2ZWRfdnIgPSB2cl9yZWc7Ci0JCSAgZmRhdGEtPnZyX29mZnNldCA9 IHZyX3NhdmVkX29mZnNldCArIG9mZnNldDsKLQkJfQotCSAgICAgIHZyX3Nh dmVkX29mZnNldCA9IC0xOwotCSAgICAgIHZyX3JlZyA9IC0xOwotCSAgICAg IGxpX2ZvdW5kX3BjID0gMDsKLQkgICAgfQotCX0KKyAgICAgIGVsc2UgaWYg KChvcCAmIDB4ZmMxZmZmZmYpID09IDB4N2MxZjAxY2UgICAvKiBzdHZ4IFZz LCBSMzEsIFIwICovCisgICAgICAgICAgICAgICB8fCAob3AgJiAweGZjMWZm ZmZmKSA9PSAweDdjMDEyZjk5IC8qIHN0eHZkMnggVnMscjEsIHI1ICovCisg ICAgICAgICAgICAgICB8fCAob3AgJiAweGZjMWZmZmZmKSA9PSAweDdjMDEy Zjk4IC8qIHN0eHZkMnggdnMwLCByMSwgcjUgKi8KKyAgICAgICAgICAgICAg IHx8IChvcCAmIDB4ZmMxZmYwMDApID09IDB4N2MwMTIwMDApICAgCisgICAg ICB7CisgICAgICAgIHZyX3JlZyA9IEdFVF9TUkNfUkVHIChvcCk7CisgICAg ICAgIC8qIElmIHRoaXMgaXMgdGhlIGZpcnN0IHZlY3RvciByZWcgdG8gYmUg c2F2ZWQsIG9yIGlmCisgICAgICAgCSAgIGl0IGhhcyBhIGxvd2VyIG51bWJl ciB0aGFuIG90aGVycyBwcmV2aW91c2x5IHNlZW4sCisgICAgICAgCSAgIHJl dXBkYXRlIHRoZSBmcmFtZSBpbmZvLiAgKi8KKyAgICAgICAgZmRhdGEtPnNh dmVkX3ZyID0gdnJfcmVnOworICAgICAgICBmZGF0YS0+dnJfb2Zmc2V0ID0g dnJfc2F2ZWRfb2Zmc2V0OworICAgICAgICB2cl9zYXZlZF9vZmZzZXQgPSAt MTsKKyAgICAgICAgdnJfcmVnID0gLTE7CisgICAgICAgIGxpX2ZvdW5kX3Bj ID0gMDsKKyAgICAgIH0KICAgICAgIC8qIEVuZCBBbHRpVmVjIHJlbGF0ZWQg aW5zdHJ1Y3Rpb25zLiAgKi8KIAogICAgICAgLyogU3RhcnQgQm9va0UgcmVs YXRlZCBpbnN0cnVjdGlvbnMuICAqLwpAQCAtMjY2NSw4ICsyNjYzLDggQEAg cnM2MDAwX2NvbnZlcnRfcmVnaXN0ZXJfcCAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsIGludCByZWdudW0sCiAJICAmJiByZWdudW0gPj0gdGRlcC0+cHBj X2ZwMF9yZWdudW0KIAkgICYmIHJlZ251bSA8IHRkZXAtPnBwY19mcDBfcmVn bnVtICsgcHBjX251bV9mcHJzCiAJICAmJiB0eXBlLT5jb2RlICgpID09IFRZ UEVfQ09ERV9GTFQKLQkgICYmICh0eXBlLT5sZW5ndGggKCkKLQkgICAgICAh PSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2RvdWJsZS0+bGVu Z3RoICgpKSk7CisgICAgICAgICAgJiYgKHR5cGUtPmxlbmd0aCAoKQorICAg ICAgICAgICAgICAhPSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGlu X2RvdWJsZS0+bGVuZ3RoICgpKSk7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTM0 NjYsNyArMzQ2NCw3IEBAIHN0cnVjdCBwcGNfdmFyaWFudAogICAgIHVuc2ln bmVkIGxvbmcgbWFjaDsKIAogICAgIC8qIFRhcmdldCBkZXNjcmlwdGlvbiBm b3IgdGhpcyB2YXJpYW50LiAgKi8KLSAgICBjb25zdCBzdHJ1Y3QgdGFyZ2V0 X2Rlc2MgKip0ZGVzYzsKKyAgICBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKip0ZGVz YzsKICAgfTsKIAogc3RhdGljIHN0cnVjdCBwcGNfdmFyaWFudCB2YXJpYW50 c1tdID0KQEAgLTM0NzQsNyArMzQ3Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgcHBj X3ZhcmlhbnQgdmFyaWFudHNbXSA9CiAgIHsicG93ZXJwYyIsICJQb3dlclBD IHVzZXItbGV2ZWwiLCBiZmRfYXJjaF9wb3dlcnBjLAogICAgYmZkX21hY2hf cHBjLCAmdGRlc2NfcG93ZXJwY19hbHRpdmVjMzJ9LAogICB7InBvd2VyIiwg IlBPV0VSIHVzZXItbGV2ZWwiLCBiZmRfYXJjaF9yczYwMDAsCi0gICBiZmRf bWFjaF9yczZrLCAmdGRlc2NfcnM2MDAwfSwKKyAgIGJmZF9tYWNoX3JzNmss ICZ0ZGVzY19wb3dlcnBjX3ZzeDMyfSwKICAgeyI0MDMiLCAiSUJNIFBvd2Vy UEMgNDAzIiwgYmZkX2FyY2hfcG93ZXJwYywKICAgIGJmZF9tYWNoX3BwY180 MDMsICZ0ZGVzY19wb3dlcnBjXzQwM30sCiAgIHsiNDA1IiwgIklCTSBQb3dl clBDIDQwNSIsIGJmZF9hcmNoX3Bvd2VycGMsCkBAIC0zNTA0LDcgKzM1MDIs NyBAQCBzdGF0aWMgc3RydWN0IHBwY192YXJpYW50IHZhcmlhbnRzW10gPQog ICB7InBvd2VycGM2NCIsICJQb3dlclBDIDY0LWJpdCB1c2VyLWxldmVsIiwg YmZkX2FyY2hfcG93ZXJwYywKICAgIGJmZF9tYWNoX3BwYzY0LCAmdGRlc2Nf cG93ZXJwY19hbHRpdmVjNjR9LAogICB7IjYyMCIsICJNb3Rvcm9sYSBQb3dl clBDIDYyMCIsIGJmZF9hcmNoX3Bvd2VycGMsCi0gICBiZmRfbWFjaF9wcGNf NjIwLCAmdGRlc2NfcG93ZXJwY182NH0sCisgICBiZmRfbWFjaF9wcGNfNjIw LCAmdGRlc2NfcG93ZXJwY192c3g2NH0sCiAgIHsiNjMwIiwgIk1vdG9yb2xh IFBvd2VyUEMgNjMwIiwgYmZkX2FyY2hfcG93ZXJwYywKICAgIGJmZF9tYWNo X3BwY182MzAsICZ0ZGVzY19wb3dlcnBjXzY0fSwKICAgeyJhMzUiLCAiUG93 ZXJQQyBBMzUiLCBiZmRfYXJjaF9wb3dlcnBjLApAQCAtMzY4MCwxOCArMzY3 OCwxNSBAQCByczYwMDBfZnJhbWVfY2FjaGUgKGZyYW1lX2luZm9fcHRyIHRo aXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQogICAvKiBpZiAhPSAtMSwg ZmRhdGEuc2F2ZWRfdnIgaXMgdGhlIHNtYWxsZXN0IG51bWJlciBvZiBzYXZl ZF92ci4KICAgICAgQWxsIHZyJ3MgZnJvbSBzYXZlZF92ciB0byB2cjMxIGFy ZSBzYXZlZC4gICovCiAgIGlmICh0ZGVwLT5wcGNfdnIwX3JlZ251bSAhPSAt MSAmJiB0ZGVwLT5wcGNfdnJzYXZlX3JlZ251bSAhPSAtMSkKLSAgICB7Ci0g ICAgICBpZiAoZmRhdGEuc2F2ZWRfdnIgPj0gMCkKLQl7Ci0JICBpbnQgaTsK LQkgIENPUkVfQUREUiB2cl9hZGRyID0gY2FjaGUtPmJhc2UgKyBmZGF0YS52 cl9vZmZzZXQ7Ci0JICBmb3IgKGkgPSBmZGF0YS5zYXZlZF92cjsgaSA8IDMy OyBpKyspCi0JICAgIHsKLQkgICAgICBjYWNoZS0+c2F2ZWRfcmVnc1t0ZGVw LT5wcGNfdnIwX3JlZ251bSArIGldLnNldF9hZGRyICh2cl9hZGRyKTsKLQkg ICAgICB2cl9hZGRyICs9IHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gsIHRkZXAt PnBwY192cjBfcmVnbnVtKTsKLQkgICAgfQotCX0KLSAgICB9CisgIHsKKyAg ICBpbnQgaTsKKyAgICBDT1JFX0FERFIgdnJfYWRkciA9IGNhY2hlLT5iYXNl ICsgZmRhdGEudnJfb2Zmc2V0OworICAgIGZvciAoaSA9IDA7IGkgPCA2Njsg aSsrKQorICAgIHsKKyAgICAgIGNhY2hlLT5zYXZlZF9yZWdzW3RkZXAtPnBw Y192c3IwX3VwcGVyX3JlZ251bSArIGldLnNldF9hZGRyICh2cl9hZGRyKTsK KyAgICAgIHZyX2FkZHIgKz0gcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgdGRl cC0+cHBjX3ZzcjBfdXBwZXJfcmVnbnVtKTsKKyAgICB9IAorICB9IAogCiAg IC8qIGlmICE9IC0xLCBmZGF0YS5zYXZlZF9ldiBpcyB0aGUgc21hbGxlc3Qg bnVtYmVyIG9mIHNhdmVkX2V2LgogICAgICBBbGwgdnIncyBmcm9tIHNhdmVk X2V2IHRvIGV2MzEgYXJlIHNhdmVkLiA/Pz8/PyAgKi8KLS0gCjIuMzEuMQoK --_004_CH2PR15MB354415C815824AF9A966CC8FD6259CH2PR15MB3544namp_--