From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id 0DF633858C39 for ; Fri, 13 Jan 2023 14:06:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0DF633858C39 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=ibm.com Received: from pps.filterd (m0098399.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 30DDnZZL032614; Fri, 13 Jan 2023 14:06:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=pp1; bh=Zys6fNEqj/MJKHlgun9pZj3KoU7c0YYKKCwXSsQj1a0=; b=LImOqWmNbAOAAdebcBKmuiadd5UIGGcOhuQUNJt5dQ+5AQYnVb46Ij23QN0gZR2pW3wR zVBuUgoPjxv/sGDxpPIUTg5aMQ1NqYHNDAlk13KKpTHjlDDX0nrunPJYn7x9u2rkpkHi hD+M4zFGCQVmAd3cBMq9Wc8MJgE7kYrOuvYROXeiZJgk+4of52rdrU8F6+aJEUWlEP4u sZAlAw0n+O6JdpW3keYVZrSsMBZrNxIhVl/jPPtP5a11feLA9tPk1rvWoWwD9RPLOhVe QbQnxlDcN77xp4FKUo09q3wOCw0vE0rfVrG3gx51d7725szbTvGNwQCUU/EQIfU+zJZH uA== Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2170.outbound.protection.outlook.com [104.47.57.170]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3n38ggrhse-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 13 Jan 2023 14:06:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ISuuCNkYUDvXClc6BPC8ZdgdSK+t+ZdCXXXvoQv9OlNNNxokDI02u45kYSk640b/5cLYVIKjkQfgpKixnF5aIf7ENp6NhoxIGUHb9RAC3dUl5D6S+eDN5TQoNSK/R+Zg0nwrJUzzqsII8rgxOGTAFF4jHJ1Qr2wS2glPmHjyByRmJJZkcDO13YuCG9cMh//hOtFrs8SxZHwFuLbG9x+6AVRXib3jjsCPyqRKnGaHPn8WxV06jtcUHVunZJbeZAah7jqgPl3uu40UfMCbMAkASBodCgRZ7Tcn86fQ8AASMCVzQvzRB/LRnJKyQf/ocGm2swyHCweMYFgCBw3Y1qscoA== 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=Zys6fNEqj/MJKHlgun9pZj3KoU7c0YYKKCwXSsQj1a0=; b=b6UPB0+yHLkxbbSBTzJ8agZ5wcNrC7S0Ahi4zE532meovBjRRjoO9gqL9V616gJetunTpeFymOGCvnSK1PJQ8Cmcj3QNVZaECoES7TJ7WF3wwsvM/M1iAdw+YmmAtb5IpMHzG1lYcyV2p77sj0JWxS7QPBg6UKu0Zr2PY9Xj9OVdQ970V6+5CX18PCafmFZMxs5NZSt2SXGGpyecssNavyn0oym5lwJJjqFVoYFAT2gXGexxTHElZpt9YffrXUxoDRY/B97TPwRYP1d8kmYGQLk1fmbGfH8wPlJ+d1OKAnqlvrD2QgOcivR2Vdi8Oql711h8lvqlZz4D+5jTAszj2Q== 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 BY5PR15MB3540.namprd15.prod.outlook.com (2603:10b6:a03:1b6::29) by SA0PR15MB4045.namprd15.prod.outlook.com (2603:10b6:806:89::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.19; Fri, 13 Jan 2023 14:06:55 +0000 Received: from BY5PR15MB3540.namprd15.prod.outlook.com ([fe80::d76d:e58b:3de7:32a7]) by BY5PR15MB3540.namprd15.prod.outlook.com ([fe80::d76d:e58b:3de7:32a7%7]) with mapi id 15.20.6002.013; Fri, 13 Jan 2023 14:06:55 +0000 From: Aditya Kamath1 To: Ulrich Weigand , "simark@simark.ca" , "gdb-patches@sourceware.org" CC: Sangamesh Mallayya Subject: Re: [PATCH] 0001-Fix-multi-thread-debug-bug-in-AIX.patch Thread-Topic: [PATCH] 0001-Fix-multi-thread-debug-bug-in-AIX.patch Thread-Index: AQHY6DximDPpCqTL9kGyFvcEZokFBq4jlIiAgBFljYeAAA2HgIAIORaygAMrdQCACMPAdYADi8KAgAAbf+aAABUYgIAADhDtgAjHItiAAgYnAIACq/WKgAVsGwCABC6K8oAAZcYAgAq8WQ+AADoMgIAFnB/fgAUxEICABkBkK4AWHiQAgAFvY+iAAawUgIADF3yS Date: Fri, 13 Jan 2023 14:06:54 +0000 Message-ID: References: <0866c91331b08f2870fad6e6a13fbcd1a9823b48.camel@de.ibm.com> <5df6ab523034d1997ffda5bb06c3bd87777dcccb.camel@de.ibm.com> <0dba07cfad3da44c0281c53702d73f807bca7d06.camel@de.ibm.com> <5956432ab1e0eedc8f65e01d3793a80ccf3a3a1f.camel@de.ibm.com> <139ff3da5e35905c963869569bebf280733740c2.camel@de.ibm.com> <8302c3570292b864ab21176e58bdee546f6e4544.camel@de.ibm.com> <5324a4027099ed44a32b3de8db71df875e034deb.camel@de.ibm.com> In-Reply-To: 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: BY5PR15MB3540:EE_|SA0PR15MB4045:EE_ x-ms-office365-filtering-correlation-id: df58634f-38fc-41b1-8749-08daf56f6d41 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BFj8ovM14cqFUQFlGS1vnhCMVafr/69rdoBqKqfDICHf80Ke5uK82AkhZ6BzQ3bDB4AiOjAH18oxwI9RwlP1dfBaDvPUsQoC6JTlf+kKjlfhwQpAJ0ga9Y/qP3jwdpZd+LagqiKnnNV49cPOHIWgc4Vzm+mlACMGwkrwz2t4Z4NsGnbDZ5bfgBOT5/h2R/4+SkDf5efgcBfuSDg4fAPivuNwqVcqd+X2ByLtFo17ZJICdx1cfQTEs5YNvOeVa/GzeoFMdktl4gPUPy4FJ+MUdKRP+FzmGPNMJsd/7czADQDK4iVidBTpm21Wic2hOPJxAfwrOUi/MBKVET3dltSNNfVSYwbA0PhQYCZfpPa/4bwbCzgsVcCt2ulXd4EsfRleq8tTnPvlDo3ke/GPrm1bpWcVNXJngNVWoMGX0NHb8AaJFYM1zh3tbcojCWtJ8KlxiUh8kYDTeqlyyaCc8sa/D9XAdpXHH66veaAA9kiJCNEAB0RPnP3Y3mhBLXKtiGDgGMI/Ae6B83zL3G5yRDmBYO0EwSSFCG0ode+stGckWS38LzKCK/r5mJI8DSo5j+7wX3gv+INKHeaUWk1lMZhKbo/bb/gMk6lZim9fhTvI8T11cwreRtclFdlBLBUr3eJhoUok64O8Z7dHLvTa1ngAlcc88hGvqlPTZybqAj2YtME3yahhiI0yE6NXUBwk4wwVuQLMZ9klLN+WFOc7+mn0HA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR15MB3540.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(39860400002)(346002)(136003)(366004)(376002)(396003)(451199015)(19627405001)(52536014)(8936002)(5660300002)(41300700001)(76116006)(4326008)(316002)(91956017)(2906002)(66946007)(66556008)(110136005)(66476007)(66446008)(8676002)(71200400001)(478600001)(7696005)(64756008)(122000001)(99936003)(38100700002)(186003)(53546011)(9686003)(6506007)(33656002)(55016003)(38070700005)(86362001)(83380400001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?Y36PUtMHEVf2lPZs6IdhHQDErMJpsrmYg8obbm3MX7NSV+E8iwBkk0TSVzu9?= =?us-ascii?Q?aqYmOF4UdAEAyPlBNKLvr3OnCO5vqXUtvAgc+bknHSsf1Cs9/kWXtZFre8tn?= =?us-ascii?Q?uEk7k6Crf6HQBVNjB/P2hkgEAB2VHaLN8qNrWH+GvN4/ThGNkdBb3tzZSNbN?= =?us-ascii?Q?2TZYas9CKvBxaODZbwbfP6i0Tcvf6EoIvTUDtFhmH0wVK93mN9BI+1az+afX?= =?us-ascii?Q?eO3pFKQT77861ywM3LKJzOQr7yU6Vd5HclXD9pwBapuIlIrg0Cok2ieFfAT0?= =?us-ascii?Q?xUPG/FGo/1SHyeoqWNkNbocp6g4EZtWQTUXPkGhBgkftzMSE90ruQ+MGOMuF?= =?us-ascii?Q?saboVsJAymeWjUYcG8TwtSZxoLp0wL7yjIOLReGKZ2KaJ3gNpfZWy1lvSG9b?= =?us-ascii?Q?sO59jOAM7uYDc6q3iqwZmq/bAMdQFtAkdcu2R6pltG00e3JX68UAOCSWzI5H?= =?us-ascii?Q?16hHRYGapDzTgbxqHgg/HaA9vk6OzvOtLIeYU2Pp16AQ/nRShKu6ulrLBdTx?= =?us-ascii?Q?975gPRZ+jqM2fB+RWbRHQdtTxe+OSV0dTnMyvdWGtNLa/nO/7+EllrvhvBk6?= =?us-ascii?Q?xTV0MoJYtzyK8WrLFF941DiFiF/R52wpCY1KhZ6NallBcJKsCJfR6zaK2F5c?= =?us-ascii?Q?TPB4ag8gVne4JWuz/KpJwdPS44nhuqQCkdtPCw84AGAOzvbciS6pfnarfYl+?= =?us-ascii?Q?OiOxt8dAWX9WYvOEJrUhgUk6pbX9tvu/lpkepTLXs7Mr7cSXHzXlITjXodLJ?= =?us-ascii?Q?yWP5Ynzp9fTVKU8KH8T4qf6V9fA4p1CrX+reh4O0Xm7ROVgnXFVT1GHoFFgU?= =?us-ascii?Q?EA+jwRY2uljyMRnxzSwjMLGKFv6gjY3OGThO8acwQ5CKeWMfftJVwqWBbksb?= =?us-ascii?Q?Y2+dJU9WOLK9xetG4Fs3AnR9UEUB0Jtq1l/wJh+sAeyvcTAqAFFYPhjdXvku?= =?us-ascii?Q?Yq615egvLqDk51dP0MIQ/5y4Zjo95udXWiXiETbnuV0WREC2RVBIL5KcK+7Q?= =?us-ascii?Q?iJ5CMPZTfW/49uC5EUwDuA/d1daj79pK3PWEQ0FFzYXG/2y23NKL1Q1XxxE1?= =?us-ascii?Q?u6SUO38AEI9WFCI1T/AiQB4w5r+LPxduDK6ZWKLvzFCtNQL41JsmO+gdDr9D?= =?us-ascii?Q?vXUK153SSNEuazWocEmXXUb/3Esxm/e4f6AxWuJiElo4VTY11wUBlaDbIRKc?= =?us-ascii?Q?XAs3OtSZt4j1UWfoM+lcGANk5rufdZ2N4ggNJLrP0aFi+pk2qzq7ldrob/MZ?= =?us-ascii?Q?zYSMGgfwoS1waXLp4lp0LiykYfUanFrWXE4m/GHxKRQJMyiz/3UTEtnuHHKB?= =?us-ascii?Q?uBZ7Z2+9zU7CAjokMLLpvAC9zkOxavP398Z9ntqGU3KWd1wfaGVXWH34sqwr?= =?us-ascii?Q?WNbagd2eWK2PKw5ig6tqh0XchAsTenq/wkwYx8X6NQPgXK5yJ1bGwXpEf4Ds?= =?us-ascii?Q?dXykn+KKnPImOVwdYs5VCDN+7F2uensozLy6KrkkcxH2HjtkGGfE3+L0b0p9?= =?us-ascii?Q?XmZ2CcW2xCx6k2KMvTkHQ0z4lmjNvSge5VQ3k4WMiOyVUlcq/stnB0wmw/oC?= =?us-ascii?Q?xxyN6O7qaJ3zwWf7o3GR6Q/QIUtUVdXNYpx9xbQXCCZXTa8IobCn4fwxUeG7?= =?us-ascii?Q?lwUc2oZhE6UoBlF9k40cVtjz0t6d7JZ7GX0R8xG16f3I?= Content-Type: multipart/mixed; boundary="_004_BY5PR15MB3540261B391EA10F29AF5120D6C29BY5PR15MB3540namp_" MIME-Version: 1.0 X-OriginatorOrg: ibm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR15MB3540.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: df58634f-38fc-41b1-8749-08daf56f6d41 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jan 2023 14:06:54.9220 (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: 3hOpnh4/3GC2C8bm5nC3n6WEVQ1UAWz6kB4ljJWeCD1myU01rYz5mDO3DiEqCHeYeoLkstaEvm0eYlTKX45u0Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR15MB4045 X-Proofpoint-ORIG-GUID: dhlFxZaOiKuRa2CUBXokUvFgdGcsAqFf X-Proofpoint-GUID: dhlFxZaOiKuRa2CUBXokUvFgdGcsAqFf X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.923,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-01-13_06,2023-01-13_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 phishscore=0 bulkscore=0 mlxlogscore=999 malwarescore=0 lowpriorityscore=0 impostorscore=0 clxscore=1015 adultscore=0 mlxscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301130092 X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HTML_MESSAGE,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: --_004_BY5PR15MB3540261B391EA10F29AF5120D6C29BY5PR15MB3540namp_ Content-Type: multipart/alternative; boundary="_000_BY5PR15MB3540261B391EA10F29AF5120D6C29BY5PR15MB3540namp_" --_000_BY5PR15MB3540261B391EA10F29AF5120D6C29BY5PR15MB3540namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Ulrich and community, Please find attached the patch {See: 0001-Fix-multi-thread-debug-bug-in-AIX= .patch} So, I took into account the information you gave me the last time. Having s= aid that, it turned out to be a different issue that is causing such a swap= of threads as shown in the outputs of the previous email {pasted again bel= ow this email}. Our top target is getting set correctly and symbols are being read in the r= ight way on any new-born inferior. I am thankful to you all for pointing th= at shared Library issue to me. While setting the top target for a new inferior we go to sync_threadlist ()= from the pd_enable () -> pthdb_session_pthreaded () -> push the top target= -> pd_activate () -> pthdb_session_init ()-> pd_update () -> sync_threadli= sts (), our sync_threadlists uses a variable called gcount which represents= the number of threads in the GDB. pcount is the number of pthreads. gcount= is got from iterate_over_threads (). Honestly from my understanding we do not take into account the process ID w= hile we iterate over threads. So, this will work in a single inferior case = whereas in multi-inferior one with multi thread things mess up. Here is how= : So, if we have two threads in our first inferior {main thread and a task thread say}, and one main thread in the second infe= rior and we are syncing our second inferior, though our pcount will correct= ly be one but our gcount will 3. Which means by our current logic we will e= nd up deleting two threads {first two of the first inferior}. This is exact= ly what happened in my precious mail output if you check and post this, we = will swap the threads as this is how the code flow. This is now one of the causes of the bug. Inorder to resolve the same I request for one information. How can we itera= te_over_threads of a particular process. What is that function. Is there an= y built-in available?? Kindly let me know and that should solve this issue. Also kindly give me feedback on this patch if I need to change anything. I = thank you for the guidance so far. Hoping for a reply soon. Have a nice day ahead. Thanks and regards, Aditya. -------------------------------------------- Output 2:- Reading symbols from /home/aditya/gdb_tests/ultimate-multi-thread-fork... (gdb) set detach-on-fork off (gdb) r Starting program: /home/aditya/gdb_tests/ultimate-multi-thread-fork [New Thread 258] [New inferior 2 (process 16122342)] I am parent ^C[New process 11665700] Thread 1.3 received signal SIGINT, Interrupt. 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) (gdb) info threads Id Target Id Frame * 1.3 process 11665700 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) 2.1 Thread 258 (tid 28115287, running) 0xd0594fc8 in _sigsetmask () from /usr/lib/libpthread.a(shr_xpg5.o) (gdb) ________________________________ From: Ulrich Weigand Sent: 11 January 2023 19:01 To: simark@simark.ca ; Aditya Kamath1 ; gdb-patches@sourceware.org Cc: Sangamesh Mallayya Subject: Re: [PATCH] 0001-Fix-multi-thread-debug-bug-in-AIX.patch Aditya Kamath1 wrote: >So, looking at this, I have missed out something may be minor or >major causing the bug which I am unaware of in the code base. The one problem I see is that there are still global variables that seem to get clobbered if there are multiple inferiors, in particular pd_session and pd_brk_addr. Those will get overwritten by each pd_activate call for each inferior. Note that pthdb_session_init registers the pid, so the resulting pd_session should be different for each inferior. If you just overwrite it, then the pid values passed to all callbacks will always reflect only the latest inferior. Similarly, pd_brk_addr is potentially different in each inferior, if libpthread is loaded at different addresses. You should create a struct containing all per-inferior thread- related data members, and then allocate one such struct per inferior. Bye, Ulrich --_000_BY5PR15MB3540261B391EA10F29AF5120D6C29BY5PR15MB3540namp_-- --_004_BY5PR15MB3540261B391EA10F29AF5120D6C29BY5PR15MB3540namp_ Content-Type: application/octet-stream; name="0001-Fix-multi-thread-debug-bug-in-AIX.patch" Content-Description: 0001-Fix-multi-thread-debug-bug-in-AIX.patch Content-Disposition: attachment; filename="0001-Fix-multi-thread-debug-bug-in-AIX.patch"; size=15474; creation-date="Fri, 13 Jan 2023 13:00:57 GMT"; modification-date="Fri, 13 Jan 2023 13:01:48 GMT" Content-Transfer-Encoding: base64 RnJvbSA3ZGFlNGZhN2UzNzMyM2IzNTUzMDhlZGI4YjEzYzExOGI2YTJhZThh IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFk aGFyIEthbWF0aCA8QWRpdHlhLkthbWF0aDFAaWJtLmNvbT4KRGF0ZTogRnJp LCAxMyBKYW4gMjAyMyAwNjo0MzoxNCAtMDYwMApTdWJqZWN0OiBbUEFUQ0hd IEZpeCBtdWx0aSB0aHJlYWQgZGVidWcgYnVnIGluIEFJWAoKLS0tCiBnZGIv YWl4LXRocmVhZC5jIHwgMTQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBnZGIvc29saWItYWl4LmMgIHwgICA2 ICsrCiAyIGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDY1IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dkYi9haXgtdGhyZWFkLmMgYi9n ZGIvYWl4LXRocmVhZC5jCmluZGV4IGU1NTZjMTUzNTc2Li41ODk0ZjNlY2M3 ZCAxMDA2NDQKLS0tIGEvZ2RiL2FpeC10aHJlYWQuYworKysgYi9nZGIvYWl4 LXRocmVhZC5jCkBAIC01NSw2ICs1NSw4IEBACiAjaW5jbHVkZSA8c3lzL3Jl Zy5oPgogI2luY2x1ZGUgPHNjaGVkLmg+CiAjaW5jbHVkZSA8c3lzL3B0aGRl YnVnLmg+CisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPG1hcD4KIAog I2lmICFIQVZFX0RFQ0xfR0VUVEhSRFMKIGV4dGVybiBpbnQgZ2V0dGhyZHMg KHBpZF90LCBzdHJ1Y3QgdGhyZHNpbmZvNjQgKiwgaW50LCB0aWRfdCAqLCBp bnQpOwpAQCAtNzAsNyArNzIsNyBAQCBzdGF0aWMgYm9vbCBkZWJ1Z19haXhf dGhyZWFkOwogCiAvKiBSZXR1cm4gd2hldGhlciB0byB0cmVhdCBQSUQgYXMg YSBkZWJ1Z2dhYmxlIHRocmVhZCBpZC4gICovCiAKLSNkZWZpbmUgUERfVElE KHB0aWQpCShwZF9hY3RpdmUgJiYgcHRpZC50aWQgKCkgIT0gMCkKKyNkZWZp bmUgUERfVElEKHB0aWQpCShzdGQ6OmZpbmQgKHBkX2FjdGl2ZS5iZWdpbiAo KSwgcGRfYWN0aXZlLmVuZCAoKSwgcHRpZC5waWQgKCkpICE9IHBkX2FjdGl2 ZS5lbmQgKCkgJiYgcHRpZC50aWQgKCkgIT0gMCkKIAogLyogU3VjY2VzcyBh bmQgZmFpbHVyZSB2YWx1ZXMgcmV0dXJuZWQgYnkgcHRoZGIgY2FsbGJhY2tz LiAgKi8KIApAQCAtMTQyLDIwICsxNDQsMjAgQEAgY2xhc3MgYWl4X3RocmVh ZF90YXJnZXQgZmluYWwgOiBwdWJsaWMgdGFyZ2V0X29wcwogICBwdGlkX3Qg Z2V0X2FkYV90YXNrX3B0aWQgKGxvbmcgbHdwLCBVTE9OR0VTVCB0aHJlYWQp IG92ZXJyaWRlOwogfTsKIAotc3RhdGljIGFpeF90aHJlYWRfdGFyZ2V0IGFp eF90aHJlYWRfb3BzOworICBzdGF0aWMgYWl4X3RocmVhZF90YXJnZXQgYWl4 X3RocmVhZF9vcHM7CiAKIC8qIEFkZHJlc3Mgb2YgdGhlIGZ1bmN0aW9uIHRo YXQgbGlicHRocmVhZCB3aWxsIGNhbGwgd2hlbiBsaWJwdGhkZWJ1ZwogICAg aXMgcmVhZHkgdG8gYmUgaW5pdGlhbGl6ZWQuICAqLwogCi1zdGF0aWMgQ09S RV9BRERSIHBkX2Jya19hZGRyOworIHN0YXRpYyBzdGQ6Om1hcDxwaWRfdCwg Q09SRV9BRERSPiBwZF9icmtfYWRkcjsKIAogLyogV2hldGhlciB0aGUgY3Vy cmVudCBhcHBsaWNhdGlvbiBpcyBkZWJ1Z2dhYmxlIGJ5IHB0aGRiLiAgKi8K IAotc3RhdGljIGludCBwZF9hYmxlID0gMDsKK3N0YXRpYyBzdGQ6OnZlY3Rv cjxwaWRfdD4gcGRfYWJsZTsKIAogLyogV2hldGhlciBhIHRocmVhZGVkIGFw cGxpY2F0aW9uIGlzIGJlaW5nIGRlYnVnZ2VkLiAgKi8KIAotc3RhdGljIGlu dCBwZF9hY3RpdmUgPSAwOworc3RhdGljIHN0ZDo6dmVjdG9yPHBpZF90PiBw ZF9hY3RpdmU7CiAKIC8qIFdoZXRoZXIgdGhlIGN1cnJlbnQgYXJjaGl0ZWN0 dXJlIGlzIDY0LWJpdC4gIAogICAgT25seSB2YWxpZCB3aGVuIHBkX2FibGUg aXMgdHJ1ZS4gICovCkBAIC0xOTMsNyArMTk1LDcgQEAgc3RhdGljIHB0aGRi X2NhbGxiYWNrc190IHBkX2NhbGxiYWNrcyA9IHsKIAogLyogQ3VycmVudCBw dGhkYiBzZXNzaW9uLiAgKi8KIAotc3RhdGljIHB0aGRiX3Nlc3Npb25fdCBw ZF9zZXNzaW9uOworc3RhdGljIHN0ZDo6bWFwPHBpZF90LCBwdGhkYl9zZXNz aW9uX3Q+IHBkX3Nlc3Npb247CiAKIC8qIFJldHVybiBhIHByaW50YWJsZSBy ZXByZXNlbnRhdGlvbiBvZiBwdGhkZWJ1ZyBmdW5jdGlvbiByZXR1cm4KICAg IFNUQVRVUy4gICovCkBAIC0zMzEsNiArMzMzLDkgQEAgcGRjX3N5bWJvbF9h ZGRycyAocHRoZGJfdXNlcl90IHVzZXJfY3VycmVudF9waWQsIHB0aGRiX3N5 bWJvbF90ICpzeW1ib2xzLCBpbnQgY28KICAgc3RydWN0IGJvdW5kX21pbmlt YWxfc3ltYm9sIG1zOwogICBpbnQgaTsKICAgY2hhciAqbmFtZTsKKyAgc2Nv cGVkX3Jlc3RvcmVfY3VycmVudF9wcm9ncmFtX3NwYWNlIHJlc3RvcmVfcHNw YWNlOyAKKyAgaW5mZXJpb3IgKmluZiA9IGZpbmRfaW5mZXJpb3JfcGlkIChj dXJyZW50X2luZmVyaW9yICgpLT5wcm9jZXNzX3RhcmdldCAoKSwgdXNlcl9j dXJyZW50X3BpZCk7CisgIHNldF9jdXJyZW50X3Byb2dyYW1fc3BhY2UgKGlu Zi0+cHNwYWNlKTsKIAogICBpZiAoZGVidWdfYWl4X3RocmVhZCkKICAgICBn ZGJfcHJpbnRmIChnZGJfc3RkbG9nLApAQCAtNTA4LDE0ICs1MTMsMTMgQEAg cGRjX3JlYWRfZGF0YSAocHRoZGJfdXNlcl90IHVzZXJfY3VycmVudF9waWQs IHZvaWQgKmJ1ZiwKICAgLyogVGhpcyBpcyBuZWVkZWQgdG8gZWxpbWluYXRl IHRoZSBkZXBlbmRlbmN5IG9mIGN1cnJlbnQgdGhyZWFkCiAgICAgIHdoaWNo IGlzIG51bGwgc28gdGhhdCB0aHJlYWQgcmVhZHMgdGhlIGNvcnJlY3QgdGFy Z2V0IG1lbW9yeS4gICovCiAgIHsKLSAgICBzY29wZWRfcmVzdG9yZV9jdXJy ZW50X3RocmVhZCByZXN0b3JlX2N1cnJlbnRfdGhyZWFkOworICAgIHNjb3Bl ZF9yZXN0b3JlIHNhdmVfaW5mZXJpb3JfcHRpZCA9IG1ha2Vfc2NvcGVkX3Jl c3RvcmUgKCZpbmZlcmlvcl9wdGlkKTsKICAgICAvKiBCZWZvcmUgdGhlIGZp cnN0IGluZmVyaW9yIGlzIGFkZGVkLCB3ZSBwYXNzIGluZmVyaW9yX3B0aWQu cGlkICgpCiAgICAgICAgZnJvbSBwZF9lbmFibGUgKCkgd2hpY2ggaXMgMC4g IFRoZXJlIGlzIG5vIG5lZWQgdG8gc3dpdGNoIHRocmVhZHMKICAgICAgICBk dXJpbmcgZmlyc3QgaW5pdGlhbGlzYXRpb24uICBJbiB0aGUgcmVzdCBvZiB0 aGUgY2FsbGJhY2tzIHRoZQogICAgICAgIGN1cnJlbnQgdGhyZWFkIG5lZWRz IHRvIGJlIGNvcnJlY3QuICAqLwogICAgIGlmICh1c2VyX2N1cnJlbnRfcGlk ICE9IDApCi0gICAgICBzd2l0Y2hfdG9fdGhyZWFkIChjdXJyZW50X2luZmVy aW9yICgpLT5wcm9jZXNzX3RhcmdldCAoKSwKLQkJCXB0aWRfdCAodXNlcl9j dXJyZW50X3BpZCkpOworICAgICAgaW5mZXJpb3JfcHRpZCA9IHB0aWRfdCAo dXNlcl9jdXJyZW50X3BpZCk7CiAgICAgc3RhdHVzID0gdGFyZ2V0X3JlYWRf bWVtb3J5IChhZGRyLCAoZ2RiX2J5dGUgKikgYnVmLCBsZW4pOwogICB9CiAg IHJldCA9IHN0YXR1cyA9PSAwID8gUERDX1NVQ0NFU1MgOiBQRENfRkFJTFVS RTsKQEAgLTYzOSwzNiArNjQzLDIzIEBAIHBjbXAgKGNvbnN0IHZvaWQgKnAx diwgY29uc3Qgdm9pZCAqcDJ2KQogICByZXR1cm4gcDEtPnB0aGlkIDwgcDIt PnB0aGlkID8gLTEgOiBwMS0+cHRoaWQgPiBwMi0+cHRoaWQ7CiB9CiAKLS8q IGl0ZXJhdGVfb3Zlcl90aHJlYWRzKCkgY2FsbGJhY2sgZm9yIGNvdW50aW5n IEdEQiB0aHJlYWRzLgotCi0gICBEbyBub3QgY291bnQgdGhlIG1haW4gdGhy ZWFkICh3aG9zZSB0aWQgaXMgemVybykuICBUaGlzIG1hdGNoZXMKLSAgIHRo ZSBsaXN0IG9mIHRocmVhZHMgcHJvdmlkZWQgYnkgdGhlIHB0aHJlYWRkZWJ1 ZyBsaWJyYXJ5LCB3aGljaAotICAgZG9lcyBub3QgaW5jbHVkZSB0aGF0IG1h aW4gdGhyZWFkIGVpdGhlciwgYW5kIHRodXMgYWxsb3dzIHVzCi0gICB0byBj b21wYXJlIHRoZSB0d28gbGlzdHMuICAqLworLyogaXRlcmF0ZV9vdmVyX3Ro cmVhZHMoKSBjYWxsYmFjayBmb3IgY291bnRpbmcgR0RCIHRocmVhZHMuICAq LwogCiBzdGF0aWMgaW50CiBnaXRlcl9jb3VudCAoc3RydWN0IHRocmVhZF9p bmZvICp0aHJlYWQsIHZvaWQgKmNvdW50cCkKIHsKLSAgaWYgKFBEX1RJRCAo dGhyZWFkLT5wdGlkKSkKLSAgICAoKihpbnQgKikgY291bnRwKSsrOworICAo KihpbnQgKikgY291bnRwKSsrOwogICByZXR1cm4gMDsKIH0KIAotLyogaXRl cmF0ZV9vdmVyX3RocmVhZHMoKSBjYWxsYmFjayBmb3IgYWNjdW11bGF0aW5n IEdEQiB0aHJlYWQgcGlkcy4KLQotICAgRG8gbm90IGluY2x1ZGUgdGhlIG1h aW4gdGhyZWFkICh3aG9zZSB0aWQgaXMgemVybykuICBUaGlzIG1hdGNoZXMK LSAgIHRoZSBsaXN0IG9mIHRocmVhZHMgcHJvdmlkZWQgYnkgdGhlIHB0aHJl YWRkZWJ1ZyBsaWJyYXJ5LCB3aGljaAotICAgZG9lcyBub3QgaW5jbHVkZSB0 aGF0IG1haW4gdGhyZWFkIGVpdGhlciwgYW5kIHRodXMgYWxsb3dzIHVzCi0g ICB0byBjb21wYXJlIHRoZSB0d28gbGlzdHMuICAqLworLyogaXRlcmF0ZV9v dmVyX3RocmVhZHMoKSBjYWxsYmFjayBmb3IgYWNjdW11bGF0aW5nIEdEQiB0 aHJlYWQgcGlkcy4gICovCiAKIHN0YXRpYyBpbnQKIGdpdGVyX2FjY3VtIChz dHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCwgdm9pZCAqYnVmcCkKIHsKLSAg aWYgKFBEX1RJRCAodGhyZWFkLT5wdGlkKSkKLSAgICB7Ci0gICAgICAqKihz dHJ1Y3QgdGhyZWFkX2luZm8gKioqKSBidWZwID0gdGhyZWFkOwotICAgICAg KCooc3RydWN0IHRocmVhZF9pbmZvICoqKikgYnVmcCkrKzsKLSAgICB9Cisg ICoqKHN0cnVjdCB0aHJlYWRfaW5mbyAqKiopIGJ1ZnAgPSB0aHJlYWQ7Cisg ICgqKHN0cnVjdCB0aHJlYWRfaW5mbyAqKiopIGJ1ZnApKys7CisKICAgcmV0 dXJuIDA7CiB9CiAKQEAgLTcxOSw3ICs3MTAsNyBAQCBnZXRfc2lnbmFsZWRf dGhyZWFkIChpbnQgcGlkKQogCQkgICAgc2l6ZW9mICh0aHJpbmYpLCAma3Rp ZCwgMSkgIT0gMSkKIAlicmVhazsKIAotICAgICAgaWYgKHRocmluZi50aV9j dXJzaWcgPT0gU0lHVFJBUCkKKyAgICAgIGlmICh0aHJpbmYudGlfY3Vyc2ln KQogCXJldHVybiB0aHJpbmYudGlfdGlkOwogICAgIH0KIApAQCAtNzUwLDYg Kzc0MSw5IEBAIHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAgIHB0aGRi X3B0aHJlYWRfdCBwZHRpZDsKICAgcHRocmVhZF90IHB0aGlkOwogICBwdGhk Yl90aWRfdCB0aWQ7CisgIHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQgKnByb2Nf dGFyZ2V0CisgICAgICAgICAgICA9IGN1cnJlbnRfaW5mZXJpb3IgKCktPnBy b2Nlc3NfdGFyZ2V0ICgpOworICB0aHJlYWRfaW5mbyAgKnRwOwogCiAgIC8q IEFjY3VtdWxhdGUgYW4gYXJyYXkgb2YgbGlicHRoZGVidWcgdGhyZWFkcyBz b3J0ZWQgYnkgcHRocmVhZCBpZC4gICovCiAKQEAgLTc1OSwxMSArNzUzLDEx IEBAIHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAKICAgZm9yIChjbWQg PSBQVEhEQl9MSVNUX0ZJUlNUOzsgY21kID0gUFRIREJfTElTVF9ORVhUKQog ICAgIHsKLSAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWQgKHBkX3Nlc3Np b24sICZwZHRpZCwgY21kKTsKKyAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJl YWQgKHBkX3Nlc3Npb25bcGlkXSwgJnBkdGlkLCBjbWQpOwogICAgICAgaWYg KHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTIHx8IHBkdGlkID09IFBUSERCX0lO VkFMSURfUFRIUkVBRCkKIAlicmVhazsKIAotICAgICAgc3RhdHVzID0gcHRo ZGJfcHRocmVhZF9wdGlkIChwZF9zZXNzaW9uLCBwZHRpZCwgJnB0aGlkKTsK KyAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfcHRpZCAocGRfc2Vzc2lv bltwaWRdLCBwZHRpZCwgJnB0aGlkKTsKICAgICAgIGlmIChzdGF0dXMgIT0g UFRIREJfU1VDQ0VTUyB8fCBwdGhpZCA9PSBQVEhEQl9JTlZBTElEX1BUSUQp CiAJY29udGludWU7CiAKQEAgLTc4MCw3ICs3NzQsNyBAQCBzeW5jX3RocmVh ZGxpc3RzIChpbnQgcGlkKQogCiAgIGZvciAocGkgPSAwOyBwaSA8IHBjb3Vu dDsgcGkrKykKICAgICB7Ci0gICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFk X3RpZCAocGRfc2Vzc2lvbiwgcGJ1ZltwaV0ucGR0aWQsICZ0aWQpOworICAg ICAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF90aWQgKHBkX3Nlc3Npb25bcGlk XSwgcGJ1ZltwaV0ucGR0aWQsICZ0aWQpOwogICAgICAgaWYgKHN0YXR1cyAh PSBQVEhEQl9TVUNDRVNTKQogCXRpZCA9IFBUSERCX0lOVkFMSURfVElEOwog ICAgICAgcGJ1ZltwaV0udGlkID0gdGlkOwpAQCAtODEwLDggKzgwNCw2IEBA IHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAJICBwcml2LT5wZHRpZCA9 IHBidWZbcGldLnBkdGlkOwogCSAgcHJpdi0+dGlkID0gcGJ1ZltwaV0udGlk OwogCi0JICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpwcm9jX3RhcmdldAot CSAgICA9IGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgp OwogCSAgdGhyZWFkID0gYWRkX3RocmVhZF93aXRoX2luZm8gKHByb2NfdGFy Z2V0LAogCQkJCQkgcHRpZF90IChwaWQsIDAsIHBidWZbcGldLnB0aGlkKSwK IAkJCQkJIHByaXYpOwpAQCAtODQxLDggKzgzMywyMiBAQCBzeW5jX3RocmVh ZGxpc3RzIChpbnQgcGlkKQogCSAgICB9CiAJICBlbHNlIGlmIChjbXBfcmVz dWx0ID4gMCkKIAkgICAgewotCSAgICAgIGRlbGV0ZV90aHJlYWQgKGdidWZb Z2ldKTsKLQkgICAgICBnaSsrOworICAgICAgICAgICAgICBpZiAoZ3B0aWQu aXNfcGlkICgpICYmIGdwdGlkLnBpZCAoKSA9PSBwcHRpZC5waWQgKCkpCisg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgdGhyZWFkX2No YW5nZV9wdGlkIChwcm9jX3RhcmdldCwgZ3B0aWQsIHBwdGlkKTsKKyAgICAg ICAgICAgICAgICAgIGFpeF90aHJlYWRfaW5mbyAqcHJpdiA9IG5ldyBhaXhf dGhyZWFkX2luZm87CisgICAgICAgICAgICAgICAgICBwcml2LT5wZHRpZCA9 IHBidWZbcGldLnBkdGlkOworICAgICAgICAgICAgICAgICAgcHJpdi0+dGlk ID0gcGJ1ZltwaV0udGlkOworICAgICAgICAgICAgICAgICAgdHAgPSBmaW5k X3RocmVhZF9wdGlkIChwcm9jX3RhcmdldCwgcHB0aWQpOworICAgICAgICAg ICAgICAgICAgdHAtPnByaXYucmVzZXQgKHByaXYpOworICAgICAgICAgICAg ICAgICAgcGkrKzsKKyAgICAgICAgICAgICAgICAgIGdpKys7CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgICAgZGVsZXRlX3RocmVhZCAoZ2J1Zltn aV0pOworICAgICAgICAgICAgICAgICAgZ2krKzsKKyAgICAgICAgICAgICAg ICB9CiAJICAgIH0KIAkgIGVsc2UKIAkgICAgewpAQCAtODg4LDEwICs4OTQs MTEgQEAgcGRfdXBkYXRlIChpbnQgcGlkKQogICBwdGhkYl90aWRfdCB0aWQ7 CiAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdGhyZWFkID0gTlVMTDsKIAotICBp ZiAoIXBkX2FjdGl2ZSkKKyAgaWYgKHN0ZDo6ZmluZCAocGRfYWN0aXZlLmJl Z2luICgpLCBwZF9hY3RpdmUuZW5kICgpLCBwaWQpCisgICAgPT0gcGRfYWN0 aXZlLmVuZCAoKSkKICAgICByZXR1cm4gcHRpZF90IChwaWQpOwogCi0gIHN0 YXR1cyA9IHB0aGRiX3Nlc3Npb25fdXBkYXRlIChwZF9zZXNzaW9uKTsKKyAg c3RhdHVzID0gcHRoZGJfc2Vzc2lvbl91cGRhdGUgKHBkX3Nlc3Npb25bcGlk XSk7CiAgIGlmIChzdGF0dXMgIT0gUFRIREJfU1VDQ0VTUykKICAgICByZXR1 cm4gcHRpZF90IChwaWQpOwogCkBAIC05MTgsMTUgKzkyNSwxNyBAQCBzdGF0 aWMgcHRpZF90CiBwZF9hY3RpdmF0ZSAoaW50IHBpZCkKIHsKICAgaW50IHN0 YXR1czsKLQkJCisJCiAgIHN0YXR1cyA9IHB0aGRiX3Nlc3Npb25faW5pdCAo cGlkLCBhcmNoNjQgPyBQRU1fNjRCSVQgOiBQRU1fMzJCSVQsCiAJCQkgICAg ICAgUFRIREJfRkxBR19SRUdTLCAmcGRfY2FsbGJhY2tzLCAKLQkJCSAgICAg ICAmcGRfc2Vzc2lvbik7CisJCQkgICAgICAgJnBkX3Nlc3Npb25bcGlkXSk7 CiAgIGlmIChzdGF0dXMgIT0gUFRIREJfU1VDQ0VTUykKICAgICB7CisgICAg ICBwZF9zZXNzaW9uLmVyYXNlIChwaWQpOwogICAgICAgcmV0dXJuIHB0aWRf dCAocGlkKTsKICAgICB9Ci0gIHBkX2FjdGl2ZSA9IDE7CisgIHByaW50ZiAo InBkX2FjdGl2YXRlZCBzdWNjZXNzZnVsbHkgZm9yIHBpZCAlZFxuIiwgcGlk KTsKKyAgcGRfYWN0aXZlLnB1c2hfYmFjayAocGlkKTsKICAgcmV0dXJuIHBk X3VwZGF0ZSAocGlkKTsKIH0KIApAQCAtOTM1LDI2ICs5NDQsMjkgQEAgcGRf YWN0aXZhdGUgKGludCBwaWQpCiBzdGF0aWMgdm9pZAogcGRfZGVhY3RpdmF0 ZSAodm9pZCkKIHsKLSAgaWYgKCFwZF9hY3RpdmUpCisgIGlmIChzdGQ6OmZp bmQgKHBkX2FjdGl2ZS5iZWdpbiAoKSwgcGRfYWN0aXZlLmVuZCAoKSwgaW5m ZXJpb3JfcHRpZC5waWQgKCkpCisgICAgPT0gcGRfYWN0aXZlLmVuZCAoKSkK ICAgICByZXR1cm47Ci0gIHB0aGRiX3Nlc3Npb25fZGVzdHJveSAocGRfc2Vz c2lvbik7CisgIHB0aGRiX3Nlc3Npb25fZGVzdHJveSAocGRfc2Vzc2lvbi5l cmFzZSAoaW5mZXJpb3JfcHRpZC5waWQgKCkpKTsKICAgCiAgIHBpZF90b19w cmMgKCZpbmZlcmlvcl9wdGlkKTsKLSAgcGRfYWN0aXZlID0gMDsKKyAgcGRf YWN0aXZlLmVyYXNlIChzdGQ6OmZpbmQgKHBkX2FjdGl2ZS5iZWdpbiAoKSwg cGRfYWN0aXZlLmVuZCAoKSwgaW5mZXJpb3JfcHRpZC5waWQgKCkpKTsKIH0K IAogLyogQW4gb2JqZWN0IGZpbGUgaGFzIGp1c3QgYmVlbiBsb2FkZWQuICBD aGVjayB3aGV0aGVyIHRoZSBjdXJyZW50CiAgICBhcHBsaWNhdGlvbiBpcyBw dGhyZWFkZWQsIGFuZCBpZiBzbywgcHJlcGFyZSBmb3IgdGhyZWFkIGRlYnVn Z2luZy4gICovCiAKIHN0YXRpYyB2b2lkCi1wZF9lbmFibGUgKHZvaWQpCitw ZF9lbmFibGUgKGluZmVyaW9yICppbmYpCiB7CiAgIGludCBzdGF0dXM7CiAg IGNoYXIgKnN0dWJfbmFtZTsKICAgc3RydWN0IGJvdW5kX21pbmltYWxfc3lt Ym9sIG1zOworICBwaWRfdCBwaWQgPSAoaW5mID09IE5VTEw/aW5mZXJpb3Jf cHRpZC5waWQgKCk6aW5mLT5waWQpOwogCiAgIC8qIERvbid0IGluaXRpYWxp emUgdHdpY2UuICAqLwotICBpZiAocGRfYWJsZSkKKyAgaWYgKHN0ZDo6Zmlu ZCAocGRfYWJsZS5iZWdpbiAoKSwgcGRfYWJsZS5lbmQgKCksIHBpZCkgCisJ IT0gcGRfYWJsZS5lbmQgKCkpCiAgICAgcmV0dXJuOwogCiAgIC8qIENoZWNr IGFwcGxpY2F0aW9uIHdvcmQgc2l6ZS4gICovCkBAIC05NjIsNyArOTc0LDcg QEAgcGRfZW5hYmxlICh2b2lkKQogCiAgIC8qIENoZWNrIHdoZXRoZXIgdGhl IGFwcGxpY2F0aW9uIGlzIHB0aHJlYWRlZC4gICovCiAgIHN0dWJfbmFtZSA9 IE5VTEw7Ci0gIHN0YXR1cyA9IHB0aGRiX3Nlc3Npb25fcHRocmVhZGVkIChp bmZlcmlvcl9wdGlkLnBpZCAoKSwgUFRIREJfRkxBR19SRUdTLAorICBzdGF0 dXMgPSBwdGhkYl9zZXNzaW9uX3B0aHJlYWRlZCAocGlkLCBQVEhEQl9GTEFH X1JFR1MsCiAJCQkJICAgICZwZF9jYWxsYmFja3MsICZzdHViX25hbWUpOwog ICBpZiAoKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTCiAgICAgICAgJiYgc3Rh dHVzICE9IFBUSERCX05PVF9QVEhSRUFERUQpIHx8ICFzdHViX25hbWUpCkBA IC05NzIsMTggKzk4NCwyMCBAQCBwZF9lbmFibGUgKHZvaWQpCiAgIG1zID0g bG9va3VwX21pbmltYWxfc3ltYm9sIChzdHViX25hbWUsIE5VTEwsIE5VTEwp OwogICBpZiAobXMubWluc3ltID09IE5VTEwpCiAgICAgcmV0dXJuOwotICBw ZF9icmtfYWRkciA9IG1zLnZhbHVlX2FkZHJlc3MgKCk7Ci0gIGlmICghY3Jl YXRlX3RocmVhZF9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAo KSwgcGRfYnJrX2FkZHIpKQorICBwZF9icmtfYWRkci5pbnNlcnQgKHtwaWQs IG1zLnZhbHVlX2FkZHJlc3MgKCl9KTsKKworICBpZiAoIWNyZWF0ZV90aHJl YWRfZXZlbnRfYnJlYWtwb2ludCAodGFyZ2V0X2dkYmFyY2ggKCksIHBkX2Jy a19hZGRyW3BpZF0pKQogICAgIHJldHVybjsKIAogICAvKiBQcmVwYXJlIGZv ciB0aHJlYWQgZGVidWdnaW5nLiAgKi8KICAgY3VycmVudF9pbmZlcmlvciAo KS0+cHVzaF90YXJnZXQgKCZhaXhfdGhyZWFkX29wcyk7Ci0gIHBkX2FibGUg PSAxOworCisgIHBkX2FibGUucHVzaF9iYWNrIChwaWQpOwogCiAgIC8qIElm IHdlJ3JlIGRlYnVnZ2luZyBhIGNvcmUgZmlsZSBvciBhbiBhdHRhY2hlZCBp bmZlcmlvciwgdGhlCiAgICAgIHB0aHJlYWQgbGlicmFyeSBtYXkgYWxyZWFk eSBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQsIHNvIHRyeSB0bwogICAgICBhY3Rp dmF0ZSB0aHJlYWQgZGVidWdnaW5nLiAgKi8KLSAgcGRfYWN0aXZhdGUgKGlu ZmVyaW9yX3B0aWQucGlkICgpKTsKKyAgcGRfYWN0aXZhdGUgKHBpZCk7CiB9 CiAKIC8qIFVuZG8gdGhlIGVmZmVjdHMgb2YgcGRfZW5hYmxlKCkuICAqLwpA QCAtOTkxLDExICsxMDA1LDE0IEBAIHBkX2VuYWJsZSAodm9pZCkKIHN0YXRp YyB2b2lkCiBwZF9kaXNhYmxlICh2b2lkKQogewotICBpZiAoIXBkX2FibGUp CisgIGlmIChzdGQ6OmZpbmQgKHBkX2FibGUuYmVnaW4gKCksIHBkX2FibGUu ZW5kICgpLCAKKwlpbmZlcmlvcl9wdGlkLnBpZCAoKSkgPT0gcGRfYWJsZS5l bmQgKCkpCiAgICAgcmV0dXJuOwotICBpZiAocGRfYWN0aXZlKQorICBpZiAo c3RkOjpmaW5kIChwZF9hY3RpdmUuYmVnaW4gKCksIHBkX2FjdGl2ZS5lbmQg KCksCisgICAgICAgIGluZmVyaW9yX3B0aWQucGlkICgpKSAhPSBwZF9hY3Rp dmUuZW5kICgpKQogICAgIHBkX2RlYWN0aXZhdGUgKCk7Ci0gIHBkX2FibGUg PSAwOworICBwZF9hYmxlLmVyYXNlIChzdGQ6OmZpbmQgKHBkX2FibGUuYmVn aW4gKCksIHBkX2FibGUuZW5kICgpLCAKKwlpbmZlcmlvcl9wdGlkLnBpZCAo KSkpOwogICBjdXJyZW50X2luZmVyaW9yICgpLT51bnB1c2hfdGFyZ2V0ICgm YWl4X3RocmVhZF9vcHMpOwogfQogCkBAIC0xMDEwLDcgKzEwMjcsNyBAQCBz dGF0aWMgdm9pZAogbmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlKQogewogICBpZiAob2JqZmlsZSkKLSAgICBwZF9lbmFibGUgKCk7Cisg ICAgcGRfZW5hYmxlIChOVUxMKTsKICAgZWxzZQogICAgIHBkX2Rpc2FibGUg KCk7CiB9CkBAIC0xMDIwLDcgKzEwMzcsNyBAQCBuZXdfb2JqZmlsZSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUpCiBzdGF0aWMgdm9pZAogYWl4X3RocmVh ZF9pbmZlcmlvcl9jcmVhdGVkIChpbmZlcmlvciAqaW5mKQogewotICBwZF9l bmFibGUgKCk7CisgIHBkX2VuYWJsZSAoaW5mKTsKIH0KIAogLyogRGV0YWNo IGZyb20gdGhlIHByb2Nlc3MgYXR0YWNoZWQgdG8gYnkgYWl4X3RocmVhZF9h dHRhY2goKS4gICovCkBAIC0xMDk2LDcgKzExMTMsOCBAQCBhaXhfdGhyZWFk X3RhcmdldDo6d2FpdCAocHRpZF90IHB0aWQsIHN0cnVjdCB0YXJnZXRfd2Fp dHN0YXR1cyAqc3RhdHVzLAogICBnZGJfYXNzZXJ0IChwdGlkLmlzX3BpZCAo KSk7CiAKICAgLyogQ2hlY2sgd2hldGhlciBsaWJwdGhkZWJ1ZyBtaWdodCBi ZSByZWFkeSB0byBiZSBpbml0aWFsaXplZC4gICovCi0gIGlmICghcGRfYWN0 aXZlICYmIHN0YXR1cy0+a2luZCAoKSA9PSBUQVJHRVRfV0FJVEtJTkRfU1RP UFBFRAorICBpZiAoc3RkOjpmaW5kIChwZF9hY3RpdmUuYmVnaW4gKCksIHBk X2FjdGl2ZS5lbmQgKCksIHB0aWQucGlkICgpKSA9PSBwZF9hY3RpdmUuZW5k ICgpCisgICAgICAmJiBzdGF0dXMtPmtpbmQgKCkgPT0gVEFSR0VUX1dBSVRL SU5EX1NUT1BQRUQKICAgICAgICYmIHN0YXR1cy0+c2lnICgpID09IEdEQl9T SUdOQUxfVFJBUCkKICAgICB7CiAgICAgICBwcm9jZXNzX3N0cmF0dW1fdGFy Z2V0ICpwcm9jX3RhcmdldApAQCAtMTEwNSw3ICsxMTIzLDcgQEAgYWl4X3Ro cmVhZF90YXJnZXQ6OndhaXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFyZ2V0 X3dhaXRzdGF0dXMgKnN0YXR1cywKICAgICAgIHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoID0gcmVnY2FjaGUtPmFyY2ggKCk7CiAKICAgICAgIGlmIChyZWdj YWNoZV9yZWFkX3BjIChyZWdjYWNoZSkKLQkgIC0gZ2RiYXJjaF9kZWNyX3Bj X2FmdGVyX2JyZWFrIChnZGJhcmNoKSA9PSBwZF9icmtfYWRkcikKKwkgIC0g Z2RiYXJjaF9kZWNyX3BjX2FmdGVyX2JyZWFrIChnZGJhcmNoKSA9PSBwZF9i cmtfYWRkcltwdGlkLnBpZCAoKV0pCiAJcmV0dXJuIHBkX2FjdGl2YXRlIChw dGlkLnBpZCAoKSk7CiAgICAgfQogCkBAIC0xMjMzLDcgKzEyNTEsNyBAQCBm ZXRjaF9yZWdzX3VzZXJfdGhyZWFkIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCBwdGhkYl9wdGhyZWFkX3QgcGR0aWQpCiAgIGlmIChkZWJ1Z19haXhf dGhyZWFkKQogICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csIAogCQkiZmV0 Y2hfcmVnc191c2VyX3RocmVhZCAlbHhcbiIsIChsb25nKSBwZHRpZCk7Ci0g IHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfY29udGV4dCAocGRfc2Vzc2lvbiwg cGR0aWQsICZjdHgpOworICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX2NvbnRl eHQgKHBkX3Nlc3Npb24gW2luZmVyaW9yX3B0aWQucGlkICgpXSwgcGR0aWQs ICZjdHgpOwogICBpZiAoc3RhdHVzICE9IFBUSERCX1NVQ0NFU1MpCiAgICAg ZXJyb3IgKF8oImFpeC10aHJlYWQ6IGZldGNoX3JlZ2lzdGVyczogcHRoZGJf cHRocmVhZF9jb250ZXh0IHJldHVybmVkICVzIiksCiAJICAgcGRfc3RhdHVz MnN0ciAoc3RhdHVzKSk7CkBAIC0xNTE4LDcgKzE1MzYsNyBAQCBzdG9yZV9y ZWdzX3VzZXJfdGhyZWFkIChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCBwdGhkYl9wdGhyZWFkX3QgcGR0aWQpCiAKICAgLyogUmV0cmlldmUg dGhlIHRocmVhZCdzIGN1cnJlbnQgY29udGV4dCBmb3IgaXRzIG5vbi1yZWdp c3RlcgogICAgICB2YWx1ZXMuICAqLwotICBzdGF0dXMgPSBwdGhkYl9wdGhy ZWFkX2NvbnRleHQgKHBkX3Nlc3Npb24sIHBkdGlkLCAmY3R4KTsKKyAgc3Rh dHVzID0gcHRoZGJfcHRocmVhZF9jb250ZXh0IChwZF9zZXNzaW9uIFtpbmZl cmlvcl9wdGlkLnBpZCAoKV0sIHBkdGlkLCAmY3R4KTsKICAgaWYgKHN0YXR1 cyAhPSBQVEhEQl9TVUNDRVNTKQogICAgIGVycm9yIChfKCJhaXgtdGhyZWFk OiBzdG9yZV9yZWdpc3RlcnM6IHB0aGRiX3B0aHJlYWRfY29udGV4dCByZXR1 cm5lZCAlcyIpLAogCSAgIHBkX3N0YXR1czJzdHIgKHN0YXR1cykpOwpAQCAt MTU3Niw3ICsxNTk0LDcgQEAgc3RvcmVfcmVnc191c2VyX3RocmVhZCAoY29u c3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJfcHRocmVhZF90 IHBkdGlkKQogCWN0eC5mcHNjciA9IHRtcF9mcHNjcjsKICAgICB9CiAKLSAg c3RhdHVzID0gcHRoZGJfcHRocmVhZF9zZXRjb250ZXh0IChwZF9zZXNzaW9u LCBwZHRpZCwgJmN0eCk7CisgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfc2V0 Y29udGV4dCAocGRfc2Vzc2lvbltpbmZlcmlvcl9wdGlkLnBpZCAoKV0sIHBk dGlkLCAmY3R4KTsKICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTKQog ICAgIGVycm9yIChfKCJhaXgtdGhyZWFkOiBzdG9yZV9yZWdpc3RlcnM6ICIK IAkgICAgICJwdGhkYl9wdGhyZWFkX3NldGNvbnRleHQgcmV0dXJuZWQgJXMi KSwKQEAgLTE4MDAsMjQgKzE4MTgsMjQgQEAgYWl4X3RocmVhZF90YXJnZXQ6 OmV4dHJhX3RocmVhZF9pbmZvIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVh ZCkKICAgICAvKiBpMThuOiBMaWtlICJ0aHJlYWQtaWRlbnRpZmllciAlZCwg W3N0YXRlXSBydW5uaW5nLCBzdXNwZW5kZWQiICovCiAgICAgYnVmLnByaW50 ZiAoXygidGlkICVkIiksIChpbnQpdGlkKTsKIAotICBzdGF0dXMgPSBwdGhk Yl9wdGhyZWFkX3N0YXRlIChwZF9zZXNzaW9uLCBwZHRpZCwgJnN0YXRlKTsK KyAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9zdGF0ZSAocGRfc2Vzc2lvbltp bmZlcmlvcl9wdGlkLnBpZCAoKV0sIHBkdGlkLCAmc3RhdGUpOwogICBpZiAo c3RhdHVzICE9IFBUSERCX1NVQ0NFU1MpCiAgICAgc3RhdGUgPSBQU1RfTk9U U1VQOwogICBidWYucHJpbnRmICgiLCAlcyIsIHN0YXRlMnN0ciAoc3RhdGUp KTsKIAotICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3N1c3BlbmRzdGF0ZSAo cGRfc2Vzc2lvbiwgcGR0aWQsIAorICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFk X3N1c3BlbmRzdGF0ZSAocGRfc2Vzc2lvbltpbmZlcmlvcl9wdGlkLnBpZCAo KV0sIHBkdGlkLCAKIAkJCQkgICAgICAgJnN1c3BlbmRzdGF0ZSk7CiAgIGlm IChzdGF0dXMgPT0gUFRIREJfU1VDQ0VTUyAmJiBzdXNwZW5kc3RhdGUgPT0g UFNTX1NVU1BFTkRFRCkKICAgICAvKiBpMThuOiBMaWtlICJUaHJlYWQtSWQg JWQsIFtzdGF0ZV0gcnVubmluZywgc3VzcGVuZGVkIiAqLwogICAgIGJ1Zi5w cmludGYgKF8oIiwgc3VzcGVuZGVkIikpOwogCi0gIHN0YXR1cyA9IHB0aGRi X3B0aHJlYWRfZGV0YWNoc3RhdGUgKHBkX3Nlc3Npb24sIHBkdGlkLCAKKyAg c3RhdHVzID0gcHRoZGJfcHRocmVhZF9kZXRhY2hzdGF0ZSAocGRfc2Vzc2lv bltpbmZlcmlvcl9wdGlkLnBpZCAoKV0sIHBkdGlkLCAKIAkJCQkgICAgICAm ZGV0YWNoc3RhdGUpOwogICBpZiAoc3RhdHVzID09IFBUSERCX1NVQ0NFU1Mg JiYgZGV0YWNoc3RhdGUgPT0gUERTX0RFVEFDSEVEKQogICAgIC8qIGkxOG46 IExpa2UgIlRocmVhZC1JZCAlZCwgW3N0YXRlXSBydW5uaW5nLCBkZXRhY2hl ZCIgKi8KICAgICBidWYucHJpbnRmIChfKCIsIGRldGFjaGVkIikpOwogCi0g IHB0aGRiX3B0aHJlYWRfY2FuY2VscGVuZCAocGRfc2Vzc2lvbiwgcGR0aWQs ICZjYW5jZWxwZW5kKTsKKyAgcHRoZGJfcHRocmVhZF9jYW5jZWxwZW5kIChw ZF9zZXNzaW9uW2luZmVyaW9yX3B0aWQucGlkICgpXSwgcGR0aWQsICZjYW5j ZWxwZW5kKTsKICAgaWYgKHN0YXR1cyA9PSBQVEhEQl9TVUNDRVNTICYmIGNh bmNlbHBlbmQpCiAgICAgLyogaTE4bjogTGlrZSAiVGhyZWFkLUlkICVkLCBb c3RhdGVdIHJ1bm5pbmcsIGNhbmNlbCBwZW5kaW5nIiAqLwogICAgIGJ1Zi5w cmludGYgKF8oIiwgY2FuY2VsIHBlbmRpbmciKSk7CmRpZmYgLS1naXQgYS9n ZGIvc29saWItYWl4LmMgYi9nZGIvc29saWItYWl4LmMKaW5kZXggZjQ4M2Y1 NGRlMTMuLjE4MTE0MGIzMzQ1IDEwMDY0NAotLS0gYS9nZGIvc29saWItYWl4 LmMKKysrIGIvZ2RiL3NvbGliLWFpeC5jCkBAIC02MTgsNiArNjE4LDEyIEBA IHNvbGliX2FpeF9iZmRfb3BlbiAoY29uc3QgY2hhciAqcGF0aG5hbWUpCiAg ICAgICBpZiAobWVtYmVyX25hbWUgPT0gYmZkX2dldF9maWxlbmFtZSAob2Jq ZWN0X2JmZC5nZXQgKCkpKQogCWJyZWFrOwogCisgICAgICBzdGQ6OnN0cmlu ZyBzID0gYmZkX2dldF9maWxlbmFtZSAob2JqZWN0X2JmZC5nZXQgKCkpOwor ICAgICAgaWYgKHMuZmluZCAobWVtYmVyX25hbWUpICE9IHN0ZDo6c3RyaW5n OjpucG9zKQorICAgICAgeworCXJldHVybiBvYmplY3RfYmZkOworICAgICAg fQorCiAgICAgICBvYmplY3RfYmZkID0gZ2RiX2JmZF9vcGVucl9uZXh0X2Fy Y2hpdmVkX2ZpbGUgKGFyY2hpdmVfYmZkLmdldCAoKSwKIAkJCQkJCSAgICAg b2JqZWN0X2JmZC5nZXQgKCkpOwogICAgIH0KLS0gCjIuMzEuMQoK --_004_BY5PR15MB3540261B391EA10F29AF5120D6C29BY5PR15MB3540namp_--