From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id 328693858C31 for ; Fri, 17 Feb 2023 11:27:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 328693858C31 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 (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31H8vfDD014453; Fri, 17 Feb 2023 11:27:02 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=V5jF+in6w5tcrU6T26jQ2UIU/toezUH+NHngYpU4e8c=; b=tJ/dW05K7WSK9/affFhpyAuw59qTuvUURiH9NVTVsTZdW7xVqcY5j5CpALb8V66Bsrbp +7xXZA9o502wyBhB2paWy21b3fmr0Z/HXT73aNriYPVrQ6p8D2B1He+D7C6/eQ2YdQh9 nGMIHPwoIr54P9t83bre5IPR7adyuV0qL/QQXkc2E9Wdd8qGi535RHafZ6lkDgqwmcbo p3Glu2Z+se3TskryBWDhTwNvUirxcIh4/ZpTiVRpa7sxJtSZLfH6FsltzkcfZnSPhaiU w3lxciWKQzuCvl61mhAhMoZhp0sOBXY59se3E1Z30UYFDOQfRCWG2HZBcbbItdbBGSl0 rw== Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04lp2043.outbound.protection.outlook.com [104.47.74.43]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3nt15wt3td-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 17 Feb 2023 11:27:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SRoT47WhN6Yg5N7EdQPx4ta5vvjRShXqe4MC/xA3RTlKgifjyhbksWPpDf72cbbJBXmOovac1og6WDuV5YgKCxo4IIlhLhCZQ0yNUpH6cZWKcaFdpMy17grEP1gTfX/09aZeda2XJxp5B/dTmq90un5w0hkYVpnvOOolvJAgytqA7/aEPePvoprb6Fw9IXAcoXcXZdWxou/frbAPx/QHC4c5NvzFRzUa/iYDWudCAJdlP+Yxv416HG5R42Lj0WgeYCNLrUKz5emP+NjfgmfrbfeRYe10mLwrgeD1e4j/9rSedse8PpWTFoHe81hWgEbHpHButaCHYxvm6fw8w2H3lw== 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=V5jF+in6w5tcrU6T26jQ2UIU/toezUH+NHngYpU4e8c=; b=l7veipo9OEBY86nC7XpgGFUkbTrM93SjhvQgTe6XsiUUQ4iz4pXzp9j4GWlVLK661c+pUyO7P8gqWTdhE2ap53y5Nm2vQiwnAYYDgTfP/Mr3oMpoVLeFmPb54TBmVTJvGt3KoSw4WoUqb5ghEBWGYptY3PKhf9jyGhfh/HwJSn7iXCY+sgHhFVMaAmPlTn/idSxAPEMhjuqbaPOMwp8ihHQywfGpdS1gEqYIGYwgDd87sF57p39f8GS8WHrMZnKStbinSRH2S3/p/rmfiRwY1Ufmh6LbS0hrmaEJEvicnMfUzXjIEbgs+ZjZPeKQ3nDx9WPUU6sWfo6lVx4G+oyntQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ibm.com; dmarc=pass action=none header.from=ibm.com; dkim=pass header.d=ibm.com; arc=none Received: from CH2PR15MB3544.namprd15.prod.outlook.com (2603:10b6:610:5::26) by MW4PR15MB4777.namprd15.prod.outlook.com (2603:10b6:303:10b::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.13; Fri, 17 Feb 2023 11:26:59 +0000 Received: from CH2PR15MB3544.namprd15.prod.outlook.com ([fe80::1e54:c91e:9426:8880]) by CH2PR15MB3544.namprd15.prod.outlook.com ([fe80::1e54:c91e:9426:8880%5]) with mapi id 15.20.6111.013; Fri, 17 Feb 2023 11:26:59 +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+iAAawUgIADF3ySgAshzACACvn7HoAI6B4pgAADGXOAALszAIABIz5JgAU9kgCAARgy1IACBimAgAL6kLSABOXQgIABOu4PgAOIfYCAAQPT3w== Date: Fri, 17 Feb 2023 11:26:59 +0000 Message-ID: References: <09f2433177505899c9bd31347af9b43118e4f890.camel@de.ibm.com> <8b7c91369d53c1ace668ff03f4d819a66f5e64e6.camel@de.ibm.com> <10cb526ef81fd8a63fd776e51bf9505c8dff1e33.camel@de.ibm.com> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-IN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH2PR15MB3544:EE_|MW4PR15MB4777:EE_ x-ms-office365-filtering-correlation-id: 7bbf8fc8-cf0e-4cfd-da78-08db10d9e24c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: pMtjoauC5rh3kq7nTQO4J1mbn/EmBZogrIv7RZcsuB1wROHYa7s1b0YUtfgmRwFyUn23CNkJlhC5lE5s7ED8Okp9sJQ7bwYr6iMSGu4EEGppKA4z2Kv13A4fLYzIvMugUMzgKvfMEMyYa02XexaceF4x5OtlFgre3UROVVobI+A3ixyO4DPOO4UX1YCoFMFTWAnov5/XRwlpIAt/bXtQWzqjdqH6e4lfw9K9V7aulk0IqaMSYWiqKsa9HoQo/n3goeKMHXSsBtz9ujwVdQfUZYaEuPrWmtTXMqgVEa3wbNXmEvE2MlcfLU2gODQuUWc4oags73Nal4jxPBQOd8Dp/hzjq3TeoAK3N1rh5cIjJka2Soxbl1XQHTQxDV5TYePHaLfkgd8/jrAqc/2/+j4nhS72teN/dak59/Od6pcHESp0tBcBQFAkwGQFoJ455G7fiMo/i9T4t09BEAbvsyRruaDmQBv5UKgRyvmz5hQVqwZ18DHE64GM9idQdGNaLEs2PJmWHu3p6OiiCpuk6VPraVJ3q3rz2C8QCAKLIsePezoxfWs66BkqfdzGY0YQNwT6bR8FEWkVhwzlKkG8vdxX5OGexfl1Z2ZMSK4cSBJmZnbYu6TR4UUUv5btUutDJZfv0ObwA5DEXaYQ8rOtDdp/Sto8QVchoZBz4FoQ52nxkXEZC4A9YvbkG1YFfeEN5e/fGa4Cwt3YC0EesCu6qOyn5g== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR15MB3544.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(366004)(39860400002)(396003)(136003)(376002)(346002)(451199018)(71200400001)(478600001)(83380400001)(38070700005)(122000001)(99936003)(55016003)(86362001)(38100700002)(33656002)(9686003)(186003)(6506007)(53546011)(7696005)(8936002)(41300700001)(52536014)(2906002)(5660300002)(91956017)(4326008)(64756008)(76116006)(66476007)(8676002)(66446008)(66946007)(316002)(110136005)(66556008);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?Windows-1252?Q?kH2+683eCZAG6Lvea6ZxrOyZKltEzyWOpx6Qe+1thlnO6BoqMf6IGxJG?= =?Windows-1252?Q?sa/VNelOKzWMoOkDahy4jlXaOZ3jejN0UE79olDGDah1XoPc69IMUzzF?= =?Windows-1252?Q?1vqd7gvvS2d6Aik/NVZUzvzqpcoc8uEWKnNVsEmqaxyRy4OBcmJH3OOr?= =?Windows-1252?Q?/NlRpEtr7zOSm59M2lAD/sR1TIjwp1WXxFIbxEB+EzvrjRdqfqozeYFt?= =?Windows-1252?Q?/PbodWQiGm55Zwvuj4/dRdsKCIWJlbj98rfC94002rj48OPL/Xwjfzli?= =?Windows-1252?Q?7jD9MDlxYwsHoouoASFUwFegN+lzvGlZlYWLDc6pQ1lqTM5CoL3R15wM?= =?Windows-1252?Q?hYWN+nOWR5Dg+slJwqNBjoX8/WEPkLNLuj6wVejG6cTjol8v2Eth8NCq?= =?Windows-1252?Q?0ScecdseVhiUrro1Vb4rBNcqLL7vDC6X0StJLLAW+h/VHdbiizKIPjqC?= =?Windows-1252?Q?G+5mhFFNQvujjSqvTlTP6/RqMeBp0VdEFyOMwGqlruSsBZOiMhE8LYoU?= =?Windows-1252?Q?rBEYBO8JgHEzjQtjDNaX300AFmNfe3rl8aEeG636vAMKx02Px2SEZxqr?= =?Windows-1252?Q?8zVbzi9aoEd6lM4FxwvhMMl8kQHvS3OV7TC+fX4rO5FpS9elS+lZhOSK?= =?Windows-1252?Q?8NdRHe7Oa88icJvdLF5mekzAYIx1O7UyzU7c1IB+bIdAR1IR3ON6d2qg?= =?Windows-1252?Q?TmE/1qpKg8rgVjt/acj6H34MjsL5yemNgeEVh5RAq/A0l25laaDgk8HJ?= =?Windows-1252?Q?KVLfDbcECCfS/v3+8tjTQpEcLN8C/Bl4ojOC4E/ZLq36nBcBp2ndy+Us?= =?Windows-1252?Q?EXYi9P5j+mnHHAFjZIbRYx19javA64dLkZi9xPT9fzhDxSFiIYG9P/4x?= =?Windows-1252?Q?c+Gv0qz5PqeJG9MwlTMi4dkAlJh8qtEm8Izt9UWyA1axBIUPKQqlrNBu?= =?Windows-1252?Q?SAdcvKMrgUvAy2eSqZoH2131FFPSi8GxBbk6GhlLf4ELy/IXgFtvGiNM?= =?Windows-1252?Q?F19ijvGgJ9CwJZ7vGYK63JBW+mF/nXGkEfmS9E/uztzyjnghPBU933TP?= =?Windows-1252?Q?dROV7nqC8WlGvMBk0gmxH1WvtDwXHhndhJu51VNZpvs6jTD+IeDkfRw2?= =?Windows-1252?Q?r8yFxufcdo2YntAOZ4QOIoI3BRfrnnyflNXaBQdsBggh0hZZDqmBGcWI?= =?Windows-1252?Q?r0pPl1ZCUnGe3iXdd/PTikqNc8TMZdANtZ5KUpkRuoIsC5SRiEruq8Gw?= =?Windows-1252?Q?fVG+KlhE6ThzRjMsnwCc91ATRIFVfPnPdfVZXtluo3DoI6tfferXPs5R?= =?Windows-1252?Q?RNrb23XMjzIaexorzLfRyy4Sxk6n1Q5I0yGZg1KqZnv0F24W4rd4hsC8?= =?Windows-1252?Q?FGxYozZ7CMYhQPlfvG2iVtWI8Yl86MuccvVJ8wsRwjwGIpvso4RnE4wO?= =?Windows-1252?Q?IugcIoAlG3IppkKpfBRvahasmV/Nz3XXwTXdwBox2pf+1U4LrzTbHbPq?= =?Windows-1252?Q?+ZeNTIf8g74Dl7CseLusNTSQiFbs0V9wY2OrkPn0onc7NPVSmbN5Kyzp?= =?Windows-1252?Q?sd7n2FDjV637Q7wXarxKBIy/VbLaks+y1vU6by93Vd0CRcaUD5h7ZrM/?= =?Windows-1252?Q?fIOmE4rKELqHBmi7mZcXud4z8dOqYBJagf1wNxT1BLm5C3B69plnOYht?= =?Windows-1252?Q?uEszRNnWvK3+R/edxTYF6tPYU7YZrBGQm7+qkmNR6QrCzU0bhdy/iHI1?= =?Windows-1252?Q?F8PU9KihGu+xxyU3y/152aJD/LfGYytt3fPhcNxnuMsTaGBrdoW3cRWC?= =?Windows-1252?Q?jlUsBHhIzGyuH5azJb/a4bphSnE=3D?= Content-Type: multipart/mixed; boundary="_004_CH2PR15MB354455A756AF729AE5F796E2D6A19CH2PR15MB3544namp_" MIME-Version: 1.0 X-OriginatorOrg: ibm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR15MB3544.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7bbf8fc8-cf0e-4cfd-da78-08db10d9e24c X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Feb 2023 11:26:59.3379 (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: EkcaEnKRiirv/94bU1HePb3eSEOEmFWn56WpTpLiEMMzcRkfyiXIq4+mOpyz4GIONuYn3SJNhQ51wRUhdYQuoQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR15MB4777 X-Proofpoint-ORIG-GUID: 1n-Vyua-baKeSZx3U7Ag4_gIseDNUlXp X-Proofpoint-GUID: 1n-Vyua-baKeSZx3U7Ag4_gIseDNUlXp X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-17_06,2023-02-17_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 suspectscore=0 malwarescore=0 adultscore=0 bulkscore=0 lowpriorityscore=0 phishscore=0 mlxscore=0 mlxlogscore=999 spamscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302170101 X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HTML_MESSAGE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_004_CH2PR15MB354455A756AF729AE5F796E2D6A19CH2PR15MB3544namp_ Content-Type: multipart/alternative; boundary="_000_CH2PR15MB354455A756AF729AE5F796E2D6A19CH2PR15MB3544namp_" --_000_CH2PR15MB354455A756AF729AE5F796E2D6A19CH2PR15MB3544namp_ Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Hi Ulrich, Tom and community. Please find attached the patch. {See: 0001-Fix-multi-thread-debug-bug-in-AI= X.patch} >Not sure if I follow you exactly here, but my understanding is >indeed that follow_fork should initially create an inferior for >the new process with just a single main thread using (pid, 0, 0). >Subsequently, aix-thread should detect that the new inferior >uses pthreads and then switch its ptid to (pid, 0, tid). >Not sure where exactly this goes wrong for you. What is the >path leading to this crash you're observing? Let me explain this using the example code pasted below this email. Conside= r we now follow the child {which is the only case, previous version of the = patch was failing}. --------------------------------------------------------------------- >(gdb) set follow-fork-mode child >(gdb) set detach-on-fork off >(gdb) r >Starting program: /home/aditya/gdb_tests/ultimate-multi-thread-fork >[New Thread 258] >[New Thread 515] >[Attaching after Thread 515 fork to child process 10748216] >[New inferior 2 (process 10748216)] --------------------------------------------------------------------- GDB until here know that a fork event occurred and the child process is <10= 748216, 0, 0> via wait () in the rs6000-aix-nat.c file. The child in the GD= B core is . GDB has three things to do here. ** It will get a new object file notifier of the new process, ** new inferior is created so the new inferior notifier {Kindly See initial= ize_aix_thread () in aix-thread.c where aix_thread_inferior_created () will= be called } ** And follow_fork () event since GDB must decide it has to follow the chil= d. Note:- Our child process is This is the exact order in which the above 3 things will be executed from t= he main GDB event loop. So, the first task gets done. The new object file notifier has called pd_en= able (), to pd_activate () to sync_threadlist () where we will change child= process to if the libpthdebug session is initialised success= fully. The second task now, new inferior notifier calls aix_thread_inferior_create= d () to pd_enable () (), to pd_activate () to sync_threadlist (). Now we have changed the child process from to . But no one has informed the GDB core about this change. It is still of the = view that child process is from the set_forked () status it got= from rs6000-aix-nat wait () while a fork () event was being detected. So w= hen it attempts to handle the third task which is to follow the child proce= ss since we have given that command, the child ptid passed to switch_to_thr= ead is . But this does not exists. Since the first two events ch= anged it. So GDB got surprised on not finding it and failed to debug furthe= r thereby giving an option to dump the core with an assertion below. {Kindl= y see the back trace I pasted in the previous email. One can verify this}. ----------------------------------------------------------------------- >thread.c:1337: internal-error: switch_to_thread: Assertion `thr !=3D NULL'= ?>failed. >A problem internal to GDB has been detected, >further debugging may prove unreliable. ---------------------------------------------------------------------------- The game is about when we decide to set the pd_active or say thread debuggi= ng active. We did it in two places. In the wait () and pd_enable () in aix-= thread.c file. We need it to put it in the correct place which we aren=92t = correctly. If there is a need for any non-target function like follow_fork = to use ptid_t (pid, 0 , 0) then we must not change the thread ptid though t= he library is initialised. This is where we are going wrong. Let me also tell you all what I tried today and failed. I had removed pd_ac= tivate () from the pd_enable () and called pd_activate () only from wait ()= for all the events. {Currently we do only for trap}. But the problem is if= we have many inferiors and couple of them with no private data set, since = we didn=92t in pd_enable () via pd_activate () as we removed it, then at a= ny point if we iterate_over_threads () over these inferiors we will crash s= ince these don=92t have private data set yet. So this is a tricky problem. Wonder how Linux folks did it. If anyone knows= it will be of help if shared. Kindly let me know at high level. I could no= t understand how they are handling the same. >But you can determine >the inferior associated with a PID directly via find_inferior_pid >without ever involving any thread. This is done in this patch. Thank you Ulrich. Let me know what you think. Awaiting for a reply. Have a nice day ahead. Thanks and regards, Aditya. ------------------------------------------------------------------- Code 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; } From: Ulrich Weigand Date: Friday, 17 February 2023 at 1:16 AM To: simark@simark.ca , Aditya Kamath1 , gdb-patches@sourceware.org Cc: Sangamesh Mallayya Subject: Re: [PATCH] 0001-Fix-multi-thread-debug-bug-in-AIX.patch Aditya Kamath1 wrote: >So what is happening is that the when after a new process is born, >its pthread library is getting intialised and we have changed its >ptid from ptid (pid, 0, 0) to ptid (pid, 0, tid). Since we follow >fork the code in inferior.c file will switch to the thread child >where the child is reported as ptid (pid, 0, 0) but exists as >ptid (pid, 0, tid). This leads to this crash. We did try with two >variables if you recall in the previous patch. But your point of >pd_active being there for it was valid. So somehow something isn't >correct that I did not understand. We have pd_activate () in only >two places. So is follow_fork () is expecting us to switch to child >process and then change the ptid of the child?? If yes, how do we go?? >And if not where are we going wrong here. Not sure if I follow you exactly here, but my understanding is indeed that follow_fork should initially create an inferior for the new process with just a single main thread using (pid, 0, 0). Subsequently, aix-thread should detect that the new inferior uses pthreads and then switch its ptid to (pid, 0, tid). Not sure where exactly this goes wrong for you. What is the path leading to this crash you're observing? >Also this ptid_t (pid, 0, 0) and our main thread being >ptid_t (pid, 0, tid) might need a smarted way to switch to the >main thread's process space and set the right current inferior >process in pdc_read_memory. Kindly check it in this patch and >let me know if we can do it better. So you currently do: + thread_info *thread =3D find_thread_ptid (current_inferior (), + ptid_t (user_current_pid)); + /* If the pthread debug library is loaded, then we need the ptid_t (pid,= 0 ,tid). + Since the main thread in the below for loop will be in the first iter= ation + we will break. */ + if (!thread) + { + for (thread_info *tp: all_threads (current_inferior ()->process_target= (), + ptid_t (user_current_pid))) + { + thread =3D tp; + break; + } + } [...] + { + scoped_restore save_inferior_ptid =3D make_scoped_restore (&inferior_p= tid); + inferior_ptid =3D ptid_t (user_current_pid); + scoped_restore_current_inferior restore_inferior; + set_current_inferior (thread->inf); + + scoped_restore_current_program_space restore_current_progspace; + set_current_program_space (thread->inf->pspace); + status =3D target_write_memory (addr, (gdb_byte *) buf, len); + } This is overkill. Note that at no point do you actually ever use "thread" itself, only "thread->inf". But you can determine the inferior associated with a PID directly via find_inferior_pid without ever involving any thread. Bye, Ulrich --_000_CH2PR15MB354455A756AF729AE5F796E2D6A19CH2PR15MB3544namp_-- --_004_CH2PR15MB354455A756AF729AE5F796E2D6A19CH2PR15MB3544namp_ 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=29654; creation-date="Fri, 17 Feb 2023 11:16:43 GMT"; modification-date="Fri, 17 Feb 2023 11:16:43 GMT" Content-Transfer-Encoding: base64 RnJvbSBiNDY5YjBiYzQwMjY2NmE3YzA2YmIxM2I2OTMxODU5ODBjOTkyZjU1 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFk aGFyIEthbWF0aCA8QWRpdHlhLkthbWF0aDFAaWJtLmNvbT4KRGF0ZTogRnJp LCAxNyBGZWIgMjAyMyAwMzoxNjozNCAtMDYwMApTdWJqZWN0OiBbUEFUQ0hd IEZpeCBtdWx0aS10aHJlYWRlZCBkZWJ1Z2dpbmcgdW5kZXIgQUlYCgpNdWx0 aS10aHJlYWRlZCBkZWJ1Z2dpbmcgdXNpbmcgdGhlIGxpYnB0aGRlYnVnIGRl YnVnIGludGVyZmFjZQppcyBjdXJyZW50bHkgYnJva2VuIGR1ZSB0byBtdWx0 aXBsZSBpc3N1ZXMuCgpXaGVuIGRlYnVnZ2luZyBhIHNpbmdsZSBpbmZlcmlv ciwgd2Ugd2VyZSBnZXR0aW5nIGFzc2VydGlvbgpmYWlsdXJlcyBpbiBnZXRf YWl4X3RocmVhZF9pbmZvIGFzIG5vIHRwLT5wcml2IHN0cnVjdHVyZSB3YXMK YWxsb2NhdGVkIGZvciB0aGUgbWFpbiB0aHJlYWQuCgpXZSBmaXhlZCB0aGlz IGJ5IHN3aXRjaGluZyB0aGUgbWFpbgp0aHJlYWQgZnJvbSBhIChwaWQsIDAs IDApIHB0aWRfdCB0byBhIChwaWQsIDAsIHRpZCkgcHRpZF90IGFuZAphbGxv Y2FpbmcgdGhlIHRwLT5wcml2IHN0cnVjdHVyZSBpbiBzeW5jX3RocmVhZGxp c3RzLgoKQXMgYSByZXN1bHQsIHRoZSBzd2l0Y2hfdG9fdGhyZWFkIGNhbGwg aW4gcGRjX3JlYWRfZGF0YSBjb3VsZApub3cgZmFpbCBzaW5jZSB0aGUgbWFp biB0aHJlYWQgbm8gbG9uZ2VyIHVzZXMgKHBpZCwgMCwgMCkuCgpTbyB3ZSBy ZXBsYWNlZCB0aGUgY2FsbCBieSBvbmx5IHN3aXRjaGluZyBpbmZlcmlvcl9w dGlkLCB0aGUgY3VycmVudAppbmZlcmlvciwgYW5kIHRoZSBjdXJyZW50IGFk ZHJlc3Mgc3BhY2UgKGxpa2UgcHJvYy1zZXJ2aWNlLmMpLgpBZGQgc2ltaWxh ciBzd2l0Y2hpbmcgdG8gcGRjX3dyaXRlX2RhdGEgd2hlcmUgaXQgd2FzIG1p c3NpbmcKY29tcGxldGVseS4KCldoZW4gZGVidWdnaW5nIG11bHRpcGxlIGlu ZmVyaW9ycywgYW4gYWRkaXRpb25hbCBzZXQgb2YKcHJvYmxlbXMgcHJldmVu dGVkIGNvcnJlY3QgbXVsdGktdGhyZWFkZWQgZGVidWdnaW5nOgoKRmlyc3Qg b2YgYWxsLCBhaXgtdGhyZWFkLmMgdXNlZCB0byBoYXZlIGEgbnVtYmVyIG9m IGdsb2JhbAp2YXJpYWJsZXMgaG9sZGluZyBwZXItaW5mZXJpb3IgaW5mb3Jt YXRpb24uCgpXZSBzd2l0Y2hlZCBoZXNlCnRvIGEgcGVyLWluZmVyaW9yIGRh dGEgc3RydWN0dXJlIGluc3RlYWQuCgpBbHNvLCBzeW5jX3RocmVhZGxpc3Rz IHdhcyBnZXR0aW5nIGNvbmZ1c2VkIGFzIHdlIHdlcmUKY29tcGFyaW5nIHRo ZSBsaXN0IG9mIHRocmVhZHMgcmV0dXJuZWQgYnkgbGlicHRoZGVidWcKZm9y ICpvbmUqIHByb2Nlc3Mgd2l0aCBHREIncyBsaXN0IG9mIHRocmVhZHMgZm9y ICphbGwqCnByb2Nlc3Nlcy4gTm93IHdlIG9ubHkgdXNlIGhlIEdEQiB0aHJl YWRzIG9mIHRoZSBjdXJyZW50CmluZmVyaW9yIGluc3RlYWQuCgpGaW5hbGx5 LCB0aGUgcHJlc2VuY2Ugb2YgdGhlIHRocmVhZCBsaWJyYXJ5IGluIGFueSBi dXQKdGhlIGZpcnN0IGluZmVyaW9yIHdhcyBub3QgY29ycmVjdGx5IGRldGVj dGVkIGR1ZSB0byBhCmJ1ZyBpbiBzb2xpYi1haXguYywgd2hlcmUgdGhlIEJG RCBmaWxlIG5hbWUgZm9yIHNoYXJlZApsaWJyYXJ5IG1lbWJlcnMgd2FzIGNo YW5nZWQgd2hlbiB0aGUgbGlicmFyeSB3YXMgbG9hZGVkCmZvciB0aGUgZmly c3QgdGltZSwgd2hpY2ggY2F1c2VkIHRoZSBsaWJyYXJ5IHRvIG5vIGxvbmdl cgpiZSByZWNvZ25pemVkIGJ5IG5hbWUgd2hlbiBsb2FkZWQgYSBzZWNvbmQg dGltZSwKLS0tCiBnZGIvYWl4LXRocmVhZC5jIHwgMzY5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBnZGIvc29s aWItYWl4LmMgIHwgIDE0ICsrCiAyIGZpbGVzIGNoYW5nZWQsIDI0MCBpbnNl cnRpb25zKCspLCAxNDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2Ri L2FpeC10aHJlYWQuYyBiL2dkYi9haXgtdGhyZWFkLmMKaW5kZXggZTU1NmMx NTM1NzYuLmM2MTUzZTFmNzFlIDEwMDY0NAotLS0gYS9nZGIvYWl4LXRocmVh ZC5jCisrKyBiL2dkYi9haXgtdGhyZWFkLmMKQEAgLTY4LDEwICs2OCw2IEBA IHN0YXRpYyBib29sIGRlYnVnX2FpeF90aHJlYWQ7CiAjZGVmaW5lIHB0aGRi X3RpZF90CXRpZF90CiAjZW5kaWYKIAotLyogUmV0dXJuIHdoZXRoZXIgdG8g dHJlYXQgUElEIGFzIGEgZGVidWdnYWJsZSB0aHJlYWQgaWQuICAqLwotCi0j ZGVmaW5lIFBEX1RJRChwdGlkKQkocGRfYWN0aXZlICYmIHB0aWQudGlkICgp ICE9IDApCi0KIC8qIFN1Y2Nlc3MgYW5kIGZhaWx1cmUgdmFsdWVzIHJldHVy bmVkIGJ5IHB0aGRiIGNhbGxiYWNrcy4gICovCiAKICNkZWZpbmUgUERDX1NV Q0NFU1MJUFRIREJfU1VDQ0VTUwpAQCAtMTQ0LDI0ICsxNDAsNiBAQCBjbGFz cyBhaXhfdGhyZWFkX3RhcmdldCBmaW5hbCA6IHB1YmxpYyB0YXJnZXRfb3Bz CiAKIHN0YXRpYyBhaXhfdGhyZWFkX3RhcmdldCBhaXhfdGhyZWFkX29wczsK IAotLyogQWRkcmVzcyBvZiB0aGUgZnVuY3Rpb24gdGhhdCBsaWJwdGhyZWFk IHdpbGwgY2FsbCB3aGVuIGxpYnB0aGRlYnVnCi0gICBpcyByZWFkeSB0byBi ZSBpbml0aWFsaXplZC4gICovCi0KLXN0YXRpYyBDT1JFX0FERFIgcGRfYnJr X2FkZHI7Ci0KLS8qIFdoZXRoZXIgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24g aXMgZGVidWdnYWJsZSBieSBwdGhkYi4gICovCi0KLXN0YXRpYyBpbnQgcGRf YWJsZSA9IDA7Ci0KLS8qIFdoZXRoZXIgYSB0aHJlYWRlZCBhcHBsaWNhdGlv biBpcyBiZWluZyBkZWJ1Z2dlZC4gICovCi0KLXN0YXRpYyBpbnQgcGRfYWN0 aXZlID0gMDsKLQotLyogV2hldGhlciB0aGUgY3VycmVudCBhcmNoaXRlY3R1 cmUgaXMgNjQtYml0LiAgCi0gICBPbmx5IHZhbGlkIHdoZW4gcGRfYWJsZSBp cyB0cnVlLiAgKi8KLQotc3RhdGljIGludCBhcmNoNjQ7Ci0KIC8qIEZvcndh cmQgZGVjbGFyYXRpb25zIGZvciBwdGhkYiBjYWxsYmFja3MuICAqLwogCiBz dGF0aWMgaW50IHBkY19zeW1ib2xfYWRkcnMgKHB0aGRiX3VzZXJfdCwgcHRo ZGJfc3ltYm9sX3QgKiwgaW50KTsKQEAgLTE5MSw5ICsxNjksNjYgQEAgc3Rh dGljIHB0aGRiX2NhbGxiYWNrc190IHBkX2NhbGxiYWNrcyA9IHsKICAgTlVM TAogfTsKIAotLyogQ3VycmVudCBwdGhkYiBzZXNzaW9uLiAgKi8KKy8qIEFp eCB2YXJpYWJsZSBzdHJ1Y3R1cmUuICAqLworc3RydWN0IGFpeF90aHJlYWRf dmFyaWFibGVzIAoreworICAvKiBXaGV0aGVyIHRoZSBjdXJyZW50IGFwcGxp Y2F0aW9uIGlzIGRlYnVnZ2FibGUgYnkgcHRoZGIuICAqLworICBpbnQgcGRf YWJsZTsKKworICAvKiBXaGV0aGVyIGEgdGhyZWFkZWQgYXBwbGljYXRpb24g aXMgYmVpbmcgZGVidWdnZWQuICAqLworICBpbnQgcGRfYWN0aXZlOworCisg IC8qIEN1cnJlbnQgcHRoZGIgc2Vzc2lvbi4gICovCisgIHB0aGRiX3Nlc3Np b25fdCBwZF9zZXNzaW9uOworCisgIC8qIEFkZHJlc3Mgb2YgdGhlIGZ1bmN0 aW9uIHRoYXQgbGlicHRocmVhZCB3aWxsIGNhbGwgd2hlbiBsaWJwdGhkZWJ1 ZworICAgaXMgcmVhZHkgdG8gYmUgaW5pdGlhbGl6ZWQuICAqLworICBDT1JF X0FERFIgcGRfYnJrX2FkZHI7CisKKyAgLyogV2hldGhlciB0aGUgY3VycmVu dCBhcmNoaXRlY3R1cmUgaXMgNjQtYml0LgorICAgT25seSB2YWxpZCB3aGVu IHBkX2FibGUgaXMgdHJ1ZS4gICovCisgIGludCBhcmNoNjQ7Cit9OworCisv KiBLZXkgdG8gb3VyIHBlci1pbmZlcmlvciBkYXRhLiAgKi8KK3N0YXRpYyBj b25zdCByZWdpc3RyeTxpbmZlcmlvcj46OmtleTxhaXhfdGhyZWFkX3Zhcmlh Ymxlcz4KKyAgYWl4X3RocmVhZF92YXJpYWJsZXNfaGFuZGxlOworCisvKiBG dW5jdGlvbiB0byBHZXQgYWl4X3RocmVhZF92YXJpYWJsZXMgZGF0YS4gICov CitzdGF0aWMgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzKgorZ2V0X2Fp eF90aHJlYWRfdmFyaWFibGVzX2RhdGEgKHN0cnVjdCBpbmZlcmlvciAqaW5m KQoreworICBpZiAoaW5mID09IE5VTEwpCisgICAgcmV0dXJuIE5VTEw7CiAK LXN0YXRpYyBwdGhkYl9zZXNzaW9uX3QgcGRfc2Vzc2lvbjsKKyAgc3RydWN0 IGFpeF90aHJlYWRfdmFyaWFibGVzKiBkYXRhOworCisgIGRhdGEgPSBhaXhf dGhyZWFkX3ZhcmlhYmxlc19oYW5kbGUuZ2V0IChpbmYpOworICBpZiAoZGF0 YSA9PSBOVUxMKQorICAgIGRhdGEgPSBhaXhfdGhyZWFkX3ZhcmlhYmxlc19o YW5kbGUuZW1wbGFjZSAoaW5mKTsKKworICByZXR1cm4gZGF0YTsKK30KKwor LyogSGVscGVyIHRvIGdldCBkYXRhIGZvciBwdGlkIGluIGEgZnVuY3Rpb24u ICAqLworCitzdGF0aWMgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzKgor Z2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcHRpZCAocHRpZF90IHB0aWQp Cit7CisgIGluZmVyaW9yICppbmYgPSBmaW5kX2luZmVyaW9yX3B0aWQgKGN1 cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgpLAorCQkJCQlw dGlkKTsKKyAgcmV0dXJuIGdldF9haXhfdGhyZWFkX3ZhcmlhYmxlc19kYXRh IChpbmYpOworfQorCisvKiBIZWxwZXIgdG8gZ2V0IGRhdGEgZm9yIHBpZCBp biBhIGZ1bmN0aW9uLiAgKi8KKworc3RhdGljIHN0cnVjdCBhaXhfdGhyZWFk X3ZhcmlhYmxlcyoKK2dldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3BpZCAo cGlkX3QgcGlkKQoreworICBpbmZlcmlvciAqaW5mID0gZmluZF9pbmZlcmlv cl9waWQgKGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBp ZCk7CisgIHJldHVybiBnZXRfYWl4X3RocmVhZF92YXJpYWJsZXNfZGF0YSAo aW5mKTsKK30KIAogLyogUmV0dXJuIGEgcHJpbnRhYmxlIHJlcHJlc2VudGF0 aW9uIG9mIHB0aGRlYnVnIGZ1bmN0aW9uIHJldHVybgogICAgU1RBVFVTLiAg Ki8KQEAgLTMxOCw3ICszNTMsNyBAQCBwaWRfdG9fcHJjIChwdGlkX3QgKnB0 aWRwKQogICBwdGlkX3QgcHRpZDsKIAogICBwdGlkID0gKnB0aWRwOwotICBp ZiAoUERfVElEIChwdGlkKSkKKyAgaWYgKHB0aWQudGlkICgpICE9IDApCiAg ICAgKnB0aWRwID0gcHRpZF90IChwdGlkLnBpZCAoKSk7CiB9CiAKQEAgLTM4 OSw2ICs0MjQsOSBAQCBwZGNfcmVhZF9yZWdzIChwdGhkYl91c2VyX3QgdXNl cl9jdXJyZW50X3BpZCwKICAgZG91YmxlIGZwcnNbcHBjX251bV9mcHJzXTsK ICAgc3RydWN0IHB0eHNwcnMgc3ByczY0OwogICBzdHJ1Y3QgcHRzcHJzIHNw cnMzMjsKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOwor ICAKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3BpZCAo dXNlcl9jdXJyZW50X3BpZCk7CiAgIAogICBpZiAoZGVidWdfYWl4X3RocmVh ZCkKICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLCAicGRjX3JlYWRfcmVn cyB0aWQ9JWQgZmxhZ3M9JXNcbiIsCkBAIC0zOTcsNyArNDM1LDcgQEAgcGRj X3JlYWRfcmVncyAocHRoZGJfdXNlcl90IHVzZXJfY3VycmVudF9waWQsCiAg IC8qIEdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLwogICBpZiAoZmxh Z3MgJiBQVEhEQl9GTEFHX0dQUlMpCiAgICAgewotICAgICAgaWYgKGFyY2g2 NCkKKyAgICAgIGlmIChkYXRhLT5hcmNoNjQpCiAJewogCSAgaWYgKCFwdHJh Y2U2NGFpeCAoUFRUX1JFQURfR1BSUywgdGlkLCAKIAkJCSAgICAodW5zaWdu ZWQgbG9uZykgZ3ByczY0LCAwLCBOVUxMKSkKQEAgLTQyMyw3ICs0NjEsNyBA QCBwZGNfcmVhZF9yZWdzIChwdGhkYl91c2VyX3QgdXNlcl9jdXJyZW50X3Bp ZCwKICAgLyogU3BlY2lhbC1wdXJwb3NlIHJlZ2lzdGVycy4gICovCiAgIGlm IChmbGFncyAmIFBUSERCX0ZMQUdfU1BSUykKICAgICB7Ci0gICAgICBpZiAo YXJjaDY0KQorICAgICAgaWYgKGRhdGEtPmFyY2g2NCkKIAl7CiAJICBpZiAo IXB0cmFjZTY0YWl4IChQVFRfUkVBRF9TUFJTLCB0aWQsIAogCQkJICAgICh1 bnNpZ25lZCBsb25nKSAmc3ByczY0LCAwLCBOVUxMKSkKQEAgLTQ1Niw2ICs0 OTQsMTAgQEAgcGRjX3dyaXRlX3JlZ3MgKHB0aGRiX3VzZXJfdCB1c2VyX2N1 cnJlbnRfcGlkLAogICAgICB0aGlzIGlzIG5lZWRlZCwgSSBoYXZlIGltcGxl bWVudGVkIHdoYXQgSSB0aGluayBpdCBzaG91bGQgZG8sCiAgICAgIGhvd2V2 ZXIgdGhpcyBjb2RlIGlzIHVudGVzdGVkLiAgKi8KIAorICBzdHJ1Y3QgYWl4 X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7CisgIAorICBkYXRhID0gZ2V0X3Ro cmVhZF9kYXRhX2hlbHBlcl9mb3JfcGlkICh1c2VyX2N1cnJlbnRfcGlkKTsK KwogICBpZiAoZGVidWdfYWl4X3RocmVhZCkKICAgICBnZGJfcHJpbnRmIChn ZGJfc3RkbG9nLCAicGRjX3dyaXRlX3JlZ3MgdGlkPSVkIGZsYWdzPSVzXG4i LAogCQkoaW50KSB0aWQsIGhleF9zdHJpbmcgKGZsYWdzKSk7CkBAIC00NjMs NyArNTA1LDcgQEAgcGRjX3dyaXRlX3JlZ3MgKHB0aGRiX3VzZXJfdCB1c2Vy X2N1cnJlbnRfcGlkLAogICAvKiBHZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJz LiAgKi8KICAgaWYgKGZsYWdzICYgUFRIREJfRkxBR19HUFJTKQogICAgIHsK LSAgICAgIGlmIChhcmNoNjQpCisgICAgICBpZiAoZGF0YS0+YXJjaDY0KQog CXB0cmFjZTY0YWl4IChQVFRfV1JJVEVfR1BSUywgdGlkLCAKIAkJICAgICAo dW5zaWduZWQgbG9uZykgY29udGV4dC0+Z3ByLCAwLCBOVUxMKTsKICAgICAg IGVsc2UKQEAgLTQ3OSw3ICs1MjEsNyBAQCBwZGNfd3JpdGVfcmVncyAocHRo ZGJfdXNlcl90IHVzZXJfY3VycmVudF9waWQsCiAgIC8qIFNwZWNpYWwtcHVy cG9zZSByZWdpc3RlcnMuICAqLwogICBpZiAoZmxhZ3MgJiBQVEhEQl9GTEFH X1NQUlMpCiAgICAgewotICAgICAgaWYgKGFyY2g2NCkKKyAgICAgIGlmIChk YXRhLT5hcmNoNjQpCiAJewogCSAgcHRyYWNlNjRhaXggKFBUVF9XUklURV9T UFJTLCB0aWQsIAogCQkgICAgICAgKHVuc2lnbmVkIGxvbmcpICZjb250ZXh0 LT5tc3IsIDAsIE5VTEwpOwpAQCAtNDk5LDcgKzU0MSw5IEBAIHBkY19yZWFk X2RhdGEgKHB0aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRfcGlkLCB2b2lkICpi dWYsCiAJICAgICAgIHB0aGRiX2FkZHJfdCBhZGRyLCBzaXplX3QgbGVuKQog ewogICBpbnQgc3RhdHVzLCByZXQ7Ci0KKyAgaW5mZXJpb3IgKmluZiA9IGZp bmRfaW5mZXJpb3JfcGlkIChjdXJyZW50X2luZmVyaW9yICgpLT5wcm9jZXNz X3RhcmdldCAoKSwgCisJCQkJICAgICB1c2VyX2N1cnJlbnRfcGlkKTsKKyAg CiAgIGlmIChkZWJ1Z19haXhfdGhyZWFkKQogICAgIGdkYl9wcmludGYgKGdk Yl9zdGRsb2csCiAJCSJwZGNfcmVhZF9kYXRhICh1c2VyX2N1cnJlbnRfcGlk ID0gJWxkLCBidWYgPSAweCVseCwgYWRkciA9ICVzLCBsZW4gPSAlbGQpXG4i LApAQCAtNTA4LDE0ICs1NTIsMTcgQEAgcGRjX3JlYWRfZGF0YSAocHRoZGJf dXNlcl90IHVzZXJfY3VycmVudF9waWQsIHZvaWQgKmJ1ZiwKICAgLyogVGhp cyBpcyBuZWVkZWQgdG8gZWxpbWluYXRlIHRoZSBkZXBlbmRlbmN5IG9mIGN1 cnJlbnQgdGhyZWFkCiAgICAgIHdoaWNoIGlzIG51bGwgc28gdGhhdCB0aHJl YWQgcmVhZHMgdGhlIGNvcnJlY3QgdGFyZ2V0IG1lbW9yeS4gICovCiAgIHsK LSAgICBzY29wZWRfcmVzdG9yZV9jdXJyZW50X3RocmVhZCByZXN0b3JlX2N1 cnJlbnRfdGhyZWFkOworICAgIHNjb3BlZF9yZXN0b3JlIHNhdmVfaW5mZXJp b3JfcHRpZCA9IG1ha2Vfc2NvcGVkX3Jlc3RvcmUgKCZpbmZlcmlvcl9wdGlk KTsKICAgICAvKiBCZWZvcmUgdGhlIGZpcnN0IGluZmVyaW9yIGlzIGFkZGVk LCB3ZSBwYXNzIGluZmVyaW9yX3B0aWQucGlkICgpCiAgICAgICAgZnJvbSBw ZF9lbmFibGUgKCkgd2hpY2ggaXMgMC4gIFRoZXJlIGlzIG5vIG5lZWQgdG8g c3dpdGNoIHRocmVhZHMKICAgICAgICBkdXJpbmcgZmlyc3QgaW5pdGlhbGlz YXRpb24uICBJbiB0aGUgcmVzdCBvZiB0aGUgY2FsbGJhY2tzIHRoZQogICAg ICAgIGN1cnJlbnQgdGhyZWFkIG5lZWRzIHRvIGJlIGNvcnJlY3QuICAqLwot ICAgIGlmICh1c2VyX2N1cnJlbnRfcGlkICE9IDApCi0gICAgICBzd2l0Y2hf dG9fdGhyZWFkIChjdXJyZW50X2luZmVyaW9yICgpLT5wcm9jZXNzX3Rhcmdl dCAoKSwKLQkJCXB0aWRfdCAodXNlcl9jdXJyZW50X3BpZCkpOworICAgIGlu ZmVyaW9yX3B0aWQgPSBwdGlkX3QgKHVzZXJfY3VycmVudF9waWQpOworICAg IHNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfaW5mZXJpb3IgcmVzdG9yZV9pbmZl cmlvcjsKKyAgICBzZXRfY3VycmVudF9pbmZlcmlvciAoaW5mKTsKKworICAg IHNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfcHJvZ3JhbV9zcGFjZSByZXN0b3Jl X2N1cnJlbnRfcHJvZ3NwYWNlOworICAgIHNldF9jdXJyZW50X3Byb2dyYW1f c3BhY2UgKGluZi0+cHNwYWNlKTsKICAgICBzdGF0dXMgPSB0YXJnZXRfcmVh ZF9tZW1vcnkgKGFkZHIsIChnZGJfYnl0ZSAqKSBidWYsIGxlbik7CiAgIH0K ICAgcmV0ID0gc3RhdHVzID09IDAgPyBQRENfU1VDQ0VTUyA6IFBEQ19GQUlM VVJFOwpAQCAtNTMzLDEzICs1ODAsMjUgQEAgcGRjX3dyaXRlX2RhdGEgKHB0 aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRfcGlkLCB2b2lkICpidWYsCiAJCXB0 aGRiX2FkZHJfdCBhZGRyLCBzaXplX3QgbGVuKQogewogICBpbnQgc3RhdHVz LCByZXQ7CisgIGluZmVyaW9yICppbmYgPSBmaW5kX2luZmVyaW9yX3BpZCAo Y3VycmVudF9pbmZlcmlvciAoKS0+cHJvY2Vzc190YXJnZXQgKCksIAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY3VycmVu dF9waWQpOwogCiAgIGlmIChkZWJ1Z19haXhfdGhyZWFkKQogICAgIGdkYl9w cmludGYgKGdkYl9zdGRsb2csCiAJCSJwZGNfd3JpdGVfZGF0YSAodXNlcl9j dXJyZW50X3BpZCA9ICVsZCwgYnVmID0gMHglbHgsIGFkZHIgPSAlcywgbGVu ID0gJWxkKVxuIiwKIAkJdXNlcl9jdXJyZW50X3BpZCwgKGxvbmcpIGJ1Ziwg aGV4X3N0cmluZyAoYWRkciksIGxlbik7CiAKLSAgc3RhdHVzID0gdGFyZ2V0 X3dyaXRlX21lbW9yeSAoYWRkciwgKGdkYl9ieXRlICopIGJ1ZiwgbGVuKTsK KyAgeworICAgIHNjb3BlZF9yZXN0b3JlIHNhdmVfaW5mZXJpb3JfcHRpZCA9 IG1ha2Vfc2NvcGVkX3Jlc3RvcmUgKCZpbmZlcmlvcl9wdGlkKTsKKyAgICBp bmZlcmlvcl9wdGlkID0gcHRpZF90ICh1c2VyX2N1cnJlbnRfcGlkKTsKKyAg ICBzY29wZWRfcmVzdG9yZV9jdXJyZW50X2luZmVyaW9yIHJlc3RvcmVfaW5m ZXJpb3I7CisgICAgc2V0X2N1cnJlbnRfaW5mZXJpb3IgKGluZik7CisKKyAg ICBzY29wZWRfcmVzdG9yZV9jdXJyZW50X3Byb2dyYW1fc3BhY2UgcmVzdG9y ZV9jdXJyZW50X3Byb2dzcGFjZTsKKyAgICBzZXRfY3VycmVudF9wcm9ncmFt X3NwYWNlIChpbmYtPnBzcGFjZSk7CisgICAgc3RhdHVzID0gdGFyZ2V0X3dy aXRlX21lbW9yeSAoYWRkciwgKGdkYl9ieXRlICopIGJ1ZiwgbGVuKTsKKyAg fQorCiAgIHJldCA9IHN0YXR1cyA9PSAwID8gUERDX1NVQ0NFU1MgOiBQRENf RkFJTFVSRTsKIAogICBpZiAoZGVidWdfYWl4X3RocmVhZCkKQEAgLTYzOSwz OSArNjk4LDYgQEAgcGNtcCAoY29uc3Qgdm9pZCAqcDF2LCBjb25zdCB2b2lk ICpwMnYpCiAgIHJldHVybiBwMS0+cHRoaWQgPCBwMi0+cHRoaWQgPyAtMSA6 IHAxLT5wdGhpZCA+IHAyLT5wdGhpZDsKIH0KIAotLyogaXRlcmF0ZV9vdmVy X3RocmVhZHMoKSBjYWxsYmFjayBmb3IgY291bnRpbmcgR0RCIHRocmVhZHMu Ci0KLSAgIERvIG5vdCBjb3VudCB0aGUgbWFpbiB0aHJlYWQgKHdob3NlIHRp ZCBpcyB6ZXJvKS4gIFRoaXMgbWF0Y2hlcwotICAgdGhlIGxpc3Qgb2YgdGhy ZWFkcyBwcm92aWRlZCBieSB0aGUgcHRocmVhZGRlYnVnIGxpYnJhcnksIHdo aWNoCi0gICBkb2VzIG5vdCBpbmNsdWRlIHRoYXQgbWFpbiB0aHJlYWQgZWl0 aGVyLCBhbmQgdGh1cyBhbGxvd3MgdXMKLSAgIHRvIGNvbXBhcmUgdGhlIHR3 byBsaXN0cy4gICovCi0KLXN0YXRpYyBpbnQKLWdpdGVyX2NvdW50IChzdHJ1 Y3QgdGhyZWFkX2luZm8gKnRocmVhZCwgdm9pZCAqY291bnRwKQotewotICBp ZiAoUERfVElEICh0aHJlYWQtPnB0aWQpKQotICAgICgqKGludCAqKSBjb3Vu dHApKys7Ci0gIHJldHVybiAwOwotfQotCi0vKiBpdGVyYXRlX292ZXJfdGhy ZWFkcygpIGNhbGxiYWNrIGZvciBhY2N1bXVsYXRpbmcgR0RCIHRocmVhZCBw aWRzLgotCi0gICBEbyBub3QgaW5jbHVkZSB0aGUgbWFpbiB0aHJlYWQgKHdo b3NlIHRpZCBpcyB6ZXJvKS4gIFRoaXMgbWF0Y2hlcwotICAgdGhlIGxpc3Qg b2YgdGhyZWFkcyBwcm92aWRlZCBieSB0aGUgcHRocmVhZGRlYnVnIGxpYnJh cnksIHdoaWNoCi0gICBkb2VzIG5vdCBpbmNsdWRlIHRoYXQgbWFpbiB0aHJl YWQgZWl0aGVyLCBhbmQgdGh1cyBhbGxvd3MgdXMKLSAgIHRvIGNvbXBhcmUg dGhlIHR3byBsaXN0cy4gICovCi0KLXN0YXRpYyBpbnQKLWdpdGVyX2FjY3Vt IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCwgdm9pZCAqYnVmcCkKLXsK LSAgaWYgKFBEX1RJRCAodGhyZWFkLT5wdGlkKSkKLSAgICB7Ci0gICAgICAq KihzdHJ1Y3QgdGhyZWFkX2luZm8gKioqKSBidWZwID0gdGhyZWFkOwotICAg ICAgKCooc3RydWN0IHRocmVhZF9pbmZvICoqKikgYnVmcCkrKzsKLSAgICB9 Ci0gIHJldHVybiAwOwotfQotCiAvKiBwdGlkIGNvbXBhcmlzb24gZnVuY3Rp b24gKi8KIAogc3RhdGljIGludApAQCAtNzE5LDcgKzc0NSwxMCBAQCBnZXRf c2lnbmFsZWRfdGhyZWFkIChpbnQgcGlkKQogCQkgICAgc2l6ZW9mICh0aHJp bmYpLCAma3RpZCwgMSkgIT0gMSkKIAlicmVhazsKIAotICAgICAgaWYgKHRo cmluZi50aV9jdXJzaWcgPT0gU0lHVFJBUCkKKyAgICAgIC8qIFdlIGFsc28g bmVlZCB0byBrZWVwIGluIG1pbmQgVHJhcCBhbmQgaW50ZXJydXB0IG9yIGFu eQorICAgICAgICAgc2lnbmFsIHRoYXQgbmVlZHMgdG8gYmUgaGFuZGxlZCBp biBwZF91cGRhdGUgKCkuICAqLworCisgICAgICBpZiAodGhyaW5mLnRpX2N1 cnNpZykKIAlyZXR1cm4gdGhyaW5mLnRpX3RpZDsKICAgICB9CiAKQEAgLTc0 MSw3ICs3NzAsNyBAQCBnZXRfc2lnbmFsZWRfdGhyZWFkIChpbnQgcGlkKQog ICAgICAgIGhhdmUgZGlmZmljdWx0eSB3aXRoIGNlcnRhaW4gY2FsbCBwYXR0 ZXJucyAqLwogCiBzdGF0aWMgdm9pZAotc3luY190aHJlYWRsaXN0cyAoaW50 IHBpZCkKK3N5bmNfdGhyZWFkbGlzdHMgKHBpZF90IHBpZCkgCiB7CiAgIGlu dCBjbWQsIHN0YXR1czsKICAgaW50IHBjb3VudCwgcHNpemUsIHBpLCBnY291 bnQsIGdpOwpAQCAtNzUwLDYgKzc3OSwxMSBAQCBzeW5jX3RocmVhZGxpc3Rz IChpbnQgcGlkKQogICBwdGhkYl9wdGhyZWFkX3QgcGR0aWQ7CiAgIHB0aHJl YWRfdCBwdGhpZDsKICAgcHRoZGJfdGlkX3QgdGlkOworICBwcm9jZXNzX3N0 cmF0dW1fdGFyZ2V0ICpwcm9jX3RhcmdldAorICAgICAgICAgICAgPSBjdXJy ZW50X2luZmVyaW9yICgpLT5wcm9jZXNzX3RhcmdldCAoKTsKKyAgdGhyZWFk X2luZm8gICp0cDsKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpk YXRhOworICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcGlk IChwaWQpOwogCiAgIC8qIEFjY3VtdWxhdGUgYW4gYXJyYXkgb2YgbGlicHRo ZGVidWcgdGhyZWFkcyBzb3J0ZWQgYnkgcHRocmVhZCBpZC4gICovCiAKQEAg LTc1OSwxMSArNzkzLDExIEBAIHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQp CiAKICAgZm9yIChjbWQgPSBQVEhEQl9MSVNUX0ZJUlNUOzsgY21kID0gUFRI REJfTElTVF9ORVhUKQogICAgIHsKLSAgICAgIHN0YXR1cyA9IHB0aGRiX3B0 aHJlYWQgKHBkX3Nlc3Npb24sICZwZHRpZCwgY21kKTsKKyAgICAgIHN0YXR1 cyA9IHB0aGRiX3B0aHJlYWQgKGRhdGEtPnBkX3Nlc3Npb24sICZwZHRpZCwg Y21kKTsKICAgICAgIGlmIChzdGF0dXMgIT0gUFRIREJfU1VDQ0VTUyB8fCBw ZHRpZCA9PSBQVEhEQl9JTlZBTElEX1BUSFJFQUQpCiAJYnJlYWs7CiAKLSAg ICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfcHRpZCAocGRfc2Vzc2lvbiwg cGR0aWQsICZwdGhpZCk7CisgICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFk X3B0aWQgKGRhdGEtPnBkX3Nlc3Npb24sIHBkdGlkLCAmcHRoaWQpOwogICAg ICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTIHx8IHB0aGlkID09IFBU SERCX0lOVkFMSURfUFRJRCkKIAljb250aW51ZTsKIApAQCAtNzgwLDcgKzgx NCw3IEBAIHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAKICAgZm9yIChw aSA9IDA7IHBpIDwgcGNvdW50OyBwaSsrKQogICAgIHsKLSAgICAgIHN0YXR1 cyA9IHB0aGRiX3B0aHJlYWRfdGlkIChwZF9zZXNzaW9uLCBwYnVmW3BpXS5w ZHRpZCwgJnRpZCk7CisgICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3Rp ZCAoZGF0YS0+cGRfc2Vzc2lvbiwgcGJ1ZltwaV0ucGR0aWQsICZ0aWQpOwog ICAgICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTKQogCXRpZCA9IFBU SERCX0lOVkFMSURfVElEOwogICAgICAgcGJ1ZltwaV0udGlkID0gdGlkOwpA QCAtNzkwLDEzICs4MjQsMjYgQEAgc3luY190aHJlYWRsaXN0cyAoaW50IHBp ZCkKIAogICAvKiBBY2N1bXVsYXRlIGFuIGFycmF5IG9mIEdEQiB0aHJlYWRz IHNvcnRlZCBieSBwaWQuICAqLwogCisgIC8qIGdjb3VudCBpcyBHREIgdGhy ZWFkIGNvdW50IGFuZCBwY291bnQgaXMgcHRocmVhZGxpYiB0aHJlYWQgY291 bnQuICAqLworCiAgIGdjb3VudCA9IDA7Ci0gIGl0ZXJhdGVfb3Zlcl90aHJl YWRzIChnaXRlcl9jb3VudCwgJmdjb3VudCk7CisgIGZvciAodGhyZWFkX2lu Zm8gKnRwIDogYWxsX3RocmVhZHMgKHByb2NfdGFyZ2V0LCBwdGlkX3QgKHBp ZCkpKQorICAgIGdjb3VudCsrOwogICBnID0gZ2J1ZiA9IFhORVdWRUMgKHN0 cnVjdCB0aHJlYWRfaW5mbyAqLCBnY291bnQpOwotICBpdGVyYXRlX292ZXJf dGhyZWFkcyAoZ2l0ZXJfYWNjdW0sICZnKTsKKyAgZm9yICh0aHJlYWRfaW5m byAqdHAgOiBhbGxfdGhyZWFkcyAocHJvY190YXJnZXQsIHB0aWRfdCAocGlk KSkpCisgICAgKmcrKyA9IHRwOwogICBxc29ydCAoZ2J1ZiwgZ2NvdW50LCBz aXplb2YgKmdidWYsIGdjbXApOwogCisgIHRwID0gZmluZF90aHJlYWRfcHRp ZCAocHJvY190YXJnZXQsIHB0aWRfdCAocGlkKSk7CisKKyAgLyogSWYgdGhl IHB0aHJlYWRsaWJyYXJ5IGlzIG5vdCByZWFkeSB0byBkZWJ1ZyAKKyAgICAg dGhlbiB0aGlzIGlzIGp1c3QgYSBtYWluIHByb2Nlc3Mgd2hpY2ggbmVlZHMg CisgICAgIGEgcHJpdiB0byBiZSBzZXQuICBUaGUgaWYgY29uZGl0aW9uIGJl bG93IGRvZXMgCisgICAgIHRoZSBzYW1lLiAgT3RoZXJ3aXNlIHdlIGdvIHRv IHRoZSBmb3IgbG9vcCB0byAKKyAgICAgc3luYyB0aGUgcHRocmVhZCBhbmQg R0RCIHRocmVhZCBsaXN0cy4gICovCisKICAgLyogQXBwbHkgZGlmZmVyZW5j ZXMgYmV0d2VlbiB0aGUgdHdvIGFycmF5cyB0byBHREIncyB0aHJlYWQgbGlz dC4gICovCisKICAgZm9yIChwaSA9IGdpID0gMDsgcGkgPCBwY291bnQgfHwg Z2kgPCBnY291bnQ7KQogICAgIHsKICAgICAgIGlmIChwaSA9PSBwY291bnQp CkBAIC04MTAsOCArODU3LDYgQEAgc3luY190aHJlYWRsaXN0cyAoaW50IHBp ZCkKIAkgIHByaXYtPnBkdGlkID0gcGJ1ZltwaV0ucGR0aWQ7CiAJICBwcml2 LT50aWQgPSBwYnVmW3BpXS50aWQ7CiAKLQkgIHByb2Nlc3Nfc3RyYXR1bV90 YXJnZXQgKnByb2NfdGFyZ2V0Ci0JICAgID0gY3VycmVudF9pbmZlcmlvciAo KS0+cHJvY2Vzc190YXJnZXQgKCk7CiAJICB0aHJlYWQgPSBhZGRfdGhyZWFk X3dpdGhfaW5mbyAocHJvY190YXJnZXQsCiAJCQkJCSBwdGlkX3QgKHBpZCwg MCwgcGJ1ZltwaV0ucHRoaWQpLAogCQkJCQkgcHJpdik7CkBAIC04NDEsMTMg Kzg4NiwyNyBAQCBzeW5jX3RocmVhZGxpc3RzIChpbnQgcGlkKQogCSAgICB9 CiAJICBlbHNlIGlmIChjbXBfcmVzdWx0ID4gMCkKIAkgICAgewotCSAgICAg IGRlbGV0ZV90aHJlYWQgKGdidWZbZ2ldKTsKLQkgICAgICBnaSsrOworCSAg ICAgIC8qIFRoaXMgaXMgdG8gbWFrZSB0aGUgbWFpbiBwcm9jZXNzIHRocmVh ZCBub3cgbG9vaworICAgICAgICAgICAgICAgICBsaWtlIGEgdGhyZWFkLiAg Ki8KKworCSAgICAgIGlmIChncHRpZC5pc19waWQgKCkpCisJCXsKKwkJICB0 aHJlYWRfY2hhbmdlX3B0aWQgKHByb2NfdGFyZ2V0LCBncHRpZCwgcHB0aWQp OworCQkgIGFpeF90aHJlYWRfaW5mbyAqcHJpdiA9IG5ldyBhaXhfdGhyZWFk X2luZm87CisgICAgICAgICAgICAgICAgICBwcml2LT5wZHRpZCA9IHBidWZb cGldLnBkdGlkOworICAgICAgICAgICAgICAgICAgcHJpdi0+dGlkID0gcGJ1 ZltwaV0udGlkOworCQkgIHRwLT5wcml2LnJlc2V0IChwcml2KTsKKwkJICBn aSsrOworCQkgIHBpKys7CisJCX0KKwkgICAgICBlbHNlCisJCXsKKwkJICBk ZWxldGVfdGhyZWFkIChnYnVmW2dpXSk7CisJCSAgZ2krKzsKKwkJfQogCSAg ICB9CiAJICBlbHNlCiAJICAgIHsKLQkgICAgICBwcm9jZXNzX3N0cmF0dW1f dGFyZ2V0ICpwcm9jX3RhcmdldAotCQk9IGN1cnJlbnRfaW5mZXJpb3IgKCkt PnByb2Nlc3NfdGFyZ2V0ICgpOwogCSAgICAgIHRocmVhZCA9IGFkZF90aHJl YWQgKHByb2NfdGFyZ2V0LCBwcHRpZCk7CiAKIAkgICAgICBhaXhfdGhyZWFk X2luZm8gKnByaXYgPSBuZXcgYWl4X3RocmVhZF9pbmZvOwpAQCAtODgxLDE3 ICs5NDAsMjAgQEAgaXRlcl90aWQgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdGhy ZWFkLCB2b2lkICp0aWRwKQogICAgcmV0dXJuIGEgcGlkLW9ubHkgcHRpZCB3 aXRoIFBJRC4gICovCiAKIHN0YXRpYyBwdGlkX3QKLXBkX3VwZGF0ZSAoaW50 IHBpZCkKK3BkX3VwZGF0ZSAocGlkX3QgcGlkKQogewogICBpbnQgc3RhdHVz OwogICBwdGlkX3QgcHRpZDsKICAgcHRoZGJfdGlkX3QgdGlkOwogICBzdHJ1 Y3QgdGhyZWFkX2luZm8gKnRocmVhZCA9IE5VTEw7CisgIHN0cnVjdCBhaXhf dGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKworICBkYXRhID0gZ2V0X3RocmVh ZF9kYXRhX2hlbHBlcl9mb3JfcGlkIChwaWQpOwogCi0gIGlmICghcGRfYWN0 aXZlKQorICBpZiAoIWRhdGEtPnBkX2FjdGl2ZSkKICAgICByZXR1cm4gcHRp ZF90IChwaWQpOwogCi0gIHN0YXR1cyA9IHB0aGRiX3Nlc3Npb25fdXBkYXRl IChwZF9zZXNzaW9uKTsKKyAgc3RhdHVzID0gcHRoZGJfc2Vzc2lvbl91cGRh dGUgKGRhdGEtPnBkX3Nlc3Npb24pOwogICBpZiAoc3RhdHVzICE9IFBUSERC X1NVQ0NFU1MpCiAgICAgcmV0dXJuIHB0aWRfdCAocGlkKTsKIApAQCAtOTE1 LDM0ICs5NzcsMjMgQEAgcGRfdXBkYXRlIChpbnQgcGlkKQogICAgZm9yIHRo YXQgdGhyZWFkLiAgT3RoZXJ3aXNlLCByZXR1cm4gYSBwdGlkLW9ubHkgcHRp ZCB1c2luZyBQSUQuICAqLwogCiBzdGF0aWMgcHRpZF90Ci1wZF9hY3RpdmF0 ZSAoaW50IHBpZCkKK3BkX2FjdGl2YXRlIChwaWRfdCBwaWQpCiB7CiAgIGlu dCBzdGF0dXM7Ci0JCQotICBzdGF0dXMgPSBwdGhkYl9zZXNzaW9uX2luaXQg KHBpZCwgYXJjaDY0ID8gUEVNXzY0QklUIDogUEVNXzMyQklULAorICBzdHJ1 Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7CisgIGRhdGEgPSBnZXRf dGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9waWQgKHBpZCk7CisgIAorICBzdGF0 dXMgPSBwdGhkYl9zZXNzaW9uX2luaXQgKHBpZCwgZGF0YS0+YXJjaDY0ID8g UEVNXzY0QklUIDogUEVNXzMyQklULAogCQkJICAgICAgIFBUSERCX0ZMQUdf UkVHUywgJnBkX2NhbGxiYWNrcywgCi0JCQkgICAgICAgJnBkX3Nlc3Npb24p OworCQkJICAgICAgICZkYXRhLT5wZF9zZXNzaW9uKTsKICAgaWYgKHN0YXR1 cyAhPSBQVEhEQl9TVUNDRVNTKQogICAgIHsKICAgICAgIHJldHVybiBwdGlk X3QgKHBpZCk7CiAgICAgfQotICBwZF9hY3RpdmUgPSAxOworICBkYXRhLT5w ZF9hY3RpdmUgPSAxOwogICByZXR1cm4gcGRfdXBkYXRlIChwaWQpOwogfQog Ci0vKiBVbmRvIHRoZSBlZmZlY3RzIG9mIHBkX2FjdGl2YXRlKCkuICAqLwot Ci1zdGF0aWMgdm9pZAotcGRfZGVhY3RpdmF0ZSAodm9pZCkKLXsKLSAgaWYg KCFwZF9hY3RpdmUpCi0gICAgcmV0dXJuOwotICBwdGhkYl9zZXNzaW9uX2Rl c3Ryb3kgKHBkX3Nlc3Npb24pOwotICAKLSAgcGlkX3RvX3ByYyAoJmluZmVy aW9yX3B0aWQpOwotICBwZF9hY3RpdmUgPSAwOwotfQotCiAvKiBBbiBvYmpl Y3QgZmlsZSBoYXMganVzdCBiZWVuIGxvYWRlZC4gIENoZWNrIHdoZXRoZXIg dGhlIGN1cnJlbnQKICAgIGFwcGxpY2F0aW9uIGlzIHB0aHJlYWRlZCwgYW5k IGlmIHNvLCBwcmVwYXJlIGZvciB0aHJlYWQgZGVidWdnaW5nLiAgKi8KIApA QCAtOTUyLDEzICsxMDAzLDE5IEBAIHBkX2VuYWJsZSAodm9pZCkKICAgaW50 IHN0YXR1czsKICAgY2hhciAqc3R1Yl9uYW1lOwogICBzdHJ1Y3QgYm91bmRf bWluaW1hbF9zeW1ib2wgbXM7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3Zhcmlh YmxlcyAqZGF0YTsKKworICBpZiAoIWluZmVyaW9yX3B0aWQucGlkICgpKQor ICAgIHJldHVybjsKKyAgCisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFfaGVs cGVyX2Zvcl9wdGlkIChpbmZlcmlvcl9wdGlkKTsKIAogICAvKiBEb24ndCBp bml0aWFsaXplIHR3aWNlLiAgKi8KLSAgaWYgKHBkX2FibGUpCisgIGlmIChk YXRhLT5wZF9hYmxlKQogICAgIHJldHVybjsKIAogICAvKiBDaGVjayBhcHBs aWNhdGlvbiB3b3JkIHNpemUuICAqLwotICBhcmNoNjQgPSByZWdpc3Rlcl9z aXplICh0YXJnZXRfZ2RiYXJjaCAoKSwgMCkgPT0gODsKKyAgZGF0YS0+YXJj aDY0ID0gcmVnaXN0ZXJfc2l6ZSAodGFyZ2V0X2dkYmFyY2ggKCksIDApID09 IDg7CiAKICAgLyogQ2hlY2sgd2hldGhlciB0aGUgYXBwbGljYXRpb24gaXMg cHRocmVhZGVkLiAgKi8KICAgc3R1Yl9uYW1lID0gTlVMTDsKQEAgLTk3Miwx MyArMTAyOSwxMyBAQCBwZF9lbmFibGUgKHZvaWQpCiAgIG1zID0gbG9va3Vw X21pbmltYWxfc3ltYm9sIChzdHViX25hbWUsIE5VTEwsIE5VTEwpOwogICBp ZiAobXMubWluc3ltID09IE5VTEwpCiAgICAgcmV0dXJuOwotICBwZF9icmtf YWRkciA9IG1zLnZhbHVlX2FkZHJlc3MgKCk7Ci0gIGlmICghY3JlYXRlX3Ro cmVhZF9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgcGRf YnJrX2FkZHIpKQorICBkYXRhLT5wZF9icmtfYWRkciA9IG1zLnZhbHVlX2Fk ZHJlc3MgKCk7CisgIGlmICghY3JlYXRlX3RocmVhZF9ldmVudF9icmVha3Bv aW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgZGF0YS0+cGRfYnJrX2FkZHIpKQog ICAgIHJldHVybjsKIAogICAvKiBQcmVwYXJlIGZvciB0aHJlYWQgZGVidWdn aW5nLiAgKi8KICAgY3VycmVudF9pbmZlcmlvciAoKS0+cHVzaF90YXJnZXQg KCZhaXhfdGhyZWFkX29wcyk7Ci0gIHBkX2FibGUgPSAxOworICBkYXRhLT5w ZF9hYmxlID0gMTsgCiAKICAgLyogSWYgd2UncmUgZGVidWdnaW5nIGEgY29y ZSBmaWxlIG9yIGFuIGF0dGFjaGVkIGluZmVyaW9yLCB0aGUKICAgICAgcHRo cmVhZCBsaWJyYXJ5IG1heSBhbHJlYWR5IGhhdmUgYmVlbiBpbml0aWFsaXpl ZCwgc28gdHJ5IHRvCkBAIC05OTEsMjggKzEwNDgsMzEgQEAgcGRfZW5hYmxl ICh2b2lkKQogc3RhdGljIHZvaWQKIHBkX2Rpc2FibGUgKHZvaWQpCiB7Ci0g IGlmICghcGRfYWJsZSkKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVz ICpkYXRhOworICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3Jf cHRpZCAoaW5mZXJpb3JfcHRpZCk7CisKKyAgaWYgKCFkYXRhLT5wZF9hYmxl KQorICAgIHJldHVybjsKKyAgaWYgKCFkYXRhLT5wZF9hY3RpdmUpCiAgICAg cmV0dXJuOwotICBpZiAocGRfYWN0aXZlKQotICAgIHBkX2RlYWN0aXZhdGUg KCk7Ci0gIHBkX2FibGUgPSAwOworICBwdGhkYl9zZXNzaW9uX2Rlc3Ryb3kg KGRhdGEtPnBkX3Nlc3Npb24pOworIAorICBwaWRfdG9fcHJjICgmaW5mZXJp b3JfcHRpZCk7CisgIGRhdGEtPnBkX2FjdGl2ZSA9IDA7CisgIGRhdGEtPnBk X2FibGUgPSAwOwogICBjdXJyZW50X2luZmVyaW9yICgpLT51bnB1c2hfdGFy Z2V0ICgmYWl4X3RocmVhZF9vcHMpOwogfQogCiAvKiBuZXdfb2JqZmlsZSBv YnNlcnZlciBjYWxsYmFjay4KIAogICAgSWYgT0JKRklMRSBpcyBub24tbnVs bCwgY2hlY2sgd2hldGhlciBhIHRocmVhZGVkIGFwcGxpY2F0aW9uIGlzCi0g ICBiZWluZyBkZWJ1Z2dlZCwgYW5kIGlmIHNvLCBwcmVwYXJlIGZvciB0aHJl YWQgZGVidWdnaW5nLgotCi0gICBJZiBPQkpGSUxFIGlzIG51bGwsIHN0b3Ag ZGVidWdnaW5nIHRocmVhZHMuICAqLworICAgYmVpbmcgZGVidWdnZWQsIGFu ZCBpZiBzbywgcHJlcGFyZSBmb3IgdGhyZWFkIGRlYnVnZ2luZy4gICovCiAK IHN0YXRpYyB2b2lkCiBuZXdfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUpCiB7CiAgIGlmIChvYmpmaWxlKQogICAgIHBkX2VuYWJsZSAoKTsK LSAgZWxzZQotICAgIHBkX2Rpc2FibGUgKCk7CiB9CiAKIC8qIEF0dGFjaCB0 byBwcm9jZXNzIHNwZWNpZmllZCBieSBBUkdTLiAgKi8KQEAgLTEwNDIsOCAr MTEwMiwxMSBAQCBhaXhfdGhyZWFkX3RhcmdldDo6cmVzdW1lIChwdGlkX3Qg cHRpZCwgaW50IHN0ZXAsIGVudW0gZ2RiX3NpZ25hbCBzaWcpCiB7CiAgIHN0 cnVjdCB0aHJlYWRfaW5mbyAqdGhyZWFkOwogICBwdGhkYl90aWRfdCB0aWRb Ml07CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAg CisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlkIChw dGlkKTsKIAotICBpZiAoIVBEX1RJRCAocHRpZCkpCisgIGlmIChwdGlkLnRp ZCAoKSA9PSAwKQogICAgIHsKICAgICAgIHNjb3BlZF9yZXN0b3JlIHNhdmVf aW5mZXJpb3JfcHRpZCA9IG1ha2Vfc2NvcGVkX3Jlc3RvcmUgKCZpbmZlcmlv cl9wdGlkKTsKICAgICAgIApAQCAtMTA2NSw3ICsxMTI4LDcgQEAgYWl4X3Ro cmVhZF90YXJnZXQ6OnJlc3VtZSAocHRpZF90IHB0aWQsIGludCBzdGVwLCBl bnVtIGdkYl9zaWduYWwgc2lnKQogCSAgICAgICBwdGlkLmx3cCAoKSk7CiAg ICAgICB0aWRbMV0gPSAwOwogCi0gICAgICBpZiAoYXJjaDY0KQorICAgICAg aWYgKGRhdGEtPmFyY2g2NCkKIAlwdHJhY2U2NGFpeCAoUFRUX0NPTlRJTlVF LCB0aWRbMF0sIChsb25nIGxvbmcpIDEsCiAJCSAgICAgZ2RiX3NpZ25hbF90 b19ob3N0IChzaWcpLCAoUFRSQUNFX1RZUEVfQVJHNSkgdGlkKTsKICAgICAg IGVsc2UKQEAgLTEwODIsNiArMTE0NSw3IEBAIHB0aWRfdAogYWl4X3RocmVh ZF90YXJnZXQ6OndhaXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFyZ2V0X3dh aXRzdGF0dXMgKnN0YXR1cywKIAkJCSB0YXJnZXRfd2FpdF9mbGFncyBvcHRp b25zKQogeworICBzdHJ1Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7 CiAgIHsKICAgICBwaWRfdG9fcHJjICgmcHRpZCk7CiAKQEAgLTEwOTUsOCAr MTE1OSwxMCBAQCBhaXhfdGhyZWFkX3RhcmdldDo6d2FpdCAocHRpZF90IHB0 aWQsIHN0cnVjdCB0YXJnZXRfd2FpdHN0YXR1cyAqc3RhdHVzLAogICAgICBw aWQtb25seSBwdGlkcy4gICovCiAgIGdkYl9hc3NlcnQgKHB0aWQuaXNfcGlk ICgpKTsKIAorICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3Jf cHRpZCAocHRpZCk7CisKICAgLyogQ2hlY2sgd2hldGhlciBsaWJwdGhkZWJ1 ZyBtaWdodCBiZSByZWFkeSB0byBiZSBpbml0aWFsaXplZC4gICovCi0gIGlm ICghcGRfYWN0aXZlICYmIHN0YXR1cy0+a2luZCAoKSA9PSBUQVJHRVRfV0FJ VEtJTkRfU1RPUFBFRAorICBpZiAoIWRhdGEtPnBkX2FjdGl2ZSAmJiBzdGF0 dXMtPmtpbmQgKCkgPT0gVEFSR0VUX1dBSVRLSU5EX1NUT1BQRUQKICAgICAg ICYmIHN0YXR1cy0+c2lnICgpID09IEdEQl9TSUdOQUxfVFJBUCkKICAgICB7 CiAgICAgICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpwcm9jX3RhcmdldApA QCAtMTEwNSw3ICsxMTcxLDcgQEAgYWl4X3RocmVhZF90YXJnZXQ6OndhaXQg KHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0dXMgKnN0YXR1 cywKICAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gcmVnY2FjaGUt PmFyY2ggKCk7CiAKICAgICAgIGlmIChyZWdjYWNoZV9yZWFkX3BjIChyZWdj YWNoZSkKLQkgIC0gZ2RiYXJjaF9kZWNyX3BjX2FmdGVyX2JyZWFrIChnZGJh cmNoKSA9PSBwZF9icmtfYWRkcikKKwkgIC0gZ2RiYXJjaF9kZWNyX3BjX2Fm dGVyX2JyZWFrIChnZGJhcmNoKSA9PSBkYXRhLT5wZF9icmtfYWRkcikKIAly ZXR1cm4gcGRfYWN0aXZhdGUgKHB0aWQucGlkICgpKTsKICAgICB9CiAKQEAg LTEyMjksMTggKzEyOTUsMjAgQEAgZmV0Y2hfcmVnc191c2VyX3RocmVhZCAo c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJfcHRocmVhZF90IHBk dGlkKQogICBwcGNfZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVw PHBwY19nZGJhcmNoX3RkZXA+IChnZGJhcmNoKTsKICAgaW50IHN0YXR1cywg aTsKICAgcHRoZGJfY29udGV4dF90IGN0eDsKKyAgc3RydWN0IGFpeF90aHJl YWRfdmFyaWFibGVzICpkYXRhOworICBkYXRhID0gZ2V0X3RocmVhZF9kYXRh X2hlbHBlcl9mb3JfcHRpZCAoaW5mZXJpb3JfcHRpZCk7CiAKICAgaWYgKGRl YnVnX2FpeF90aHJlYWQpCiAgICAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywg CiAJCSJmZXRjaF9yZWdzX3VzZXJfdGhyZWFkICVseFxuIiwgKGxvbmcpIHBk dGlkKTsKLSAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9jb250ZXh0IChwZF9z ZXNzaW9uLCBwZHRpZCwgJmN0eCk7CisgIHN0YXR1cyA9IHB0aGRiX3B0aHJl YWRfY29udGV4dCAoZGF0YS0+cGRfc2Vzc2lvbiwgcGR0aWQsICZjdHgpOwog ICBpZiAoc3RhdHVzICE9IFBUSERCX1NVQ0NFU1MpCiAgICAgZXJyb3IgKF8o ImFpeC10aHJlYWQ6IGZldGNoX3JlZ2lzdGVyczogcHRoZGJfcHRocmVhZF9j b250ZXh0IHJldHVybmVkICVzIiksCiAJICAgcGRfc3RhdHVzMnN0ciAoc3Rh dHVzKSk7CiAKICAgLyogR2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycy4gICov CiAKLSAgaWYgKGFyY2g2NCkKKyAgaWYgKGRhdGEtPmFyY2g2NCkKICAgICBz dXBwbHlfZ3ByczY0IChyZWdjYWNoZSwgY3R4Lmdwcik7CiAgIGVsc2UKICAg ICBmb3IgKGkgPSAwOyBpIDwgcHBjX251bV9ncHJzOyBpKyspCkBAIC0xMjUz LDcgKzEzMjEsNyBAQCBmZXRjaF9yZWdzX3VzZXJfdGhyZWFkIChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLCBwdGhkYl9wdGhyZWFkX3QgcGR0aWQpCiAK ICAgLyogU3BlY2lhbCByZWdpc3RlcnMuICAqLwogCi0gIGlmIChhcmNoNjQp CisgIGlmIChkYXRhLT5hcmNoNjQpCiAgICAgc3VwcGx5X3NwcnM2NCAocmVn Y2FjaGUsIGN0eC5pYXIsIGN0eC5tc3IsIGN0eC5jciwgY3R4LmxyLCBjdHgu Y3RyLAogCQkJICAgICBjdHgueGVyLCBjdHguZnBzY3IpOwogICBlbHNlCkBA IC0xMjg4LDE4ICsxMzU2LDIxIEBAIGZldGNoX3JlZ3Nfa2VybmVsX3RocmVh ZCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vLAogICBz dHJ1Y3QgcHR4c3BycyBzcHJzNjQ7CiAgIHN0cnVjdCBwdHNwcnMgc3ByczMy OwogICBpbnQgaTsKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpk YXRhOworICAKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9y X3B0aWQgKHJlZ2NhY2hlLT5wdGlkICgpKTsKIAogICBpZiAoZGVidWdfYWl4 X3RocmVhZCkKICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLAogCQkiZmV0 Y2hfcmVnc19rZXJuZWxfdGhyZWFkIHRpZD0lbHggcmVnbm89JWQgYXJjaDY0 PSVkXG4iLAotCQkobG9uZykgdGlkLCByZWdubywgYXJjaDY0KTsKKwkJKGxv bmcpIHRpZCwgcmVnbm8sIGRhdGEtPmFyY2g2NCk7CiAKICAgLyogR2VuZXJh bC1wdXJwb3NlIHJlZ2lzdGVycy4gICovCiAgIGlmIChyZWdubyA9PSAtMQog ICAgICAgfHwgKHRkZXAtPnBwY19ncDBfcmVnbnVtIDw9IHJlZ25vCiAJICAm JiByZWdubyA8IHRkZXAtPnBwY19ncDBfcmVnbnVtICsgcHBjX251bV9ncHJz KSkKICAgICB7Ci0gICAgICBpZiAoYXJjaDY0KQorICAgICAgaWYgKGRhdGEt PmFyY2g2NCkKIAl7CiAJICBpZiAoIXB0cmFjZTY0YWl4IChQVFRfUkVBRF9H UFJTLCB0aWQsIAogCQkJICAgICh1bnNpZ25lZCBsb25nKSBncHJzNjQsIDAs IE5VTEwpKQpAQCAtMTMzMSw3ICsxNDAyLDcgQEAgZmV0Y2hfcmVnc19rZXJu ZWxfdGhyZWFkIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVn bm8sCiAKICAgaWYgKHJlZ25vID09IC0xIHx8IHNwZWNpYWxfcmVnaXN0ZXJf cCAoZ2RiYXJjaCwgcmVnbm8pKQogICAgIHsKLSAgICAgIGlmIChhcmNoNjQp CisgICAgICBpZiAoZGF0YS0+YXJjaDY0KQogCXsKIAkgIGlmICghcHRyYWNl NjRhaXggKFBUVF9SRUFEX1NQUlMsIHRpZCwgCiAJCQkgICAgKHVuc2lnbmVk IGxvbmcpICZzcHJzNjQsIDAsIE5VTEwpKQpAQCAtMTM2MiwxMiArMTQzMywx NiBAQCBhaXhfdGhyZWFkX3RhcmdldDo6ZmV0Y2hfcmVnaXN0ZXJzIChzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8pCiB7CiAgIHN0cnVj dCB0aHJlYWRfaW5mbyAqdGhyZWFkOwogICBwdGhkYl90aWRfdCB0aWQ7Cisg IHRocmVhZCA9IGZpbmRfdGhyZWFkX3B0aWQgKGN1cnJlbnRfaW5mZXJpb3Ig KCktPnByb2Nlc3NfdGFyZ2V0ICgpLCBwdGlkX3QgKHJlZ2NhY2hlLT5wdGlk ICgpLnBpZCAoKSwgMCwgcmVnY2FjaGUtPnB0aWQgKCkudGlkICgpKSk7CiAK LSAgaWYgKCFQRF9USUQgKHJlZ2NhY2hlLT5wdGlkICgpKSkKKyAgLyogSWYg YSBuZXcgaW5mZXJpb3IgaXMgYm9ybiwgdGhlbiBpdHMgcHRocmVhZCBkZWJ1 ZyBsaWJyYXJ5IGlzIHlldCB0bworICAgICBpbml0aWFsaXNlZCBhbmQgaGVu Y2UgaGFzIG5vIHByaXZhdGUgZGF0YS4gU28gdGhlIGJlbG93IGlmIGNvbmRp dGlvbgorICAgICBleGlzdHMuICAqLworCisgIGlmIChyZWdjYWNoZS0+cHRp ZCAoKS50aWQgKCkgPT0gMCkKICAgICBiZW5lYXRoICgpLT5mZXRjaF9yZWdp c3RlcnMgKHJlZ2NhY2hlLCByZWdubyk7CiAgIGVsc2UKICAgICB7Ci0gICAg ICB0aHJlYWQgPSBmaW5kX3RocmVhZF9wdGlkIChjdXJyZW50X2luZmVyaW9y ICgpLCByZWdjYWNoZS0+cHRpZCAoKSk7CiAgICAgICBhaXhfdGhyZWFkX2lu Zm8gKnByaXYgPSBnZXRfYWl4X3RocmVhZF9pbmZvICh0aHJlYWQpOwogICAg ICAgdGlkID0gcHJpdi0+dGlkOwogCkBAIC0xNTExLDYgKzE1ODYsOCBAQCBz dG9yZV9yZWdzX3VzZXJfdGhyZWFkIChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCBwdGhkYl9wdGhyZWFkX3QgcGR0aWQpCiAgIHB0aGRiX2Nv bnRleHRfdCBjdHg7CiAgIHVpbnQzMl90IGludDMyOwogICB1aW50NjRfdCBp bnQ2NDsKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOwor ICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcHRpZCAoaW5m ZXJpb3JfcHRpZCk7CiAKICAgaWYgKGRlYnVnX2FpeF90aHJlYWQpCiAgICAg Z2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywgCkBAIC0xNTE4LDcgKzE1OTUsNyBA QCBzdG9yZV9yZWdzX3VzZXJfdGhyZWFkIChjb25zdCBzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLCBwdGhkYl9wdGhyZWFkX3QgcGR0aWQpCiAKICAgLyog UmV0cmlldmUgdGhlIHRocmVhZCdzIGN1cnJlbnQgY29udGV4dCBmb3IgaXRz IG5vbi1yZWdpc3RlcgogICAgICB2YWx1ZXMuICAqLwotICBzdGF0dXMgPSBw dGhkYl9wdGhyZWFkX2NvbnRleHQgKHBkX3Nlc3Npb24sIHBkdGlkLCAmY3R4 KTsKKyAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9jb250ZXh0IChkYXRhLT5w ZF9zZXNzaW9uLCBwZHRpZCwgJmN0eCk7CiAgIGlmIChzdGF0dXMgIT0gUFRI REJfU1VDQ0VTUykKICAgICBlcnJvciAoXygiYWl4LXRocmVhZDogc3RvcmVf cmVnaXN0ZXJzOiBwdGhkYl9wdGhyZWFkX2NvbnRleHQgcmV0dXJuZWQgJXMi KSwKIAkgICBwZF9zdGF0dXMyc3RyIChzdGF0dXMpKTsKQEAgLTE1MjgsNyAr MTYwNSw3IEBAIHN0b3JlX3JlZ3NfdXNlcl90aHJlYWQgKGNvbnN0IHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsIHB0aGRiX3B0aHJlYWRfdCBwZHRpZCkK ICAgZm9yIChpID0gMDsgaSA8IHBwY19udW1fZ3ByczsgaSsrKQogICAgIGlm IChSRUdfVkFMSUQgPT0gcmVnY2FjaGUtPmdldF9yZWdpc3Rlcl9zdGF0dXMg KHRkZXAtPnBwY19ncDBfcmVnbnVtICsgaSkpCiAgICAgICB7Ci0JaWYgKGFy Y2g2NCkKKwlpZiAoZGF0YS0+YXJjaDY0KQogCSAgewogCSAgICByZWdjYWNo ZS0+cmF3X2NvbGxlY3QgKHRkZXAtPnBwY19ncDBfcmVnbnVtICsgaSwgKHZv aWQgKikgJmludDY0KTsKIAkgICAgY3R4LmdwcltpXSA9IGludDY0OwpAQCAt MTU0NSw3ICsxNjIyLDcgQEAgc3RvcmVfcmVnc191c2VyX3RocmVhZCAoY29u c3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJfcHRocmVhZF90 IHBkdGlkKQogICAgIGZpbGxfZnBycyAocmVnY2FjaGUsIGN0eC5mcHIpOwog CiAgIC8qIFNwZWNpYWwgcmVnaXN0ZXJzIChhbHdheXMga2VwdCBpbiBjdHgg YXMgNjQgYml0cykuICAqLwotICBpZiAoYXJjaDY0KQorICBpZiAoZGF0YS0+ YXJjaDY0KQogICAgIHsKICAgICAgIGZpbGxfc3ByczY0IChyZWdjYWNoZSwg JmN0eC5pYXIsICZjdHgubXNyLCAmY3R4LmNyLCAmY3R4LmxyLCAmY3R4LmN0 ciwKIAkJCSAgICAgJmN0eC54ZXIsICZjdHguZnBzY3IpOwpAQCAtMTU3Niw3 ICsxNjUzLDcgQEAgc3RvcmVfcmVnc191c2VyX3RocmVhZCAoY29uc3Qgc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJfcHRocmVhZF90IHBkdGlk KQogCWN0eC5mcHNjciA9IHRtcF9mcHNjcjsKICAgICB9CiAKLSAgc3RhdHVz ID0gcHRoZGJfcHRocmVhZF9zZXRjb250ZXh0IChwZF9zZXNzaW9uLCBwZHRp ZCwgJmN0eCk7CisgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfc2V0Y29udGV4 dCAoZGF0YS0+cGRfc2Vzc2lvbiwgcGR0aWQsICZjdHgpOwogICBpZiAoc3Rh dHVzICE9IFBUSERCX1NVQ0NFU1MpCiAgICAgZXJyb3IgKF8oImFpeC10aHJl YWQ6IHN0b3JlX3JlZ2lzdGVyczogIgogCSAgICAgInB0aGRiX3B0aHJlYWRf c2V0Y29udGV4dCByZXR1cm5lZCAlcyIpLApAQCAtMTYwMiw2ICsxNjc5LDkg QEAgc3RvcmVfcmVnc19rZXJuZWxfdGhyZWFkIChjb25zdCBzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8sCiAgIGRvdWJsZSBmcHJzW3Bw Y19udW1fZnByc107CiAgIHN0cnVjdCBwdHhzcHJzIHNwcnM2NDsKICAgc3Ry dWN0IHB0c3BycyAgc3ByczMyOworICBzdHJ1Y3QgYWl4X3RocmVhZF92YXJp YWJsZXMgKmRhdGE7CisgIAorICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hl bHBlcl9mb3JfcHRpZCAocmVnY2FjaGUtPnB0aWQgKCkpOwogCiAgIGlmIChk ZWJ1Z19haXhfdGhyZWFkKQogICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2cs IApAQCAtMTYxMyw3ICsxNjkzLDcgQEAgc3RvcmVfcmVnc19rZXJuZWxfdGhy ZWFkIChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVn bm8sCiAgICAgICB8fCAodGRlcC0+cHBjX2dwMF9yZWdudW0gPD0gcmVnbm8K IAkgICYmIHJlZ25vIDwgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyBwcGNfbnVt X2ZwcnMpKQogICAgIHsKLSAgICAgIGlmIChhcmNoNjQpCisgICAgICBpZiAo ZGF0YS0+YXJjaDY0KQogCXsKIAkgIC8qIFByZS1mZXRjaDogc29tZSByZWdz IG1heSBub3QgYmUgaW4gdGhlIGNhY2hlLiAgKi8KIAkgIHB0cmFjZTY0YWl4 IChQVFRfUkVBRF9HUFJTLCB0aWQsICh1bnNpZ25lZCBsb25nKSBncHJzNjQs IDAsIE5VTEwpOwpAQCAtMTY0Niw3ICsxNzI2LDcgQEAgc3RvcmVfcmVnc19r ZXJuZWxfdGhyZWFkIChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCBpbnQgcmVnbm8sCiAKICAgaWYgKHJlZ25vID09IC0xIHx8IHNwZWNpYWxf cmVnaXN0ZXJfcCAoZ2RiYXJjaCwgcmVnbm8pKQogICAgIHsKLSAgICAgIGlm IChhcmNoNjQpCisgICAgICBpZiAoZGF0YS0+YXJjaDY0KQogCXsKIAkgIC8q IFByZS1mZXRjaDogc29tZSByZWdpc3RlcnMgd29uJ3QgYmUgaW4gdGhlIGNh Y2hlLiAgKi8KIAkgIHB0cmFjZTY0YWl4IChQVFRfUkVBRF9TUFJTLCB0aWQs IApAQCAtMTcwMyw3ICsxNzgzLDcgQEAgYWl4X3RocmVhZF90YXJnZXQ6OnN0 b3JlX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50 IHJlZ25vKQogICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZDsKICAgcHRo ZGJfdGlkX3QgdGlkOwogCi0gIGlmICghUERfVElEIChyZWdjYWNoZS0+cHRp ZCAoKSkpCisgIGlmIChyZWdjYWNoZS0+cHRpZCAoKS50aWQgKCkgPT0gMCkK ICAgICBiZW5lYXRoICgpLT5zdG9yZV9yZWdpc3RlcnMgKHJlZ2NhY2hlLCBy ZWdubyk7CiAgIGVsc2UKICAgICB7CkBAIC0xNzQxLDcgKzE4MjEsNyBAQCBh aXhfdGhyZWFkX3RhcmdldDo6bW91cm5faW5mZXJpb3IgKCkKIHsKICAgdGFy Z2V0X29wcyAqYmVuZWF0aCA9IHRoaXMtPmJlbmVhdGggKCk7CiAKLSAgcGRf ZGVhY3RpdmF0ZSAoKTsKKyAgcGRfZGlzYWJsZSAoKTsKICAgYmVuZWF0aC0+ bW91cm5faW5mZXJpb3IgKCk7CiB9CiAKQEAgLTE3NTAsNyArMTgzMCw3IEBA IGFpeF90aHJlYWRfdGFyZ2V0Ojptb3Vybl9pbmZlcmlvciAoKQogYm9vbAog YWl4X3RocmVhZF90YXJnZXQ6OnRocmVhZF9hbGl2ZSAocHRpZF90IHB0aWQp CiB7Ci0gIGlmICghUERfVElEIChwdGlkKSkKKyAgaWYgKHB0aWQudGlkICgp ID09IDApCiAgICAgcmV0dXJuIGJlbmVhdGggKCktPnRocmVhZF9hbGl2ZSAo cHRpZCk7CiAKICAgLyogV2UgdXBkYXRlIHRoZSB0aHJlYWQgbGlzdCBldmVy eSB0aW1lIHRoZSBjaGlsZCBzdG9wcywgc28gYWxsCkBAIC0xNzY2LDcgKzE4 NDYsNyBAQCBhaXhfdGhyZWFkX3RhcmdldDo6dGhyZWFkX2FsaXZlIChwdGlk X3QgcHRpZCkKIHN0ZDo6c3RyaW5nCiBhaXhfdGhyZWFkX3RhcmdldDo6cGlk X3RvX3N0ciAocHRpZF90IHB0aWQpCiB7Ci0gIGlmICghUERfVElEIChwdGlk KSkKKyAgaWYgKHB0aWQudGlkICgpID09IDApCiAgICAgcmV0dXJuIGJlbmVh dGggKCktPnBpZF90b19zdHIgKHB0aWQpOwogCiAgIHJldHVybiBzdHJpbmdf cHJpbnRmIChfKCJUaHJlYWQgJXMiKSwgcHVsb25nZXN0IChwdGlkLnRpZCAo KSkpOwpAQCAtMTc4Niw4ICsxODY2LDExIEBAIGFpeF90aHJlYWRfdGFyZ2V0 OjpleHRyYV90aHJlYWRfaW5mbyAoc3RydWN0IHRocmVhZF9pbmZvICp0aHJl YWQpCiAgIHB0aGRiX2RldGFjaHN0YXRlX3QgZGV0YWNoc3RhdGU7CiAgIGlu dCBjYW5jZWxwZW5kOwogICBzdGF0aWMgY2hhciAqcmV0ID0gTlVMTDsKKyAg c3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworCisgIGRhdGEg PSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlkICh0aHJlYWQtPnB0 aWQpOwogCi0gIGlmICghUERfVElEICh0aHJlYWQtPnB0aWQpKQorICBpZiAo dGhyZWFkLT5wdGlkLnRpZCAoKSA9PSAwKQogICAgIHJldHVybiBOVUxMOwog CiAgIHN0cmluZ19maWxlIGJ1ZjsKQEAgLTE4MDAsMjQgKzE4ODMsMjQgQEAg YWl4X3RocmVhZF90YXJnZXQ6OmV4dHJhX3RocmVhZF9pbmZvIChzdHJ1Y3Qg dGhyZWFkX2luZm8gKnRocmVhZCkKICAgICAvKiBpMThuOiBMaWtlICJ0aHJl YWQtaWRlbnRpZmllciAlZCwgW3N0YXRlXSBydW5uaW5nLCBzdXNwZW5kZWQi ICovCiAgICAgYnVmLnByaW50ZiAoXygidGlkICVkIiksIChpbnQpdGlkKTsK IAotICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3N0YXRlIChwZF9zZXNzaW9u LCBwZHRpZCwgJnN0YXRlKTsKKyAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9z dGF0ZSAoZGF0YS0+cGRfc2Vzc2lvbiwgcGR0aWQsICZzdGF0ZSk7CiAgIGlm IChzdGF0dXMgIT0gUFRIREJfU1VDQ0VTUykKICAgICBzdGF0ZSA9IFBTVF9O T1RTVVA7CiAgIGJ1Zi5wcmludGYgKCIsICVzIiwgc3RhdGUyc3RyIChzdGF0 ZSkpOwogCi0gIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfc3VzcGVuZHN0YXRl IChwZF9zZXNzaW9uLCBwZHRpZCwgCisgIHN0YXR1cyA9IHB0aGRiX3B0aHJl YWRfc3VzcGVuZHN0YXRlIChkYXRhLT5wZF9zZXNzaW9uLCBwZHRpZCwgCiAJ CQkJICAgICAgICZzdXNwZW5kc3RhdGUpOwogICBpZiAoc3RhdHVzID09IFBU SERCX1NVQ0NFU1MgJiYgc3VzcGVuZHN0YXRlID09IFBTU19TVVNQRU5ERUQp CiAgICAgLyogaTE4bjogTGlrZSAiVGhyZWFkLUlkICVkLCBbc3RhdGVdIHJ1 bm5pbmcsIHN1c3BlbmRlZCIgKi8KICAgICBidWYucHJpbnRmIChfKCIsIHN1 c3BlbmRlZCIpKTsKIAotICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX2RldGFj aHN0YXRlIChwZF9zZXNzaW9uLCBwZHRpZCwgCisgIHN0YXR1cyA9IHB0aGRi X3B0aHJlYWRfZGV0YWNoc3RhdGUgKGRhdGEtPnBkX3Nlc3Npb24sIHBkdGlk LCAKIAkJCQkgICAgICAmZGV0YWNoc3RhdGUpOwogICBpZiAoc3RhdHVzID09 IFBUSERCX1NVQ0NFU1MgJiYgZGV0YWNoc3RhdGUgPT0gUERTX0RFVEFDSEVE KQogICAgIC8qIGkxOG46IExpa2UgIlRocmVhZC1JZCAlZCwgW3N0YXRlXSBy dW5uaW5nLCBkZXRhY2hlZCIgKi8KICAgICBidWYucHJpbnRmIChfKCIsIGRl dGFjaGVkIikpOwogCi0gIHB0aGRiX3B0aHJlYWRfY2FuY2VscGVuZCAocGRf c2Vzc2lvbiwgcGR0aWQsICZjYW5jZWxwZW5kKTsKKyAgcHRoZGJfcHRocmVh ZF9jYW5jZWxwZW5kIChkYXRhLT5wZF9zZXNzaW9uLCBwZHRpZCwgJmNhbmNl bHBlbmQpOwogICBpZiAoc3RhdHVzID09IFBUSERCX1NVQ0NFU1MgJiYgY2Fu Y2VscGVuZCkKICAgICAvKiBpMThuOiBMaWtlICJUaHJlYWQtSWQgJWQsIFtz dGF0ZV0gcnVubmluZywgY2FuY2VsIHBlbmRpbmciICovCiAgICAgYnVmLnBy aW50ZiAoXygiLCBjYW5jZWwgcGVuZGluZyIpKTsKZGlmZiAtLWdpdCBhL2dk Yi9zb2xpYi1haXguYyBiL2dkYi9zb2xpYi1haXguYwppbmRleCBmNDgzZjU0 ZGUxMy4uNmJlODEwNjRlYmQgMTAwNjQ0Ci0tLSBhL2dkYi9zb2xpYi1haXgu YworKysgYi9nZGIvc29saWItYWl4LmMKQEAgLTYxOCw2ICs2MTgsMjAgQEAg c29saWJfYWl4X2JmZF9vcGVuIChjb25zdCBjaGFyICpwYXRobmFtZSkKICAg ICAgIGlmIChtZW1iZXJfbmFtZSA9PSBiZmRfZ2V0X2ZpbGVuYW1lIChvYmpl Y3RfYmZkLmdldCAoKSkpCiAJYnJlYWs7CiAKKyAgICAgIHN0ZDo6c3RyaW5n IHMgPSBiZmRfZ2V0X2ZpbGVuYW1lIChvYmplY3RfYmZkLmdldCAoKSk7CisK KyAgICAgIC8qIEZvciBldmVyeSBpbmZlcmlvciBhZnRlciBmaXJzdCBpbnQg YmZkIHN5c3RlbSB3ZSAKKwkgd2lsbCBoYXZlIHRoZSBwYXRobmFtZSBpbnN0 ZWFkIG9mIHRoZSBtZW1iZXIgbmFtZQorCSByZWdpc3RlcmVkLiBIZW5jZSB0 aGUgYmVsb3cgY29uZGl0aW9uIGV4aXN0cy4gICovCisKKyAgICAgIGlmIChz LmZpbmQgKCcoJykgIT0gc3RkOjpzdHJpbmc6Om5wb3MpCisJeworCSAgaW50 IHBvcyA9IHMuZmluZCAoJygnKTsKKwkgIGludCBsZW4gPSBzLmZpbmQgKCcp JykgLSBzLmZpbmQgKCcoJyk7CisJICBpZiAocy5zdWJzdHIgKHBvcysxLCBs ZW4tMSkgPT0gbWVtYmVyX25hbWUpIAorCSAgICByZXR1cm4gb2JqZWN0X2Jm ZDsKKwl9CisKICAgICAgIG9iamVjdF9iZmQgPSBnZGJfYmZkX29wZW5yX25l eHRfYXJjaGl2ZWRfZmlsZSAoYXJjaGl2ZV9iZmQuZ2V0ICgpLAogCQkJCQkJ ICAgICBvYmplY3RfYmZkLmdldCAoKSk7CiAgICAgfQotLSAKMi4zMS4xCgo= --_004_CH2PR15MB354455A756AF729AE5F796E2D6A19CH2PR15MB3544namp_--