From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id 935DC3858C52 for ; Fri, 3 Feb 2023 11:10:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 935DC3858C52 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=ibm.com Received: from pps.filterd (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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=pp1; bh=OwufQzWZtx59fk0Rl3mBZv/rXwxlFPEla8busKbt1c8=; b=b0xHqStH7OPmMHLBkqtIlnKPyC9SJYLmc0Oblq9nDpyJuMW+XKldW9n/1TjmvwsSg06u HSDli8fitmNo1tYkk5kbQbk9mSYIWRzxwYEnupDQACLfkXId1ggm0CaXnhkxjSYpNdoT 5PBDJsWbyr3F9laUToFnR6P3ZB2kywrT43dmvNH/9PH2fLknAaHyQhp2IxvOaonFlo8g 7IMoJFy5OUpSR2MyLfx/t8JlekGK/b5y51VDamaO2ACn2jQ9tBHjskNkDiUts2lwjImP xd98KBHtaBawrFaVcmWHyKikhrkzfTqpHs8LHEGCYBxvvoNG5cDIe1r4MAEhBogy0PU+ 2Q== 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 From: Aditya Kamath1 To: Ulrich Weigand , "simark@simark.ca" , "gdb-patches@sourceware.org" CC: Sangamesh Mallayya Subject: Re: [PATCH] 0001-Fix-multi-thread-debug-bug-in-AIX.patch Thread-Topic: [PATCH] 0001-Fix-multi-thread-debug-bug-in-AIX.patch Thread-Index: AQHY6DximDPpCqTL9kGyFvcEZokFBq4jlIiAgBFljYeAAA2HgIAIORaygAMrdQCACMPAdYADi8KAgAAbf+aAABUYgIAADhDtgAjHItiAAgYnAIACq/WKgAVsGwCABC6K8oAAZcYAgAq8WQ+AADoMgIAFnB/fgAUxEICABkBkK4AWHiQAgAFvY+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-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HTML_MESSAGE,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_004_DM6PR15MB3545C1FD15BEC2D160B3AB81D6D79DM6PR15MB3545namp_ Content-Type: multipart/alternative; boundary="_000_DM6PR15MB3545C1FD15BEC2D160B3AB81D6D79DM6PR15MB3545namp_" --_000_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 =46rom 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 =46rom 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"? =46rom 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 --_000_DM6PR15MB3545C1FD15BEC2D160B3AB81D6D79DM6PR15MB3545namp_-- --_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 RnJvbSA5NjYxMzUwN2ZiZjk2MmViOTA5NDBjOTc2M2E2MGQyYjUwZjZhNDZk IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFk aGFyIEthbWF0aCA8QWRpdHlhLkthbWF0aDFAaWJtLmNvbT4KRGF0ZTogRnJp LCAzIEZlYiAyMDIzIDA0OjI0OjI0IC0wNjAwClN1YmplY3Q6IFtQQVRDSF0g Rml4IE11bHRpIHRocmVhZCBkZWJ1ZyBidWcgZml4IGluIEFJWAoKIEluIHRo ZSByZWNlbnQgY29tbWl0IDk4ZWQyNGZiMzVkODllYjIwMTc5ZWRmNmMxMmY1 OTljN2E5ZTIyOGUgbWFkZSBieSBNci4gVG9tIHRoZXJlIGlzIGEgY2hhbmdl IGluIGFpeC10aHJlYWQuYyBmaWxlIHRoYXQgY2hhbmdlcwoKIHN0YXRpY19j YXN0IDxhaXhfdGhyZWFkX2luZm8gKj4gaW4gZ2RiIHRvIGdkYjo6Y2hlY2tl ZF9zdGF0aWNfY2FzdCA8YWl4X3RocmVhZF9pbmZvICo+CgogQUlYIGZvbGtz IHVzaW5nIHRoZSBsYXRlc3QgdmVyc2lvbiB3aWxsIG5vdCBiZSBhYmxlIHRv IGRlYnVnIG11bHRpIHRocmVhZCBwcm9ncmFtcyBhcyBhIHJlc3VsdCBvZiBp dAoKVGhlIGVycm9yIGluIEFJWCBpcyBhcyBmb2xsb3dzOi0KCmludGVybmFs LWVycm9yIGNoZWNrZWRfc3RhdGljX2Nhc3QgQXNzZXJ0aW9uIHJlc3VsdCAh PSBudWxscHRyIGZhaWxlZC4KClRoZSByZWFzb24gYmVpbmcgQUlYIHNoYXJl ZCBsaWJyYXJ5IHdlcmUgbm90IGJlaW5nIGxvYWRlZCBmb3IgYSBuZXcgaW5m ZXJpb3IgYW5kIHRvcCB0YXJnZXQgd2FzIG5vdCBzZXQgcHJvcGVybHkuCgpU aGlzIHBhdGNoIGlzIGEgZml4IGZvciB0aGUgc2FtZS4KLS0tCiBnZGIvYWl4 LXRocmVhZC5jIHwgMzMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tCiBnZGIvc29saWItYWl4LmMgIHwgIDEwICsr CiAyIGZpbGVzIGNoYW5nZWQsIDIxOSBpbnNlcnRpb25zKCspLCAxMjQgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2RiL2FpeC10aHJlYWQuYyBiL2dk Yi9haXgtdGhyZWFkLmMKaW5kZXggZTU1NmMxNTM1NzYuLjIzZTFhYTZlOTBj IDEwMDY0NAotLS0gYS9nZGIvYWl4LXRocmVhZC5jCisrKyBiL2dkYi9haXgt dGhyZWFkLmMKQEAgLTY4LDEwICs2OCw2IEBAIHN0YXRpYyBib29sIGRlYnVn X2FpeF90aHJlYWQ7CiAjZGVmaW5lIHB0aGRiX3RpZF90CXRpZF90CiAjZW5k aWYKIAotLyogUmV0dXJuIHdoZXRoZXIgdG8gdHJlYXQgUElEIGFzIGEgZGVi dWdnYWJsZSB0aHJlYWQgaWQuICAqLwotCi0jZGVmaW5lIFBEX1RJRChwdGlk KQkocGRfYWN0aXZlICYmIHB0aWQudGlkICgpICE9IDApCi0KIC8qIFN1Y2Nl c3MgYW5kIGZhaWx1cmUgdmFsdWVzIHJldHVybmVkIGJ5IHB0aGRiIGNhbGxi YWNrcy4gICovCiAKICNkZWZpbmUgUERDX1NVQ0NFU1MJUFRIREJfU1VDQ0VT UwpAQCAtMTQ0LDI0ICsxNDAsNiBAQCBjbGFzcyBhaXhfdGhyZWFkX3Rhcmdl dCBmaW5hbCA6IHB1YmxpYyB0YXJnZXRfb3BzCiAKIHN0YXRpYyBhaXhfdGhy ZWFkX3RhcmdldCBhaXhfdGhyZWFkX29wczsKIAotLyogQWRkcmVzcyBvZiB0 aGUgZnVuY3Rpb24gdGhhdCBsaWJwdGhyZWFkIHdpbGwgY2FsbCB3aGVuIGxp YnB0aGRlYnVnCi0gICBpcyByZWFkeSB0byBiZSBpbml0aWFsaXplZC4gICov Ci0KLXN0YXRpYyBDT1JFX0FERFIgcGRfYnJrX2FkZHI7Ci0KLS8qIFdoZXRo ZXIgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24gaXMgZGVidWdnYWJsZSBieSBw dGhkYi4gICovCi0KLXN0YXRpYyBpbnQgcGRfYWJsZSA9IDA7Ci0KLS8qIFdo ZXRoZXIgYSB0aHJlYWRlZCBhcHBsaWNhdGlvbiBpcyBiZWluZyBkZWJ1Z2dl ZC4gICovCi0KLXN0YXRpYyBpbnQgcGRfYWN0aXZlID0gMDsKLQotLyogV2hl dGhlciB0aGUgY3VycmVudCBhcmNoaXRlY3R1cmUgaXMgNjQtYml0LiAgCi0g ICBPbmx5IHZhbGlkIHdoZW4gcGRfYWJsZSBpcyB0cnVlLiAgKi8KLQotc3Rh dGljIGludCBhcmNoNjQ7Ci0KIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zIGZv ciBwdGhkYiBjYWxsYmFja3MuICAqLwogCiBzdGF0aWMgaW50IHBkY19zeW1i b2xfYWRkcnMgKHB0aGRiX3VzZXJfdCwgcHRoZGJfc3ltYm9sX3QgKiwgaW50 KTsKQEAgLTE5MSw5ICsxNjksNjYgQEAgc3RhdGljIHB0aGRiX2NhbGxiYWNr c190IHBkX2NhbGxiYWNrcyA9IHsKICAgTlVMTAogfTsKIAotLyogQ3VycmVu dCBwdGhkYiBzZXNzaW9uLiAgKi8KKy8qIEFpeCB2YXJpYWJsZSBzdHJ1Y3R1 cmUuICAqLworc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzIAoreworICAv KiBXaGV0aGVyIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGlzIGRlYnVnZ2Fi bGUgYnkgcHRoZGIuICAqLworICBpbnQgcGRfYWJsZTsKKworICAvKiBXaGV0 aGVyIGEgdGhyZWFkZWQgYXBwbGljYXRpb24gaXMgYmVpbmcgZGVidWdnZWQu ICAqLworICBpbnQgcGRfYWN0aXZlOworCisgIC8qIEN1cnJlbnQgcHRoZGIg c2Vzc2lvbi4gICovCisgIHB0aGRiX3Nlc3Npb25fdCBwZF9zZXNzaW9uOwor CisgIC8qIEFkZHJlc3Mgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgbGlicHRocmVh ZCB3aWxsIGNhbGwgd2hlbiBsaWJwdGhkZWJ1ZworICAgaXMgcmVhZHkgdG8g YmUgaW5pdGlhbGl6ZWQuICAqLworICBDT1JFX0FERFIgcGRfYnJrX2FkZHI7 CisKKyAgLyogV2hldGhlciB0aGUgY3VycmVudCBhcmNoaXRlY3R1cmUgaXMg NjQtYml0LgorICAgT25seSB2YWxpZCB3aGVuIHBkX2FibGUgaXMgdHJ1ZS4g ICovCisgIGludCBhcmNoNjQ7Cit9OwogCi1zdGF0aWMgcHRoZGJfc2Vzc2lv bl90IHBkX3Nlc3Npb247CisvKiBLZXkgdG8gb3VyIHBlci1pbmZlcmlvciBk YXRhLiAgKi8KK3N0YXRpYyBjb25zdCByZWdpc3RyeTxpbmZlcmlvcj46Omtl eTxhaXhfdGhyZWFkX3ZhcmlhYmxlcz4KKyAgYWl4X3RocmVhZF92YXJpYWJs ZXNfaGFuZGxlOworCisvKiBGdW5jdGlvbiB0byBHZXQgYWl4X3RocmVhZF92 YXJpYWJsZXMgZGF0YS4gICovCitzdGF0aWMgc3RydWN0IGFpeF90aHJlYWRf dmFyaWFibGVzKgorZ2V0X2FpeF90aHJlYWRfdmFyaWFibGVzX2RhdGEgKHN0 cnVjdCBpbmZlcmlvciAqaW5mKQoreworICBpZiAoaW5mID09IE5VTEwpCisg ICAgcmV0dXJuIE5VTEw7CisKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFi bGVzKiBkYXRhOworCisgIGRhdGEgPSBhaXhfdGhyZWFkX3ZhcmlhYmxlc19o YW5kbGUuZ2V0IChpbmYpOworICBpZiAoZGF0YSA9PSBOVUxMKQorICAgIGRh dGEgPSBhaXhfdGhyZWFkX3ZhcmlhYmxlc19oYW5kbGUuZW1wbGFjZSAoaW5m KTsKKworICByZXR1cm4gZGF0YTsKK30KKworLyogSGVscGVyIHRvIGdldCBk YXRhIGZvciBwdGlkIGluIGEgZnVuY3Rpb24uICAqLworCitzdGF0aWMgc3Ry dWN0IGFpeF90aHJlYWRfdmFyaWFibGVzKgorZ2V0X3RocmVhZF9kYXRhX2hl bHBlcl9mb3JfcHRpZCAocHRpZF90IHB0aWQpCit7CisgIGluZmVyaW9yICpp bmYgPSBmaW5kX2luZmVyaW9yX3B0aWQgKGN1cnJlbnRfaW5mZXJpb3IgKCkt PnByb2Nlc3NfdGFyZ2V0ICgpLAorCQkJCQlwdGlkKTsKKyAgcmV0dXJuIGdl dF9haXhfdGhyZWFkX3ZhcmlhYmxlc19kYXRhIChpbmYpOworfQorCisvKiBI ZWxwZXIgdG8gZ2V0IGRhdGEgZm9yIHBpZCBpbiBhIGZ1bmN0aW9uLiAgKi8K Kworc3RhdGljIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyoKK2dldF90 aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3BpZCAocGlkX3QgcGlkKQoreworICBp bmZlcmlvciAqaW5mID0gZmluZF9pbmZlcmlvcl9waWQgKGN1cnJlbnRfaW5m ZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCk7CisgIHJldHVybiBnZXRf YWl4X3RocmVhZF92YXJpYWJsZXNfZGF0YSAoaW5mKTsKK30KIAogLyogUmV0 dXJuIGEgcHJpbnRhYmxlIHJlcHJlc2VudGF0aW9uIG9mIHB0aGRlYnVnIGZ1 bmN0aW9uIHJldHVybgogICAgU1RBVFVTLiAgKi8KQEAgLTMxOCw3ICszNTMs NyBAQCBwaWRfdG9fcHJjIChwdGlkX3QgKnB0aWRwKQogICBwdGlkX3QgcHRp ZDsKIAogICBwdGlkID0gKnB0aWRwOwotICBpZiAoUERfVElEIChwdGlkKSkK KyAgaWYgKHB0aWQudGlkICgpICE9IDApCiAgICAgKnB0aWRwID0gcHRpZF90 IChwdGlkLnBpZCAoKSk7CiB9CiAKQEAgLTM4OSw2ICs0MjQsOSBAQCBwZGNf cmVhZF9yZWdzIChwdGhkYl91c2VyX3QgdXNlcl9jdXJyZW50X3BpZCwKICAg ZG91YmxlIGZwcnNbcHBjX251bV9mcHJzXTsKICAgc3RydWN0IHB0eHNwcnMg c3ByczY0OwogICBzdHJ1Y3QgcHRzcHJzIHNwcnMzMjsKKyAgc3RydWN0IGFp eF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworICAKKyAgZGF0YSA9IGdldF90 aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3BpZCAodXNlcl9jdXJyZW50X3BpZCk7 CiAgIAogICBpZiAoZGVidWdfYWl4X3RocmVhZCkKICAgICBnZGJfcHJpbnRm IChnZGJfc3RkbG9nLCAicGRjX3JlYWRfcmVncyB0aWQ9JWQgZmxhZ3M9JXNc biIsCkBAIC0zOTcsNyArNDM1LDcgQEAgcGRjX3JlYWRfcmVncyAocHRoZGJf dXNlcl90IHVzZXJfY3VycmVudF9waWQsCiAgIC8qIEdlbmVyYWwtcHVycG9z ZSByZWdpc3RlcnMuICAqLwogICBpZiAoZmxhZ3MgJiBQVEhEQl9GTEFHX0dQ UlMpCiAgICAgewotICAgICAgaWYgKGFyY2g2NCkKKyAgICAgIGlmIChkYXRh LT5hcmNoNjQpCiAJewogCSAgaWYgKCFwdHJhY2U2NGFpeCAoUFRUX1JFQURf R1BSUywgdGlkLCAKIAkJCSAgICAodW5zaWduZWQgbG9uZykgZ3ByczY0LCAw LCBOVUxMKSkKQEAgLTQyMyw3ICs0NjEsNyBAQCBwZGNfcmVhZF9yZWdzIChw dGhkYl91c2VyX3QgdXNlcl9jdXJyZW50X3BpZCwKICAgLyogU3BlY2lhbC1w dXJwb3NlIHJlZ2lzdGVycy4gICovCiAgIGlmIChmbGFncyAmIFBUSERCX0ZM QUdfU1BSUykKICAgICB7Ci0gICAgICBpZiAoYXJjaDY0KQorICAgICAgaWYg KGRhdGEtPmFyY2g2NCkKIAl7CiAJICBpZiAoIXB0cmFjZTY0YWl4IChQVFRf UkVBRF9TUFJTLCB0aWQsIAogCQkJICAgICh1bnNpZ25lZCBsb25nKSAmc3By czY0LCAwLCBOVUxMKSkKQEAgLTQ1Niw2ICs0OTQsMTAgQEAgcGRjX3dyaXRl X3JlZ3MgKHB0aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRfcGlkLAogICAgICB0 aGlzIGlzIG5lZWRlZCwgSSBoYXZlIGltcGxlbWVudGVkIHdoYXQgSSB0aGlu ayBpdCBzaG91bGQgZG8sCiAgICAgIGhvd2V2ZXIgdGhpcyBjb2RlIGlzIHVu dGVzdGVkLiAgKi8KIAorICBzdHJ1Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMg KmRhdGE7CisgIAorICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9m b3JfcGlkICh1c2VyX2N1cnJlbnRfcGlkKTsKKwogICBpZiAoZGVidWdfYWl4 X3RocmVhZCkKICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLCAicGRjX3dy aXRlX3JlZ3MgdGlkPSVkIGZsYWdzPSVzXG4iLAogCQkoaW50KSB0aWQsIGhl eF9zdHJpbmcgKGZsYWdzKSk7CkBAIC00NjMsNyArNTA1LDcgQEAgcGRjX3dy aXRlX3JlZ3MgKHB0aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRfcGlkLAogICAv KiBHZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzLiAgKi8KICAgaWYgKGZsYWdz ICYgUFRIREJfRkxBR19HUFJTKQogICAgIHsKLSAgICAgIGlmIChhcmNoNjQp CisgICAgICBpZiAoZGF0YS0+YXJjaDY0KQogCXB0cmFjZTY0YWl4IChQVFRf V1JJVEVfR1BSUywgdGlkLCAKIAkJICAgICAodW5zaWduZWQgbG9uZykgY29u dGV4dC0+Z3ByLCAwLCBOVUxMKTsKICAgICAgIGVsc2UKQEAgLTQ3OSw3ICs1 MjEsNyBAQCBwZGNfd3JpdGVfcmVncyAocHRoZGJfdXNlcl90IHVzZXJfY3Vy cmVudF9waWQsCiAgIC8qIFNwZWNpYWwtcHVycG9zZSByZWdpc3RlcnMuICAq LwogICBpZiAoZmxhZ3MgJiBQVEhEQl9GTEFHX1NQUlMpCiAgICAgewotICAg ICAgaWYgKGFyY2g2NCkKKyAgICAgIGlmIChkYXRhLT5hcmNoNjQpCiAJewog CSAgcHRyYWNlNjRhaXggKFBUVF9XUklURV9TUFJTLCB0aWQsIAogCQkgICAg ICAgKHVuc2lnbmVkIGxvbmcpICZjb250ZXh0LT5tc3IsIDAsIE5VTEwpOwpA QCAtNTA4LDE0ICs1NTAsMTMgQEAgcGRjX3JlYWRfZGF0YSAocHRoZGJfdXNl cl90IHVzZXJfY3VycmVudF9waWQsIHZvaWQgKmJ1ZiwKICAgLyogVGhpcyBp cyBuZWVkZWQgdG8gZWxpbWluYXRlIHRoZSBkZXBlbmRlbmN5IG9mIGN1cnJl bnQgdGhyZWFkCiAgICAgIHdoaWNoIGlzIG51bGwgc28gdGhhdCB0aHJlYWQg cmVhZHMgdGhlIGNvcnJlY3QgdGFyZ2V0IG1lbW9yeS4gICovCiAgIHsKLSAg ICBzY29wZWRfcmVzdG9yZV9jdXJyZW50X3RocmVhZCByZXN0b3JlX2N1cnJl bnRfdGhyZWFkOworICAgIHNjb3BlZF9yZXN0b3JlIHNhdmVfaW5mZXJpb3Jf cHRpZCA9IG1ha2Vfc2NvcGVkX3Jlc3RvcmUgKCZpbmZlcmlvcl9wdGlkKTsK ICAgICAvKiBCZWZvcmUgdGhlIGZpcnN0IGluZmVyaW9yIGlzIGFkZGVkLCB3 ZSBwYXNzIGluZmVyaW9yX3B0aWQucGlkICgpCiAgICAgICAgZnJvbSBwZF9l bmFibGUgKCkgd2hpY2ggaXMgMC4gIFRoZXJlIGlzIG5vIG5lZWQgdG8gc3dp dGNoIHRocmVhZHMKICAgICAgICBkdXJpbmcgZmlyc3QgaW5pdGlhbGlzYXRp b24uICBJbiB0aGUgcmVzdCBvZiB0aGUgY2FsbGJhY2tzIHRoZQogICAgICAg IGN1cnJlbnQgdGhyZWFkIG5lZWRzIHRvIGJlIGNvcnJlY3QuICAqLwogICAg IGlmICh1c2VyX2N1cnJlbnRfcGlkICE9IDApCi0gICAgICBzd2l0Y2hfdG9f dGhyZWFkIChjdXJyZW50X2luZmVyaW9yICgpLT5wcm9jZXNzX3RhcmdldCAo KSwKLQkJCXB0aWRfdCAodXNlcl9jdXJyZW50X3BpZCkpOworICAgICAgaW5m ZXJpb3JfcHRpZCA9IHB0aWRfdCAodXNlcl9jdXJyZW50X3BpZCk7CiAgICAg c3RhdHVzID0gdGFyZ2V0X3JlYWRfbWVtb3J5IChhZGRyLCAoZ2RiX2J5dGUg KikgYnVmLCBsZW4pOwogICB9CiAgIHJldCA9IHN0YXR1cyA9PSAwID8gUERD X1NVQ0NFU1MgOiBQRENfRkFJTFVSRTsKQEAgLTYzOSwzOSArNjgwLDYgQEAg cGNtcCAoY29uc3Qgdm9pZCAqcDF2LCBjb25zdCB2b2lkICpwMnYpCiAgIHJl dHVybiBwMS0+cHRoaWQgPCBwMi0+cHRoaWQgPyAtMSA6IHAxLT5wdGhpZCA+ IHAyLT5wdGhpZDsKIH0KIAotLyogaXRlcmF0ZV9vdmVyX3RocmVhZHMoKSBj YWxsYmFjayBmb3IgY291bnRpbmcgR0RCIHRocmVhZHMuCi0KLSAgIERvIG5v dCBjb3VudCB0aGUgbWFpbiB0aHJlYWQgKHdob3NlIHRpZCBpcyB6ZXJvKS4g IFRoaXMgbWF0Y2hlcwotICAgdGhlIGxpc3Qgb2YgdGhyZWFkcyBwcm92aWRl ZCBieSB0aGUgcHRocmVhZGRlYnVnIGxpYnJhcnksIHdoaWNoCi0gICBkb2Vz IG5vdCBpbmNsdWRlIHRoYXQgbWFpbiB0aHJlYWQgZWl0aGVyLCBhbmQgdGh1 cyBhbGxvd3MgdXMKLSAgIHRvIGNvbXBhcmUgdGhlIHR3byBsaXN0cy4gICov Ci0KLXN0YXRpYyBpbnQKLWdpdGVyX2NvdW50IChzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRocmVhZCwgdm9pZCAqY291bnRwKQotewotICBpZiAoUERfVElEICh0 aHJlYWQtPnB0aWQpKQotICAgICgqKGludCAqKSBjb3VudHApKys7Ci0gIHJl dHVybiAwOwotfQotCi0vKiBpdGVyYXRlX292ZXJfdGhyZWFkcygpIGNhbGxi YWNrIGZvciBhY2N1bXVsYXRpbmcgR0RCIHRocmVhZCBwaWRzLgotCi0gICBE byBub3QgaW5jbHVkZSB0aGUgbWFpbiB0aHJlYWQgKHdob3NlIHRpZCBpcyB6 ZXJvKS4gIFRoaXMgbWF0Y2hlcwotICAgdGhlIGxpc3Qgb2YgdGhyZWFkcyBw cm92aWRlZCBieSB0aGUgcHRocmVhZGRlYnVnIGxpYnJhcnksIHdoaWNoCi0g ICBkb2VzIG5vdCBpbmNsdWRlIHRoYXQgbWFpbiB0aHJlYWQgZWl0aGVyLCBh bmQgdGh1cyBhbGxvd3MgdXMKLSAgIHRvIGNvbXBhcmUgdGhlIHR3byBsaXN0 cy4gICovCi0KLXN0YXRpYyBpbnQKLWdpdGVyX2FjY3VtIChzdHJ1Y3QgdGhy ZWFkX2luZm8gKnRocmVhZCwgdm9pZCAqYnVmcCkKLXsKLSAgaWYgKFBEX1RJ RCAodGhyZWFkLT5wdGlkKSkKLSAgICB7Ci0gICAgICAqKihzdHJ1Y3QgdGhy ZWFkX2luZm8gKioqKSBidWZwID0gdGhyZWFkOwotICAgICAgKCooc3RydWN0 IHRocmVhZF9pbmZvICoqKikgYnVmcCkrKzsKLSAgICB9Ci0gIHJldHVybiAw OwotfQotCiAvKiBwdGlkIGNvbXBhcmlzb24gZnVuY3Rpb24gKi8KIAogc3Rh dGljIGludApAQCAtNzE5LDcgKzcyNywxMCBAQCBnZXRfc2lnbmFsZWRfdGhy ZWFkIChpbnQgcGlkKQogCQkgICAgc2l6ZW9mICh0aHJpbmYpLCAma3RpZCwg MSkgIT0gMSkKIAlicmVhazsKIAotICAgICAgaWYgKHRocmluZi50aV9jdXJz aWcgPT0gU0lHVFJBUCkKKyAgICAgIC8qIFdlIGFsc28gbmVlZCB0byBrZWVw IGluIG1pbmQgVHJhcCBhbmQgaW50ZXJydXB0IG9yIGFueQorICAgICAgICAg c2lnbmFsIHRoYXQgbmVlZHMgdG8gYmUgaGFuZGxlZCBpbiBwZF91cGRhdGUg KCkuICAqLworCisgICAgICBpZiAodGhyaW5mLnRpX2N1cnNpZykKIAlyZXR1 cm4gdGhyaW5mLnRpX3RpZDsKICAgICB9CiAKQEAgLTc1MCw2ICs3NjEsMTEg QEAgc3luY190aHJlYWRsaXN0cyAoaW50IHBpZCkKICAgcHRoZGJfcHRocmVh ZF90IHBkdGlkOwogICBwdGhyZWFkX3QgcHRoaWQ7CiAgIHB0aGRiX3RpZF90 IHRpZDsKKyAgcHJvY2Vzc19zdHJhdHVtX3RhcmdldCAqcHJvY190YXJnZXQK KyAgICAgICAgICAgID0gY3VycmVudF9pbmZlcmlvciAoKS0+cHJvY2Vzc190 YXJnZXQgKCk7CisgIHRocmVhZF9pbmZvICAqdHA7CisgIHN0cnVjdCBhaXhf dGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAgZGF0YSA9IGdldF90aHJlYWRf ZGF0YV9oZWxwZXJfZm9yX3BpZCAocGlkKTsKIAogICAvKiBBY2N1bXVsYXRl IGFuIGFycmF5IG9mIGxpYnB0aGRlYnVnIHRocmVhZHMgc29ydGVkIGJ5IHB0 aHJlYWQgaWQuICAqLwogCkBAIC03NTksMTEgKzc3NSwxMSBAQCBzeW5jX3Ro cmVhZGxpc3RzIChpbnQgcGlkKQogCiAgIGZvciAoY21kID0gUFRIREJfTElT VF9GSVJTVDs7IGNtZCA9IFBUSERCX0xJU1RfTkVYVCkKICAgICB7Ci0gICAg ICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkIChwZF9zZXNzaW9uLCAmcGR0aWQs IGNtZCk7CisgICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkIChkYXRhLT5w ZF9zZXNzaW9uLCAmcGR0aWQsIGNtZCk7CiAgICAgICBpZiAoc3RhdHVzICE9 IFBUSERCX1NVQ0NFU1MgfHwgcGR0aWQgPT0gUFRIREJfSU5WQUxJRF9QVEhS RUFEKQogCWJyZWFrOwogCi0gICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFk X3B0aWQgKHBkX3Nlc3Npb24sIHBkdGlkLCAmcHRoaWQpOworICAgICAgc3Rh dHVzID0gcHRoZGJfcHRocmVhZF9wdGlkIChkYXRhLT5wZF9zZXNzaW9uLCBw ZHRpZCwgJnB0aGlkKTsKICAgICAgIGlmIChzdGF0dXMgIT0gUFRIREJfU1VD Q0VTUyB8fCBwdGhpZCA9PSBQVEhEQl9JTlZBTElEX1BUSUQpCiAJY29udGlu dWU7CiAKQEAgLTc4MCw3ICs3OTYsNyBAQCBzeW5jX3RocmVhZGxpc3RzIChp bnQgcGlkKQogCiAgIGZvciAocGkgPSAwOyBwaSA8IHBjb3VudDsgcGkrKykK ICAgICB7Ci0gICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3RpZCAocGRf c2Vzc2lvbiwgcGJ1ZltwaV0ucGR0aWQsICZ0aWQpOworICAgICAgc3RhdHVz ID0gcHRoZGJfcHRocmVhZF90aWQgKGRhdGEtPnBkX3Nlc3Npb24sIHBidWZb cGldLnBkdGlkLCAmdGlkKTsKICAgICAgIGlmIChzdGF0dXMgIT0gUFRIREJf U1VDQ0VTUykKIAl0aWQgPSBQVEhEQl9JTlZBTElEX1RJRDsKICAgICAgIHBi dWZbcGldLnRpZCA9IHRpZDsKQEAgLTc5MCwxMCArODA2LDE3IEBAIHN5bmNf dGhyZWFkbGlzdHMgKGludCBwaWQpCiAKICAgLyogQWNjdW11bGF0ZSBhbiBh cnJheSBvZiBHREIgdGhyZWFkcyBzb3J0ZWQgYnkgcGlkLiAgKi8KIAorICAv KiBnY291bnQgaXMgR0RCIHRocmVhZCBjb3VudCBhbmQgcGNvdW50IGlzIHB0 aHJlYWRsaWIgdGhyZWFkIGNvdW50LiAgKi8KKwogICBnY291bnQgPSAwOwot ICBpdGVyYXRlX292ZXJfdGhyZWFkcyAoZ2l0ZXJfY291bnQsICZnY291bnQp OworICBmb3IgKHRocmVhZF9pbmZvICp0cCA6IGFsbF90aHJlYWRzIChwcm9j X3RhcmdldCwgcHRpZF90IChwaWQpKSkKKyAgICBnY291bnQrKzsKICAgZyA9 IGdidWYgPSBYTkVXVkVDIChzdHJ1Y3QgdGhyZWFkX2luZm8gKiwgZ2NvdW50 KTsKLSAgaXRlcmF0ZV9vdmVyX3RocmVhZHMgKGdpdGVyX2FjY3VtLCAmZyk7 CisgIGZvciAodGhyZWFkX2luZm8gKnRwIDogYWxsX3RocmVhZHMgKHByb2Nf dGFyZ2V0LCBwdGlkX3QgKHBpZCkpKQorICB7CisgICAgKiooc3RydWN0IHRo cmVhZF9pbmZvICoqKikgJmcgPSB0cDsKKyAgICAoKihzdHJ1Y3QgdGhyZWFk X2luZm8gKioqKSAmZykrKzsKKyAgfQogICBxc29ydCAoZ2J1ZiwgZ2NvdW50 LCBzaXplb2YgKmdidWYsIGdjbXApOwogCiAgIC8qIEFwcGx5IGRpZmZlcmVu Y2VzIGJldHdlZW4gdGhlIHR3byBhcnJheXMgdG8gR0RCJ3MgdGhyZWFkIGxp c3QuICAqLwpAQCAtODEwLDggKzgzMyw2IEBAIHN5bmNfdGhyZWFkbGlzdHMg KGludCBwaWQpCiAJICBwcml2LT5wZHRpZCA9IHBidWZbcGldLnBkdGlkOwog CSAgcHJpdi0+dGlkID0gcGJ1ZltwaV0udGlkOwogCi0JICBwcm9jZXNzX3N0 cmF0dW1fdGFyZ2V0ICpwcm9jX3RhcmdldAotCSAgICA9IGN1cnJlbnRfaW5m ZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgpOwogCSAgdGhyZWFkID0gYWRk X3RocmVhZF93aXRoX2luZm8gKHByb2NfdGFyZ2V0LAogCQkJCQkgcHRpZF90 IChwaWQsIDAsIHBidWZbcGldLnB0aGlkKSwKIAkJCQkJIHByaXYpOwpAQCAt ODMwLDYgKzg1MSwyMyBAQCBzeW5jX3RocmVhZGxpc3RzIChpbnQgcGlkKQog CiAJICBjbXBfcmVzdWx0ID0gcHRpZF9jbXAgKHBwdGlkLCBncHRpZCk7CiAK KwkgIC8qIElmIHRoZXJlIGlzIG9ubHkgb25lIHRocmVhZCB0aGVuIHdlIG5l ZWQgbm90IG1ha2UgdGhlIG1haW4gCisJICAgICB0aHJlYWQgbG9vayBsaWtl IGEgdGhyZWFkLiAgSXQgY2FuIHN0YXkgYXMgYSBwcm9jZXNzLiBUaGlzCisJ ICAgICBpcyB1c2VmdWwgd2hlbiB3ZSBoYXZlIG11bHRpcGxlIGluZmVyaW9y cywgYnV0IG9ubHkgb25lIGlzCisJICAgICB0aHJlYWRlZC4gIFNvIHdlIG5l ZWQgbm90IG1ha2UgdGhlIG90aGVyIGluZmVyaW9ycyB3aXRoIG9ubHkKKwkg ICAgIG1haW4gdGhyZWFkLCBsb29rIGxpa2UgYSB0aHJlYWRlZCBvbmUuICBG b3IgZXhhbXBsZSwgVGhyZWFkCisJICAgICAxLjEsIDEuMiwgMi4xLCAzLjEg ZXhpc3RzIHRoZW4gaXQgaXMgdXNlZnVsIHRvIHNraXAgdGhpcyBmb3IKKwkg ICAgIGxvb3AgZm9yIDIuMSBhbmQgMy4xIGxlYXZpbmcgdGhlbSBhcyBtYWlu IHByb2Nlc3MgdGhyZWFkIHdpdGgKKwkgICAgIGEgZHVtbXkgcHJpdiBzZXQu ICAqLworCisJICBpZiAocGNvdW50ID09IDEgJiYgZ2NvdW50ID09IDEpCisJ ICB7CisJICAgIGFpeF90aHJlYWRfaW5mbyAqcHJpdiA9IG5ldyBhaXhfdGhy ZWFkX2luZm87CisJICAgIHRwID0gZmluZF90aHJlYWRfcHRpZCAocHJvY190 YXJnZXQsIGdwdGlkKTsKKwkgICAgdHAtPnByaXYucmVzZXQgKHByaXYpOwor CSAgICBicmVhazsKKwkgIH0KKwogCSAgaWYgKGNtcF9yZXN1bHQgPT0gMCkK IAkgICAgewogCSAgICAgIGFpeF90aHJlYWRfaW5mbyAqcHJpdiA9IGdldF9h aXhfdGhyZWFkX2luZm8gKGdidWZbZ2ldKTsKQEAgLTg0MSwxMyArODc5LDI4 IEBAIHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAJICAgIH0KIAkgIGVs c2UgaWYgKGNtcF9yZXN1bHQgPiAwKQogCSAgICB7Ci0JICAgICAgZGVsZXRl X3RocmVhZCAoZ2J1ZltnaV0pOwotCSAgICAgIGdpKys7CisJICAgICAgLyog VGhpcyBpcyB0byBtYWtlIHRoZSBtYWluIHByb2Nlc3MgdGhyZWFkIG5vdyBs b29rCisJCSBsaWtlIGEgdGhyZWFkLiAgKi8KKworCSAgICAgIGlmIChncHRp ZC5pc19waWQgKCkgJiYgZ3B0aWQucGlkICgpID09IHBwdGlkLnBpZCAoKSkK KwkgICAgICB7CisJCXRocmVhZF9jaGFuZ2VfcHRpZCAocHJvY190YXJnZXQs IGdwdGlkLCBwcHRpZCk7CisJCWFpeF90aHJlYWRfaW5mbyAqcHJpdiA9IG5l dyBhaXhfdGhyZWFkX2luZm87CisJCXByaXYtPnBkdGlkID0gcGJ1ZltwaV0u cGR0aWQ7CisJCXByaXYtPnRpZCA9IHBidWZbcGldLnRpZDsKKwkJdHAgPSBm aW5kX3RocmVhZF9wdGlkIChwcm9jX3RhcmdldCwgcHB0aWQpOworCQl0cC0+ cHJpdi5yZXNldCAocHJpdik7CisJCXBpKys7CisJCWdpKys7CisJICAgICAg fQorCSAgICAgIGVsc2UKKwkgICAgICB7CisJCWRlbGV0ZV90aHJlYWQgKGdi dWZbZ2ldKTsKKwkJZ2krKzsKKwkgICAgICB9CiAJICAgIH0KIAkgIGVsc2UK IAkgICAgewotCSAgICAgIHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQgKnByb2Nf dGFyZ2V0Ci0JCT0gY3VycmVudF9pbmZlcmlvciAoKS0+cHJvY2Vzc190YXJn ZXQgKCk7CiAJICAgICAgdGhyZWFkID0gYWRkX3RocmVhZCAocHJvY190YXJn ZXQsIHBwdGlkKTsKIAogCSAgICAgIGFpeF90aHJlYWRfaW5mbyAqcHJpdiA9 IG5ldyBhaXhfdGhyZWFkX2luZm87CkBAIC04ODcsMTEgKzk0MCwxNCBAQCBw ZF91cGRhdGUgKGludCBwaWQpCiAgIHB0aWRfdCBwdGlkOwogICBwdGhkYl90 aWRfdCB0aWQ7CiAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdGhyZWFkID0gTlVM TDsKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOwogCi0g IGlmICghcGRfYWN0aXZlKQorICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hl bHBlcl9mb3JfcGlkIChwaWQpOworCisgIGlmICghZGF0YS0+cGRfYWN0aXZl KQogICAgIHJldHVybiBwdGlkX3QgKHBpZCk7CiAKLSAgc3RhdHVzID0gcHRo ZGJfc2Vzc2lvbl91cGRhdGUgKHBkX3Nlc3Npb24pOworICBzdGF0dXMgPSBw dGhkYl9zZXNzaW9uX3VwZGF0ZSAoZGF0YS0+cGRfc2Vzc2lvbik7CiAgIGlm IChzdGF0dXMgIT0gUFRIREJfU1VDQ0VTUykKICAgICByZXR1cm4gcHRpZF90 IChwaWQpOwogCkBAIC05MTgsMTUgKzk3NCwxNyBAQCBzdGF0aWMgcHRpZF90 CiBwZF9hY3RpdmF0ZSAoaW50IHBpZCkKIHsKICAgaW50IHN0YXR1czsKKyAg c3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworICBkYXRhID0g Z2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcGlkIChwaWQpOwogCQkKLSAg c3RhdHVzID0gcHRoZGJfc2Vzc2lvbl9pbml0IChwaWQsIGFyY2g2NCA/IFBF TV82NEJJVCA6IFBFTV8zMkJJVCwKKyAgc3RhdHVzID0gcHRoZGJfc2Vzc2lv bl9pbml0IChwaWQsIGRhdGEtPmFyY2g2NCA/IFBFTV82NEJJVCA6IFBFTV8z MkJJVCwKIAkJCSAgICAgICBQVEhEQl9GTEFHX1JFR1MsICZwZF9jYWxsYmFj a3MsIAotCQkJICAgICAgICZwZF9zZXNzaW9uKTsKKwkJCSAgICAgICAmZGF0 YS0+cGRfc2Vzc2lvbik7CiAgIGlmIChzdGF0dXMgIT0gUFRIREJfU1VDQ0VT UykKICAgICB7CiAgICAgICByZXR1cm4gcHRpZF90IChwaWQpOwogICAgIH0K LSAgcGRfYWN0aXZlID0gMTsKKyAgZGF0YS0+cGRfYWN0aXZlID0gMTsKICAg cmV0dXJuIHBkX3VwZGF0ZSAocGlkKTsKIH0KIApAQCAtOTM1LDEyICs5OTMs MTUgQEAgcGRfYWN0aXZhdGUgKGludCBwaWQpCiBzdGF0aWMgdm9pZAogcGRf ZGVhY3RpdmF0ZSAodm9pZCkKIHsKLSAgaWYgKCFwZF9hY3RpdmUpCisgIHN0 cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAgZGF0YSA9IGdl dF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKGluZmVyaW9yX3B0aWQp OworCisgIGlmICghZGF0YS0+cGRfYWN0aXZlKQogICAgIHJldHVybjsKLSAg cHRoZGJfc2Vzc2lvbl9kZXN0cm95IChwZF9zZXNzaW9uKTsKKyAgcHRoZGJf c2Vzc2lvbl9kZXN0cm95IChkYXRhLT5wZF9zZXNzaW9uKTsKICAgCiAgIHBp ZF90b19wcmMgKCZpbmZlcmlvcl9wdGlkKTsKLSAgcGRfYWN0aXZlID0gMDsK KyAgZGF0YS0+cGRfYWN0aXZlID0gMDsKIH0KIAogLyogQW4gb2JqZWN0IGZp bGUgaGFzIGp1c3QgYmVlbiBsb2FkZWQuICBDaGVjayB3aGV0aGVyIHRoZSBj dXJyZW50CkBAIC05NTIsMTMgKzEwMTMsMTkgQEAgcGRfZW5hYmxlICh2b2lk KQogICBpbnQgc3RhdHVzOwogICBjaGFyICpzdHViX25hbWU7CiAgIHN0cnVj dCBib3VuZF9taW5pbWFsX3N5bWJvbCBtczsKKyAgc3RydWN0IGFpeF90aHJl YWRfdmFyaWFibGVzICpkYXRhOworCisgIGlmICghaW5mZXJpb3JfcHRpZC5w aWQgKCkpCisgICAgcmV0dXJuOworICAKKyAgZGF0YSA9IGdldF90aHJlYWRf ZGF0YV9oZWxwZXJfZm9yX3B0aWQgKGluZmVyaW9yX3B0aWQpOwogCiAgIC8q IERvbid0IGluaXRpYWxpemUgdHdpY2UuICAqLwotICBpZiAocGRfYWJsZSkK KyAgaWYgKGRhdGEtPnBkX2FibGUpCiAgICAgcmV0dXJuOwogCiAgIC8qIENo ZWNrIGFwcGxpY2F0aW9uIHdvcmQgc2l6ZS4gICovCi0gIGFyY2g2NCA9IHJl Z2lzdGVyX3NpemUgKHRhcmdldF9nZGJhcmNoICgpLCAwKSA9PSA4OworICBk YXRhLT5hcmNoNjQgPSByZWdpc3Rlcl9zaXplICh0YXJnZXRfZ2RiYXJjaCAo KSwgMCkgPT0gODsKIAogICAvKiBDaGVjayB3aGV0aGVyIHRoZSBhcHBsaWNh dGlvbiBpcyBwdGhyZWFkZWQuICAqLwogICBzdHViX25hbWUgPSBOVUxMOwpA QCAtOTcyLDEzICsxMDM5LDEzIEBAIHBkX2VuYWJsZSAodm9pZCkKICAgbXMg PSBsb29rdXBfbWluaW1hbF9zeW1ib2wgKHN0dWJfbmFtZSwgTlVMTCwgTlVM TCk7CiAgIGlmIChtcy5taW5zeW0gPT0gTlVMTCkKICAgICByZXR1cm47Ci0g IHBkX2Jya19hZGRyID0gbXMudmFsdWVfYWRkcmVzcyAoKTsKLSAgaWYgKCFj cmVhdGVfdGhyZWFkX2V2ZW50X2JyZWFrcG9pbnQgKHRhcmdldF9nZGJhcmNo ICgpLCBwZF9icmtfYWRkcikpCisgIGRhdGEtPnBkX2Jya19hZGRyID0gbXMu dmFsdWVfYWRkcmVzcyAoKTsKKyAgaWYgKCFjcmVhdGVfdGhyZWFkX2V2ZW50 X2JyZWFrcG9pbnQgKHRhcmdldF9nZGJhcmNoICgpLCBkYXRhLT5wZF9icmtf YWRkcikpCiAgICAgcmV0dXJuOwogCiAgIC8qIFByZXBhcmUgZm9yIHRocmVh ZCBkZWJ1Z2dpbmcuICAqLwogICBjdXJyZW50X2luZmVyaW9yICgpLT5wdXNo X3RhcmdldCAoJmFpeF90aHJlYWRfb3BzKTsKLSAgcGRfYWJsZSA9IDE7Cisg IGRhdGEtPnBkX2FibGUgPSAxOyAKIAogICAvKiBJZiB3ZSdyZSBkZWJ1Z2dp bmcgYSBjb3JlIGZpbGUgb3IgYW4gYXR0YWNoZWQgaW5mZXJpb3IsIHRoZQog ICAgICBwdGhyZWFkIGxpYnJhcnkgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGlu aXRpYWxpemVkLCBzbyB0cnkgdG8KQEAgLTk5MSwyOCArMTA1OCwyNyBAQCBw ZF9lbmFibGUgKHZvaWQpCiBzdGF0aWMgdm9pZAogcGRfZGlzYWJsZSAodm9p ZCkKIHsKLSAgaWYgKCFwZF9hYmxlKQorICBzdHJ1Y3QgYWl4X3RocmVhZF92 YXJpYWJsZXMgKmRhdGE7CisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFfaGVs cGVyX2Zvcl9wdGlkIChpbmZlcmlvcl9wdGlkKTsKKworICBpZiAoIWRhdGEt PnBkX2FibGUpCiAgICAgcmV0dXJuOwotICBpZiAocGRfYWN0aXZlKQorICBp ZiAoZGF0YS0+cGRfYWN0aXZlKQogICAgIHBkX2RlYWN0aXZhdGUgKCk7Ci0g IHBkX2FibGUgPSAwOworICBkYXRhLT5wZF9hYmxlID0gMDsKICAgY3VycmVu dF9pbmZlcmlvciAoKS0+dW5wdXNoX3RhcmdldCAoJmFpeF90aHJlYWRfb3Bz KTsKIH0KIAogLyogbmV3X29iamZpbGUgb2JzZXJ2ZXIgY2FsbGJhY2suCiAK ICAgIElmIE9CSkZJTEUgaXMgbm9uLW51bGwsIGNoZWNrIHdoZXRoZXIgYSB0 aHJlYWRlZCBhcHBsaWNhdGlvbiBpcwotICAgYmVpbmcgZGVidWdnZWQsIGFu ZCBpZiBzbywgcHJlcGFyZSBmb3IgdGhyZWFkIGRlYnVnZ2luZy4KLQotICAg SWYgT0JKRklMRSBpcyBudWxsLCBzdG9wIGRlYnVnZ2luZyB0aHJlYWRzLiAg Ki8KKyAgIGJlaW5nIGRlYnVnZ2VkLCBhbmQgaWYgc28sIHByZXBhcmUgZm9y IHRocmVhZCBkZWJ1Z2dpbmcuICAqLwogCiBzdGF0aWMgdm9pZAogbmV3X29i amZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQogewogICBpZiAob2Jq ZmlsZSkKICAgICBwZF9lbmFibGUgKCk7Ci0gIGVsc2UKLSAgICBwZF9kaXNh YmxlICgpOwogfQogCiAvKiBBdHRhY2ggdG8gcHJvY2VzcyBzcGVjaWZpZWQg YnkgQVJHUy4gICovCkBAIC0xMDQyLDggKzExMDgsMTEgQEAgYWl4X3RocmVh ZF90YXJnZXQ6OnJlc3VtZSAocHRpZF90IHB0aWQsIGludCBzdGVwLCBlbnVt IGdkYl9zaWduYWwgc2lnKQogewogICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRo cmVhZDsKICAgcHRoZGJfdGlkX3QgdGlkWzJdOworICBzdHJ1Y3QgYWl4X3Ro cmVhZF92YXJpYWJsZXMgKmRhdGE7CisgIAorICBkYXRhID0gZ2V0X3RocmVh ZF9kYXRhX2hlbHBlcl9mb3JfcHRpZCAocHRpZCk7CiAKLSAgaWYgKCFQRF9U SUQgKHB0aWQpKQorICBpZiAoIShwdGlkLnRpZCAoKSAhPSAwKSkKICAgICB7 CiAgICAgICBzY29wZWRfcmVzdG9yZSBzYXZlX2luZmVyaW9yX3B0aWQgPSBt YWtlX3Njb3BlZF9yZXN0b3JlICgmaW5mZXJpb3JfcHRpZCk7CiAgICAgICAK QEAgLTEwNjUsNyArMTEzNCw3IEBAIGFpeF90aHJlYWRfdGFyZ2V0OjpyZXN1 bWUgKHB0aWRfdCBwdGlkLCBpbnQgc3RlcCwgZW51bSBnZGJfc2lnbmFsIHNp ZykKIAkgICAgICAgcHRpZC5sd3AgKCkpOwogICAgICAgdGlkWzFdID0gMDsK IAotICAgICAgaWYgKGFyY2g2NCkKKyAgICAgIGlmIChkYXRhLT5hcmNoNjQp CiAJcHRyYWNlNjRhaXggKFBUVF9DT05USU5VRSwgdGlkWzBdLCAobG9uZyBs b25nKSAxLAogCQkgICAgIGdkYl9zaWduYWxfdG9faG9zdCAoc2lnKSwgKFBU UkFDRV9UWVBFX0FSRzUpIHRpZCk7CiAgICAgICBlbHNlCkBAIC0xMDgyLDYg KzExNTEsNyBAQCBwdGlkX3QKIGFpeF90aHJlYWRfdGFyZ2V0Ojp3YWl0IChw dGlkX3QgcHRpZCwgc3RydWN0IHRhcmdldF93YWl0c3RhdHVzICpzdGF0dXMs CiAJCQkgdGFyZ2V0X3dhaXRfZmxhZ3Mgb3B0aW9ucykKIHsKKyAgc3RydWN0 IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOwogICB7CiAgICAgcGlkX3Rv X3ByYyAoJnB0aWQpOwogCkBAIC0xMDk1LDggKzExNjUsMTAgQEAgYWl4X3Ro cmVhZF90YXJnZXQ6OndhaXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFyZ2V0 X3dhaXRzdGF0dXMgKnN0YXR1cywKICAgICAgcGlkLW9ubHkgcHRpZHMuICAq LwogICBnZGJfYXNzZXJ0IChwdGlkLmlzX3BpZCAoKSk7CiAKKyAgZGF0YSA9 IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKHB0aWQpOworCiAg IC8qIENoZWNrIHdoZXRoZXIgbGlicHRoZGVidWcgbWlnaHQgYmUgcmVhZHkg dG8gYmUgaW5pdGlhbGl6ZWQuICAqLwotICBpZiAoIXBkX2FjdGl2ZSAmJiBz dGF0dXMtPmtpbmQgKCkgPT0gVEFSR0VUX1dBSVRLSU5EX1NUT1BQRUQKKyAg aWYgKCFkYXRhLT5wZF9hY3RpdmUgJiYgc3RhdHVzLT5raW5kICgpID09IFRB UkdFVF9XQUlUS0lORF9TVE9QUEVECiAgICAgICAmJiBzdGF0dXMtPnNpZyAo KSA9PSBHREJfU0lHTkFMX1RSQVApCiAgICAgewogICAgICAgcHJvY2Vzc19z dHJhdHVtX3RhcmdldCAqcHJvY190YXJnZXQKQEAgLTExMDUsNyArMTE3Nyw3 IEBAIGFpeF90aHJlYWRfdGFyZ2V0Ojp3YWl0IChwdGlkX3QgcHRpZCwgc3Ry dWN0IHRhcmdldF93YWl0c3RhdHVzICpzdGF0dXMsCiAgICAgICBzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgpOwogCiAgICAg ICBpZiAocmVnY2FjaGVfcmVhZF9wYyAocmVnY2FjaGUpCi0JICAtIGdkYmFy Y2hfZGVjcl9wY19hZnRlcl9icmVhayAoZ2RiYXJjaCkgPT0gcGRfYnJrX2Fk ZHIpCisJICAtIGdkYmFyY2hfZGVjcl9wY19hZnRlcl9icmVhayAoZ2RiYXJj aCkgPT0gZGF0YS0+cGRfYnJrX2FkZHIpCiAJcmV0dXJuIHBkX2FjdGl2YXRl IChwdGlkLnBpZCAoKSk7CiAgICAgfQogCkBAIC0xMjI5LDE4ICsxMzAxLDIw IEBAIGZldGNoX3JlZ3NfdXNlcl90aHJlYWQgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsIHB0aGRiX3B0aHJlYWRfdCBwZHRpZCkKICAgcHBjX2dkYmFy Y2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcDxwcGNfZ2RiYXJjaF90ZGVw PiAoZ2RiYXJjaCk7CiAgIGludCBzdGF0dXMsIGk7CiAgIHB0aGRiX2NvbnRl eHRfdCBjdHg7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0 YTsKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQg KGluZmVyaW9yX3B0aWQpOwogCiAgIGlmIChkZWJ1Z19haXhfdGhyZWFkKQog ICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csIAogCQkiZmV0Y2hfcmVnc191 c2VyX3RocmVhZCAlbHhcbiIsIChsb25nKSBwZHRpZCk7Ci0gIHN0YXR1cyA9 IHB0aGRiX3B0aHJlYWRfY29udGV4dCAocGRfc2Vzc2lvbiwgcGR0aWQsICZj dHgpOworICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX2NvbnRleHQgKGRhdGEt PnBkX3Nlc3Npb24sIHBkdGlkLCAmY3R4KTsKICAgaWYgKHN0YXR1cyAhPSBQ VEhEQl9TVUNDRVNTKQogICAgIGVycm9yIChfKCJhaXgtdGhyZWFkOiBmZXRj aF9yZWdpc3RlcnM6IHB0aGRiX3B0aHJlYWRfY29udGV4dCByZXR1cm5lZCAl cyIpLAogCSAgIHBkX3N0YXR1czJzdHIgKHN0YXR1cykpOwogCiAgIC8qIEdl bmVyYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLwogCi0gIGlmIChhcmNoNjQp CisgIGlmIChkYXRhLT5hcmNoNjQpCiAgICAgc3VwcGx5X2dwcnM2NCAocmVn Y2FjaGUsIGN0eC5ncHIpOwogICBlbHNlCiAgICAgZm9yIChpID0gMDsgaSA8 IHBwY19udW1fZ3ByczsgaSsrKQpAQCAtMTI1Myw3ICsxMzI3LDcgQEAgZmV0 Y2hfcmVnc191c2VyX3RocmVhZCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgcHRoZGJfcHRocmVhZF90IHBkdGlkKQogCiAgIC8qIFNwZWNpYWwgcmVn aXN0ZXJzLiAgKi8KIAotICBpZiAoYXJjaDY0KQorICBpZiAoZGF0YS0+YXJj aDY0KQogICAgIHN1cHBseV9zcHJzNjQgKHJlZ2NhY2hlLCBjdHguaWFyLCBj dHgubXNyLCBjdHguY3IsIGN0eC5sciwgY3R4LmN0ciwKIAkJCSAgICAgY3R4 LnhlciwgY3R4LmZwc2NyKTsKICAgZWxzZQpAQCAtMTI4OCwxOCArMTM2Miwy MSBAQCBmZXRjaF9yZWdzX2tlcm5lbF90aHJlYWQgKHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsIGludCByZWdubywKICAgc3RydWN0IHB0eHNwcnMgc3By czY0OwogICBzdHJ1Y3QgcHRzcHJzIHNwcnMzMjsKICAgaW50IGk7CisgIHN0 cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAgCisgIGRhdGEg PSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlkIChyZWdjYWNoZS0+ cHRpZCAoKSk7CiAKICAgaWYgKGRlYnVnX2FpeF90aHJlYWQpCiAgICAgZ2Ri X3ByaW50ZiAoZ2RiX3N0ZGxvZywKIAkJImZldGNoX3JlZ3Nfa2VybmVsX3Ro cmVhZCB0aWQ9JWx4IHJlZ25vPSVkIGFyY2g2ND0lZFxuIiwKLQkJKGxvbmcp IHRpZCwgcmVnbm8sIGFyY2g2NCk7CisJCShsb25nKSB0aWQsIHJlZ25vLCBk YXRhLT5hcmNoNjQpOwogCiAgIC8qIEdlbmVyYWwtcHVycG9zZSByZWdpc3Rl cnMuICAqLwogICBpZiAocmVnbm8gPT0gLTEKICAgICAgIHx8ICh0ZGVwLT5w cGNfZ3AwX3JlZ251bSA8PSByZWdubwogCSAgJiYgcmVnbm8gPCB0ZGVwLT5w cGNfZ3AwX3JlZ251bSArIHBwY19udW1fZ3BycykpCiAgICAgewotICAgICAg aWYgKGFyY2g2NCkKKyAgICAgIGlmIChkYXRhLT5hcmNoNjQpCiAJewogCSAg aWYgKCFwdHJhY2U2NGFpeCAoUFRUX1JFQURfR1BSUywgdGlkLCAKIAkJCSAg ICAodW5zaWduZWQgbG9uZykgZ3ByczY0LCAwLCBOVUxMKSkKQEAgLTEzMzEs NyArMTQwOCw3IEBAIGZldGNoX3JlZ3Nfa2VybmVsX3RocmVhZCAoc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vLAogCiAgIGlmIChyZWdu byA9PSAtMSB8fCBzcGVjaWFsX3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ25v KSkKICAgICB7Ci0gICAgICBpZiAoYXJjaDY0KQorICAgICAgaWYgKGRhdGEt PmFyY2g2NCkKIAl7CiAJICBpZiAoIXB0cmFjZTY0YWl4IChQVFRfUkVBRF9T UFJTLCB0aWQsIAogCQkJICAgICh1bnNpZ25lZCBsb25nKSAmc3ByczY0LCAw LCBOVUxMKSkKQEAgLTEzNjMsNyArMTQ0MCw3IEBAIGFpeF90aHJlYWRfdGFy Z2V0OjpmZXRjaF9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2Fj aGUsIGludCByZWdubykKICAgc3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQ7 CiAgIHB0aGRiX3RpZF90IHRpZDsKIAotICBpZiAoIVBEX1RJRCAocmVnY2Fj aGUtPnB0aWQgKCkpKQorICBpZiAoIShyZWdjYWNoZS0+cHRpZCAoKS50aWQg KCkgIT0gMCkpCiAgICAgYmVuZWF0aCAoKS0+ZmV0Y2hfcmVnaXN0ZXJzIChy ZWdjYWNoZSwgcmVnbm8pOwogICBlbHNlCiAgICAgewpAQCAtMTUxMSw2ICsx NTg4LDggQEAgc3RvcmVfcmVnc191c2VyX3RocmVhZCAoY29uc3Qgc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJfcHRocmVhZF90IHBkdGlkKQog ICBwdGhkYl9jb250ZXh0X3QgY3R4OwogICB1aW50MzJfdCBpbnQzMjsKICAg dWludDY0X3QgaW50NjQ7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxl cyAqZGF0YTsKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9y X3B0aWQgKGluZmVyaW9yX3B0aWQpOwogCiAgIGlmIChkZWJ1Z19haXhfdGhy ZWFkKQogICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csIApAQCAtMTUxOCw3 ICsxNTk3LDcgQEAgc3RvcmVfcmVnc191c2VyX3RocmVhZCAoY29uc3Qgc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJfcHRocmVhZF90IHBkdGlk KQogCiAgIC8qIFJldHJpZXZlIHRoZSB0aHJlYWQncyBjdXJyZW50IGNvbnRl eHQgZm9yIGl0cyBub24tcmVnaXN0ZXIKICAgICAgdmFsdWVzLiAgKi8KLSAg c3RhdHVzID0gcHRoZGJfcHRocmVhZF9jb250ZXh0IChwZF9zZXNzaW9uLCBw ZHRpZCwgJmN0eCk7CisgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfY29udGV4 dCAoZGF0YS0+cGRfc2Vzc2lvbiwgcGR0aWQsICZjdHgpOwogICBpZiAoc3Rh dHVzICE9IFBUSERCX1NVQ0NFU1MpCiAgICAgZXJyb3IgKF8oImFpeC10aHJl YWQ6IHN0b3JlX3JlZ2lzdGVyczogcHRoZGJfcHRocmVhZF9jb250ZXh0IHJl dHVybmVkICVzIiksCiAJICAgcGRfc3RhdHVzMnN0ciAoc3RhdHVzKSk7CkBA IC0xNTI4LDcgKzE2MDcsNyBAQCBzdG9yZV9yZWdzX3VzZXJfdGhyZWFkIChj b25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBwdGhkYl9wdGhyZWFk X3QgcGR0aWQpCiAgIGZvciAoaSA9IDA7IGkgPCBwcGNfbnVtX2dwcnM7IGkr KykKICAgICBpZiAoUkVHX1ZBTElEID09IHJlZ2NhY2hlLT5nZXRfcmVnaXN0 ZXJfc3RhdHVzICh0ZGVwLT5wcGNfZ3AwX3JlZ251bSArIGkpKQogICAgICAg ewotCWlmIChhcmNoNjQpCisJaWYgKGRhdGEtPmFyY2g2NCkKIAkgIHsKIAkg ICAgcmVnY2FjaGUtPnJhd19jb2xsZWN0ICh0ZGVwLT5wcGNfZ3AwX3JlZ251 bSArIGksICh2b2lkICopICZpbnQ2NCk7CiAJICAgIGN0eC5ncHJbaV0gPSBp bnQ2NDsKQEAgLTE1NDUsNyArMTYyNCw3IEBAIHN0b3JlX3JlZ3NfdXNlcl90 aHJlYWQgKGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHB0aGRi X3B0aHJlYWRfdCBwZHRpZCkKICAgICBmaWxsX2ZwcnMgKHJlZ2NhY2hlLCBj dHguZnByKTsKIAogICAvKiBTcGVjaWFsIHJlZ2lzdGVycyAoYWx3YXlzIGtl cHQgaW4gY3R4IGFzIDY0IGJpdHMpLiAgKi8KLSAgaWYgKGFyY2g2NCkKKyAg aWYgKGRhdGEtPmFyY2g2NCkKICAgICB7CiAgICAgICBmaWxsX3NwcnM2NCAo cmVnY2FjaGUsICZjdHguaWFyLCAmY3R4Lm1zciwgJmN0eC5jciwgJmN0eC5s ciwgJmN0eC5jdHIsCiAJCQkgICAgICZjdHgueGVyLCAmY3R4LmZwc2NyKTsK QEAgLTE1NzYsNyArMTY1NSw3IEBAIHN0b3JlX3JlZ3NfdXNlcl90aHJlYWQg KGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHB0aGRiX3B0aHJl YWRfdCBwZHRpZCkKIAljdHguZnBzY3IgPSB0bXBfZnBzY3I7CiAgICAgfQog Ci0gIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfc2V0Y29udGV4dCAocGRfc2Vz c2lvbiwgcGR0aWQsICZjdHgpOworICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFk X3NldGNvbnRleHQgKGRhdGEtPnBkX3Nlc3Npb24sIHBkdGlkLCAmY3R4KTsK ICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTKQogICAgIGVycm9yIChf KCJhaXgtdGhyZWFkOiBzdG9yZV9yZWdpc3RlcnM6ICIKIAkgICAgICJwdGhk Yl9wdGhyZWFkX3NldGNvbnRleHQgcmV0dXJuZWQgJXMiKSwKQEAgLTE2MDIs NiArMTY4MSw5IEBAIHN0b3JlX3JlZ3Nfa2VybmVsX3RocmVhZCAoY29uc3Qg c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vLAogICBkb3Vi bGUgZnByc1twcGNfbnVtX2ZwcnNdOwogICBzdHJ1Y3QgcHR4c3BycyBzcHJz NjQ7CiAgIHN0cnVjdCBwdHNwcnMgIHNwcnMzMjsKKyAgc3RydWN0IGFpeF90 aHJlYWRfdmFyaWFibGVzICpkYXRhOworICAKKyAgZGF0YSA9IGdldF90aHJl YWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKHJlZ2NhY2hlLT5wdGlkICgpKTsK IAogICBpZiAoZGVidWdfYWl4X3RocmVhZCkKICAgICBnZGJfcHJpbnRmIChn ZGJfc3RkbG9nLCAKQEAgLTE2MTMsNyArMTY5NSw3IEBAIHN0b3JlX3JlZ3Nf a2VybmVsX3RocmVhZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgaW50IHJlZ25vLAogICAgICAgfHwgKHRkZXAtPnBwY19ncDBfcmVnbnVt IDw9IHJlZ25vCiAJICAmJiByZWdubyA8IHRkZXAtPnBwY19ncDBfcmVnbnVt ICsgcHBjX251bV9mcHJzKSkKICAgICB7Ci0gICAgICBpZiAoYXJjaDY0KQor ICAgICAgaWYgKGRhdGEtPmFyY2g2NCkKIAl7CiAJICAvKiBQcmUtZmV0Y2g6 IHNvbWUgcmVncyBtYXkgbm90IGJlIGluIHRoZSBjYWNoZS4gICovCiAJICBw dHJhY2U2NGFpeCAoUFRUX1JFQURfR1BSUywgdGlkLCAodW5zaWduZWQgbG9u ZykgZ3ByczY0LCAwLCBOVUxMKTsKQEAgLTE2NDYsNyArMTcyOCw3IEBAIHN0 b3JlX3JlZ3Nfa2VybmVsX3RocmVhZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgaW50IHJlZ25vLAogCiAgIGlmIChyZWdubyA9PSAtMSB8 fCBzcGVjaWFsX3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ25vKSkKICAgICB7 Ci0gICAgICBpZiAoYXJjaDY0KQorICAgICAgaWYgKGRhdGEtPmFyY2g2NCkK IAl7CiAJICAvKiBQcmUtZmV0Y2g6IHNvbWUgcmVnaXN0ZXJzIHdvbid0IGJl IGluIHRoZSBjYWNoZS4gICovCiAJICBwdHJhY2U2NGFpeCAoUFRUX1JFQURf U1BSUywgdGlkLCAKQEAgLTE3MDMsNyArMTc4NSw3IEBAIGFpeF90aHJlYWRf dGFyZ2V0OjpzdG9yZV9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIGludCByZWdubykKICAgc3RydWN0IHRocmVhZF9pbmZvICp0aHJl YWQ7CiAgIHB0aGRiX3RpZF90IHRpZDsKIAotICBpZiAoIVBEX1RJRCAocmVn Y2FjaGUtPnB0aWQgKCkpKQorICBpZiAoIShyZWdjYWNoZS0+cHRpZCAoKS50 aWQgKCkgIT0gMCkpCiAgICAgYmVuZWF0aCAoKS0+c3RvcmVfcmVnaXN0ZXJz IChyZWdjYWNoZSwgcmVnbm8pOwogICBlbHNlCiAgICAgewpAQCAtMTc0MSw3 ICsxODIzLDcgQEAgYWl4X3RocmVhZF90YXJnZXQ6Om1vdXJuX2luZmVyaW9y ICgpCiB7CiAgIHRhcmdldF9vcHMgKmJlbmVhdGggPSB0aGlzLT5iZW5lYXRo ICgpOwogCi0gIHBkX2RlYWN0aXZhdGUgKCk7CisgIHBkX2Rpc2FibGUgKCk7 CiAgIGJlbmVhdGgtPm1vdXJuX2luZmVyaW9yICgpOwogfQogCkBAIC0xNzUw LDcgKzE4MzIsNyBAQCBhaXhfdGhyZWFkX3RhcmdldDo6bW91cm5faW5mZXJp b3IgKCkKIGJvb2wKIGFpeF90aHJlYWRfdGFyZ2V0Ojp0aHJlYWRfYWxpdmUg KHB0aWRfdCBwdGlkKQogewotICBpZiAoIVBEX1RJRCAocHRpZCkpCisgIGlm ICghKHB0aWQudGlkICgpICE9IDApKQogICAgIHJldHVybiBiZW5lYXRoICgp LT50aHJlYWRfYWxpdmUgKHB0aWQpOwogCiAgIC8qIFdlIHVwZGF0ZSB0aGUg dGhyZWFkIGxpc3QgZXZlcnkgdGltZSB0aGUgY2hpbGQgc3RvcHMsIHNvIGFs bApAQCAtMTc2Niw3ICsxODQ4LDcgQEAgYWl4X3RocmVhZF90YXJnZXQ6OnRo cmVhZF9hbGl2ZSAocHRpZF90IHB0aWQpCiBzdGQ6OnN0cmluZwogYWl4X3Ro cmVhZF90YXJnZXQ6OnBpZF90b19zdHIgKHB0aWRfdCBwdGlkKQogewotICBp ZiAoIVBEX1RJRCAocHRpZCkpCisgIGlmICghKHB0aWQudGlkICgpICE9IDAp KQogICAgIHJldHVybiBiZW5lYXRoICgpLT5waWRfdG9fc3RyIChwdGlkKTsK IAogICByZXR1cm4gc3RyaW5nX3ByaW50ZiAoXygiVGhyZWFkICVzIiksIHB1 bG9uZ2VzdCAocHRpZC50aWQgKCkpKTsKQEAgLTE3ODYsOCArMTg2OCwxMSBA QCBhaXhfdGhyZWFkX3RhcmdldDo6ZXh0cmFfdGhyZWFkX2luZm8gKHN0cnVj dCB0aHJlYWRfaW5mbyAqdGhyZWFkKQogICBwdGhkYl9kZXRhY2hzdGF0ZV90 IGRldGFjaHN0YXRlOwogICBpbnQgY2FuY2VscGVuZDsKICAgc3RhdGljIGNo YXIgKnJldCA9IE5VTEw7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxl cyAqZGF0YTsKKworICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9m b3JfcHRpZCAodGhyZWFkLT5wdGlkKTsKIAotICBpZiAoIVBEX1RJRCAodGhy ZWFkLT5wdGlkKSkKKyAgaWYgKCEodGhyZWFkLT5wdGlkLnRpZCAoKSAhPSAw KSkKICAgICByZXR1cm4gTlVMTDsKIAogICBzdHJpbmdfZmlsZSBidWY7CkBA IC0xODAwLDI0ICsxODg1LDI0IEBAIGFpeF90aHJlYWRfdGFyZ2V0OjpleHRy YV90aHJlYWRfaW5mbyAoc3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQpCiAg ICAgLyogaTE4bjogTGlrZSAidGhyZWFkLWlkZW50aWZpZXIgJWQsIFtzdGF0 ZV0gcnVubmluZywgc3VzcGVuZGVkIiAqLwogICAgIGJ1Zi5wcmludGYgKF8o InRpZCAlZCIpLCAoaW50KXRpZCk7CiAKLSAgc3RhdHVzID0gcHRoZGJfcHRo cmVhZF9zdGF0ZSAocGRfc2Vzc2lvbiwgcGR0aWQsICZzdGF0ZSk7CisgIHN0 YXR1cyA9IHB0aGRiX3B0aHJlYWRfc3RhdGUgKGRhdGEtPnBkX3Nlc3Npb24s IHBkdGlkLCAmc3RhdGUpOwogICBpZiAoc3RhdHVzICE9IFBUSERCX1NVQ0NF U1MpCiAgICAgc3RhdGUgPSBQU1RfTk9UU1VQOwogICBidWYucHJpbnRmICgi LCAlcyIsIHN0YXRlMnN0ciAoc3RhdGUpKTsKIAotICBzdGF0dXMgPSBwdGhk Yl9wdGhyZWFkX3N1c3BlbmRzdGF0ZSAocGRfc2Vzc2lvbiwgcGR0aWQsIAor ICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3N1c3BlbmRzdGF0ZSAoZGF0YS0+ cGRfc2Vzc2lvbiwgcGR0aWQsIAogCQkJCSAgICAgICAmc3VzcGVuZHN0YXRl KTsKICAgaWYgKHN0YXR1cyA9PSBQVEhEQl9TVUNDRVNTICYmIHN1c3BlbmRz dGF0ZSA9PSBQU1NfU1VTUEVOREVEKQogICAgIC8qIGkxOG46IExpa2UgIlRo cmVhZC1JZCAlZCwgW3N0YXRlXSBydW5uaW5nLCBzdXNwZW5kZWQiICovCiAg ICAgYnVmLnByaW50ZiAoXygiLCBzdXNwZW5kZWQiKSk7CiAKLSAgc3RhdHVz ID0gcHRoZGJfcHRocmVhZF9kZXRhY2hzdGF0ZSAocGRfc2Vzc2lvbiwgcGR0 aWQsIAorICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX2RldGFjaHN0YXRlIChk YXRhLT5wZF9zZXNzaW9uLCBwZHRpZCwgCiAJCQkJICAgICAgJmRldGFjaHN0 YXRlKTsKICAgaWYgKHN0YXR1cyA9PSBQVEhEQl9TVUNDRVNTICYmIGRldGFj aHN0YXRlID09IFBEU19ERVRBQ0hFRCkKICAgICAvKiBpMThuOiBMaWtlICJU aHJlYWQtSWQgJWQsIFtzdGF0ZV0gcnVubmluZywgZGV0YWNoZWQiICovCiAg ICAgYnVmLnByaW50ZiAoXygiLCBkZXRhY2hlZCIpKTsKIAotICBwdGhkYl9w dGhyZWFkX2NhbmNlbHBlbmQgKHBkX3Nlc3Npb24sIHBkdGlkLCAmY2FuY2Vs cGVuZCk7CisgIHB0aGRiX3B0aHJlYWRfY2FuY2VscGVuZCAoZGF0YS0+cGRf c2Vzc2lvbiwgcGR0aWQsICZjYW5jZWxwZW5kKTsKICAgaWYgKHN0YXR1cyA9 PSBQVEhEQl9TVUNDRVNTICYmIGNhbmNlbHBlbmQpCiAgICAgLyogaTE4bjog TGlrZSAiVGhyZWFkLUlkICVkLCBbc3RhdGVdIHJ1bm5pbmcsIGNhbmNlbCBw ZW5kaW5nIiAqLwogICAgIGJ1Zi5wcmludGYgKF8oIiwgY2FuY2VsIHBlbmRp bmciKSk7CmRpZmYgLS1naXQgYS9nZGIvc29saWItYWl4LmMgYi9nZGIvc29s aWItYWl4LmMKaW5kZXggZjQ4M2Y1NGRlMTMuLjY3MWMxN2NiYTQ2IDEwMDY0 NAotLS0gYS9nZGIvc29saWItYWl4LmMKKysrIGIvZ2RiL3NvbGliLWFpeC5j CkBAIC02MTgsNiArNjE4LDE2IEBAIHNvbGliX2FpeF9iZmRfb3BlbiAoY29u c3QgY2hhciAqcGF0aG5hbWUpCiAgICAgICBpZiAobWVtYmVyX25hbWUgPT0g YmZkX2dldF9maWxlbmFtZSAob2JqZWN0X2JmZC5nZXQgKCkpKQogCWJyZWFr OwogCisgICAgICBzdGQ6OnN0cmluZyBzID0gYmZkX2dldF9maWxlbmFtZSAo b2JqZWN0X2JmZC5nZXQgKCkpOworCisgICAgICAvKiBGb3IgZXZlcnkgaW5m ZXJpb3IgYWZ0ZXIgZmlyc3QgaW50IGJmZCBzeXN0ZW0gd2UgCisJIHdpbGwg aGF2ZSB0aGUgcGF0aG5hbWUgaW5zdGVhZCBvZiB0aGUgbWVtYmVyIG5hbWUK KwkgcmVnaXN0ZXJlZC4gSGVuY2UgdGhlIGJlbG93IGNvbmRpdGlvbiBleGlz dHMuICAqLworCisgICAgICBpZiAocy5maW5kICgnKCcpICE9IHN0ZDo6c3Ry aW5nOjpucG9zCisJICAmJiBzLmZpbmQgKG1lbWJlcl9uYW1lKSAhPSBzdGQ6 OnN0cmluZzo6bnBvcykKKwlyZXR1cm4gb2JqZWN0X2JmZDsgCisKICAgICAg IG9iamVjdF9iZmQgPSBnZGJfYmZkX29wZW5yX25leHRfYXJjaGl2ZWRfZmls ZSAoYXJjaGl2ZV9iZmQuZ2V0ICgpLAogCQkJCQkJICAgICBvYmplY3RfYmZk LmdldCAoKSk7CiAgICAgfQotLSAKMi4zMS4xCgo= --_004_DM6PR15MB3545C1FD15BEC2D160B3AB81D6D79DM6PR15MB3545namp_--