From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id ULFsLcrr3GN92CgAWB0awg (envelope-from ) for ; Fri, 03 Feb 2023 06:11:06 -0500 Received: by simark.ca (Postfix, from userid 112) id B5A841E128; Fri, 3 Feb 2023 06:11:06 -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=WJ2wJmIr; 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 B01081E110 for ; Fri, 3 Feb 2023 06:11:02 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 218183858C20 for ; Fri, 3 Feb 2023 11:11:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 218183858C20 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1675422662; bh=RiTXjjzG8v3NKdSkCPMtBiYnetPhUX602H3LuKkD/Cw=; 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=WJ2wJmIryaVBHUv3xW5c8zJwN7suqJt6N89IVL7OcmI8W6b0G+jAQuDZ9shypsbwA Co7R/tEJ4nbRtUtW3GdX8bI8nn8TPXgjrsuFbB6OvEmcM+AvHpwbKB/4VZXCS3QUIw 8CTy+VK/FYhx5RWhZiosMtncJyGhDuLUTYywDuvs= Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id 935DC3858C52 for ; Fri, 3 Feb 2023 11:10:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 935DC3858C52 Received: from pps.filterd (m0098410.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 313AbTTA001270; Fri, 3 Feb 2023 11:10:34 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2109.outbound.protection.outlook.com [104.47.58.109]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3nh0p58nbn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 03 Feb 2023 11:10:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RKGcMuyHGoTm1r1bNzXVAfKcug4fiycb6CWWBcJKqKrORAeYpDqcHdE0jWrqj+CaeJdgq4GlIvD12GbAPcgpU6hHckPybC9a+fOOhSnjC+uscm8P6pURudHzDf/6sjvF9pdyj/6avF2vaO/bSq0CxBen9F5wgKGzZpZssp2bq24O3vcP9ePMW+Yn9eXkckrx/9VfFg8x3of4rPvZDJx13J8XztJggHLIzHKuiclNo2CGkSCa+oF9fwhJMTYIqZXCgsheDo3NlkosBo+DfXSJe5ziuEUTM0vU4B6GchCJ95cAAY5PB56twnzLR60yTcBgsdwFHWX/4/wrOyRgCakOgQ== 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=OwufQzWZtx59fk0Rl3mBZv/rXwxlFPEla8busKbt1c8=; b=V8O0WI1E0UFSjY3RFaPoqKVb9Yj9nH6/0r4SSXTOgQxMzQhj4BAtLE6cw6IC6ZJvMnRGOBk6g6K+XasHXv5fi+5FK6faIHMTtcWcLLHP8eGPplrl4Dvlk2HOOnj/+gAZe1orPUziDi5F5nN365GCcT4CN/J2kf+UG1r4DegEmU5u3DdjEtQCrd/xnskkNZgdiT7nats718U6ifaqueBHJqrhVGia/XXurmANQmb4crSzmAy/vtgXxkX0ScDZyMpL5m4QzHRM0AOy0s0X4snhd9x0w0l0M2NngnyyLG+up9qDNElq/uqk/nQJ4LadgswIc0D/1a8wIT1MsCMP7qRQVA== 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 DM6PR15MB3545.namprd15.prod.outlook.com (2603:10b6:5:1f6::27) by BL1PR15MB5362.namprd15.prod.outlook.com (2603:10b6:208:391::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.24; Fri, 3 Feb 2023 11:10:30 +0000 Received: from DM6PR15MB3545.namprd15.prod.outlook.com ([fe80::c5e6:712b:9f50:b51d]) by DM6PR15MB3545.namprd15.prod.outlook.com ([fe80::c5e6:712b:9f50:b51d%7]) with mapi id 15.20.6064.027; Fri, 3 Feb 2023 11:10:30 +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+iAAawUgIADF3ySgAshzACACvn7HoAI6B4pgAADGXOAALszAIABIz5J Date: Fri, 3 Feb 2023 11:10:30 +0000 Message-ID: References: <09f2433177505899c9bd31347af9b43118e4f890.camel@de.ibm.com> In-Reply-To: <09f2433177505899c9bd31347af9b43118e4f890.camel@de.ibm.com> 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: DM6PR15MB3545:EE_|BL1PR15MB5362:EE_ x-ms-office365-filtering-correlation-id: 73aa5b1a-1e03-4130-6173-08db05d742fc x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: hsm942D9joSMp+fXERugGeVfIobT4dzj1vkWcwp9TpQylbo60DKccIVC3XnXtS9NlMjdptvcdtbHupb5OjQ8stJ/7DOGAx/zvgTZzZUMvTrAoGg3CmxHc40rjt72cD1ZpLoHjO2ep2Nn1884a3z1zDV8f84U4s/OOyh5yttd1lqSXuYl6k37e8optTDrZxSzPrX4kCG3hOBjEYhqYC1Ze37g1VdKdwYU2TepOz85bZ39pCmr+sxpZCIhVSkBUJaP5YSgygSXSyYduraDQqE4G6acpwrKso854FEU/NMtc8NpMV8Yxn4XYHBQQ5XsgK92DlIIo7eNIBfY5Fen7VHVrssepwMuQpprzGQARFJlqm/HLND8tGTodp0/jocbLFuji7ODfAKkTYzZkCAuxyV6HzE7qRzEI61fkkmF5ji8JtWVFhExg4EpxHSEfXM/DJ01fwimu537xEvugVPzb+9ceByOqw42+q1ALhQMy+QN0pTuF0PyJHcq/4mmkx2tpZFTNkDzpiqbO/PyJ5LC9YthKXMjq5tHCVXx5eBEofXZXXgyScOmEdcYoPNd18ex+P7fQHLwXQhHvMsw21p8JVmbv1aws7+VCHZZhuOYrj5Q22oricUfK6mPitXzbq9BomGECDE/xI9qgRS2gKBZlWIr72fqLLI97dCb9Ax0Jdryhx46YPmvIbwoqjthwuzNkSOB1BT7ZWNVXZ1X00h9/ilc2Q== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR15MB3545.namprd15.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(346002)(39860400002)(136003)(396003)(366004)(376002)(451199018)(76116006)(4326008)(19627405001)(66946007)(64756008)(66476007)(66556008)(8676002)(41300700001)(91956017)(8936002)(66446008)(52536014)(316002)(2906002)(83380400001)(110136005)(5660300002)(33656002)(30864003)(55016003)(7696005)(99936003)(38100700002)(478600001)(86362001)(122000001)(9686003)(38070700005)(71200400001)(186003)(53546011)(6506007)(559001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?oqdnY3QrMH+PfcRTFjqqugFFb5PLmXGcFTPuSqDsLUWA8UYoRGE+AtYnkAP+?= =?us-ascii?Q?PXiz1hsltHE8ENLml1WULrRA83reizZJB2OEPLSsiqokLM5zJSO2Q4jcRH/x?= =?us-ascii?Q?fSnFMNGTS6Me7XxRt2B/6dtRGaQnlcGu4WLBdAtDKds4FI3DX1SrDs9Vlgf8?= =?us-ascii?Q?Yo6S52fKpvKy8GWm9/f+2saMMX+SNPlukNObQWk34R9YkwduuP4EFauqKPDi?= =?us-ascii?Q?ShC04x/nQ8gFeIiASDDLwEwcdkYIpfvS1uR7N+9y4rIIM4KGMe+I1ojvAK6e?= =?us-ascii?Q?XEGRNu894yRrdzoVT1G8DMdP8rLv1jmTAFFdvtRj72EGLnDFoaljiuc7xTMG?= =?us-ascii?Q?/izMxK070/TxQQ2W9YBmG0wMUWYVQrDM3JL0iLND4L4yzEANNfDxtGAxcchX?= =?us-ascii?Q?5XsZvDUXqO7dWZlJcVMH1P77Irpz3BpscKo7/QhAQJLHx7L9B0AiQVaVHNxr?= =?us-ascii?Q?tngrU9whtD586eSAOQ+Le3TUZYjxJsBlf6ZPRABHJcH8/jOcYMKZicGoNzAl?= =?us-ascii?Q?SNW9glHl9A1lcG6Cq6aHV74YM4mV74hCiSBbbl0Ch7RfAzbvv3zWtoCMhOUb?= =?us-ascii?Q?rqIE/OgDaVS+XAKtA56Yw1lY3ZcaZYXsp5VxTRnWJoBCxW87sbDS0HX9udRc?= =?us-ascii?Q?KF6NZ9ymwEwa3S3OY7rmGoa1WxR4ANIylLECW2pBXrGQxS60LZcxZqOP0Tam?= =?us-ascii?Q?HsYlU0kDNoORe3ds9CI3gFT/z+sjSosHyWua/nD7DSWs7QaGd1U7DotJW1sv?= =?us-ascii?Q?ACyJ+KvShEvDS0ZagFJZveq1Z5so4EobobsIBgnXwFDodTa2j/7/x/D6Y9n4?= =?us-ascii?Q?dFqXlogzslTirVI5xU11cPIgfjYbR+8CY/65f0MIKS86yg2WgfwtCSVXn9+a?= =?us-ascii?Q?1vIE9tY1a1aearLOB1JjPB/jOQO4WPwW1UALzK+s6RfaGDoNC4+SyKc7vMVR?= =?us-ascii?Q?x+vVUe9I2qBVDpay9P1aSx3HphfqPqzABVT7Cc+ymzVuf616UoCjPArZehSn?= =?us-ascii?Q?mewFX1SUBY5E4EPiu8FMelXuXqz+K8DChqCcXuGe9M08yNQ+o5nALsg2jRe9?= =?us-ascii?Q?CdaJk5lAu57FBwnv+Xq4vRmh/TJm6yqJ8GFMYTe1lUq5dd4IdOqbKFG9pK5J?= =?us-ascii?Q?YywkkRBKfwlQ48uxNOQOrdQG+iNdrx9QdY56Aife0xrdZnZWf2HGEwC6FcFb?= =?us-ascii?Q?ICDacNj/XFIUxOQgcC8ftTwgutR6TdNr/DEGeFgYoaWdU6w9ICSIfBg4h/nb?= =?us-ascii?Q?2REn32cUdYjwLhshI+1Mpl489Um+FGRVYQGXL7fkx3Ie6+T3a2CxFC0cJLmE?= =?us-ascii?Q?Tkc1K586XtiO6nfL90o0es2sFYNrr/pvuVx4or/T+HF0otmYxdUDS4DghxDw?= =?us-ascii?Q?3Ux/B59Eqh8EKI+ZKrsqzRnmJfleLeqg4XUaTeY6fbU43lHOSkHWER+1Povp?= =?us-ascii?Q?Kb5Gc6aEfkQ4IaQwieRa+7++NH4yvmdG74dpJFX8cUUU/2weM9cL1Roy7Vqi?= =?us-ascii?Q?NBo4ftCbhUiRcHV5XROtuDXemawJApVoSK+/gXwgLa+CpAofoNl0HshN3HrQ?= =?us-ascii?Q?9mSZIiadfmHT+g1Td9+qNkcaq1en2Z+wI4zxn+A3WVJGuLg8ZFgS9Ln5rvdx?= =?us-ascii?Q?NNTJjq4ubqfUxAQYl6ygNpZ3eYiGUN1ITLRX4/Hvxp4l?= Content-Type: multipart/mixed; boundary="_004_DM6PR15MB3545C1FD15BEC2D160B3AB81D6D79DM6PR15MB3545namp_" MIME-Version: 1.0 X-OriginatorOrg: ibm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR15MB3545.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 73aa5b1a-1e03-4130-6173-08db05d742fc X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Feb 2023 11:10:30.2688 (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: 4Edo4WxASA/EPd1lajc9ofDasongsDVlB9U4m1dTmmphMZmV6REC9BlNnbjGwwRDB40i6PIPHe2wWC7zRnG4Cg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR15MB5362 X-Proofpoint-GUID: kGO57FLUVzmryilClAej_CQV20KMvkSz X-Proofpoint-ORIG-GUID: kGO57FLUVzmryilClAej_CQV20KMvkSz X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-03_07,2023-02-03_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 mlxlogscore=999 malwarescore=0 bulkscore=0 suspectscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 impostorscore=0 mlxscore=0 phishscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302030100 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_DM6PR15MB3545C1FD15BEC2D160B3AB81D6D79DM6PR15MB3545namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Ulrich, Tom and community, Thank you for the feedback for the fix of this bug. Please find attached th= e patch. {See: 0001-Fix-multi-thread-debug-bug-in-AIX.patch}. So, I have fixed the bug and it works alright. Please find the test program= , output with patch and without patch pasted below this email. >I'm not sure why the pd_active test is needed here >at all - if ptid.tid () !=3D 0, thread debugging *must* >be active, otherwise you'd never have installed a ptid >with the tid field set, right? May be in the previous versions it was needed as they were adding main proc= ess as an extra thread. In this version of the aix-thread.c there is no pla= ce I have found where pd_active is disabled and we have a tid > 0. For us t= o have a tid we need pd_active enabled anyway which happens in pd_activate = (). Otherwise, execution will not get into sync_threadlists () to set the t= id. So, I have removed it from there as you suggested. >> static CORE_ADDR pd_brk_addr; >I believe this needs to go into the aix_thread_variables struct; This is done. Kindly check in the patch. >This only was a callback because it was called via >iterate_over_threads. Now that you're using the >all_threads C++ iterator, I think both of those This is done. Kindly check in the patch. >I think a simple but correct way to check whether the BFD filename >already contains a member name is to check for the presence of an >opening parenthesis e.g. via: > strrchr (bfd_get_filename (...), '('); This is also done. >I think the question here is simply whether, if you run the >test suite both without and with your patch, are any of the >FAILs fixed with the patch? If not, it would be good to >create a new test that fails without the patch and succeeds >with it, and add that to the test suite. So, this is something new to me. We will add it as a continuation in the sa= me thread after this patch. I will need one information. Which test suite w= ill we add it in? gdb.threads or gdb.base? Also, kindly suggest a simple te= st case that is written that I can see and learn. Any simple hello_world pr= ogram will do. I want to understand how that exp file is written and how it= compares to tell if a test case is pass or fail. Kindly give me feedback for this patch, incase we can do anything better or= is incorrect. If not, kindly push this patch so that AIX folks can have a = better debugging experience. Have a nice day ahead. Thanks and regards, Aditya. ------------------------------------------- Code:- #include #include #include #include #include pthread_barrier_t barrier; #define NUM_THREADS 2 void * thread_function (void *arg) { /* This ensures that the breakpoint is only hit after both threads are created, so the test can always switch to the non-event thread when the breakpoint triggers. */ pthread_barrier_wait (&barrier); pid_t child; child =3D fork (); if (child > 0) printf ("I am parent \n"); else { child =3D fork (); if (child > 0) printf ("I am child \n"); else printf ("I am grandchild \n"); } while (1); /* break here */ } int main (void) { int i; pthread_t thread[NUM_THREADS]; alarm (300); pthread_barrier_init (&barrier, NULL, NUM_THREADS); for (i =3D 0; i < NUM_THREADS; i++) { int res; res =3D pthread_create (&thread[i], NULL, thread_function, NULL); assert (res =3D=3D 0); } while (1) { sleep (15); } return 0; } ------------------------------------------------- Output with patch:- 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 Thread 515] [New inferior 2 (process 18546974)] [New inferior 3 (process 9634234)] I am parent I am parent ^C Thread 1.1 received signal SIGINT, Interrupt. [Switching to Thread 1] 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) (gdb) info sharedlibrary >From To Syms Read Shared Object Library 0xd05bc124 0xd05bf194 Yes (*) /usr/lib/libpthreads.a(shr_comm.o) 0xd05bb240 0xd05bb9a1 Yes (*) /usr/lib/libcrypt.a(shr.o) 0xd0576180 0xd05ba731 Yes (*) /usr/lib/libpthread.a(shr_xpg5.o) 0xd0100e00 0xd0575123 Yes (*) /usr/lib/libc.a(shr.o) (*): Shared library is missing debugging information. (gdb) info threads Id Target Id Frame * 1.1 Thread 1 (tid 27263453, running) 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) 1.2 Thread 258 (tid 29819289, running) thread_function (arg=3D0x0) at /home/aditya/gdb_tests/ultimate-multi-thread-fork.c:32 1.3 Thread 515 (tid 25297199, running) thread_function (arg=3D0x0) 0x0) at /home/aditya/gdb_tests/ultimate-multi-thread-fork.c:32 2.1 process 18546974 0xd0594fc8 in _sigsetmask () from /usr/lib/libpthread.a(shr_xpg5.o) 3.1 process 9634234 0xd0594fc8 in _sigsetmask () from /usr/lib/libpthread.a(shr_xpg5.o) (gdb) inferior 2 [Switching to inferior 2 [process 18546974] (/home/aditya/gdb_tests/ultimat= e-multi-thread-fork)] [Switching to thread 2.1 (process 18546974)] #0 0xd0594fc8 in _sigsetmask () from /usr/lib/libpthread.a(shr_xpg5.o) (gdb) info sharedlibrary >From To Syms Read Shared Object Library 0xd05bc124 0xd05bf194 Yes (*) /usr/lib/libpthreads.a(shr_comm.o) 0xd05bb240 0xd05bb9a1 Yes (*) /usr/lib/libcrypt.a(shr.o) 0xd0576180 0xd05ba731 Yes (*) /usr/lib/libpthread.a(shr_xpg5.o) 0xd0100e00 0xd0575123 Yes (*) /usr/lib/libc.a(shr.o) (*): Shared library is missing debugging information. ----------------------------------------------------------------------- Output without patch:- 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 1] [New Thread 258] [New Thread 515] [New inferior 2 (process 11731200)] I am parent [New inferior 3 (process 16843200)] I am parent ^C Thread 1.1 received signal SIGINT, Interrupt. 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) (gdb) inferior 2 [Switching to inferior 2 [process 11731200] (/home/aditya/gdb_tests/ultimat= e-multi-thread-fork)] [Switching to thread 2.1 (process 11731200)] #0 0xd0594fc8 in ?? () (gdb) info threads Id Target Id Frame 1.1 process 15270316 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) 1.2 process 15270316 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) 1.3 process 15270316 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) 1.4 process 15270316 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) * 2.1 process 11731200 0xd0594fc8 in ?? () 3.1 process 16843200 0xd0594fc8 in ?? () (gdb) info sharedlibrary warning: "/usr/lib/libpthreads.a": member "shr_comm.o" missing. warning: "/usr/lib/libcrypt.a": member "shr.o" missing. warning: "/usr/lib/libpthread.a": member "shr_xpg5.o" missing. warning: "/usr/lib/libc.a": member "shr.o" missing. warning: Could not load shared library symbols for 4 libraries, e.g. /usr/l= ib/libpthreads.a(shr_comm.o). Use the "info sharedlibrary" command to see the complete listing. Do you need "set solib-search-path" or "set sysroot"? >From To Syms Read Shared Object Library No /usr/lib/libpthreads.a(shr_comm.o) No /usr/lib/libcrypt.a(shr.o) No /usr/lib/libpthread.a(shr_xpg5.o) No /usr/lib/libc.a(shr.o) (gdb) ________________________________ From: Ulrich Weigand Sent: 02 February 2023 23:13 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: >>Is there an existing gdb test case that exercises this code? >>If not then it seems like a new test is warranted. > >This I am not aware of at least when I tried finding. I think the question here is simply whether, if you run the test suite both without and with your patch, are any of the FAILs fixed with the patch? If not, it would be good to create a new test that fails without the patch and succeeds with it, and add that to the test suite. I think we're getting pretty close now, but I do still have some additional comments on the latest patch: > /* Return whether to treat PID as a debuggable thread id. */ > >-#define PD_TID(ptid) (pd_active && ptid.tid () !=3D 0) >+#define PD_TID(ptid, data) (data->pd_active && ptid.tid () !=3D 0) I'm not sure why the pd_active test is needed here at all - if ptid.tid () !=3D 0, thread debugging *must* be active, otherwise you'd never have installed a ptid with the tid field set, right? If that check can indeed be omitted, that would simplify the patch a bit since you wouldn't need to provide the "data" struct in quite as many places. >/* Address of the function that libpthread will call when libpthdebug > is ready to be initialized. */ > > static CORE_ADDR pd_brk_addr; I believe this needs to go into the aix_thread_variables struct; the address might be different if the pthread library is loaded at different addresses into different inferiors. > /* Whether the current architecture is 64-bit. > Only valid when pd_able is true. */ > >static int arch64; Likewise - some inferiors may be 64-bit and others 32-bit. In general, *any* static variable in this file is suspect. >+/* Callback for counting GDB threads for process pid. */ > > static int >-giter_count (struct thread_info *thread, void *countp) >+giter_count (pid_t pid) This only was a callback because it was called via iterate_over_threads. Now that you're using the all_threads C++ iterator, I think both of those routines should just be inlined into its caller. >@@ -565,6 +565,7 @@ solib_aix_bfd_open (const char *pathname) > const char *sep; > int filename_len; > int found_file; >+ std::string string_path =3D pathname; > > if (pathname[path_len - 1] !=3D ')') > return solib_bfd_open (pathname); >@@ -618,6 +619,15 @@ solib_aix_bfd_open (const char *pathname) > if (member_name =3D=3D bfd_get_filename (object_bfd.get ())) > break; > >+ std::string s =3D bfd_get_filename (object_bfd.get ()); >+ >+ /* For every inferior after first int bfd system we >+ will have the pathname instead of the member name >+ registered. Hence the below condition exists. */ >+ >+ if (string_path.compare (s) =3D=3D 0) >+ return object_bfd; That's still not quite right, as the pathname component might have been changed here: /* Calling solib_find makes certain that sysroot path is set properly if program has a dependency on .a archive and sysroot is set via set sysroot command. */ gdb::unique_xmalloc_ptr found_pathname =3D solib_find (filename.c_str (), &found_file); I think a simple but correct way to check whether the BFD filename already contains a member name is to check for the presence of an opening parenthesis e.g. via: strrchr (bfd_get_filename (...), '('); Bye, Ulrich --_004_DM6PR15MB3545C1FD15BEC2D160B3AB81D6D79DM6PR15MB3545namp_ 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=26579; creation-date="Fri, 03 Feb 2023 11:06:05 GMT"; modification-date="Fri, 03 Feb 2023 11:06:17 GMT" Content-Transfer-Encoding: base64 RnJvbSA5NjYxMzUwN2ZiZjk2MmViOTA5NDBjOTc2M2E2MGQyYjUwZjZhNDZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFkaGFyIEthbWF0aCA8QWRpdHlhLkthbWF0 aDFAaWJtLmNvbT4KRGF0ZTogRnJpLCAzIEZlYiAyMDIzIDA0OjI0OjI0IC0wNjAwClN1YmplY3Q6 IFtQQVRDSF0gRml4IE11bHRpIHRocmVhZCBkZWJ1ZyBidWcgZml4IGluIEFJWAoKIEluIHRoZSBy ZWNlbnQgY29tbWl0IDk4ZWQyNGZiMzVkODllYjIwMTc5ZWRmNmMxMmY1OTljN2E5ZTIyOGUgbWFk ZSBieSBNci4gVG9tIHRoZXJlIGlzIGEgY2hhbmdlIGluIGFpeC10aHJlYWQuYyBmaWxlIHRoYXQg Y2hhbmdlcwoKIHN0YXRpY19jYXN0IDxhaXhfdGhyZWFkX2luZm8gKj4gaW4gZ2RiIHRvIGdkYjo6 Y2hlY2tlZF9zdGF0aWNfY2FzdCA8YWl4X3RocmVhZF9pbmZvICo+CgogQUlYIGZvbGtzIHVzaW5n IHRoZSBsYXRlc3QgdmVyc2lvbiB3aWxsIG5vdCBiZSBhYmxlIHRvIGRlYnVnIG11bHRpIHRocmVh ZCBwcm9ncmFtcyBhcyBhIHJlc3VsdCBvZiBpdAoKVGhlIGVycm9yIGluIEFJWCBpcyBhcyBmb2xs b3dzOi0KCmludGVybmFsLWVycm9yIGNoZWNrZWRfc3RhdGljX2Nhc3QgQXNzZXJ0aW9uIHJlc3Vs dCAhPSBudWxscHRyIGZhaWxlZC4KClRoZSByZWFzb24gYmVpbmcgQUlYIHNoYXJlZCBsaWJyYXJ5 IHdlcmUgbm90IGJlaW5nIGxvYWRlZCBmb3IgYSBuZXcgaW5mZXJpb3IgYW5kIHRvcCB0YXJnZXQg d2FzIG5vdCBzZXQgcHJvcGVybHkuCgpUaGlzIHBhdGNoIGlzIGEgZml4IGZvciB0aGUgc2FtZS4K LS0tCiBnZGIvYWl4LXRocmVhZC5jIHwgMzMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tCiBnZGIvc29saWItYWl4LmMgIHwgIDEwICsrCiAyIGZpbGVzIGNo YW5nZWQsIDIxOSBpbnNlcnRpb25zKCspLCAxMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv Z2RiL2FpeC10aHJlYWQuYyBiL2dkYi9haXgtdGhyZWFkLmMKaW5kZXggZTU1NmMxNTM1NzYuLjIz ZTFhYTZlOTBjIDEwMDY0NAotLS0gYS9nZGIvYWl4LXRocmVhZC5jCisrKyBiL2dkYi9haXgtdGhy ZWFkLmMKQEAgLTY4LDEwICs2OCw2IEBAIHN0YXRpYyBib29sIGRlYnVnX2FpeF90aHJlYWQ7CiAj ZGVmaW5lIHB0aGRiX3RpZF90CXRpZF90CiAjZW5kaWYKIAotLyogUmV0dXJuIHdoZXRoZXIgdG8g dHJlYXQgUElEIGFzIGEgZGVidWdnYWJsZSB0aHJlYWQgaWQuICAqLwotCi0jZGVmaW5lIFBEX1RJ RChwdGlkKQkocGRfYWN0aXZlICYmIHB0aWQudGlkICgpICE9IDApCi0KIC8qIFN1Y2Nlc3MgYW5k IGZhaWx1cmUgdmFsdWVzIHJldHVybmVkIGJ5IHB0aGRiIGNhbGxiYWNrcy4gICovCiAKICNkZWZp bmUgUERDX1NVQ0NFU1MJUFRIREJfU1VDQ0VTUwpAQCAtMTQ0LDI0ICsxNDAsNiBAQCBjbGFzcyBh aXhfdGhyZWFkX3RhcmdldCBmaW5hbCA6IHB1YmxpYyB0YXJnZXRfb3BzCiAKIHN0YXRpYyBhaXhf dGhyZWFkX3RhcmdldCBhaXhfdGhyZWFkX29wczsKIAotLyogQWRkcmVzcyBvZiB0aGUgZnVuY3Rp b24gdGhhdCBsaWJwdGhyZWFkIHdpbGwgY2FsbCB3aGVuIGxpYnB0aGRlYnVnCi0gICBpcyByZWFk eSB0byBiZSBpbml0aWFsaXplZC4gICovCi0KLXN0YXRpYyBDT1JFX0FERFIgcGRfYnJrX2FkZHI7 Ci0KLS8qIFdoZXRoZXIgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24gaXMgZGVidWdnYWJsZSBieSBw dGhkYi4gICovCi0KLXN0YXRpYyBpbnQgcGRfYWJsZSA9IDA7Ci0KLS8qIFdoZXRoZXIgYSB0aHJl YWRlZCBhcHBsaWNhdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZC4gICovCi0KLXN0YXRpYyBpbnQgcGRf YWN0aXZlID0gMDsKLQotLyogV2hldGhlciB0aGUgY3VycmVudCBhcmNoaXRlY3R1cmUgaXMgNjQt Yml0LiAgCi0gICBPbmx5IHZhbGlkIHdoZW4gcGRfYWJsZSBpcyB0cnVlLiAgKi8KLQotc3RhdGlj IGludCBhcmNoNjQ7Ci0KIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zIGZvciBwdGhkYiBjYWxsYmFj a3MuICAqLwogCiBzdGF0aWMgaW50IHBkY19zeW1ib2xfYWRkcnMgKHB0aGRiX3VzZXJfdCwgcHRo ZGJfc3ltYm9sX3QgKiwgaW50KTsKQEAgLTE5MSw5ICsxNjksNjYgQEAgc3RhdGljIHB0aGRiX2Nh bGxiYWNrc190IHBkX2NhbGxiYWNrcyA9IHsKICAgTlVMTAogfTsKIAotLyogQ3VycmVudCBwdGhk YiBzZXNzaW9uLiAgKi8KKy8qIEFpeCB2YXJpYWJsZSBzdHJ1Y3R1cmUuICAqLworc3RydWN0IGFp eF90aHJlYWRfdmFyaWFibGVzIAoreworICAvKiBXaGV0aGVyIHRoZSBjdXJyZW50IGFwcGxpY2F0 aW9uIGlzIGRlYnVnZ2FibGUgYnkgcHRoZGIuICAqLworICBpbnQgcGRfYWJsZTsKKworICAvKiBX aGV0aGVyIGEgdGhyZWFkZWQgYXBwbGljYXRpb24gaXMgYmVpbmcgZGVidWdnZWQuICAqLworICBp bnQgcGRfYWN0aXZlOworCisgIC8qIEN1cnJlbnQgcHRoZGIgc2Vzc2lvbi4gICovCisgIHB0aGRi X3Nlc3Npb25fdCBwZF9zZXNzaW9uOworCisgIC8qIEFkZHJlc3Mgb2YgdGhlIGZ1bmN0aW9uIHRo YXQgbGlicHRocmVhZCB3aWxsIGNhbGwgd2hlbiBsaWJwdGhkZWJ1ZworICAgaXMgcmVhZHkgdG8g YmUgaW5pdGlhbGl6ZWQuICAqLworICBDT1JFX0FERFIgcGRfYnJrX2FkZHI7CisKKyAgLyogV2hl dGhlciB0aGUgY3VycmVudCBhcmNoaXRlY3R1cmUgaXMgNjQtYml0LgorICAgT25seSB2YWxpZCB3 aGVuIHBkX2FibGUgaXMgdHJ1ZS4gICovCisgIGludCBhcmNoNjQ7Cit9OwogCi1zdGF0aWMgcHRo ZGJfc2Vzc2lvbl90IHBkX3Nlc3Npb247CisvKiBLZXkgdG8gb3VyIHBlci1pbmZlcmlvciBkYXRh LiAgKi8KK3N0YXRpYyBjb25zdCByZWdpc3RyeTxpbmZlcmlvcj46OmtleTxhaXhfdGhyZWFkX3Zh cmlhYmxlcz4KKyAgYWl4X3RocmVhZF92YXJpYWJsZXNfaGFuZGxlOworCisvKiBGdW5jdGlvbiB0 byBHZXQgYWl4X3RocmVhZF92YXJpYWJsZXMgZGF0YS4gICovCitzdGF0aWMgc3RydWN0IGFpeF90 aHJlYWRfdmFyaWFibGVzKgorZ2V0X2FpeF90aHJlYWRfdmFyaWFibGVzX2RhdGEgKHN0cnVjdCBp bmZlcmlvciAqaW5mKQoreworICBpZiAoaW5mID09IE5VTEwpCisgICAgcmV0dXJuIE5VTEw7CisK KyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzKiBkYXRhOworCisgIGRhdGEgPSBhaXhfdGhy ZWFkX3ZhcmlhYmxlc19oYW5kbGUuZ2V0IChpbmYpOworICBpZiAoZGF0YSA9PSBOVUxMKQorICAg IGRhdGEgPSBhaXhfdGhyZWFkX3ZhcmlhYmxlc19oYW5kbGUuZW1wbGFjZSAoaW5mKTsKKworICBy ZXR1cm4gZGF0YTsKK30KKworLyogSGVscGVyIHRvIGdldCBkYXRhIGZvciBwdGlkIGluIGEgZnVu Y3Rpb24uICAqLworCitzdGF0aWMgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzKgorZ2V0X3Ro cmVhZF9kYXRhX2hlbHBlcl9mb3JfcHRpZCAocHRpZF90IHB0aWQpCit7CisgIGluZmVyaW9yICpp bmYgPSBmaW5kX2luZmVyaW9yX3B0aWQgKGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFy Z2V0ICgpLAorCQkJCQlwdGlkKTsKKyAgcmV0dXJuIGdldF9haXhfdGhyZWFkX3ZhcmlhYmxlc19k YXRhIChpbmYpOworfQorCisvKiBIZWxwZXIgdG8gZ2V0IGRhdGEgZm9yIHBpZCBpbiBhIGZ1bmN0 aW9uLiAgKi8KKworc3RhdGljIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyoKK2dldF90aHJl YWRfZGF0YV9oZWxwZXJfZm9yX3BpZCAocGlkX3QgcGlkKQoreworICBpbmZlcmlvciAqaW5mID0g ZmluZF9pbmZlcmlvcl9waWQgKGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCk7CisgIHJldHVy biBnZXRfYWl4X3RocmVhZF92YXJpYWJsZXNfZGF0YSAoaW5mKTsKK30KIAogLyogUmV0dXJuIGEg cHJpbnRhYmxlIHJlcHJlc2VudGF0aW9uIG9mIHB0aGRlYnVnIGZ1bmN0aW9uIHJldHVybgogICAg U1RBVFVTLiAgKi8KQEAgLTMxOCw3ICszNTMsNyBAQCBwaWRfdG9fcHJjIChwdGlkX3QgKnB0aWRw KQogICBwdGlkX3QgcHRpZDsKIAogICBwdGlkID0gKnB0aWRwOwotICBpZiAoUERfVElEIChwdGlk KSkKKyAgaWYgKHB0aWQudGlkICgpICE9IDApCiAgICAgKnB0aWRwID0gcHRpZF90IChwdGlkLnBp ZCAoKSk7CiB9CiAKQEAgLTM4OSw2ICs0MjQsOSBAQCBwZGNfcmVhZF9yZWdzIChwdGhkYl91c2Vy X3QgdXNlcl9jdXJyZW50X3BpZCwKICAgZG91YmxlIGZwcnNbcHBjX251bV9mcHJzXTsKICAgc3Ry dWN0IHB0eHNwcnMgc3ByczY0OwogICBzdHJ1Y3QgcHRzcHJzIHNwcnMzMjsKKyAgc3RydWN0IGFp eF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworICAKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9o ZWxwZXJfZm9yX3BpZCAodXNlcl9jdXJyZW50X3BpZCk7CiAgIAogICBpZiAoZGVidWdfYWl4X3Ro cmVhZCkKICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLCAicGRjX3JlYWRfcmVncyB0aWQ9JWQg ZmxhZ3M9JXNcbiIsCkBAIC0zOTcsNyArNDM1LDcgQEAgcGRjX3JlYWRfcmVncyAocHRoZGJfdXNl cl90IHVzZXJfY3VycmVudF9waWQsCiAgIC8qIEdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMuICAq LwogICBpZiAoZmxhZ3MgJiBQVEhEQl9GTEFHX0dQUlMpCiAgICAgewotICAgICAgaWYgKGFyY2g2 NCkKKyAgICAgIGlmIChkYXRhLT5hcmNoNjQpCiAJewogCSAgaWYgKCFwdHJhY2U2NGFpeCAoUFRU X1JFQURfR1BSUywgdGlkLCAKIAkJCSAgICAodW5zaWduZWQgbG9uZykgZ3ByczY0LCAwLCBOVUxM KSkKQEAgLTQyMyw3ICs0NjEsNyBAQCBwZGNfcmVhZF9yZWdzIChwdGhkYl91c2VyX3QgdXNlcl9j dXJyZW50X3BpZCwKICAgLyogU3BlY2lhbC1wdXJwb3NlIHJlZ2lzdGVycy4gICovCiAgIGlmIChm bGFncyAmIFBUSERCX0ZMQUdfU1BSUykKICAgICB7Ci0gICAgICBpZiAoYXJjaDY0KQorICAgICAg aWYgKGRhdGEtPmFyY2g2NCkKIAl7CiAJICBpZiAoIXB0cmFjZTY0YWl4IChQVFRfUkVBRF9TUFJT LCB0aWQsIAogCQkJICAgICh1bnNpZ25lZCBsb25nKSAmc3ByczY0LCAwLCBOVUxMKSkKQEAgLTQ1 Niw2ICs0OTQsMTAgQEAgcGRjX3dyaXRlX3JlZ3MgKHB0aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRf cGlkLAogICAgICB0aGlzIGlzIG5lZWRlZCwgSSBoYXZlIGltcGxlbWVudGVkIHdoYXQgSSB0aGlu ayBpdCBzaG91bGQgZG8sCiAgICAgIGhvd2V2ZXIgdGhpcyBjb2RlIGlzIHVudGVzdGVkLiAgKi8K IAorICBzdHJ1Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7CisgIAorICBkYXRhID0gZ2V0 X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcGlkICh1c2VyX2N1cnJlbnRfcGlkKTsKKwogICBpZiAo ZGVidWdfYWl4X3RocmVhZCkKICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLCAicGRjX3dyaXRl X3JlZ3MgdGlkPSVkIGZsYWdzPSVzXG4iLAogCQkoaW50KSB0aWQsIGhleF9zdHJpbmcgKGZsYWdz KSk7CkBAIC00NjMsNyArNTA1LDcgQEAgcGRjX3dyaXRlX3JlZ3MgKHB0aGRiX3VzZXJfdCB1c2Vy X2N1cnJlbnRfcGlkLAogICAvKiBHZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzLiAgKi8KICAgaWYg KGZsYWdzICYgUFRIREJfRkxBR19HUFJTKQogICAgIHsKLSAgICAgIGlmIChhcmNoNjQpCisgICAg ICBpZiAoZGF0YS0+YXJjaDY0KQogCXB0cmFjZTY0YWl4IChQVFRfV1JJVEVfR1BSUywgdGlkLCAK IAkJICAgICAodW5zaWduZWQgbG9uZykgY29udGV4dC0+Z3ByLCAwLCBOVUxMKTsKICAgICAgIGVs c2UKQEAgLTQ3OSw3ICs1MjEsNyBAQCBwZGNfd3JpdGVfcmVncyAocHRoZGJfdXNlcl90IHVzZXJf Y3VycmVudF9waWQsCiAgIC8qIFNwZWNpYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLwogICBpZiAo ZmxhZ3MgJiBQVEhEQl9GTEFHX1NQUlMpCiAgICAgewotICAgICAgaWYgKGFyY2g2NCkKKyAgICAg IGlmIChkYXRhLT5hcmNoNjQpCiAJewogCSAgcHRyYWNlNjRhaXggKFBUVF9XUklURV9TUFJTLCB0 aWQsIAogCQkgICAgICAgKHVuc2lnbmVkIGxvbmcpICZjb250ZXh0LT5tc3IsIDAsIE5VTEwpOwpA QCAtNTA4LDE0ICs1NTAsMTMgQEAgcGRjX3JlYWRfZGF0YSAocHRoZGJfdXNlcl90IHVzZXJfY3Vy cmVudF9waWQsIHZvaWQgKmJ1ZiwKICAgLyogVGhpcyBpcyBuZWVkZWQgdG8gZWxpbWluYXRlIHRo ZSBkZXBlbmRlbmN5IG9mIGN1cnJlbnQgdGhyZWFkCiAgICAgIHdoaWNoIGlzIG51bGwgc28gdGhh dCB0aHJlYWQgcmVhZHMgdGhlIGNvcnJlY3QgdGFyZ2V0IG1lbW9yeS4gICovCiAgIHsKLSAgICBz Y29wZWRfcmVzdG9yZV9jdXJyZW50X3RocmVhZCByZXN0b3JlX2N1cnJlbnRfdGhyZWFkOworICAg IHNjb3BlZF9yZXN0b3JlIHNhdmVfaW5mZXJpb3JfcHRpZCA9IG1ha2Vfc2NvcGVkX3Jlc3RvcmUg KCZpbmZlcmlvcl9wdGlkKTsKICAgICAvKiBCZWZvcmUgdGhlIGZpcnN0IGluZmVyaW9yIGlzIGFk ZGVkLCB3ZSBwYXNzIGluZmVyaW9yX3B0aWQucGlkICgpCiAgICAgICAgZnJvbSBwZF9lbmFibGUg KCkgd2hpY2ggaXMgMC4gIFRoZXJlIGlzIG5vIG5lZWQgdG8gc3dpdGNoIHRocmVhZHMKICAgICAg ICBkdXJpbmcgZmlyc3QgaW5pdGlhbGlzYXRpb24uICBJbiB0aGUgcmVzdCBvZiB0aGUgY2FsbGJh Y2tzIHRoZQogICAgICAgIGN1cnJlbnQgdGhyZWFkIG5lZWRzIHRvIGJlIGNvcnJlY3QuICAqLwog ICAgIGlmICh1c2VyX2N1cnJlbnRfcGlkICE9IDApCi0gICAgICBzd2l0Y2hfdG9fdGhyZWFkIChj dXJyZW50X2luZmVyaW9yICgpLT5wcm9jZXNzX3RhcmdldCAoKSwKLQkJCXB0aWRfdCAodXNlcl9j dXJyZW50X3BpZCkpOworICAgICAgaW5mZXJpb3JfcHRpZCA9IHB0aWRfdCAodXNlcl9jdXJyZW50 X3BpZCk7CiAgICAgc3RhdHVzID0gdGFyZ2V0X3JlYWRfbWVtb3J5IChhZGRyLCAoZ2RiX2J5dGUg KikgYnVmLCBsZW4pOwogICB9CiAgIHJldCA9IHN0YXR1cyA9PSAwID8gUERDX1NVQ0NFU1MgOiBQ RENfRkFJTFVSRTsKQEAgLTYzOSwzOSArNjgwLDYgQEAgcGNtcCAoY29uc3Qgdm9pZCAqcDF2LCBj b25zdCB2b2lkICpwMnYpCiAgIHJldHVybiBwMS0+cHRoaWQgPCBwMi0+cHRoaWQgPyAtMSA6IHAx LT5wdGhpZCA+IHAyLT5wdGhpZDsKIH0KIAotLyogaXRlcmF0ZV9vdmVyX3RocmVhZHMoKSBjYWxs YmFjayBmb3IgY291bnRpbmcgR0RCIHRocmVhZHMuCi0KLSAgIERvIG5vdCBjb3VudCB0aGUgbWFp biB0aHJlYWQgKHdob3NlIHRpZCBpcyB6ZXJvKS4gIFRoaXMgbWF0Y2hlcwotICAgdGhlIGxpc3Qg b2YgdGhyZWFkcyBwcm92aWRlZCBieSB0aGUgcHRocmVhZGRlYnVnIGxpYnJhcnksIHdoaWNoCi0g ICBkb2VzIG5vdCBpbmNsdWRlIHRoYXQgbWFpbiB0aHJlYWQgZWl0aGVyLCBhbmQgdGh1cyBhbGxv d3MgdXMKLSAgIHRvIGNvbXBhcmUgdGhlIHR3byBsaXN0cy4gICovCi0KLXN0YXRpYyBpbnQKLWdp dGVyX2NvdW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCwgdm9pZCAqY291bnRwKQotewot ICBpZiAoUERfVElEICh0aHJlYWQtPnB0aWQpKQotICAgICgqKGludCAqKSBjb3VudHApKys7Ci0g IHJldHVybiAwOwotfQotCi0vKiBpdGVyYXRlX292ZXJfdGhyZWFkcygpIGNhbGxiYWNrIGZvciBh Y2N1bXVsYXRpbmcgR0RCIHRocmVhZCBwaWRzLgotCi0gICBEbyBub3QgaW5jbHVkZSB0aGUgbWFp biB0aHJlYWQgKHdob3NlIHRpZCBpcyB6ZXJvKS4gIFRoaXMgbWF0Y2hlcwotICAgdGhlIGxpc3Qg b2YgdGhyZWFkcyBwcm92aWRlZCBieSB0aGUgcHRocmVhZGRlYnVnIGxpYnJhcnksIHdoaWNoCi0g ICBkb2VzIG5vdCBpbmNsdWRlIHRoYXQgbWFpbiB0aHJlYWQgZWl0aGVyLCBhbmQgdGh1cyBhbGxv d3MgdXMKLSAgIHRvIGNvbXBhcmUgdGhlIHR3byBsaXN0cy4gICovCi0KLXN0YXRpYyBpbnQKLWdp dGVyX2FjY3VtIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCwgdm9pZCAqYnVmcCkKLXsKLSAg aWYgKFBEX1RJRCAodGhyZWFkLT5wdGlkKSkKLSAgICB7Ci0gICAgICAqKihzdHJ1Y3QgdGhyZWFk X2luZm8gKioqKSBidWZwID0gdGhyZWFkOwotICAgICAgKCooc3RydWN0IHRocmVhZF9pbmZvICoq KikgYnVmcCkrKzsKLSAgICB9Ci0gIHJldHVybiAwOwotfQotCiAvKiBwdGlkIGNvbXBhcmlzb24g ZnVuY3Rpb24gKi8KIAogc3RhdGljIGludApAQCAtNzE5LDcgKzcyNywxMCBAQCBnZXRfc2lnbmFs ZWRfdGhyZWFkIChpbnQgcGlkKQogCQkgICAgc2l6ZW9mICh0aHJpbmYpLCAma3RpZCwgMSkgIT0g MSkKIAlicmVhazsKIAotICAgICAgaWYgKHRocmluZi50aV9jdXJzaWcgPT0gU0lHVFJBUCkKKyAg ICAgIC8qIFdlIGFsc28gbmVlZCB0byBrZWVwIGluIG1pbmQgVHJhcCBhbmQgaW50ZXJydXB0IG9y IGFueQorICAgICAgICAgc2lnbmFsIHRoYXQgbmVlZHMgdG8gYmUgaGFuZGxlZCBpbiBwZF91cGRh dGUgKCkuICAqLworCisgICAgICBpZiAodGhyaW5mLnRpX2N1cnNpZykKIAlyZXR1cm4gdGhyaW5m LnRpX3RpZDsKICAgICB9CiAKQEAgLTc1MCw2ICs3NjEsMTEgQEAgc3luY190aHJlYWRsaXN0cyAo aW50IHBpZCkKICAgcHRoZGJfcHRocmVhZF90IHBkdGlkOwogICBwdGhyZWFkX3QgcHRoaWQ7CiAg IHB0aGRiX3RpZF90IHRpZDsKKyAgcHJvY2Vzc19zdHJhdHVtX3RhcmdldCAqcHJvY190YXJnZXQK KyAgICAgICAgICAgID0gY3VycmVudF9pbmZlcmlvciAoKS0+cHJvY2Vzc190YXJnZXQgKCk7Cisg IHRocmVhZF9pbmZvICAqdHA7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsK KyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3BpZCAocGlkKTsKIAogICAvKiBB Y2N1bXVsYXRlIGFuIGFycmF5IG9mIGxpYnB0aGRlYnVnIHRocmVhZHMgc29ydGVkIGJ5IHB0aHJl YWQgaWQuICAqLwogCkBAIC03NTksMTEgKzc3NSwxMSBAQCBzeW5jX3RocmVhZGxpc3RzIChpbnQg cGlkKQogCiAgIGZvciAoY21kID0gUFRIREJfTElTVF9GSVJTVDs7IGNtZCA9IFBUSERCX0xJU1Rf TkVYVCkKICAgICB7Ci0gICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkIChwZF9zZXNzaW9uLCAm cGR0aWQsIGNtZCk7CisgICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkIChkYXRhLT5wZF9zZXNz aW9uLCAmcGR0aWQsIGNtZCk7CiAgICAgICBpZiAoc3RhdHVzICE9IFBUSERCX1NVQ0NFU1MgfHwg cGR0aWQgPT0gUFRIREJfSU5WQUxJRF9QVEhSRUFEKQogCWJyZWFrOwogCi0gICAgICBzdGF0dXMg PSBwdGhkYl9wdGhyZWFkX3B0aWQgKHBkX3Nlc3Npb24sIHBkdGlkLCAmcHRoaWQpOworICAgICAg c3RhdHVzID0gcHRoZGJfcHRocmVhZF9wdGlkIChkYXRhLT5wZF9zZXNzaW9uLCBwZHRpZCwgJnB0 aGlkKTsKICAgICAgIGlmIChzdGF0dXMgIT0gUFRIREJfU1VDQ0VTUyB8fCBwdGhpZCA9PSBQVEhE Ql9JTlZBTElEX1BUSUQpCiAJY29udGludWU7CiAKQEAgLTc4MCw3ICs3OTYsNyBAQCBzeW5jX3Ro cmVhZGxpc3RzIChpbnQgcGlkKQogCiAgIGZvciAocGkgPSAwOyBwaSA8IHBjb3VudDsgcGkrKykK ICAgICB7Ci0gICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3RpZCAocGRfc2Vzc2lvbiwgcGJ1 ZltwaV0ucGR0aWQsICZ0aWQpOworICAgICAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF90aWQgKGRh dGEtPnBkX3Nlc3Npb24sIHBidWZbcGldLnBkdGlkLCAmdGlkKTsKICAgICAgIGlmIChzdGF0dXMg IT0gUFRIREJfU1VDQ0VTUykKIAl0aWQgPSBQVEhEQl9JTlZBTElEX1RJRDsKICAgICAgIHBidWZb cGldLnRpZCA9IHRpZDsKQEAgLTc5MCwxMCArODA2LDE3IEBAIHN5bmNfdGhyZWFkbGlzdHMgKGlu dCBwaWQpCiAKICAgLyogQWNjdW11bGF0ZSBhbiBhcnJheSBvZiBHREIgdGhyZWFkcyBzb3J0ZWQg YnkgcGlkLiAgKi8KIAorICAvKiBnY291bnQgaXMgR0RCIHRocmVhZCBjb3VudCBhbmQgcGNvdW50 IGlzIHB0aHJlYWRsaWIgdGhyZWFkIGNvdW50LiAgKi8KKwogICBnY291bnQgPSAwOwotICBpdGVy YXRlX292ZXJfdGhyZWFkcyAoZ2l0ZXJfY291bnQsICZnY291bnQpOworICBmb3IgKHRocmVhZF9p bmZvICp0cCA6IGFsbF90aHJlYWRzIChwcm9jX3RhcmdldCwgcHRpZF90IChwaWQpKSkKKyAgICBn Y291bnQrKzsKICAgZyA9IGdidWYgPSBYTkVXVkVDIChzdHJ1Y3QgdGhyZWFkX2luZm8gKiwgZ2Nv dW50KTsKLSAgaXRlcmF0ZV9vdmVyX3RocmVhZHMgKGdpdGVyX2FjY3VtLCAmZyk7CisgIGZvciAo dGhyZWFkX2luZm8gKnRwIDogYWxsX3RocmVhZHMgKHByb2NfdGFyZ2V0LCBwdGlkX3QgKHBpZCkp KQorICB7CisgICAgKiooc3RydWN0IHRocmVhZF9pbmZvICoqKikgJmcgPSB0cDsKKyAgICAoKihz dHJ1Y3QgdGhyZWFkX2luZm8gKioqKSAmZykrKzsKKyAgfQogICBxc29ydCAoZ2J1ZiwgZ2NvdW50 LCBzaXplb2YgKmdidWYsIGdjbXApOwogCiAgIC8qIEFwcGx5IGRpZmZlcmVuY2VzIGJldHdlZW4g dGhlIHR3byBhcnJheXMgdG8gR0RCJ3MgdGhyZWFkIGxpc3QuICAqLwpAQCAtODEwLDggKzgzMyw2 IEBAIHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAJICBwcml2LT5wZHRpZCA9IHBidWZbcGld LnBkdGlkOwogCSAgcHJpdi0+dGlkID0gcGJ1ZltwaV0udGlkOwogCi0JICBwcm9jZXNzX3N0cmF0 dW1fdGFyZ2V0ICpwcm9jX3RhcmdldAotCSAgICA9IGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nl c3NfdGFyZ2V0ICgpOwogCSAgdGhyZWFkID0gYWRkX3RocmVhZF93aXRoX2luZm8gKHByb2NfdGFy Z2V0LAogCQkJCQkgcHRpZF90IChwaWQsIDAsIHBidWZbcGldLnB0aGlkKSwKIAkJCQkJIHByaXYp OwpAQCAtODMwLDYgKzg1MSwyMyBAQCBzeW5jX3RocmVhZGxpc3RzIChpbnQgcGlkKQogCiAJICBj bXBfcmVzdWx0ID0gcHRpZF9jbXAgKHBwdGlkLCBncHRpZCk7CiAKKwkgIC8qIElmIHRoZXJlIGlz IG9ubHkgb25lIHRocmVhZCB0aGVuIHdlIG5lZWQgbm90IG1ha2UgdGhlIG1haW4gCisJICAgICB0 aHJlYWQgbG9vayBsaWtlIGEgdGhyZWFkLiAgSXQgY2FuIHN0YXkgYXMgYSBwcm9jZXNzLiBUaGlz CisJICAgICBpcyB1c2VmdWwgd2hlbiB3ZSBoYXZlIG11bHRpcGxlIGluZmVyaW9ycywgYnV0IG9u bHkgb25lIGlzCisJICAgICB0aHJlYWRlZC4gIFNvIHdlIG5lZWQgbm90IG1ha2UgdGhlIG90aGVy IGluZmVyaW9ycyB3aXRoIG9ubHkKKwkgICAgIG1haW4gdGhyZWFkLCBsb29rIGxpa2UgYSB0aHJl YWRlZCBvbmUuICBGb3IgZXhhbXBsZSwgVGhyZWFkCisJICAgICAxLjEsIDEuMiwgMi4xLCAzLjEg ZXhpc3RzIHRoZW4gaXQgaXMgdXNlZnVsIHRvIHNraXAgdGhpcyBmb3IKKwkgICAgIGxvb3AgZm9y IDIuMSBhbmQgMy4xIGxlYXZpbmcgdGhlbSBhcyBtYWluIHByb2Nlc3MgdGhyZWFkIHdpdGgKKwkg ICAgIGEgZHVtbXkgcHJpdiBzZXQuICAqLworCisJICBpZiAocGNvdW50ID09IDEgJiYgZ2NvdW50 ID09IDEpCisJICB7CisJICAgIGFpeF90aHJlYWRfaW5mbyAqcHJpdiA9IG5ldyBhaXhfdGhyZWFk X2luZm87CisJICAgIHRwID0gZmluZF90aHJlYWRfcHRpZCAocHJvY190YXJnZXQsIGdwdGlkKTsK KwkgICAgdHAtPnByaXYucmVzZXQgKHByaXYpOworCSAgICBicmVhazsKKwkgIH0KKwogCSAgaWYg KGNtcF9yZXN1bHQgPT0gMCkKIAkgICAgewogCSAgICAgIGFpeF90aHJlYWRfaW5mbyAqcHJpdiA9 IGdldF9haXhfdGhyZWFkX2luZm8gKGdidWZbZ2ldKTsKQEAgLTg0MSwxMyArODc5LDI4IEBAIHN5 bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAJICAgIH0KIAkgIGVsc2UgaWYgKGNtcF9yZXN1bHQg PiAwKQogCSAgICB7Ci0JICAgICAgZGVsZXRlX3RocmVhZCAoZ2J1ZltnaV0pOwotCSAgICAgIGdp Kys7CisJICAgICAgLyogVGhpcyBpcyB0byBtYWtlIHRoZSBtYWluIHByb2Nlc3MgdGhyZWFkIG5v dyBsb29rCisJCSBsaWtlIGEgdGhyZWFkLiAgKi8KKworCSAgICAgIGlmIChncHRpZC5pc19waWQg KCkgJiYgZ3B0aWQucGlkICgpID09IHBwdGlkLnBpZCAoKSkKKwkgICAgICB7CisJCXRocmVhZF9j aGFuZ2VfcHRpZCAocHJvY190YXJnZXQsIGdwdGlkLCBwcHRpZCk7CisJCWFpeF90aHJlYWRfaW5m byAqcHJpdiA9IG5ldyBhaXhfdGhyZWFkX2luZm87CisJCXByaXYtPnBkdGlkID0gcGJ1ZltwaV0u cGR0aWQ7CisJCXByaXYtPnRpZCA9IHBidWZbcGldLnRpZDsKKwkJdHAgPSBmaW5kX3RocmVhZF9w dGlkIChwcm9jX3RhcmdldCwgcHB0aWQpOworCQl0cC0+cHJpdi5yZXNldCAocHJpdik7CisJCXBp Kys7CisJCWdpKys7CisJICAgICAgfQorCSAgICAgIGVsc2UKKwkgICAgICB7CisJCWRlbGV0ZV90 aHJlYWQgKGdidWZbZ2ldKTsKKwkJZ2krKzsKKwkgICAgICB9CiAJICAgIH0KIAkgIGVsc2UKIAkg ICAgewotCSAgICAgIHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQgKnByb2NfdGFyZ2V0Ci0JCT0gY3Vy cmVudF9pbmZlcmlvciAoKS0+cHJvY2Vzc190YXJnZXQgKCk7CiAJICAgICAgdGhyZWFkID0gYWRk X3RocmVhZCAocHJvY190YXJnZXQsIHBwdGlkKTsKIAogCSAgICAgIGFpeF90aHJlYWRfaW5mbyAq cHJpdiA9IG5ldyBhaXhfdGhyZWFkX2luZm87CkBAIC04ODcsMTEgKzk0MCwxNCBAQCBwZF91cGRh dGUgKGludCBwaWQpCiAgIHB0aWRfdCBwdGlkOwogICBwdGhkYl90aWRfdCB0aWQ7CiAgIHN0cnVj dCB0aHJlYWRfaW5mbyAqdGhyZWFkID0gTlVMTDsKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFi bGVzICpkYXRhOwogCi0gIGlmICghcGRfYWN0aXZlKQorICBkYXRhID0gZ2V0X3RocmVhZF9kYXRh X2hlbHBlcl9mb3JfcGlkIChwaWQpOworCisgIGlmICghZGF0YS0+cGRfYWN0aXZlKQogICAgIHJl dHVybiBwdGlkX3QgKHBpZCk7CiAKLSAgc3RhdHVzID0gcHRoZGJfc2Vzc2lvbl91cGRhdGUgKHBk X3Nlc3Npb24pOworICBzdGF0dXMgPSBwdGhkYl9zZXNzaW9uX3VwZGF0ZSAoZGF0YS0+cGRfc2Vz c2lvbik7CiAgIGlmIChzdGF0dXMgIT0gUFRIREJfU1VDQ0VTUykKICAgICByZXR1cm4gcHRpZF90 IChwaWQpOwogCkBAIC05MTgsMTUgKzk3NCwxNyBAQCBzdGF0aWMgcHRpZF90CiBwZF9hY3RpdmF0 ZSAoaW50IHBpZCkKIHsKICAgaW50IHN0YXR1czsKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFi bGVzICpkYXRhOworICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcGlkIChwaWQp OwogCQkKLSAgc3RhdHVzID0gcHRoZGJfc2Vzc2lvbl9pbml0IChwaWQsIGFyY2g2NCA/IFBFTV82 NEJJVCA6IFBFTV8zMkJJVCwKKyAgc3RhdHVzID0gcHRoZGJfc2Vzc2lvbl9pbml0IChwaWQsIGRh dGEtPmFyY2g2NCA/IFBFTV82NEJJVCA6IFBFTV8zMkJJVCwKIAkJCSAgICAgICBQVEhEQl9GTEFH X1JFR1MsICZwZF9jYWxsYmFja3MsIAotCQkJICAgICAgICZwZF9zZXNzaW9uKTsKKwkJCSAgICAg ICAmZGF0YS0+cGRfc2Vzc2lvbik7CiAgIGlmIChzdGF0dXMgIT0gUFRIREJfU1VDQ0VTUykKICAg ICB7CiAgICAgICByZXR1cm4gcHRpZF90IChwaWQpOwogICAgIH0KLSAgcGRfYWN0aXZlID0gMTsK KyAgZGF0YS0+cGRfYWN0aXZlID0gMTsKICAgcmV0dXJuIHBkX3VwZGF0ZSAocGlkKTsKIH0KIApA QCAtOTM1LDEyICs5OTMsMTUgQEAgcGRfYWN0aXZhdGUgKGludCBwaWQpCiBzdGF0aWMgdm9pZAog cGRfZGVhY3RpdmF0ZSAodm9pZCkKIHsKLSAgaWYgKCFwZF9hY3RpdmUpCisgIHN0cnVjdCBhaXhf dGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJf Zm9yX3B0aWQgKGluZmVyaW9yX3B0aWQpOworCisgIGlmICghZGF0YS0+cGRfYWN0aXZlKQogICAg IHJldHVybjsKLSAgcHRoZGJfc2Vzc2lvbl9kZXN0cm95IChwZF9zZXNzaW9uKTsKKyAgcHRoZGJf c2Vzc2lvbl9kZXN0cm95IChkYXRhLT5wZF9zZXNzaW9uKTsKICAgCiAgIHBpZF90b19wcmMgKCZp bmZlcmlvcl9wdGlkKTsKLSAgcGRfYWN0aXZlID0gMDsKKyAgZGF0YS0+cGRfYWN0aXZlID0gMDsK IH0KIAogLyogQW4gb2JqZWN0IGZpbGUgaGFzIGp1c3QgYmVlbiBsb2FkZWQuICBDaGVjayB3aGV0 aGVyIHRoZSBjdXJyZW50CkBAIC05NTIsMTMgKzEwMTMsMTkgQEAgcGRfZW5hYmxlICh2b2lkKQog ICBpbnQgc3RhdHVzOwogICBjaGFyICpzdHViX25hbWU7CiAgIHN0cnVjdCBib3VuZF9taW5pbWFs X3N5bWJvbCBtczsKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworCisgIGlm ICghaW5mZXJpb3JfcHRpZC5waWQgKCkpCisgICAgcmV0dXJuOworICAKKyAgZGF0YSA9IGdldF90 aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKGluZmVyaW9yX3B0aWQpOwogCiAgIC8qIERvbid0 IGluaXRpYWxpemUgdHdpY2UuICAqLwotICBpZiAocGRfYWJsZSkKKyAgaWYgKGRhdGEtPnBkX2Fi bGUpCiAgICAgcmV0dXJuOwogCiAgIC8qIENoZWNrIGFwcGxpY2F0aW9uIHdvcmQgc2l6ZS4gICov Ci0gIGFyY2g2NCA9IHJlZ2lzdGVyX3NpemUgKHRhcmdldF9nZGJhcmNoICgpLCAwKSA9PSA4Owor ICBkYXRhLT5hcmNoNjQgPSByZWdpc3Rlcl9zaXplICh0YXJnZXRfZ2RiYXJjaCAoKSwgMCkgPT0g ODsKIAogICAvKiBDaGVjayB3aGV0aGVyIHRoZSBhcHBsaWNhdGlvbiBpcyBwdGhyZWFkZWQuICAq LwogICBzdHViX25hbWUgPSBOVUxMOwpAQCAtOTcyLDEzICsxMDM5LDEzIEBAIHBkX2VuYWJsZSAo dm9pZCkKICAgbXMgPSBsb29rdXBfbWluaW1hbF9zeW1ib2wgKHN0dWJfbmFtZSwgTlVMTCwgTlVM TCk7CiAgIGlmIChtcy5taW5zeW0gPT0gTlVMTCkKICAgICByZXR1cm47Ci0gIHBkX2Jya19hZGRy ID0gbXMudmFsdWVfYWRkcmVzcyAoKTsKLSAgaWYgKCFjcmVhdGVfdGhyZWFkX2V2ZW50X2JyZWFr cG9pbnQgKHRhcmdldF9nZGJhcmNoICgpLCBwZF9icmtfYWRkcikpCisgIGRhdGEtPnBkX2Jya19h ZGRyID0gbXMudmFsdWVfYWRkcmVzcyAoKTsKKyAgaWYgKCFjcmVhdGVfdGhyZWFkX2V2ZW50X2Jy ZWFrcG9pbnQgKHRhcmdldF9nZGJhcmNoICgpLCBkYXRhLT5wZF9icmtfYWRkcikpCiAgICAgcmV0 dXJuOwogCiAgIC8qIFByZXBhcmUgZm9yIHRocmVhZCBkZWJ1Z2dpbmcuICAqLwogICBjdXJyZW50 X2luZmVyaW9yICgpLT5wdXNoX3RhcmdldCAoJmFpeF90aHJlYWRfb3BzKTsKLSAgcGRfYWJsZSA9 IDE7CisgIGRhdGEtPnBkX2FibGUgPSAxOyAKIAogICAvKiBJZiB3ZSdyZSBkZWJ1Z2dpbmcgYSBj b3JlIGZpbGUgb3IgYW4gYXR0YWNoZWQgaW5mZXJpb3IsIHRoZQogICAgICBwdGhyZWFkIGxpYnJh cnkgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGluaXRpYWxpemVkLCBzbyB0cnkgdG8KQEAgLTk5MSwy OCArMTA1OCwyNyBAQCBwZF9lbmFibGUgKHZvaWQpCiBzdGF0aWMgdm9pZAogcGRfZGlzYWJsZSAo dm9pZCkKIHsKLSAgaWYgKCFwZF9hYmxlKQorICBzdHJ1Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMg KmRhdGE7CisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlkIChpbmZlcmlv cl9wdGlkKTsKKworICBpZiAoIWRhdGEtPnBkX2FibGUpCiAgICAgcmV0dXJuOwotICBpZiAocGRf YWN0aXZlKQorICBpZiAoZGF0YS0+cGRfYWN0aXZlKQogICAgIHBkX2RlYWN0aXZhdGUgKCk7Ci0g IHBkX2FibGUgPSAwOworICBkYXRhLT5wZF9hYmxlID0gMDsKICAgY3VycmVudF9pbmZlcmlvciAo KS0+dW5wdXNoX3RhcmdldCAoJmFpeF90aHJlYWRfb3BzKTsKIH0KIAogLyogbmV3X29iamZpbGUg b2JzZXJ2ZXIgY2FsbGJhY2suCiAKICAgIElmIE9CSkZJTEUgaXMgbm9uLW51bGwsIGNoZWNrIHdo ZXRoZXIgYSB0aHJlYWRlZCBhcHBsaWNhdGlvbiBpcwotICAgYmVpbmcgZGVidWdnZWQsIGFuZCBp ZiBzbywgcHJlcGFyZSBmb3IgdGhyZWFkIGRlYnVnZ2luZy4KLQotICAgSWYgT0JKRklMRSBpcyBu dWxsLCBzdG9wIGRlYnVnZ2luZyB0aHJlYWRzLiAgKi8KKyAgIGJlaW5nIGRlYnVnZ2VkLCBhbmQg aWYgc28sIHByZXBhcmUgZm9yIHRocmVhZCBkZWJ1Z2dpbmcuICAqLwogCiBzdGF0aWMgdm9pZAog bmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQogewogICBpZiAob2JqZmlsZSkK ICAgICBwZF9lbmFibGUgKCk7Ci0gIGVsc2UKLSAgICBwZF9kaXNhYmxlICgpOwogfQogCiAvKiBB dHRhY2ggdG8gcHJvY2VzcyBzcGVjaWZpZWQgYnkgQVJHUy4gICovCkBAIC0xMDQyLDggKzExMDgs MTEgQEAgYWl4X3RocmVhZF90YXJnZXQ6OnJlc3VtZSAocHRpZF90IHB0aWQsIGludCBzdGVwLCBl bnVtIGdkYl9zaWduYWwgc2lnKQogewogICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZDsKICAg cHRoZGJfdGlkX3QgdGlkWzJdOworICBzdHJ1Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7 CisgIAorICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcHRpZCAocHRpZCk7CiAK LSAgaWYgKCFQRF9USUQgKHB0aWQpKQorICBpZiAoIShwdGlkLnRpZCAoKSAhPSAwKSkKICAgICB7 CiAgICAgICBzY29wZWRfcmVzdG9yZSBzYXZlX2luZmVyaW9yX3B0aWQgPSBtYWtlX3Njb3BlZF9y ZXN0b3JlICgmaW5mZXJpb3JfcHRpZCk7CiAgICAgICAKQEAgLTEwNjUsNyArMTEzNCw3IEBAIGFp eF90aHJlYWRfdGFyZ2V0OjpyZXN1bWUgKHB0aWRfdCBwdGlkLCBpbnQgc3RlcCwgZW51bSBnZGJf c2lnbmFsIHNpZykKIAkgICAgICAgcHRpZC5sd3AgKCkpOwogICAgICAgdGlkWzFdID0gMDsKIAot ICAgICAgaWYgKGFyY2g2NCkKKyAgICAgIGlmIChkYXRhLT5hcmNoNjQpCiAJcHRyYWNlNjRhaXgg KFBUVF9DT05USU5VRSwgdGlkWzBdLCAobG9uZyBsb25nKSAxLAogCQkgICAgIGdkYl9zaWduYWxf dG9faG9zdCAoc2lnKSwgKFBUUkFDRV9UWVBFX0FSRzUpIHRpZCk7CiAgICAgICBlbHNlCkBAIC0x MDgyLDYgKzExNTEsNyBAQCBwdGlkX3QKIGFpeF90aHJlYWRfdGFyZ2V0Ojp3YWl0IChwdGlkX3Qg cHRpZCwgc3RydWN0IHRhcmdldF93YWl0c3RhdHVzICpzdGF0dXMsCiAJCQkgdGFyZ2V0X3dhaXRf ZmxhZ3Mgb3B0aW9ucykKIHsKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOwog ICB7CiAgICAgcGlkX3RvX3ByYyAoJnB0aWQpOwogCkBAIC0xMDk1LDggKzExNjUsMTAgQEAgYWl4 X3RocmVhZF90YXJnZXQ6OndhaXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0 dXMgKnN0YXR1cywKICAgICAgcGlkLW9ubHkgcHRpZHMuICAqLwogICBnZGJfYXNzZXJ0IChwdGlk LmlzX3BpZCAoKSk7CiAKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQg KHB0aWQpOworCiAgIC8qIENoZWNrIHdoZXRoZXIgbGlicHRoZGVidWcgbWlnaHQgYmUgcmVhZHkg dG8gYmUgaW5pdGlhbGl6ZWQuICAqLwotICBpZiAoIXBkX2FjdGl2ZSAmJiBzdGF0dXMtPmtpbmQg KCkgPT0gVEFSR0VUX1dBSVRLSU5EX1NUT1BQRUQKKyAgaWYgKCFkYXRhLT5wZF9hY3RpdmUgJiYg c3RhdHVzLT5raW5kICgpID09IFRBUkdFVF9XQUlUS0lORF9TVE9QUEVECiAgICAgICAmJiBzdGF0 dXMtPnNpZyAoKSA9PSBHREJfU0lHTkFMX1RSQVApCiAgICAgewogICAgICAgcHJvY2Vzc19zdHJh dHVtX3RhcmdldCAqcHJvY190YXJnZXQKQEAgLTExMDUsNyArMTE3Nyw3IEBAIGFpeF90aHJlYWRf dGFyZ2V0Ojp3YWl0IChwdGlkX3QgcHRpZCwgc3RydWN0IHRhcmdldF93YWl0c3RhdHVzICpzdGF0 dXMsCiAgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgpOwog CiAgICAgICBpZiAocmVnY2FjaGVfcmVhZF9wYyAocmVnY2FjaGUpCi0JICAtIGdkYmFyY2hfZGVj cl9wY19hZnRlcl9icmVhayAoZ2RiYXJjaCkgPT0gcGRfYnJrX2FkZHIpCisJICAtIGdkYmFyY2hf ZGVjcl9wY19hZnRlcl9icmVhayAoZ2RiYXJjaCkgPT0gZGF0YS0+cGRfYnJrX2FkZHIpCiAJcmV0 dXJuIHBkX2FjdGl2YXRlIChwdGlkLnBpZCAoKSk7CiAgICAgfQogCkBAIC0xMjI5LDE4ICsxMzAx LDIwIEBAIGZldGNoX3JlZ3NfdXNlcl90aHJlYWQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs IHB0aGRiX3B0aHJlYWRfdCBwZHRpZCkKICAgcHBjX2dkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFy Y2hfdGRlcDxwcGNfZ2RiYXJjaF90ZGVwPiAoZ2RiYXJjaCk7CiAgIGludCBzdGF0dXMsIGk7CiAg IHB0aGRiX2NvbnRleHRfdCBjdHg7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0 YTsKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKGluZmVyaW9yX3B0 aWQpOwogCiAgIGlmIChkZWJ1Z19haXhfdGhyZWFkKQogICAgIGdkYl9wcmludGYgKGdkYl9zdGRs b2csIAogCQkiZmV0Y2hfcmVnc191c2VyX3RocmVhZCAlbHhcbiIsIChsb25nKSBwZHRpZCk7Ci0g IHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfY29udGV4dCAocGRfc2Vzc2lvbiwgcGR0aWQsICZjdHgp OworICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX2NvbnRleHQgKGRhdGEtPnBkX3Nlc3Npb24sIHBk dGlkLCAmY3R4KTsKICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTKQogICAgIGVycm9yIChf KCJhaXgtdGhyZWFkOiBmZXRjaF9yZWdpc3RlcnM6IHB0aGRiX3B0aHJlYWRfY29udGV4dCByZXR1 cm5lZCAlcyIpLAogCSAgIHBkX3N0YXR1czJzdHIgKHN0YXR1cykpOwogCiAgIC8qIEdlbmVyYWwt cHVycG9zZSByZWdpc3RlcnMuICAqLwogCi0gIGlmIChhcmNoNjQpCisgIGlmIChkYXRhLT5hcmNo NjQpCiAgICAgc3VwcGx5X2dwcnM2NCAocmVnY2FjaGUsIGN0eC5ncHIpOwogICBlbHNlCiAgICAg Zm9yIChpID0gMDsgaSA8IHBwY19udW1fZ3ByczsgaSsrKQpAQCAtMTI1Myw3ICsxMzI3LDcgQEAg ZmV0Y2hfcmVnc191c2VyX3RocmVhZCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJf cHRocmVhZF90IHBkdGlkKQogCiAgIC8qIFNwZWNpYWwgcmVnaXN0ZXJzLiAgKi8KIAotICBpZiAo YXJjaDY0KQorICBpZiAoZGF0YS0+YXJjaDY0KQogICAgIHN1cHBseV9zcHJzNjQgKHJlZ2NhY2hl LCBjdHguaWFyLCBjdHgubXNyLCBjdHguY3IsIGN0eC5sciwgY3R4LmN0ciwKIAkJCSAgICAgY3R4 LnhlciwgY3R4LmZwc2NyKTsKICAgZWxzZQpAQCAtMTI4OCwxOCArMTM2MiwyMSBAQCBmZXRjaF9y ZWdzX2tlcm5lbF90aHJlYWQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubywK ICAgc3RydWN0IHB0eHNwcnMgc3ByczY0OwogICBzdHJ1Y3QgcHRzcHJzIHNwcnMzMjsKICAgaW50 IGk7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAgCisgIGRhdGEgPSBn ZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlkIChyZWdjYWNoZS0+cHRpZCAoKSk7CiAKICAg aWYgKGRlYnVnX2FpeF90aHJlYWQpCiAgICAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywKIAkJImZl dGNoX3JlZ3Nfa2VybmVsX3RocmVhZCB0aWQ9JWx4IHJlZ25vPSVkIGFyY2g2ND0lZFxuIiwKLQkJ KGxvbmcpIHRpZCwgcmVnbm8sIGFyY2g2NCk7CisJCShsb25nKSB0aWQsIHJlZ25vLCBkYXRhLT5h cmNoNjQpOwogCiAgIC8qIEdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLwogICBpZiAocmVn bm8gPT0gLTEKICAgICAgIHx8ICh0ZGVwLT5wcGNfZ3AwX3JlZ251bSA8PSByZWdubwogCSAgJiYg cmVnbm8gPCB0ZGVwLT5wcGNfZ3AwX3JlZ251bSArIHBwY19udW1fZ3BycykpCiAgICAgewotICAg ICAgaWYgKGFyY2g2NCkKKyAgICAgIGlmIChkYXRhLT5hcmNoNjQpCiAJewogCSAgaWYgKCFwdHJh Y2U2NGFpeCAoUFRUX1JFQURfR1BSUywgdGlkLCAKIAkJCSAgICAodW5zaWduZWQgbG9uZykgZ3By czY0LCAwLCBOVUxMKSkKQEAgLTEzMzEsNyArMTQwOCw3IEBAIGZldGNoX3JlZ3Nfa2VybmVsX3Ro cmVhZCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vLAogCiAgIGlmIChyZWdu byA9PSAtMSB8fCBzcGVjaWFsX3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ25vKSkKICAgICB7Ci0g ICAgICBpZiAoYXJjaDY0KQorICAgICAgaWYgKGRhdGEtPmFyY2g2NCkKIAl7CiAJICBpZiAoIXB0 cmFjZTY0YWl4IChQVFRfUkVBRF9TUFJTLCB0aWQsIAogCQkJICAgICh1bnNpZ25lZCBsb25nKSAm c3ByczY0LCAwLCBOVUxMKSkKQEAgLTEzNjMsNyArMTQ0MCw3IEBAIGFpeF90aHJlYWRfdGFyZ2V0 OjpmZXRjaF9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubykK ICAgc3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQ7CiAgIHB0aGRiX3RpZF90IHRpZDsKIAotICBp ZiAoIVBEX1RJRCAocmVnY2FjaGUtPnB0aWQgKCkpKQorICBpZiAoIShyZWdjYWNoZS0+cHRpZCAo KS50aWQgKCkgIT0gMCkpCiAgICAgYmVuZWF0aCAoKS0+ZmV0Y2hfcmVnaXN0ZXJzIChyZWdjYWNo ZSwgcmVnbm8pOwogICBlbHNlCiAgICAgewpAQCAtMTUxMSw2ICsxNTg4LDggQEAgc3RvcmVfcmVn c191c2VyX3RocmVhZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJfcHRo cmVhZF90IHBkdGlkKQogICBwdGhkYl9jb250ZXh0X3QgY3R4OwogICB1aW50MzJfdCBpbnQzMjsK ICAgdWludDY0X3QgaW50NjQ7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsK KyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKGluZmVyaW9yX3B0aWQp OwogCiAgIGlmIChkZWJ1Z19haXhfdGhyZWFkKQogICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2cs IApAQCAtMTUxOCw3ICsxNTk3LDcgQEAgc3RvcmVfcmVnc191c2VyX3RocmVhZCAoY29uc3Qgc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJfcHRocmVhZF90IHBkdGlkKQogCiAgIC8qIFJl dHJpZXZlIHRoZSB0aHJlYWQncyBjdXJyZW50IGNvbnRleHQgZm9yIGl0cyBub24tcmVnaXN0ZXIK ICAgICAgdmFsdWVzLiAgKi8KLSAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9jb250ZXh0IChwZF9z ZXNzaW9uLCBwZHRpZCwgJmN0eCk7CisgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfY29udGV4dCAo ZGF0YS0+cGRfc2Vzc2lvbiwgcGR0aWQsICZjdHgpOwogICBpZiAoc3RhdHVzICE9IFBUSERCX1NV Q0NFU1MpCiAgICAgZXJyb3IgKF8oImFpeC10aHJlYWQ6IHN0b3JlX3JlZ2lzdGVyczogcHRoZGJf cHRocmVhZF9jb250ZXh0IHJldHVybmVkICVzIiksCiAJICAgcGRfc3RhdHVzMnN0ciAoc3RhdHVz KSk7CkBAIC0xNTI4LDcgKzE2MDcsNyBAQCBzdG9yZV9yZWdzX3VzZXJfdGhyZWFkIChjb25zdCBz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBwdGhkYl9wdGhyZWFkX3QgcGR0aWQpCiAgIGZvciAo aSA9IDA7IGkgPCBwcGNfbnVtX2dwcnM7IGkrKykKICAgICBpZiAoUkVHX1ZBTElEID09IHJlZ2Nh Y2hlLT5nZXRfcmVnaXN0ZXJfc3RhdHVzICh0ZGVwLT5wcGNfZ3AwX3JlZ251bSArIGkpKQogICAg ICAgewotCWlmIChhcmNoNjQpCisJaWYgKGRhdGEtPmFyY2g2NCkKIAkgIHsKIAkgICAgcmVnY2Fj aGUtPnJhd19jb2xsZWN0ICh0ZGVwLT5wcGNfZ3AwX3JlZ251bSArIGksICh2b2lkICopICZpbnQ2 NCk7CiAJICAgIGN0eC5ncHJbaV0gPSBpbnQ2NDsKQEAgLTE1NDUsNyArMTYyNCw3IEBAIHN0b3Jl X3JlZ3NfdXNlcl90aHJlYWQgKGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHB0aGRi X3B0aHJlYWRfdCBwZHRpZCkKICAgICBmaWxsX2ZwcnMgKHJlZ2NhY2hlLCBjdHguZnByKTsKIAog ICAvKiBTcGVjaWFsIHJlZ2lzdGVycyAoYWx3YXlzIGtlcHQgaW4gY3R4IGFzIDY0IGJpdHMpLiAg Ki8KLSAgaWYgKGFyY2g2NCkKKyAgaWYgKGRhdGEtPmFyY2g2NCkKICAgICB7CiAgICAgICBmaWxs X3NwcnM2NCAocmVnY2FjaGUsICZjdHguaWFyLCAmY3R4Lm1zciwgJmN0eC5jciwgJmN0eC5sciwg JmN0eC5jdHIsCiAJCQkgICAgICZjdHgueGVyLCAmY3R4LmZwc2NyKTsKQEAgLTE1NzYsNyArMTY1 NSw3IEBAIHN0b3JlX3JlZ3NfdXNlcl90aHJlYWQgKGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIHB0aGRiX3B0aHJlYWRfdCBwZHRpZCkKIAljdHguZnBzY3IgPSB0bXBfZnBzY3I7CiAg ICAgfQogCi0gIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfc2V0Y29udGV4dCAocGRfc2Vzc2lvbiwg cGR0aWQsICZjdHgpOworICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3NldGNvbnRleHQgKGRhdGEt PnBkX3Nlc3Npb24sIHBkdGlkLCAmY3R4KTsKICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNT KQogICAgIGVycm9yIChfKCJhaXgtdGhyZWFkOiBzdG9yZV9yZWdpc3RlcnM6ICIKIAkgICAgICJw dGhkYl9wdGhyZWFkX3NldGNvbnRleHQgcmV0dXJuZWQgJXMiKSwKQEAgLTE2MDIsNiArMTY4MSw5 IEBAIHN0b3JlX3JlZ3Nfa2VybmVsX3RocmVhZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZSwgaW50IHJlZ25vLAogICBkb3VibGUgZnByc1twcGNfbnVtX2ZwcnNdOwogICBzdHJ1Y3Qg cHR4c3BycyBzcHJzNjQ7CiAgIHN0cnVjdCBwdHNwcnMgIHNwcnMzMjsKKyAgc3RydWN0IGFpeF90 aHJlYWRfdmFyaWFibGVzICpkYXRhOworICAKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxw ZXJfZm9yX3B0aWQgKHJlZ2NhY2hlLT5wdGlkICgpKTsKIAogICBpZiAoZGVidWdfYWl4X3RocmVh ZCkKICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLCAKQEAgLTE2MTMsNyArMTY5NSw3IEBAIHN0 b3JlX3JlZ3Nfa2VybmVsX3RocmVhZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwg aW50IHJlZ25vLAogICAgICAgfHwgKHRkZXAtPnBwY19ncDBfcmVnbnVtIDw9IHJlZ25vCiAJICAm JiByZWdubyA8IHRkZXAtPnBwY19ncDBfcmVnbnVtICsgcHBjX251bV9mcHJzKSkKICAgICB7Ci0g ICAgICBpZiAoYXJjaDY0KQorICAgICAgaWYgKGRhdGEtPmFyY2g2NCkKIAl7CiAJICAvKiBQcmUt ZmV0Y2g6IHNvbWUgcmVncyBtYXkgbm90IGJlIGluIHRoZSBjYWNoZS4gICovCiAJICBwdHJhY2U2 NGFpeCAoUFRUX1JFQURfR1BSUywgdGlkLCAodW5zaWduZWQgbG9uZykgZ3ByczY0LCAwLCBOVUxM KTsKQEAgLTE2NDYsNyArMTcyOCw3IEBAIHN0b3JlX3JlZ3Nfa2VybmVsX3RocmVhZCAoY29uc3Qg c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vLAogCiAgIGlmIChyZWdubyA9PSAt MSB8fCBzcGVjaWFsX3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ25vKSkKICAgICB7Ci0gICAgICBp ZiAoYXJjaDY0KQorICAgICAgaWYgKGRhdGEtPmFyY2g2NCkKIAl7CiAJICAvKiBQcmUtZmV0Y2g6 IHNvbWUgcmVnaXN0ZXJzIHdvbid0IGJlIGluIHRoZSBjYWNoZS4gICovCiAJICBwdHJhY2U2NGFp eCAoUFRUX1JFQURfU1BSUywgdGlkLCAKQEAgLTE3MDMsNyArMTc4NSw3IEBAIGFpeF90aHJlYWRf dGFyZ2V0OjpzdG9yZV9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCBy ZWdubykKICAgc3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQ7CiAgIHB0aGRiX3RpZF90IHRpZDsK IAotICBpZiAoIVBEX1RJRCAocmVnY2FjaGUtPnB0aWQgKCkpKQorICBpZiAoIShyZWdjYWNoZS0+ cHRpZCAoKS50aWQgKCkgIT0gMCkpCiAgICAgYmVuZWF0aCAoKS0+c3RvcmVfcmVnaXN0ZXJzIChy ZWdjYWNoZSwgcmVnbm8pOwogICBlbHNlCiAgICAgewpAQCAtMTc0MSw3ICsxODIzLDcgQEAgYWl4 X3RocmVhZF90YXJnZXQ6Om1vdXJuX2luZmVyaW9yICgpCiB7CiAgIHRhcmdldF9vcHMgKmJlbmVh dGggPSB0aGlzLT5iZW5lYXRoICgpOwogCi0gIHBkX2RlYWN0aXZhdGUgKCk7CisgIHBkX2Rpc2Fi bGUgKCk7CiAgIGJlbmVhdGgtPm1vdXJuX2luZmVyaW9yICgpOwogfQogCkBAIC0xNzUwLDcgKzE4 MzIsNyBAQCBhaXhfdGhyZWFkX3RhcmdldDo6bW91cm5faW5mZXJpb3IgKCkKIGJvb2wKIGFpeF90 aHJlYWRfdGFyZ2V0Ojp0aHJlYWRfYWxpdmUgKHB0aWRfdCBwdGlkKQogewotICBpZiAoIVBEX1RJ RCAocHRpZCkpCisgIGlmICghKHB0aWQudGlkICgpICE9IDApKQogICAgIHJldHVybiBiZW5lYXRo ICgpLT50aHJlYWRfYWxpdmUgKHB0aWQpOwogCiAgIC8qIFdlIHVwZGF0ZSB0aGUgdGhyZWFkIGxp c3QgZXZlcnkgdGltZSB0aGUgY2hpbGQgc3RvcHMsIHNvIGFsbApAQCAtMTc2Niw3ICsxODQ4LDcg QEAgYWl4X3RocmVhZF90YXJnZXQ6OnRocmVhZF9hbGl2ZSAocHRpZF90IHB0aWQpCiBzdGQ6OnN0 cmluZwogYWl4X3RocmVhZF90YXJnZXQ6OnBpZF90b19zdHIgKHB0aWRfdCBwdGlkKQogewotICBp ZiAoIVBEX1RJRCAocHRpZCkpCisgIGlmICghKHB0aWQudGlkICgpICE9IDApKQogICAgIHJldHVy biBiZW5lYXRoICgpLT5waWRfdG9fc3RyIChwdGlkKTsKIAogICByZXR1cm4gc3RyaW5nX3ByaW50 ZiAoXygiVGhyZWFkICVzIiksIHB1bG9uZ2VzdCAocHRpZC50aWQgKCkpKTsKQEAgLTE3ODYsOCAr MTg2OCwxMSBAQCBhaXhfdGhyZWFkX3RhcmdldDo6ZXh0cmFfdGhyZWFkX2luZm8gKHN0cnVjdCB0 aHJlYWRfaW5mbyAqdGhyZWFkKQogICBwdGhkYl9kZXRhY2hzdGF0ZV90IGRldGFjaHN0YXRlOwog ICBpbnQgY2FuY2VscGVuZDsKICAgc3RhdGljIGNoYXIgKnJldCA9IE5VTEw7CisgIHN0cnVjdCBh aXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKworICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hl bHBlcl9mb3JfcHRpZCAodGhyZWFkLT5wdGlkKTsKIAotICBpZiAoIVBEX1RJRCAodGhyZWFkLT5w dGlkKSkKKyAgaWYgKCEodGhyZWFkLT5wdGlkLnRpZCAoKSAhPSAwKSkKICAgICByZXR1cm4gTlVM TDsKIAogICBzdHJpbmdfZmlsZSBidWY7CkBAIC0xODAwLDI0ICsxODg1LDI0IEBAIGFpeF90aHJl YWRfdGFyZ2V0OjpleHRyYV90aHJlYWRfaW5mbyAoc3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQp CiAgICAgLyogaTE4bjogTGlrZSAidGhyZWFkLWlkZW50aWZpZXIgJWQsIFtzdGF0ZV0gcnVubmlu Zywgc3VzcGVuZGVkIiAqLwogICAgIGJ1Zi5wcmludGYgKF8oInRpZCAlZCIpLCAoaW50KXRpZCk7 CiAKLSAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9zdGF0ZSAocGRfc2Vzc2lvbiwgcGR0aWQsICZz dGF0ZSk7CisgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfc3RhdGUgKGRhdGEtPnBkX3Nlc3Npb24s IHBkdGlkLCAmc3RhdGUpOwogICBpZiAoc3RhdHVzICE9IFBUSERCX1NVQ0NFU1MpCiAgICAgc3Rh dGUgPSBQU1RfTk9UU1VQOwogICBidWYucHJpbnRmICgiLCAlcyIsIHN0YXRlMnN0ciAoc3RhdGUp KTsKIAotICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3N1c3BlbmRzdGF0ZSAocGRfc2Vzc2lvbiwg cGR0aWQsIAorICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3N1c3BlbmRzdGF0ZSAoZGF0YS0+cGRf c2Vzc2lvbiwgcGR0aWQsIAogCQkJCSAgICAgICAmc3VzcGVuZHN0YXRlKTsKICAgaWYgKHN0YXR1 cyA9PSBQVEhEQl9TVUNDRVNTICYmIHN1c3BlbmRzdGF0ZSA9PSBQU1NfU1VTUEVOREVEKQogICAg IC8qIGkxOG46IExpa2UgIlRocmVhZC1JZCAlZCwgW3N0YXRlXSBydW5uaW5nLCBzdXNwZW5kZWQi ICovCiAgICAgYnVmLnByaW50ZiAoXygiLCBzdXNwZW5kZWQiKSk7CiAKLSAgc3RhdHVzID0gcHRo ZGJfcHRocmVhZF9kZXRhY2hzdGF0ZSAocGRfc2Vzc2lvbiwgcGR0aWQsIAorICBzdGF0dXMgPSBw dGhkYl9wdGhyZWFkX2RldGFjaHN0YXRlIChkYXRhLT5wZF9zZXNzaW9uLCBwZHRpZCwgCiAJCQkJ ICAgICAgJmRldGFjaHN0YXRlKTsKICAgaWYgKHN0YXR1cyA9PSBQVEhEQl9TVUNDRVNTICYmIGRl dGFjaHN0YXRlID09IFBEU19ERVRBQ0hFRCkKICAgICAvKiBpMThuOiBMaWtlICJUaHJlYWQtSWQg JWQsIFtzdGF0ZV0gcnVubmluZywgZGV0YWNoZWQiICovCiAgICAgYnVmLnByaW50ZiAoXygiLCBk ZXRhY2hlZCIpKTsKIAotICBwdGhkYl9wdGhyZWFkX2NhbmNlbHBlbmQgKHBkX3Nlc3Npb24sIHBk dGlkLCAmY2FuY2VscGVuZCk7CisgIHB0aGRiX3B0aHJlYWRfY2FuY2VscGVuZCAoZGF0YS0+cGRf c2Vzc2lvbiwgcGR0aWQsICZjYW5jZWxwZW5kKTsKICAgaWYgKHN0YXR1cyA9PSBQVEhEQl9TVUND RVNTICYmIGNhbmNlbHBlbmQpCiAgICAgLyogaTE4bjogTGlrZSAiVGhyZWFkLUlkICVkLCBbc3Rh dGVdIHJ1bm5pbmcsIGNhbmNlbCBwZW5kaW5nIiAqLwogICAgIGJ1Zi5wcmludGYgKF8oIiwgY2Fu Y2VsIHBlbmRpbmciKSk7CmRpZmYgLS1naXQgYS9nZGIvc29saWItYWl4LmMgYi9nZGIvc29saWIt YWl4LmMKaW5kZXggZjQ4M2Y1NGRlMTMuLjY3MWMxN2NiYTQ2IDEwMDY0NAotLS0gYS9nZGIvc29s aWItYWl4LmMKKysrIGIvZ2RiL3NvbGliLWFpeC5jCkBAIC02MTgsNiArNjE4LDE2IEBAIHNvbGli X2FpeF9iZmRfb3BlbiAoY29uc3QgY2hhciAqcGF0aG5hbWUpCiAgICAgICBpZiAobWVtYmVyX25h bWUgPT0gYmZkX2dldF9maWxlbmFtZSAob2JqZWN0X2JmZC5nZXQgKCkpKQogCWJyZWFrOwogCisg ICAgICBzdGQ6OnN0cmluZyBzID0gYmZkX2dldF9maWxlbmFtZSAob2JqZWN0X2JmZC5nZXQgKCkp OworCisgICAgICAvKiBGb3IgZXZlcnkgaW5mZXJpb3IgYWZ0ZXIgZmlyc3QgaW50IGJmZCBzeXN0 ZW0gd2UgCisJIHdpbGwgaGF2ZSB0aGUgcGF0aG5hbWUgaW5zdGVhZCBvZiB0aGUgbWVtYmVyIG5h bWUKKwkgcmVnaXN0ZXJlZC4gSGVuY2UgdGhlIGJlbG93IGNvbmRpdGlvbiBleGlzdHMuICAqLwor CisgICAgICBpZiAocy5maW5kICgnKCcpICE9IHN0ZDo6c3RyaW5nOjpucG9zCisJICAmJiBzLmZp bmQgKG1lbWJlcl9uYW1lKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKwlyZXR1cm4gb2JqZWN0X2Jm ZDsgCisKICAgICAgIG9iamVjdF9iZmQgPSBnZGJfYmZkX29wZW5yX25leHRfYXJjaGl2ZWRfZmls ZSAoYXJjaGl2ZV9iZmQuZ2V0ICgpLAogCQkJCQkJICAgICBvYmplY3RfYmZkLmdldCAoKSk7CiAg ICAgfQotLSAKMi4zMS4xCgo= --_004_DM6PR15MB3545C1FD15BEC2D160B3AB81D6D79DM6PR15MB3545namp_--