From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id +FtMLZplwWNRBBYAWB0awg (envelope-from ) for ; Fri, 13 Jan 2023 09:07:22 -0500 Received: by simark.ca (Postfix, from userid 112) id B59F51E128; Fri, 13 Jan 2023 09:07:22 -0500 (EST) Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=qSynf+Z3; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-8.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 414A61E112 for ; Fri, 13 Jan 2023 09:07:22 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7055B3858004 for ; Fri, 13 Jan 2023 14:07:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7055B3858004 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1673618841; bh=5b5SsPbIJbObySOkKXQWVjWZbncE/i32k9wIDWUPQvM=; h=To:CC:Subject:Date:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=qSynf+Z3Ish6tLh7oM/2z2SNb8eEeU4B9tdNvZqQygQ9IMYxd74udYpmjnM0qDtR5 Br4x2Cs73k2fXMBdQ2tEpA7xfkkgb1CcoWITPiPgveKk9FFQ7kW4y8N4cwWScZ/Fca Z3KvIEtTUTecIadZmK7oB+R2jsA6qIzt/drFok1Y= 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 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 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 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-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: , From: Aditya Kamath1 via Gdb-patches Reply-To: Aditya Kamath1 Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" --_004_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 --_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 RnJvbSA3ZGFlNGZhN2UzNzMyM2IzNTUzMDhlZGI4YjEzYzExOGI2YTJhZThhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFkaGFyIEthbWF0aCA8QWRpdHlhLkthbWF0 aDFAaWJtLmNvbT4KRGF0ZTogRnJpLCAxMyBKYW4gMjAyMyAwNjo0MzoxNCAtMDYwMApTdWJqZWN0 OiBbUEFUQ0hdIEZpeCBtdWx0aSB0aHJlYWQgZGVidWcgYnVnIGluIEFJWAoKLS0tCiBnZGIvYWl4 LXRocmVhZC5jIHwgMTQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiBnZGIvc29saWItYWl4LmMgIHwgICA2ICsrCiAyIGZpbGVzIGNoYW5nZWQsIDg5IGlu c2VydGlvbnMoKyksIDY1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dkYi9haXgtdGhyZWFk LmMgYi9nZGIvYWl4LXRocmVhZC5jCmluZGV4IGU1NTZjMTUzNTc2Li41ODk0ZjNlY2M3ZCAxMDA2 NDQKLS0tIGEvZ2RiL2FpeC10aHJlYWQuYworKysgYi9nZGIvYWl4LXRocmVhZC5jCkBAIC01NSw2 ICs1NSw4IEBACiAjaW5jbHVkZSA8c3lzL3JlZy5oPgogI2luY2x1ZGUgPHNjaGVkLmg+CiAjaW5j bHVkZSA8c3lzL3B0aGRlYnVnLmg+CisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPG1hcD4K IAogI2lmICFIQVZFX0RFQ0xfR0VUVEhSRFMKIGV4dGVybiBpbnQgZ2V0dGhyZHMgKHBpZF90LCBz dHJ1Y3QgdGhyZHNpbmZvNjQgKiwgaW50LCB0aWRfdCAqLCBpbnQpOwpAQCAtNzAsNyArNzIsNyBA QCBzdGF0aWMgYm9vbCBkZWJ1Z19haXhfdGhyZWFkOwogCiAvKiBSZXR1cm4gd2hldGhlciB0byB0 cmVhdCBQSUQgYXMgYSBkZWJ1Z2dhYmxlIHRocmVhZCBpZC4gICovCiAKLSNkZWZpbmUgUERfVElE KHB0aWQpCShwZF9hY3RpdmUgJiYgcHRpZC50aWQgKCkgIT0gMCkKKyNkZWZpbmUgUERfVElEKHB0 aWQpCShzdGQ6OmZpbmQgKHBkX2FjdGl2ZS5iZWdpbiAoKSwgcGRfYWN0aXZlLmVuZCAoKSwgcHRp ZC5waWQgKCkpICE9IHBkX2FjdGl2ZS5lbmQgKCkgJiYgcHRpZC50aWQgKCkgIT0gMCkKIAogLyog U3VjY2VzcyBhbmQgZmFpbHVyZSB2YWx1ZXMgcmV0dXJuZWQgYnkgcHRoZGIgY2FsbGJhY2tzLiAg Ki8KIApAQCAtMTQyLDIwICsxNDQsMjAgQEAgY2xhc3MgYWl4X3RocmVhZF90YXJnZXQgZmluYWwg OiBwdWJsaWMgdGFyZ2V0X29wcwogICBwdGlkX3QgZ2V0X2FkYV90YXNrX3B0aWQgKGxvbmcgbHdw LCBVTE9OR0VTVCB0aHJlYWQpIG92ZXJyaWRlOwogfTsKIAotc3RhdGljIGFpeF90aHJlYWRfdGFy Z2V0IGFpeF90aHJlYWRfb3BzOworICBzdGF0aWMgYWl4X3RocmVhZF90YXJnZXQgYWl4X3RocmVh ZF9vcHM7CiAKIC8qIEFkZHJlc3Mgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgbGlicHRocmVhZCB3aWxs IGNhbGwgd2hlbiBsaWJwdGhkZWJ1ZwogICAgaXMgcmVhZHkgdG8gYmUgaW5pdGlhbGl6ZWQuICAq LwogCi1zdGF0aWMgQ09SRV9BRERSIHBkX2Jya19hZGRyOworIHN0YXRpYyBzdGQ6Om1hcDxwaWRf dCwgQ09SRV9BRERSPiBwZF9icmtfYWRkcjsKIAogLyogV2hldGhlciB0aGUgY3VycmVudCBhcHBs aWNhdGlvbiBpcyBkZWJ1Z2dhYmxlIGJ5IHB0aGRiLiAgKi8KIAotc3RhdGljIGludCBwZF9hYmxl ID0gMDsKK3N0YXRpYyBzdGQ6OnZlY3RvcjxwaWRfdD4gcGRfYWJsZTsKIAogLyogV2hldGhlciBh IHRocmVhZGVkIGFwcGxpY2F0aW9uIGlzIGJlaW5nIGRlYnVnZ2VkLiAgKi8KIAotc3RhdGljIGlu dCBwZF9hY3RpdmUgPSAwOworc3RhdGljIHN0ZDo6dmVjdG9yPHBpZF90PiBwZF9hY3RpdmU7CiAK IC8qIFdoZXRoZXIgdGhlIGN1cnJlbnQgYXJjaGl0ZWN0dXJlIGlzIDY0LWJpdC4gIAogICAgT25s eSB2YWxpZCB3aGVuIHBkX2FibGUgaXMgdHJ1ZS4gICovCkBAIC0xOTMsNyArMTk1LDcgQEAgc3Rh dGljIHB0aGRiX2NhbGxiYWNrc190IHBkX2NhbGxiYWNrcyA9IHsKIAogLyogQ3VycmVudCBwdGhk YiBzZXNzaW9uLiAgKi8KIAotc3RhdGljIHB0aGRiX3Nlc3Npb25fdCBwZF9zZXNzaW9uOworc3Rh dGljIHN0ZDo6bWFwPHBpZF90LCBwdGhkYl9zZXNzaW9uX3Q+IHBkX3Nlc3Npb247CiAKIC8qIFJl dHVybiBhIHByaW50YWJsZSByZXByZXNlbnRhdGlvbiBvZiBwdGhkZWJ1ZyBmdW5jdGlvbiByZXR1 cm4KICAgIFNUQVRVUy4gICovCkBAIC0zMzEsNiArMzMzLDkgQEAgcGRjX3N5bWJvbF9hZGRycyAo cHRoZGJfdXNlcl90IHVzZXJfY3VycmVudF9waWQsIHB0aGRiX3N5bWJvbF90ICpzeW1ib2xzLCBp bnQgY28KICAgc3RydWN0IGJvdW5kX21pbmltYWxfc3ltYm9sIG1zOwogICBpbnQgaTsKICAgY2hh ciAqbmFtZTsKKyAgc2NvcGVkX3Jlc3RvcmVfY3VycmVudF9wcm9ncmFtX3NwYWNlIHJlc3RvcmVf cHNwYWNlOyAKKyAgaW5mZXJpb3IgKmluZiA9IGZpbmRfaW5mZXJpb3JfcGlkIChjdXJyZW50X2lu ZmVyaW9yICgpLT5wcm9jZXNzX3RhcmdldCAoKSwgdXNlcl9jdXJyZW50X3BpZCk7CisgIHNldF9j dXJyZW50X3Byb2dyYW1fc3BhY2UgKGluZi0+cHNwYWNlKTsKIAogICBpZiAoZGVidWdfYWl4X3Ro cmVhZCkKICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLApAQCAtNTA4LDE0ICs1MTMsMTMgQEAg cGRjX3JlYWRfZGF0YSAocHRoZGJfdXNlcl90IHVzZXJfY3VycmVudF9waWQsIHZvaWQgKmJ1ZiwK ICAgLyogVGhpcyBpcyBuZWVkZWQgdG8gZWxpbWluYXRlIHRoZSBkZXBlbmRlbmN5IG9mIGN1cnJl bnQgdGhyZWFkCiAgICAgIHdoaWNoIGlzIG51bGwgc28gdGhhdCB0aHJlYWQgcmVhZHMgdGhlIGNv cnJlY3QgdGFyZ2V0IG1lbW9yeS4gICovCiAgIHsKLSAgICBzY29wZWRfcmVzdG9yZV9jdXJyZW50 X3RocmVhZCByZXN0b3JlX2N1cnJlbnRfdGhyZWFkOworICAgIHNjb3BlZF9yZXN0b3JlIHNhdmVf aW5mZXJpb3JfcHRpZCA9IG1ha2Vfc2NvcGVkX3Jlc3RvcmUgKCZpbmZlcmlvcl9wdGlkKTsKICAg ICAvKiBCZWZvcmUgdGhlIGZpcnN0IGluZmVyaW9yIGlzIGFkZGVkLCB3ZSBwYXNzIGluZmVyaW9y X3B0aWQucGlkICgpCiAgICAgICAgZnJvbSBwZF9lbmFibGUgKCkgd2hpY2ggaXMgMC4gIFRoZXJl IGlzIG5vIG5lZWQgdG8gc3dpdGNoIHRocmVhZHMKICAgICAgICBkdXJpbmcgZmlyc3QgaW5pdGlh bGlzYXRpb24uICBJbiB0aGUgcmVzdCBvZiB0aGUgY2FsbGJhY2tzIHRoZQogICAgICAgIGN1cnJl bnQgdGhyZWFkIG5lZWRzIHRvIGJlIGNvcnJlY3QuICAqLwogICAgIGlmICh1c2VyX2N1cnJlbnRf cGlkICE9IDApCi0gICAgICBzd2l0Y2hfdG9fdGhyZWFkIChjdXJyZW50X2luZmVyaW9yICgpLT5w cm9jZXNzX3RhcmdldCAoKSwKLQkJCXB0aWRfdCAodXNlcl9jdXJyZW50X3BpZCkpOworICAgICAg aW5mZXJpb3JfcHRpZCA9IHB0aWRfdCAodXNlcl9jdXJyZW50X3BpZCk7CiAgICAgc3RhdHVzID0g dGFyZ2V0X3JlYWRfbWVtb3J5IChhZGRyLCAoZ2RiX2J5dGUgKikgYnVmLCBsZW4pOwogICB9CiAg IHJldCA9IHN0YXR1cyA9PSAwID8gUERDX1NVQ0NFU1MgOiBQRENfRkFJTFVSRTsKQEAgLTYzOSwz NiArNjQzLDIzIEBAIHBjbXAgKGNvbnN0IHZvaWQgKnAxdiwgY29uc3Qgdm9pZCAqcDJ2KQogICBy ZXR1cm4gcDEtPnB0aGlkIDwgcDItPnB0aGlkID8gLTEgOiBwMS0+cHRoaWQgPiBwMi0+cHRoaWQ7 CiB9CiAKLS8qIGl0ZXJhdGVfb3Zlcl90aHJlYWRzKCkgY2FsbGJhY2sgZm9yIGNvdW50aW5nIEdE QiB0aHJlYWRzLgotCi0gICBEbyBub3QgY291bnQgdGhlIG1haW4gdGhyZWFkICh3aG9zZSB0aWQg aXMgemVybykuICBUaGlzIG1hdGNoZXMKLSAgIHRoZSBsaXN0IG9mIHRocmVhZHMgcHJvdmlkZWQg YnkgdGhlIHB0aHJlYWRkZWJ1ZyBsaWJyYXJ5LCB3aGljaAotICAgZG9lcyBub3QgaW5jbHVkZSB0 aGF0IG1haW4gdGhyZWFkIGVpdGhlciwgYW5kIHRodXMgYWxsb3dzIHVzCi0gICB0byBjb21wYXJl IHRoZSB0d28gbGlzdHMuICAqLworLyogaXRlcmF0ZV9vdmVyX3RocmVhZHMoKSBjYWxsYmFjayBm b3IgY291bnRpbmcgR0RCIHRocmVhZHMuICAqLwogCiBzdGF0aWMgaW50CiBnaXRlcl9jb3VudCAo c3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQsIHZvaWQgKmNvdW50cCkKIHsKLSAgaWYgKFBEX1RJ RCAodGhyZWFkLT5wdGlkKSkKLSAgICAoKihpbnQgKikgY291bnRwKSsrOworICAoKihpbnQgKikg Y291bnRwKSsrOwogICByZXR1cm4gMDsKIH0KIAotLyogaXRlcmF0ZV9vdmVyX3RocmVhZHMoKSBj YWxsYmFjayBmb3IgYWNjdW11bGF0aW5nIEdEQiB0aHJlYWQgcGlkcy4KLQotICAgRG8gbm90IGlu Y2x1ZGUgdGhlIG1haW4gdGhyZWFkICh3aG9zZSB0aWQgaXMgemVybykuICBUaGlzIG1hdGNoZXMK LSAgIHRoZSBsaXN0IG9mIHRocmVhZHMgcHJvdmlkZWQgYnkgdGhlIHB0aHJlYWRkZWJ1ZyBsaWJy YXJ5LCB3aGljaAotICAgZG9lcyBub3QgaW5jbHVkZSB0aGF0IG1haW4gdGhyZWFkIGVpdGhlciwg YW5kIHRodXMgYWxsb3dzIHVzCi0gICB0byBjb21wYXJlIHRoZSB0d28gbGlzdHMuICAqLworLyog aXRlcmF0ZV9vdmVyX3RocmVhZHMoKSBjYWxsYmFjayBmb3IgYWNjdW11bGF0aW5nIEdEQiB0aHJl YWQgcGlkcy4gICovCiAKIHN0YXRpYyBpbnQKIGdpdGVyX2FjY3VtIChzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRocmVhZCwgdm9pZCAqYnVmcCkKIHsKLSAgaWYgKFBEX1RJRCAodGhyZWFkLT5wdGlkKSkK LSAgICB7Ci0gICAgICAqKihzdHJ1Y3QgdGhyZWFkX2luZm8gKioqKSBidWZwID0gdGhyZWFkOwot ICAgICAgKCooc3RydWN0IHRocmVhZF9pbmZvICoqKikgYnVmcCkrKzsKLSAgICB9CisgICoqKHN0 cnVjdCB0aHJlYWRfaW5mbyAqKiopIGJ1ZnAgPSB0aHJlYWQ7CisgICgqKHN0cnVjdCB0aHJlYWRf aW5mbyAqKiopIGJ1ZnApKys7CisKICAgcmV0dXJuIDA7CiB9CiAKQEAgLTcxOSw3ICs3MTAsNyBA QCBnZXRfc2lnbmFsZWRfdGhyZWFkIChpbnQgcGlkKQogCQkgICAgc2l6ZW9mICh0aHJpbmYpLCAm a3RpZCwgMSkgIT0gMSkKIAlicmVhazsKIAotICAgICAgaWYgKHRocmluZi50aV9jdXJzaWcgPT0g U0lHVFJBUCkKKyAgICAgIGlmICh0aHJpbmYudGlfY3Vyc2lnKQogCXJldHVybiB0aHJpbmYudGlf dGlkOwogICAgIH0KIApAQCAtNzUwLDYgKzc0MSw5IEBAIHN5bmNfdGhyZWFkbGlzdHMgKGludCBw aWQpCiAgIHB0aGRiX3B0aHJlYWRfdCBwZHRpZDsKICAgcHRocmVhZF90IHB0aGlkOwogICBwdGhk Yl90aWRfdCB0aWQ7CisgIHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQgKnByb2NfdGFyZ2V0CisgICAg ICAgICAgICA9IGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgpOworICB0aHJl YWRfaW5mbyAgKnRwOwogCiAgIC8qIEFjY3VtdWxhdGUgYW4gYXJyYXkgb2YgbGlicHRoZGVidWcg dGhyZWFkcyBzb3J0ZWQgYnkgcHRocmVhZCBpZC4gICovCiAKQEAgLTc1OSwxMSArNzUzLDExIEBA IHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAKICAgZm9yIChjbWQgPSBQVEhEQl9MSVNUX0ZJ UlNUOzsgY21kID0gUFRIREJfTElTVF9ORVhUKQogICAgIHsKLSAgICAgIHN0YXR1cyA9IHB0aGRi X3B0aHJlYWQgKHBkX3Nlc3Npb24sICZwZHRpZCwgY21kKTsKKyAgICAgIHN0YXR1cyA9IHB0aGRi X3B0aHJlYWQgKHBkX3Nlc3Npb25bcGlkXSwgJnBkdGlkLCBjbWQpOwogICAgICAgaWYgKHN0YXR1 cyAhPSBQVEhEQl9TVUNDRVNTIHx8IHBkdGlkID09IFBUSERCX0lOVkFMSURfUFRIUkVBRCkKIAli cmVhazsKIAotICAgICAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9wdGlkIChwZF9zZXNzaW9uLCBw ZHRpZCwgJnB0aGlkKTsKKyAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfcHRpZCAocGRfc2Vz c2lvbltwaWRdLCBwZHRpZCwgJnB0aGlkKTsKICAgICAgIGlmIChzdGF0dXMgIT0gUFRIREJfU1VD Q0VTUyB8fCBwdGhpZCA9PSBQVEhEQl9JTlZBTElEX1BUSUQpCiAJY29udGludWU7CiAKQEAgLTc4 MCw3ICs3NzQsNyBAQCBzeW5jX3RocmVhZGxpc3RzIChpbnQgcGlkKQogCiAgIGZvciAocGkgPSAw OyBwaSA8IHBjb3VudDsgcGkrKykKICAgICB7Ci0gICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFk X3RpZCAocGRfc2Vzc2lvbiwgcGJ1ZltwaV0ucGR0aWQsICZ0aWQpOworICAgICAgc3RhdHVzID0g cHRoZGJfcHRocmVhZF90aWQgKHBkX3Nlc3Npb25bcGlkXSwgcGJ1ZltwaV0ucGR0aWQsICZ0aWQp OwogICAgICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTKQogCXRpZCA9IFBUSERCX0lOVkFM SURfVElEOwogICAgICAgcGJ1ZltwaV0udGlkID0gdGlkOwpAQCAtODEwLDggKzgwNCw2IEBAIHN5 bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAJICBwcml2LT5wZHRpZCA9IHBidWZbcGldLnBkdGlk OwogCSAgcHJpdi0+dGlkID0gcGJ1ZltwaV0udGlkOwogCi0JICBwcm9jZXNzX3N0cmF0dW1fdGFy Z2V0ICpwcm9jX3RhcmdldAotCSAgICA9IGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFy Z2V0ICgpOwogCSAgdGhyZWFkID0gYWRkX3RocmVhZF93aXRoX2luZm8gKHByb2NfdGFyZ2V0LAog CQkJCQkgcHRpZF90IChwaWQsIDAsIHBidWZbcGldLnB0aGlkKSwKIAkJCQkJIHByaXYpOwpAQCAt ODQxLDggKzgzMywyMiBAQCBzeW5jX3RocmVhZGxpc3RzIChpbnQgcGlkKQogCSAgICB9CiAJICBl bHNlIGlmIChjbXBfcmVzdWx0ID4gMCkKIAkgICAgewotCSAgICAgIGRlbGV0ZV90aHJlYWQgKGdi dWZbZ2ldKTsKLQkgICAgICBnaSsrOworICAgICAgICAgICAgICBpZiAoZ3B0aWQuaXNfcGlkICgp ICYmIGdwdGlkLnBpZCAoKSA9PSBwcHRpZC5waWQgKCkpCisgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgdGhyZWFkX2NoYW5nZV9wdGlkIChwcm9jX3RhcmdldCwgZ3B0aWQsIHBw dGlkKTsKKyAgICAgICAgICAgICAgICAgIGFpeF90aHJlYWRfaW5mbyAqcHJpdiA9IG5ldyBhaXhf dGhyZWFkX2luZm87CisgICAgICAgICAgICAgICAgICBwcml2LT5wZHRpZCA9IHBidWZbcGldLnBk dGlkOworICAgICAgICAgICAgICAgICAgcHJpdi0+dGlkID0gcGJ1ZltwaV0udGlkOworICAgICAg ICAgICAgICAgICAgdHAgPSBmaW5kX3RocmVhZF9wdGlkIChwcm9jX3RhcmdldCwgcHB0aWQpOwor ICAgICAgICAgICAgICAgICAgdHAtPnByaXYucmVzZXQgKHByaXYpOworICAgICAgICAgICAgICAg ICAgcGkrKzsKKyAgICAgICAgICAgICAgICAgIGdpKys7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgZGVs ZXRlX3RocmVhZCAoZ2J1ZltnaV0pOworICAgICAgICAgICAgICAgICAgZ2krKzsKKyAgICAgICAg ICAgICAgICB9CiAJICAgIH0KIAkgIGVsc2UKIAkgICAgewpAQCAtODg4LDEwICs4OTQsMTEgQEAg cGRfdXBkYXRlIChpbnQgcGlkKQogICBwdGhkYl90aWRfdCB0aWQ7CiAgIHN0cnVjdCB0aHJlYWRf aW5mbyAqdGhyZWFkID0gTlVMTDsKIAotICBpZiAoIXBkX2FjdGl2ZSkKKyAgaWYgKHN0ZDo6Zmlu ZCAocGRfYWN0aXZlLmJlZ2luICgpLCBwZF9hY3RpdmUuZW5kICgpLCBwaWQpCisgICAgPT0gcGRf YWN0aXZlLmVuZCAoKSkKICAgICByZXR1cm4gcHRpZF90IChwaWQpOwogCi0gIHN0YXR1cyA9IHB0 aGRiX3Nlc3Npb25fdXBkYXRlIChwZF9zZXNzaW9uKTsKKyAgc3RhdHVzID0gcHRoZGJfc2Vzc2lv bl91cGRhdGUgKHBkX3Nlc3Npb25bcGlkXSk7CiAgIGlmIChzdGF0dXMgIT0gUFRIREJfU1VDQ0VT UykKICAgICByZXR1cm4gcHRpZF90IChwaWQpOwogCkBAIC05MTgsMTUgKzkyNSwxNyBAQCBzdGF0 aWMgcHRpZF90CiBwZF9hY3RpdmF0ZSAoaW50IHBpZCkKIHsKICAgaW50IHN0YXR1czsKLQkJCisJ CiAgIHN0YXR1cyA9IHB0aGRiX3Nlc3Npb25faW5pdCAocGlkLCBhcmNoNjQgPyBQRU1fNjRCSVQg OiBQRU1fMzJCSVQsCiAJCQkgICAgICAgUFRIREJfRkxBR19SRUdTLCAmcGRfY2FsbGJhY2tzLCAK LQkJCSAgICAgICAmcGRfc2Vzc2lvbik7CisJCQkgICAgICAgJnBkX3Nlc3Npb25bcGlkXSk7CiAg IGlmIChzdGF0dXMgIT0gUFRIREJfU1VDQ0VTUykKICAgICB7CisgICAgICBwZF9zZXNzaW9uLmVy YXNlIChwaWQpOwogICAgICAgcmV0dXJuIHB0aWRfdCAocGlkKTsKICAgICB9Ci0gIHBkX2FjdGl2 ZSA9IDE7CisgIHByaW50ZiAoInBkX2FjdGl2YXRlZCBzdWNjZXNzZnVsbHkgZm9yIHBpZCAlZFxu IiwgcGlkKTsKKyAgcGRfYWN0aXZlLnB1c2hfYmFjayAocGlkKTsKICAgcmV0dXJuIHBkX3VwZGF0 ZSAocGlkKTsKIH0KIApAQCAtOTM1LDI2ICs5NDQsMjkgQEAgcGRfYWN0aXZhdGUgKGludCBwaWQp CiBzdGF0aWMgdm9pZAogcGRfZGVhY3RpdmF0ZSAodm9pZCkKIHsKLSAgaWYgKCFwZF9hY3RpdmUp CisgIGlmIChzdGQ6OmZpbmQgKHBkX2FjdGl2ZS5iZWdpbiAoKSwgcGRfYWN0aXZlLmVuZCAoKSwg aW5mZXJpb3JfcHRpZC5waWQgKCkpCisgICAgPT0gcGRfYWN0aXZlLmVuZCAoKSkKICAgICByZXR1 cm47Ci0gIHB0aGRiX3Nlc3Npb25fZGVzdHJveSAocGRfc2Vzc2lvbik7CisgIHB0aGRiX3Nlc3Np b25fZGVzdHJveSAocGRfc2Vzc2lvbi5lcmFzZSAoaW5mZXJpb3JfcHRpZC5waWQgKCkpKTsKICAg CiAgIHBpZF90b19wcmMgKCZpbmZlcmlvcl9wdGlkKTsKLSAgcGRfYWN0aXZlID0gMDsKKyAgcGRf YWN0aXZlLmVyYXNlIChzdGQ6OmZpbmQgKHBkX2FjdGl2ZS5iZWdpbiAoKSwgcGRfYWN0aXZlLmVu ZCAoKSwgaW5mZXJpb3JfcHRpZC5waWQgKCkpKTsKIH0KIAogLyogQW4gb2JqZWN0IGZpbGUgaGFz IGp1c3QgYmVlbiBsb2FkZWQuICBDaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50CiAgICBhcHBsaWNh dGlvbiBpcyBwdGhyZWFkZWQsIGFuZCBpZiBzbywgcHJlcGFyZSBmb3IgdGhyZWFkIGRlYnVnZ2lu Zy4gICovCiAKIHN0YXRpYyB2b2lkCi1wZF9lbmFibGUgKHZvaWQpCitwZF9lbmFibGUgKGluZmVy aW9yICppbmYpCiB7CiAgIGludCBzdGF0dXM7CiAgIGNoYXIgKnN0dWJfbmFtZTsKICAgc3RydWN0 IGJvdW5kX21pbmltYWxfc3ltYm9sIG1zOworICBwaWRfdCBwaWQgPSAoaW5mID09IE5VTEw/aW5m ZXJpb3JfcHRpZC5waWQgKCk6aW5mLT5waWQpOwogCiAgIC8qIERvbid0IGluaXRpYWxpemUgdHdp Y2UuICAqLwotICBpZiAocGRfYWJsZSkKKyAgaWYgKHN0ZDo6ZmluZCAocGRfYWJsZS5iZWdpbiAo KSwgcGRfYWJsZS5lbmQgKCksIHBpZCkgCisJIT0gcGRfYWJsZS5lbmQgKCkpCiAgICAgcmV0dXJu OwogCiAgIC8qIENoZWNrIGFwcGxpY2F0aW9uIHdvcmQgc2l6ZS4gICovCkBAIC05NjIsNyArOTc0 LDcgQEAgcGRfZW5hYmxlICh2b2lkKQogCiAgIC8qIENoZWNrIHdoZXRoZXIgdGhlIGFwcGxpY2F0 aW9uIGlzIHB0aHJlYWRlZC4gICovCiAgIHN0dWJfbmFtZSA9IE5VTEw7Ci0gIHN0YXR1cyA9IHB0 aGRiX3Nlc3Npb25fcHRocmVhZGVkIChpbmZlcmlvcl9wdGlkLnBpZCAoKSwgUFRIREJfRkxBR19S RUdTLAorICBzdGF0dXMgPSBwdGhkYl9zZXNzaW9uX3B0aHJlYWRlZCAocGlkLCBQVEhEQl9GTEFH X1JFR1MsCiAJCQkJICAgICZwZF9jYWxsYmFja3MsICZzdHViX25hbWUpOwogICBpZiAoKHN0YXR1 cyAhPSBQVEhEQl9TVUNDRVNTCiAgICAgICAgJiYgc3RhdHVzICE9IFBUSERCX05PVF9QVEhSRUFE RUQpIHx8ICFzdHViX25hbWUpCkBAIC05NzIsMTggKzk4NCwyMCBAQCBwZF9lbmFibGUgKHZvaWQp CiAgIG1zID0gbG9va3VwX21pbmltYWxfc3ltYm9sIChzdHViX25hbWUsIE5VTEwsIE5VTEwpOwog ICBpZiAobXMubWluc3ltID09IE5VTEwpCiAgICAgcmV0dXJuOwotICBwZF9icmtfYWRkciA9IG1z LnZhbHVlX2FkZHJlc3MgKCk7Ci0gIGlmICghY3JlYXRlX3RocmVhZF9ldmVudF9icmVha3BvaW50 ICh0YXJnZXRfZ2RiYXJjaCAoKSwgcGRfYnJrX2FkZHIpKQorICBwZF9icmtfYWRkci5pbnNlcnQg KHtwaWQsIG1zLnZhbHVlX2FkZHJlc3MgKCl9KTsKKworICBpZiAoIWNyZWF0ZV90aHJlYWRfZXZl bnRfYnJlYWtwb2ludCAodGFyZ2V0X2dkYmFyY2ggKCksIHBkX2Jya19hZGRyW3BpZF0pKQogICAg IHJldHVybjsKIAogICAvKiBQcmVwYXJlIGZvciB0aHJlYWQgZGVidWdnaW5nLiAgKi8KICAgY3Vy cmVudF9pbmZlcmlvciAoKS0+cHVzaF90YXJnZXQgKCZhaXhfdGhyZWFkX29wcyk7Ci0gIHBkX2Fi bGUgPSAxOworCisgIHBkX2FibGUucHVzaF9iYWNrIChwaWQpOwogCiAgIC8qIElmIHdlJ3JlIGRl YnVnZ2luZyBhIGNvcmUgZmlsZSBvciBhbiBhdHRhY2hlZCBpbmZlcmlvciwgdGhlCiAgICAgIHB0 aHJlYWQgbGlicmFyeSBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQsIHNvIHRyeSB0 bwogICAgICBhY3RpdmF0ZSB0aHJlYWQgZGVidWdnaW5nLiAgKi8KLSAgcGRfYWN0aXZhdGUgKGlu ZmVyaW9yX3B0aWQucGlkICgpKTsKKyAgcGRfYWN0aXZhdGUgKHBpZCk7CiB9CiAKIC8qIFVuZG8g dGhlIGVmZmVjdHMgb2YgcGRfZW5hYmxlKCkuICAqLwpAQCAtOTkxLDExICsxMDA1LDE0IEBAIHBk X2VuYWJsZSAodm9pZCkKIHN0YXRpYyB2b2lkCiBwZF9kaXNhYmxlICh2b2lkKQogewotICBpZiAo IXBkX2FibGUpCisgIGlmIChzdGQ6OmZpbmQgKHBkX2FibGUuYmVnaW4gKCksIHBkX2FibGUuZW5k ICgpLCAKKwlpbmZlcmlvcl9wdGlkLnBpZCAoKSkgPT0gcGRfYWJsZS5lbmQgKCkpCiAgICAgcmV0 dXJuOwotICBpZiAocGRfYWN0aXZlKQorICBpZiAoc3RkOjpmaW5kIChwZF9hY3RpdmUuYmVnaW4g KCksIHBkX2FjdGl2ZS5lbmQgKCksCisgICAgICAgIGluZmVyaW9yX3B0aWQucGlkICgpKSAhPSBw ZF9hY3RpdmUuZW5kICgpKQogICAgIHBkX2RlYWN0aXZhdGUgKCk7Ci0gIHBkX2FibGUgPSAwOwor ICBwZF9hYmxlLmVyYXNlIChzdGQ6OmZpbmQgKHBkX2FibGUuYmVnaW4gKCksIHBkX2FibGUuZW5k ICgpLCAKKwlpbmZlcmlvcl9wdGlkLnBpZCAoKSkpOwogICBjdXJyZW50X2luZmVyaW9yICgpLT51 bnB1c2hfdGFyZ2V0ICgmYWl4X3RocmVhZF9vcHMpOwogfQogCkBAIC0xMDEwLDcgKzEwMjcsNyBA QCBzdGF0aWMgdm9pZAogbmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQogewog ICBpZiAob2JqZmlsZSkKLSAgICBwZF9lbmFibGUgKCk7CisgICAgcGRfZW5hYmxlIChOVUxMKTsK ICAgZWxzZQogICAgIHBkX2Rpc2FibGUgKCk7CiB9CkBAIC0xMDIwLDcgKzEwMzcsNyBAQCBuZXdf b2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCiBzdGF0aWMgdm9pZAogYWl4X3RocmVh ZF9pbmZlcmlvcl9jcmVhdGVkIChpbmZlcmlvciAqaW5mKQogewotICBwZF9lbmFibGUgKCk7Cisg IHBkX2VuYWJsZSAoaW5mKTsKIH0KIAogLyogRGV0YWNoIGZyb20gdGhlIHByb2Nlc3MgYXR0YWNo ZWQgdG8gYnkgYWl4X3RocmVhZF9hdHRhY2goKS4gICovCkBAIC0xMDk2LDcgKzExMTMsOCBAQCBh aXhfdGhyZWFkX3RhcmdldDo6d2FpdCAocHRpZF90IHB0aWQsIHN0cnVjdCB0YXJnZXRfd2FpdHN0 YXR1cyAqc3RhdHVzLAogICBnZGJfYXNzZXJ0IChwdGlkLmlzX3BpZCAoKSk7CiAKICAgLyogQ2hl Y2sgd2hldGhlciBsaWJwdGhkZWJ1ZyBtaWdodCBiZSByZWFkeSB0byBiZSBpbml0aWFsaXplZC4g ICovCi0gIGlmICghcGRfYWN0aXZlICYmIHN0YXR1cy0+a2luZCAoKSA9PSBUQVJHRVRfV0FJVEtJ TkRfU1RPUFBFRAorICBpZiAoc3RkOjpmaW5kIChwZF9hY3RpdmUuYmVnaW4gKCksIHBkX2FjdGl2 ZS5lbmQgKCksIHB0aWQucGlkICgpKSA9PSBwZF9hY3RpdmUuZW5kICgpCisgICAgICAmJiBzdGF0 dXMtPmtpbmQgKCkgPT0gVEFSR0VUX1dBSVRLSU5EX1NUT1BQRUQKICAgICAgICYmIHN0YXR1cy0+ c2lnICgpID09IEdEQl9TSUdOQUxfVFJBUCkKICAgICB7CiAgICAgICBwcm9jZXNzX3N0cmF0dW1f dGFyZ2V0ICpwcm9jX3RhcmdldApAQCAtMTEwNSw3ICsxMTIzLDcgQEAgYWl4X3RocmVhZF90YXJn ZXQ6OndhaXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0dXMgKnN0YXR1cywK ICAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gcmVnY2FjaGUtPmFyY2ggKCk7CiAKICAg ICAgIGlmIChyZWdjYWNoZV9yZWFkX3BjIChyZWdjYWNoZSkKLQkgIC0gZ2RiYXJjaF9kZWNyX3Bj X2FmdGVyX2JyZWFrIChnZGJhcmNoKSA9PSBwZF9icmtfYWRkcikKKwkgIC0gZ2RiYXJjaF9kZWNy X3BjX2FmdGVyX2JyZWFrIChnZGJhcmNoKSA9PSBwZF9icmtfYWRkcltwdGlkLnBpZCAoKV0pCiAJ cmV0dXJuIHBkX2FjdGl2YXRlIChwdGlkLnBpZCAoKSk7CiAgICAgfQogCkBAIC0xMjMzLDcgKzEy NTEsNyBAQCBmZXRjaF9yZWdzX3VzZXJfdGhyZWFkIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCBwdGhkYl9wdGhyZWFkX3QgcGR0aWQpCiAgIGlmIChkZWJ1Z19haXhfdGhyZWFkKQogICAgIGdk Yl9wcmludGYgKGdkYl9zdGRsb2csIAogCQkiZmV0Y2hfcmVnc191c2VyX3RocmVhZCAlbHhcbiIs IChsb25nKSBwZHRpZCk7Ci0gIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfY29udGV4dCAocGRfc2Vz c2lvbiwgcGR0aWQsICZjdHgpOworICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX2NvbnRleHQgKHBk X3Nlc3Npb24gW2luZmVyaW9yX3B0aWQucGlkICgpXSwgcGR0aWQsICZjdHgpOwogICBpZiAoc3Rh dHVzICE9IFBUSERCX1NVQ0NFU1MpCiAgICAgZXJyb3IgKF8oImFpeC10aHJlYWQ6IGZldGNoX3Jl Z2lzdGVyczogcHRoZGJfcHRocmVhZF9jb250ZXh0IHJldHVybmVkICVzIiksCiAJICAgcGRfc3Rh dHVzMnN0ciAoc3RhdHVzKSk7CkBAIC0xNTE4LDcgKzE1MzYsNyBAQCBzdG9yZV9yZWdzX3VzZXJf dGhyZWFkIChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBwdGhkYl9wdGhyZWFkX3Qg cGR0aWQpCiAKICAgLyogUmV0cmlldmUgdGhlIHRocmVhZCdzIGN1cnJlbnQgY29udGV4dCBmb3Ig aXRzIG5vbi1yZWdpc3RlcgogICAgICB2YWx1ZXMuICAqLwotICBzdGF0dXMgPSBwdGhkYl9wdGhy ZWFkX2NvbnRleHQgKHBkX3Nlc3Npb24sIHBkdGlkLCAmY3R4KTsKKyAgc3RhdHVzID0gcHRoZGJf cHRocmVhZF9jb250ZXh0IChwZF9zZXNzaW9uIFtpbmZlcmlvcl9wdGlkLnBpZCAoKV0sIHBkdGlk LCAmY3R4KTsKICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTKQogICAgIGVycm9yIChfKCJh aXgtdGhyZWFkOiBzdG9yZV9yZWdpc3RlcnM6IHB0aGRiX3B0aHJlYWRfY29udGV4dCByZXR1cm5l ZCAlcyIpLAogCSAgIHBkX3N0YXR1czJzdHIgKHN0YXR1cykpOwpAQCAtMTU3Niw3ICsxNTk0LDcg QEAgc3RvcmVfcmVnc191c2VyX3RocmVhZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgcHRoZGJfcHRocmVhZF90IHBkdGlkKQogCWN0eC5mcHNjciA9IHRtcF9mcHNjcjsKICAgICB9 CiAKLSAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9zZXRjb250ZXh0IChwZF9zZXNzaW9uLCBwZHRp ZCwgJmN0eCk7CisgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfc2V0Y29udGV4dCAocGRfc2Vzc2lv bltpbmZlcmlvcl9wdGlkLnBpZCAoKV0sIHBkdGlkLCAmY3R4KTsKICAgaWYgKHN0YXR1cyAhPSBQ VEhEQl9TVUNDRVNTKQogICAgIGVycm9yIChfKCJhaXgtdGhyZWFkOiBzdG9yZV9yZWdpc3RlcnM6 ICIKIAkgICAgICJwdGhkYl9wdGhyZWFkX3NldGNvbnRleHQgcmV0dXJuZWQgJXMiKSwKQEAgLTE4 MDAsMjQgKzE4MTgsMjQgQEAgYWl4X3RocmVhZF90YXJnZXQ6OmV4dHJhX3RocmVhZF9pbmZvIChz dHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCkKICAgICAvKiBpMThuOiBMaWtlICJ0aHJlYWQtaWRl bnRpZmllciAlZCwgW3N0YXRlXSBydW5uaW5nLCBzdXNwZW5kZWQiICovCiAgICAgYnVmLnByaW50 ZiAoXygidGlkICVkIiksIChpbnQpdGlkKTsKIAotICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3N0 YXRlIChwZF9zZXNzaW9uLCBwZHRpZCwgJnN0YXRlKTsKKyAgc3RhdHVzID0gcHRoZGJfcHRocmVh ZF9zdGF0ZSAocGRfc2Vzc2lvbltpbmZlcmlvcl9wdGlkLnBpZCAoKV0sIHBkdGlkLCAmc3RhdGUp OwogICBpZiAoc3RhdHVzICE9IFBUSERCX1NVQ0NFU1MpCiAgICAgc3RhdGUgPSBQU1RfTk9UU1VQ OwogICBidWYucHJpbnRmICgiLCAlcyIsIHN0YXRlMnN0ciAoc3RhdGUpKTsKIAotICBzdGF0dXMg PSBwdGhkYl9wdGhyZWFkX3N1c3BlbmRzdGF0ZSAocGRfc2Vzc2lvbiwgcGR0aWQsIAorICBzdGF0 dXMgPSBwdGhkYl9wdGhyZWFkX3N1c3BlbmRzdGF0ZSAocGRfc2Vzc2lvbltpbmZlcmlvcl9wdGlk LnBpZCAoKV0sIHBkdGlkLCAKIAkJCQkgICAgICAgJnN1c3BlbmRzdGF0ZSk7CiAgIGlmIChzdGF0 dXMgPT0gUFRIREJfU1VDQ0VTUyAmJiBzdXNwZW5kc3RhdGUgPT0gUFNTX1NVU1BFTkRFRCkKICAg ICAvKiBpMThuOiBMaWtlICJUaHJlYWQtSWQgJWQsIFtzdGF0ZV0gcnVubmluZywgc3VzcGVuZGVk IiAqLwogICAgIGJ1Zi5wcmludGYgKF8oIiwgc3VzcGVuZGVkIikpOwogCi0gIHN0YXR1cyA9IHB0 aGRiX3B0aHJlYWRfZGV0YWNoc3RhdGUgKHBkX3Nlc3Npb24sIHBkdGlkLCAKKyAgc3RhdHVzID0g cHRoZGJfcHRocmVhZF9kZXRhY2hzdGF0ZSAocGRfc2Vzc2lvbltpbmZlcmlvcl9wdGlkLnBpZCAo KV0sIHBkdGlkLCAKIAkJCQkgICAgICAmZGV0YWNoc3RhdGUpOwogICBpZiAoc3RhdHVzID09IFBU SERCX1NVQ0NFU1MgJiYgZGV0YWNoc3RhdGUgPT0gUERTX0RFVEFDSEVEKQogICAgIC8qIGkxOG46 IExpa2UgIlRocmVhZC1JZCAlZCwgW3N0YXRlXSBydW5uaW5nLCBkZXRhY2hlZCIgKi8KICAgICBi dWYucHJpbnRmIChfKCIsIGRldGFjaGVkIikpOwogCi0gIHB0aGRiX3B0aHJlYWRfY2FuY2VscGVu ZCAocGRfc2Vzc2lvbiwgcGR0aWQsICZjYW5jZWxwZW5kKTsKKyAgcHRoZGJfcHRocmVhZF9jYW5j ZWxwZW5kIChwZF9zZXNzaW9uW2luZmVyaW9yX3B0aWQucGlkICgpXSwgcGR0aWQsICZjYW5jZWxw ZW5kKTsKICAgaWYgKHN0YXR1cyA9PSBQVEhEQl9TVUNDRVNTICYmIGNhbmNlbHBlbmQpCiAgICAg LyogaTE4bjogTGlrZSAiVGhyZWFkLUlkICVkLCBbc3RhdGVdIHJ1bm5pbmcsIGNhbmNlbCBwZW5k aW5nIiAqLwogICAgIGJ1Zi5wcmludGYgKF8oIiwgY2FuY2VsIHBlbmRpbmciKSk7CmRpZmYgLS1n aXQgYS9nZGIvc29saWItYWl4LmMgYi9nZGIvc29saWItYWl4LmMKaW5kZXggZjQ4M2Y1NGRlMTMu LjE4MTE0MGIzMzQ1IDEwMDY0NAotLS0gYS9nZGIvc29saWItYWl4LmMKKysrIGIvZ2RiL3NvbGli LWFpeC5jCkBAIC02MTgsNiArNjE4LDEyIEBAIHNvbGliX2FpeF9iZmRfb3BlbiAoY29uc3QgY2hh ciAqcGF0aG5hbWUpCiAgICAgICBpZiAobWVtYmVyX25hbWUgPT0gYmZkX2dldF9maWxlbmFtZSAo b2JqZWN0X2JmZC5nZXQgKCkpKQogCWJyZWFrOwogCisgICAgICBzdGQ6OnN0cmluZyBzID0gYmZk X2dldF9maWxlbmFtZSAob2JqZWN0X2JmZC5nZXQgKCkpOworICAgICAgaWYgKHMuZmluZCAobWVt YmVyX25hbWUpICE9IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAgeworCXJldHVybiBvYmplY3Rf YmZkOworICAgICAgfQorCiAgICAgICBvYmplY3RfYmZkID0gZ2RiX2JmZF9vcGVucl9uZXh0X2Fy Y2hpdmVkX2ZpbGUgKGFyY2hpdmVfYmZkLmdldCAoKSwKIAkJCQkJCSAgICAgb2JqZWN0X2JmZC5n ZXQgKCkpOwogICAgIH0KLS0gCjIuMzEuMQoK --_004_BY5PR15MB3540261B391EA10F29AF5120D6C29BY5PR15MB3540namp_--