From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id +HCmExKa72OLijYAWB0awg (envelope-from ) for ; Fri, 17 Feb 2023 10:15:30 -0500 Received: by simark.ca (Postfix, from userid 112) id 4B3111E222; Fri, 17 Feb 2023 10:15:30 -0500 (EST) Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=ny7o9YUV; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.3 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 9BAF91E128 for ; Fri, 17 Feb 2023 10:15:29 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 47FFC384F033 for ; Fri, 17 Feb 2023 15:15:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 47FFC384F033 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1676646928; bh=Pv1Rv5zeNliCpuOCZnUXTTVLBH/vI4VT0YIC3lZqvVo=; h=To:CC:Subject:Date:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=ny7o9YUVopKcjQNNvofqXByTkYt7tkf9NmPSmMI2HdLVIot8P4qXhma5l7WexUe/q OiCyKofZnwbEp1+Dc8Woli8JhVIITEzxV6pA7YwXiRr7zZ5RBRnqZfS576bBdYlw/o Y0ke90plIzJnKndnQBNtYynpk1GB5Y3Q1p5uNB50= Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id 5D410385781F for ; Fri, 17 Feb 2023 15:15:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5D410385781F Received: from pps.filterd (m0098417.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31HEXCib015646; Fri, 17 Feb 2023 15:15:04 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2176.outbound.protection.outlook.com [104.47.55.176]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3ntbesh1jh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 17 Feb 2023 15:15:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CAxfbK7uxSAgHUe9ZAcOqoE/4Das229/rCGKQhY//ZddP4uyTiNtWHi1WxwO87IgbbNvAxT1C+0FoFsEhqafXCb3RpzP0ed1gj7GP75LvJ2VHAuuyHVqyVPPrEYKnycR6A7IAbuPoVS7AqAbY/nOV06ahSfYTTHrGpDF8s+2/HcOt1HU23p4FjMPUAP7F4neveEHgAqjZMKIXQPmayhzE7EmOsajtwBz1m5FRHrXvikszx/OJCMb8qMluMklEoQqxvoJipTLwKtHkpJDu4mPBabtnFG95AiluazvNvepgrRxbPtga69TNymh9+MLdxVIFPRwNJlI/qBkqAAsycC2aw== 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=tvGl8uDnxijBe7Pd4o2UqCZBuh6x5RIDG61Esxbrkhs=; b=OubhPzyqvLvAZWnoGtcOkhiAEEYaUutUcjvUrxq1+sQtqqvOICQ7sRXYhZxvbyLOIa1sZ+npurF5ozRbFUHQ2bvxTd+N0/ATnD7Vd7p4kt6Cvn0u7McofUF8cRdH0ZBy4sP4VxFQnUF89ZWwFbLEAGtzLVscV/IOVW+BoN5vtkXND8nCbZb4rQKkrNa9DjiOJftko2V4TQByDrC9G2K9BkF+JWCPH/i59bk4AU+am0z+NG4tsUXOTvIQWbpDn4K4xnIFekSDwk2KkBmqs5CiZ8RExuYvSJIHZQ+ZGWDLn/k3rZ1X97XBs3l4MpYZbWXkYbLbIrY7Hv2hDXelC0uP3Q== 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 PH7PR15MB5426.namprd15.prod.outlook.com (2603:10b6:510:1fe::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.24; Fri, 17 Feb 2023 15:15:01 +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 15:15:01 +0000 To: Ulrich Weigand , "simark@simark.ca" , "gdb-patches@sourceware.org" CC: Sangamesh Mallayya Subject: Re: [PATCH] 0001-Fix-multi-thread-debug-bug-in-AIX.patch Thread-Topic: [PATCH] 0001-Fix-multi-thread-debug-bug-in-AIX.patch Thread-Index: AQHY6DximDPpCqTL9kGyFvcEZokFBq4jlIiAgBFljYeAAA2HgIAIORaygAMrdQCACMPAdYADi8KAgAAbf+aAABUYgIAADhDtgAjHItiAAgYnAIACq/WKgAVsGwCABC6K8oAAZcYAgAq8WQ+AADoMgIAFnB/fgAUxEICABkBkK4AWHiQAgAFvY+iAAawUgIADF3ySgAshzACACvn7HoAI6B4pgAADGXOAALszAIABIz5JgAU9kgCAARgy1IACBimAgAL6kLSABOXQgIABOu4PgAOIfYCAAQPT34AADY+AgAAT166AABGXgIAADgK1 Date: Fri, 17 Feb 2023 15:15:01 +0000 Message-ID: References: <09f2433177505899c9bd31347af9b43118e4f890.camel@de.ibm.com> <8b7c91369d53c1ace668ff03f4d819a66f5e64e6.camel@de.ibm.com> <10cb526ef81fd8a63fd776e51bf9505c8dff1e33.camel@de.ibm.com> <8728e4f68ab1d57df73a0d7acc2aa1e9a8b065b7.camel@de.ibm.com> In-Reply-To: <8728e4f68ab1d57df73a0d7acc2aa1e9a8b065b7.camel@de.ibm.com> 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_|PH7PR15MB5426:EE_ x-ms-office365-filtering-correlation-id: dbe06a89-7a9e-483b-587a-08db10f9bd59 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vozvgdL3Nf0lz4lbkrrs1oz6lOXfHzp9EDU1CihB41dwMs+qLDqaQp+TItLKh9F8tjE+RW6ytVLJuFyXNCGKxzJFLHmNjsdt9O6bml13SY2BiEbVg5r1p4aiWdCa+hZjTncFzHpdKB3BmmpmMOdXbJJr1tb7bkylbti18MVCij4zPKL+hYrfZK00t0qb1jbmH10lLI5dTeNDlFVzFml6/+hoSDpnQnTvksNodXROlL2Ehkc4ufzDUGAuyHIt+oU/Kaeko2q9hqP5OTcgO3mpacIMH3/lGQLM4wSTocg/lFw2+9jVMKVnDlDkEv86dlHvDbdtTMv1mXCNgmwX9aA40/NosLeB+FYzLn/nd9G3xPe/FLwdXCpQm7zn4X54/vN9husnhslJSHKz0CH/pAQhNjs7Wx03iqCYlSzqcOJXnDsQ8lY3sy3z+rMrJG3A8g8MrGDoLEAY6CxoxKf5ywcWMNfkIPih9M2Kcsku7e228K4iB6ukoUqZg9jZ2YpXpghpYYWn3UzjfF3tWXCuMIR29BzvynTvcNfvSmtgo4f0n3za87tEpn/jZJfttgr58esRmzIdZP6cTPixzTejfATxmQArlBGKe0BgWhlhrBVfJjs6uLw0F7j2sbdDkAukZXYptOuKB+mYmCttLfS1dksVPnjPcUdT2SOkMTUmKYRwIuEVoMH/uGxZ6WkF6lUKOJmJ0NdkQ9WZRXMsgb1VdVW4+A== 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)(136003)(346002)(39860400002)(376002)(366004)(396003)(451199018)(55016003)(86362001)(83380400001)(66446008)(41300700001)(2906002)(76116006)(91956017)(7696005)(38070700005)(71200400001)(38100700002)(99936003)(122000001)(53546011)(186003)(33656002)(66946007)(4326008)(9686003)(316002)(6506007)(110136005)(478600001)(8676002)(64756008)(5660300002)(66476007)(8936002)(52536014)(66556008)(9326002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?24m0CT8U3aa7knOhecdg5/arVP4u7zGCPGjjHijvsoXoTjPgXpDtQOkbGtuq?= =?us-ascii?Q?Mq6waS80k9KTEeS8OJN12ATd+E6dem0xQ8dMh/mWpTLW3Vw3h4KsAA7Ivoo7?= =?us-ascii?Q?Ka/A890GN63OqlKCfkDvGenJTQ9GTxyNB0nCA+xjlqLekISxulThkvM48mW3?= =?us-ascii?Q?gVSPHVYerA6iUUlZcCIUjGEusPdhU2DD84XzE7IyHknnHfGAj7uH0YLEeE4I?= =?us-ascii?Q?R5MoayWLT9CSnuEtsEmf0V37eTGQfU7ztoJL7IrPA8d1qIGNc/bwjnG1WO4b?= =?us-ascii?Q?FNymvEV0oyPZrLX3oMsVswXVSywGxmsy3mp0JOmLhIIZY7j0KaPPo/BblTdZ?= =?us-ascii?Q?q4PUtgleeehSpfCV30tSeqKU6Gb+3j7rtTnhWOuT4SDPJtEEz9TgUAOWXemE?= =?us-ascii?Q?cx/92mj/SIKUWpqFh88e7mdcjwUaAhIJvta9AniqSU/3rH4KO3CPQF85dNgq?= =?us-ascii?Q?ZQouTlHO48q0pajKticRhGixAYbpRr4/cZMA+e77XZGyoamxL0Nl+xkPUNEg?= =?us-ascii?Q?hMW40gbVEqStv1aUoSAD8YtZvQSQt4BrNYwPfEGxR2QzyjGKHFmWGzsPuKf4?= =?us-ascii?Q?vSpxB2JjisQ4r3ygk8ZqA7+y9lcAlDbbCfehxNl0z78HwVcKcAu8eOsrgSg4?= =?us-ascii?Q?2kUhojov0v1wtEDTmaowgzciLK6YbrTr1vOxZmKtYPt20CcM/aDf/f0YjTqw?= =?us-ascii?Q?lPbO5dDLOmyJ25w+3WEY8C+1hXQ1C8lzgswqf+Ar1/Nhk2DmJaJUEyi7kxHJ?= =?us-ascii?Q?IZlOtUI/Hl4jKOBDypJOVHcu0dhPT91IMM9sTjUUVaoU7U1wVpUU+iBQ7Ek6?= =?us-ascii?Q?cozee8aRapt7OxNwcrNO+b6ukP84FwR00XPQNj2mv+2a0ptPjk7TfcIb8ZXI?= =?us-ascii?Q?S45ulnRsT13HHhJJO5bZ4udDdRMtcrqiBxQeXjY9O37dnpRhQ9733UpOsl6e?= =?us-ascii?Q?ZW18a/OwrcDScLYbKGTuWiBCYOd4vrY0LA4PmkBw4idyXiNx24GOTFFMpRY3?= =?us-ascii?Q?p6GDjJYcUzqYOfMKMUeRPf5B0V+7o+d8VTndt4qVq9CUOuu1h3Z0wY6V7Ay2?= =?us-ascii?Q?3iyc41LgUNt8xYTxCcxPVSo5V7l7ESDE1g/WNRHXUUkfvAOgoCQlaKW8gSgK?= =?us-ascii?Q?lnlqThPBZXPvOvzwVtFEPgbQdZZKWoIPeFNg6GRHFMKAKX2H+irn/WkKcpFD?= =?us-ascii?Q?OF8rRvxjWeRo/plWlyzz/xRGtQM5mv1zq2vVo+c/eXqt30HXnRX2h6Gt886r?= =?us-ascii?Q?IQKmiMwKrymZiJ+xFwTSzcOJWW2o1vTwC0AOYNxKMJF1z18+HWRoXD3QM/5w?= =?us-ascii?Q?tEZJDWMT88ZXCGVIDIhdqxa7WoJITUo/hbVLQQCI1NnjDAiD5vuoHVkN2Ovi?= =?us-ascii?Q?ukRfnxmgKOaDFVOnkhYSE741des5cUgWQ2rduG/mlwj852qWY4cM9x/jPKDX?= =?us-ascii?Q?A7WDZyTiOtApLPKvtFoisSERVReCxGIhfStp0OFaTchOongqjlVyNTH3YhgW?= =?us-ascii?Q?8sBp/0Ti2bFoODzMDmOAYHiCfnlnU24GxPIlm+WO7fsF6bssw0kWFmWEnpgi?= =?us-ascii?Q?CGSQcmcONWyx1jOoJPa1cIfiea9kjyyr+ifQJrcnT0CFZaFRfOkpbMpcDisI?= =?us-ascii?Q?MJFqzmT26Ds9jpwo9cT8qd3N3QY2hG2ky0RMM4IPbRfeYTieP60IxM01eSJ2?= =?us-ascii?Q?vhGTffAOFX7TDfIj/538G47zRJY=3D?= Content-Type: multipart/mixed; boundary="_004_CH2PR15MB3544E905156ECE35D5ADCD43D6A19CH2PR15MB3544namp_" 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: dbe06a89-7a9e-483b-587a-08db10f9bd59 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Feb 2023 15:15:01.2394 (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: ZE+15u3wPETG/U0eJ5WeDZ7msWa5ie98lfALiGC6UjvdKjPXr3HF16VBJ5xypwQznQ9jQW3SHpReuPJqEtOcug== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR15MB5426 X-Proofpoint-GUID: LqCsiHGRgQYOyWmPn6SbmRdEbFkGoEA_ X-Proofpoint-ORIG-GUID: LqCsiHGRgQYOyWmPn6SbmRdEbFkGoEA_ 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_10,2023-02-17_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 clxscore=1011 mlxscore=0 bulkscore=0 malwarescore=0 suspectscore=0 adultscore=0 mlxlogscore=982 impostorscore=0 spamscore=0 phishscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302170132 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Aditya Kamath1 via Gdb-patches Reply-To: Aditya Kamath1 Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" --_004_CH2PR15MB3544E905156ECE35D5ADCD43D6A19CH2PR15MB3544namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Ulrich, Please find attached the patch with all the changes mentioned. Kindly let m= e know if any more changes is need. If not kindly check this in. Have a nice day ahead. Thanks and regards, Aditya. >>@@ -508,14 +552,17 @@ pdc_read_data (pthdb_user_t user_current_pid, void = *buf, >> /* This is needed to eliminate the dependency of current thread >> which is null so that thread reads the correct target memory. */ >> { >>- scoped_restore_current_thread restore_current_thread; >>+ scoped_restore save_inferior_ptid =3D make_scoped_restore (&inferior= _ptid); >> /* Before the first inferior is added, we pass inferior_ptid.pid () >> from pd_enable () which is 0. There is no need to switch threads >> during first initialisation. In the rest of the callbacks the >> current thread needs to be correct. */ >This comment is no longer relevant as the code relating to it was >deleted. The comment should be deleted as well. >>- if (user_current_pid !=3D 0) >>- switch_to_thread (current_inferior ()->process_target (), >>- ptid_t (user_current_pid)); >>+ inferior_ptid =3D ptid_t (user_current_pid); >>+ scoped_restore_current_inferior restore_inferior; >>+ set_current_inferior (inf); >>+ >>+ scoped_restore_current_program_space restore_current_progspace; >>+ set_current_program_space (inf->pspace); >> status =3D target_read_memory (addr, (gdb_byte *) buf, len); Done.. >>+ tp =3D find_thread_ptid (proc_target, ptid_t (pid)); >>+ >>+ /* If the pthreadlibrary is not ready to debug >>+ then this is just a main process which needs >>+ a priv to be set. The if condition below does >>+ the same. Otherwise we go to the for loop to >>+ sync the pthread and GDB thread lists. */ >These changes all seem to be leftovers from previous attempts, >I guess they should be removed again. Done.. >>+ inferior *inf =3D current_inferior (); >>+ /* When attaching / handling fork child, don't try loading libthread_d= b >>+ until we know about all shared libraries. */ >>+ if (inf->in_initial_library_scan) >>+ return; >"libthread_db" is Linux specific. Please update the comment so >it makes sense in the AIX context. Done.. >>@@ -1362,12 +1439,16 @@ aix_thread_target::fetch_registers (struct regcac= he *regcache, int regno) >>+ thread =3D find_thread_ptid (current_inferior ()->process_target (), p= tid_t (regcache->ptid ().pid (), 0, regcache->ptid ().tid ())); >I hadn't seen this change below, it doesn't really make sense to me. >You really need to use regcache->ptid here, this should be correct. >When did you see a case where this was not correct? Does this still >happen now that we have the in_initial_library_scan check? This works with that flag change. Removed it. Thanks. From: Ulrich Weigand Date: Friday, 17 February 2023 at 7:48 PM 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: >Yes, it resolves the issue. Excellent. A few final comment on the patch, including one change I hadn't noticed before: >@@ -508,14 +552,17 @@ pdc_read_data (pthdb_user_t user_current_pid, void *= buf, > /* This is needed to eliminate the dependency of current thread > which is null so that thread reads the correct target memory. */ > { >- scoped_restore_current_thread restore_current_thread; >+ scoped_restore save_inferior_ptid =3D make_scoped_restore (&inferior_= ptid); > /* Before the first inferior is added, we pass inferior_ptid.pid () > from pd_enable () which is 0. There is no need to switch threads > during first initialisation. In the rest of the callbacks the > current thread needs to be correct. */ This comment is no longer relevant as the code relating to it was deleted. The comment should be deleted as well. >- if (user_current_pid !=3D 0) >- switch_to_thread (current_inferior ()->process_target (), >- ptid_t (user_current_pid)); >+ inferior_ptid =3D ptid_t (user_current_pid); >+ scoped_restore_current_inferior restore_inferior; >+ set_current_inferior (inf); >+ >+ scoped_restore_current_program_space restore_current_progspace; >+ set_current_program_space (inf->pspace); > status =3D target_read_memory (addr, (gdb_byte *) buf, len); > } > ret =3D status =3D=3D 0 ? PDC_SUCCESS : PDC_FAILURE; >+ tp =3D find_thread_ptid (proc_target, ptid_t (pid)); >+ >+ /* If the pthreadlibrary is not ready to debug >+ then this is just a main process which needs >+ a priv to be set. The if condition below does >+ the same. Otherwise we go to the for loop to >+ sync the pthread and GDB thread lists. */ >+ > /* Apply differences between the two arrays to GDB's thread list. */ >+ > for (pi =3D gi =3D 0; pi < pcount || gi < gcount;) These changes all seem to be leftovers from previous attempts, I guess they should be removed again. >+ inferior *inf =3D current_inferior (); >+ /* When attaching / handling fork child, don't try loading libthread_db >+ until we know about all shared libraries. */ >+ if (inf->in_initial_library_scan) >+ return; "libthread_db" is Linux specific. Please update the comment so it makes sense in the AIX context. >@@ -1362,12 +1439,16 @@ aix_thread_target::fetch_registers (struct regcach= e *regcache, int regno) > { > struct thread_info *thread; > pthdb_tid_t tid; >+ thread =3D find_thread_ptid (current_inferior ()->process_target (), pt= id_t (regcache->ptid ().pid (), 0, regcache->ptid ().tid ())); > >- if (!PD_TID (regcache->ptid ())) >+ /* If a new inferior is born, then its pthread debug library is yet to >+ initialised and hence has no private data. So the below if condition >+ exists. */ >+ >+ if (regcache->ptid ().tid () =3D=3D 0) > beneath ()->fetch_registers (regcache, regno); > else > { >- thread =3D find_thread_ptid (current_inferior (), regcache->ptid ()= ); > aix_thread_info *priv =3D get_aix_thread_info (thread); > tid =3D priv->tid; I hadn't seen this change below, it doesn't really make sense to me. You really need to use regcache->ptid here, this should be correct. When did you see a case where this was not correct? Does this still happen now that we have the in_initial_library_scan check? Bye, Ulrich --_004_CH2PR15MB3544E905156ECE35D5ADCD43D6A19CH2PR15MB3544namp_ 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=29404; creation-date="Fri, 17 Feb 2023 15:14:52 GMT"; modification-date="Fri, 17 Feb 2023 15:14:53 GMT" Content-Transfer-Encoding: base64 RnJvbSAzZDZhZjQyMjQzNzRjM2Y3NzUzNjBkYjViMTNhYTc2NmE0MzMxYTJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFkaGFyIEthbWF0aCA8QWRpdHlhLkthbWF0 aDFAaWJtLmNvbT4KRGF0ZTogRnJpLCAxNyBGZWIgMjAyMyAwOTowNzo0NCAtMDYwMApTdWJqZWN0 OiBbUEFUQ0hdIEZpeCBtdWx0aS10aHJlYWRlZCBkZWJ1Z2dpbmcgdW5kZXIgQUlYCgpNdWx0aS10 aHJlYWRlZCBkZWJ1Z2dpbmcgdXNpbmcgdGhlIGxpYnB0aGRlYnVnIGRlYnVnIGludGVyZmFjZQpp cyBjdXJyZW50bHkgYnJva2VuIGR1ZSB0byBtdWx0aXBsZSBpc3N1ZXMuCgpXaGVuIGRlYnVnZ2lu ZyBhIHNpbmdsZSBpbmZlcmlvciwgd2Ugd2VyZSBnZXR0aW5nIGFzc2VydGlvbgpmYWlsdXJlcyBp biBnZXRfYWl4X3RocmVhZF9pbmZvIGFzIG5vIHRwLT5wcml2IHN0cnVjdHVyZSB3YXMKYWxsb2Nh dGVkIGZvciB0aGUgbWFpbiB0aHJlYWQuCgpXZSBmaXhlZCB0aGlzIGJ5IHN3aXRjaGluZyB0aGUg bWFpbgp0aHJlYWQgZnJvbSBhIChwaWQsIDAsIDApIHB0aWRfdCB0byBhIChwaWQsIDAsIHRpZCkg cHRpZF90IGFuZAphbGxvY2FpbmcgdGhlIHRwLT5wcml2IHN0cnVjdHVyZSBpbiBzeW5jX3RocmVh ZGxpc3RzLgoKQXMgYSByZXN1bHQsIHRoZSBzd2l0Y2hfdG9fdGhyZWFkIGNhbGwgaW4gcGRjX3Jl YWRfZGF0YSBjb3VsZApub3cgZmFpbCBzaW5jZSB0aGUgbWFpbiB0aHJlYWQgbm8gbG9uZ2VyIHVz ZXMgKHBpZCwgMCwgMCkuCgpTbyB3ZSByZXBsYWNlZCB0aGUgY2FsbCBieSBvbmx5IHN3aXRjaGlu ZyBpbmZlcmlvcl9wdGlkLCB0aGUgY3VycmVudAppbmZlcmlvciwgYW5kIHRoZSBjdXJyZW50IGFk ZHJlc3Mgc3BhY2UgKGxpa2UgcHJvYy1zZXJ2aWNlLmMpLgpBZGQgc2ltaWxhciBzd2l0Y2hpbmcg dG8gcGRjX3dyaXRlX2RhdGEgd2hlcmUgaXQgd2FzIG1pc3NpbmcKY29tcGxldGVseS4KCldoZW4g ZGVidWdnaW5nIG11bHRpcGxlIGluZmVyaW9ycywgYW4gYWRkaXRpb25hbCBzZXQgb2YKcHJvYmxl bXMgcHJldmVudGVkIGNvcnJlY3QgbXVsdGktdGhyZWFkZWQgZGVidWdnaW5nOgoKRmlyc3Qgb2Yg YWxsLCBhaXgtdGhyZWFkLmMgdXNlZCB0byBoYXZlIGEgbnVtYmVyIG9mIGdsb2JhbAp2YXJpYWJs ZXMgaG9sZGluZyBwZXItaW5mZXJpb3IgaW5mb3JtYXRpb24uCgpXZSBzd2l0Y2hlZCBoZXNlCnRv IGEgcGVyLWluZmVyaW9yIGRhdGEgc3RydWN0dXJlIGluc3RlYWQuCgpBbHNvLCBzeW5jX3RocmVh ZGxpc3RzIHdhcyBnZXR0aW5nIGNvbmZ1c2VkIGFzIHdlIHdlcmUKY29tcGFyaW5nIHRoZSBsaXN0 IG9mIHRocmVhZHMgcmV0dXJuZWQgYnkgbGlicHRoZGVidWcKZm9yICpvbmUqIHByb2Nlc3Mgd2l0 aCBHREIncyBsaXN0IG9mIHRocmVhZHMgZm9yICphbGwqCnByb2Nlc3Nlcy4gTm93IHdlIG9ubHkg dXNlIGhlIEdEQiB0aHJlYWRzIG9mIHRoZSBjdXJyZW50CmluZmVyaW9yIGluc3RlYWQuCgpXZSBh bHNvIHNraXAgY2FsbGluZyBwZF9hY3RpdmF0ZQpmcm9tIHBkX2VuYWJsZSBpZiB0aGF0IGluX2lu aXRpYWxfbGlicmFyeV9zY2FuIGZsYWcgaXMKdHJ1ZSBmb3IgdGhlIGN1cnJlbnQgaW5mZXJpb3Iu CgpGaW5hbGx5LCB0aGUgcHJlc2VuY2Ugb2YgdGhlIHRocmVhZCBsaWJyYXJ5IGluIGFueSBidXQK dGhlIGZpcnN0IGluZmVyaW9yIHdhcyBub3QgY29ycmVjdGx5IGRldGVjdGVkIGR1ZSB0byBhCmJ1 ZyBpbiBzb2xpYi1haXguYywgd2hlcmUgdGhlIEJGRCBmaWxlIG5hbWUgZm9yIHNoYXJlZApsaWJy YXJ5IG1lbWJlcnMgd2FzIGNoYW5nZWQgd2hlbiB0aGUgbGlicmFyeSB3YXMgbG9hZGVkCmZvciB0 aGUgZmlyc3QgdGltZSwgd2hpY2ggY2F1c2VkIHRoZSBsaWJyYXJ5IHRvIG5vIGxvbmdlcgpiZSBy ZWNvZ25pemVkIGJ5IG5hbWUgd2hlbiBsb2FkZWQgYSBzZWNvbmQgdGltZS4KLS0tCiBnZGIvYWl4 LXRocmVhZC5jIHwgMzcwICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tCiBnZGIvc29saWItYWl4LmMgIHwgIDE0ICsrCiAyIGZpbGVzIGNoYW5nZWQsIDIzOCBp bnNlcnRpb25zKCspLCAxNDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2RiL2FpeC10aHJl YWQuYyBiL2dkYi9haXgtdGhyZWFkLmMKaW5kZXggZTU1NmMxNTM1NzYuLmI3YTE2ZDc2Y2Y3IDEw MDY0NAotLS0gYS9nZGIvYWl4LXRocmVhZC5jCisrKyBiL2dkYi9haXgtdGhyZWFkLmMKQEAgLTY4 LDEwICs2OCw2IEBAIHN0YXRpYyBib29sIGRlYnVnX2FpeF90aHJlYWQ7CiAjZGVmaW5lIHB0aGRi X3RpZF90CXRpZF90CiAjZW5kaWYKIAotLyogUmV0dXJuIHdoZXRoZXIgdG8gdHJlYXQgUElEIGFz IGEgZGVidWdnYWJsZSB0aHJlYWQgaWQuICAqLwotCi0jZGVmaW5lIFBEX1RJRChwdGlkKQkocGRf YWN0aXZlICYmIHB0aWQudGlkICgpICE9IDApCi0KIC8qIFN1Y2Nlc3MgYW5kIGZhaWx1cmUgdmFs dWVzIHJldHVybmVkIGJ5IHB0aGRiIGNhbGxiYWNrcy4gICovCiAKICNkZWZpbmUgUERDX1NVQ0NF U1MJUFRIREJfU1VDQ0VTUwpAQCAtMTQ0LDI0ICsxNDAsNiBAQCBjbGFzcyBhaXhfdGhyZWFkX3Rh cmdldCBmaW5hbCA6IHB1YmxpYyB0YXJnZXRfb3BzCiAKIHN0YXRpYyBhaXhfdGhyZWFkX3Rhcmdl dCBhaXhfdGhyZWFkX29wczsKIAotLyogQWRkcmVzcyBvZiB0aGUgZnVuY3Rpb24gdGhhdCBsaWJw dGhyZWFkIHdpbGwgY2FsbCB3aGVuIGxpYnB0aGRlYnVnCi0gICBpcyByZWFkeSB0byBiZSBpbml0 aWFsaXplZC4gICovCi0KLXN0YXRpYyBDT1JFX0FERFIgcGRfYnJrX2FkZHI7Ci0KLS8qIFdoZXRo ZXIgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24gaXMgZGVidWdnYWJsZSBieSBwdGhkYi4gICovCi0K LXN0YXRpYyBpbnQgcGRfYWJsZSA9IDA7Ci0KLS8qIFdoZXRoZXIgYSB0aHJlYWRlZCBhcHBsaWNh dGlvbiBpcyBiZWluZyBkZWJ1Z2dlZC4gICovCi0KLXN0YXRpYyBpbnQgcGRfYWN0aXZlID0gMDsK LQotLyogV2hldGhlciB0aGUgY3VycmVudCBhcmNoaXRlY3R1cmUgaXMgNjQtYml0LiAgCi0gICBP bmx5IHZhbGlkIHdoZW4gcGRfYWJsZSBpcyB0cnVlLiAgKi8KLQotc3RhdGljIGludCBhcmNoNjQ7 Ci0KIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zIGZvciBwdGhkYiBjYWxsYmFja3MuICAqLwogCiBz dGF0aWMgaW50IHBkY19zeW1ib2xfYWRkcnMgKHB0aGRiX3VzZXJfdCwgcHRoZGJfc3ltYm9sX3Qg KiwgaW50KTsKQEAgLTE5MSw5ICsxNjksNjYgQEAgc3RhdGljIHB0aGRiX2NhbGxiYWNrc190IHBk X2NhbGxiYWNrcyA9IHsKICAgTlVMTAogfTsKIAotLyogQ3VycmVudCBwdGhkYiBzZXNzaW9uLiAg Ki8KKy8qIEFpeCB2YXJpYWJsZSBzdHJ1Y3R1cmUuICAqLworc3RydWN0IGFpeF90aHJlYWRfdmFy aWFibGVzIAoreworICAvKiBXaGV0aGVyIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGlzIGRlYnVn Z2FibGUgYnkgcHRoZGIuICAqLworICBpbnQgcGRfYWJsZTsKKworICAvKiBXaGV0aGVyIGEgdGhy ZWFkZWQgYXBwbGljYXRpb24gaXMgYmVpbmcgZGVidWdnZWQuICAqLworICBpbnQgcGRfYWN0aXZl OworCisgIC8qIEN1cnJlbnQgcHRoZGIgc2Vzc2lvbi4gICovCisgIHB0aGRiX3Nlc3Npb25fdCBw ZF9zZXNzaW9uOworCisgIC8qIEFkZHJlc3Mgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgbGlicHRocmVh ZCB3aWxsIGNhbGwgd2hlbiBsaWJwdGhkZWJ1ZworICAgaXMgcmVhZHkgdG8gYmUgaW5pdGlhbGl6 ZWQuICAqLworICBDT1JFX0FERFIgcGRfYnJrX2FkZHI7CisKKyAgLyogV2hldGhlciB0aGUgY3Vy cmVudCBhcmNoaXRlY3R1cmUgaXMgNjQtYml0LgorICAgT25seSB2YWxpZCB3aGVuIHBkX2FibGUg aXMgdHJ1ZS4gICovCisgIGludCBhcmNoNjQ7Cit9OworCisvKiBLZXkgdG8gb3VyIHBlci1pbmZl cmlvciBkYXRhLiAgKi8KK3N0YXRpYyBjb25zdCByZWdpc3RyeTxpbmZlcmlvcj46OmtleTxhaXhf dGhyZWFkX3ZhcmlhYmxlcz4KKyAgYWl4X3RocmVhZF92YXJpYWJsZXNfaGFuZGxlOworCisvKiBG dW5jdGlvbiB0byBHZXQgYWl4X3RocmVhZF92YXJpYWJsZXMgZGF0YS4gICovCitzdGF0aWMgc3Ry dWN0IGFpeF90aHJlYWRfdmFyaWFibGVzKgorZ2V0X2FpeF90aHJlYWRfdmFyaWFibGVzX2RhdGEg KHN0cnVjdCBpbmZlcmlvciAqaW5mKQoreworICBpZiAoaW5mID09IE5VTEwpCisgICAgcmV0dXJu IE5VTEw7CisKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzKiBkYXRhOworCisgIGRhdGEg PSBhaXhfdGhyZWFkX3ZhcmlhYmxlc19oYW5kbGUuZ2V0IChpbmYpOworICBpZiAoZGF0YSA9PSBO VUxMKQorICAgIGRhdGEgPSBhaXhfdGhyZWFkX3ZhcmlhYmxlc19oYW5kbGUuZW1wbGFjZSAoaW5m KTsKKworICByZXR1cm4gZGF0YTsKK30KKworLyogSGVscGVyIHRvIGdldCBkYXRhIGZvciBwdGlk IGluIGEgZnVuY3Rpb24uICAqLwogCi1zdGF0aWMgcHRoZGJfc2Vzc2lvbl90IHBkX3Nlc3Npb247 CitzdGF0aWMgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzKgorZ2V0X3RocmVhZF9kYXRhX2hl bHBlcl9mb3JfcHRpZCAocHRpZF90IHB0aWQpCit7CisgIGluZmVyaW9yICppbmYgPSBmaW5kX2lu ZmVyaW9yX3B0aWQgKGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgpLAorCQkJ CQlwdGlkKTsKKyAgcmV0dXJuIGdldF9haXhfdGhyZWFkX3ZhcmlhYmxlc19kYXRhIChpbmYpOwor fQorCisvKiBIZWxwZXIgdG8gZ2V0IGRhdGEgZm9yIHBpZCBpbiBhIGZ1bmN0aW9uLiAgKi8KKwor c3RhdGljIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyoKK2dldF90aHJlYWRfZGF0YV9oZWxw ZXJfZm9yX3BpZCAocGlkX3QgcGlkKQoreworICBpbmZlcmlvciAqaW5mID0gZmluZF9pbmZlcmlv cl9waWQgKGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCk7CisgIHJldHVybiBnZXRfYWl4X3Ro cmVhZF92YXJpYWJsZXNfZGF0YSAoaW5mKTsKK30KIAogLyogUmV0dXJuIGEgcHJpbnRhYmxlIHJl cHJlc2VudGF0aW9uIG9mIHB0aGRlYnVnIGZ1bmN0aW9uIHJldHVybgogICAgU1RBVFVTLiAgKi8K QEAgLTMxOCw3ICszNTMsNyBAQCBwaWRfdG9fcHJjIChwdGlkX3QgKnB0aWRwKQogICBwdGlkX3Qg cHRpZDsKIAogICBwdGlkID0gKnB0aWRwOwotICBpZiAoUERfVElEIChwdGlkKSkKKyAgaWYgKHB0 aWQudGlkICgpICE9IDApCiAgICAgKnB0aWRwID0gcHRpZF90IChwdGlkLnBpZCAoKSk7CiB9CiAK QEAgLTM4OSw2ICs0MjQsOSBAQCBwZGNfcmVhZF9yZWdzIChwdGhkYl91c2VyX3QgdXNlcl9jdXJy ZW50X3BpZCwKICAgZG91YmxlIGZwcnNbcHBjX251bV9mcHJzXTsKICAgc3RydWN0IHB0eHNwcnMg c3ByczY0OwogICBzdHJ1Y3QgcHRzcHJzIHNwcnMzMjsKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFy aWFibGVzICpkYXRhOworICAKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3Bp ZCAodXNlcl9jdXJyZW50X3BpZCk7CiAgIAogICBpZiAoZGVidWdfYWl4X3RocmVhZCkKICAgICBn ZGJfcHJpbnRmIChnZGJfc3RkbG9nLCAicGRjX3JlYWRfcmVncyB0aWQ9JWQgZmxhZ3M9JXNcbiIs CkBAIC0zOTcsNyArNDM1LDcgQEAgcGRjX3JlYWRfcmVncyAocHRoZGJfdXNlcl90IHVzZXJfY3Vy cmVudF9waWQsCiAgIC8qIEdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLwogICBpZiAoZmxh Z3MgJiBQVEhEQl9GTEFHX0dQUlMpCiAgICAgewotICAgICAgaWYgKGFyY2g2NCkKKyAgICAgIGlm IChkYXRhLT5hcmNoNjQpCiAJewogCSAgaWYgKCFwdHJhY2U2NGFpeCAoUFRUX1JFQURfR1BSUywg dGlkLCAKIAkJCSAgICAodW5zaWduZWQgbG9uZykgZ3ByczY0LCAwLCBOVUxMKSkKQEAgLTQyMyw3 ICs0NjEsNyBAQCBwZGNfcmVhZF9yZWdzIChwdGhkYl91c2VyX3QgdXNlcl9jdXJyZW50X3BpZCwK ICAgLyogU3BlY2lhbC1wdXJwb3NlIHJlZ2lzdGVycy4gICovCiAgIGlmIChmbGFncyAmIFBUSERC X0ZMQUdfU1BSUykKICAgICB7Ci0gICAgICBpZiAoYXJjaDY0KQorICAgICAgaWYgKGRhdGEtPmFy Y2g2NCkKIAl7CiAJICBpZiAoIXB0cmFjZTY0YWl4IChQVFRfUkVBRF9TUFJTLCB0aWQsIAogCQkJ ICAgICh1bnNpZ25lZCBsb25nKSAmc3ByczY0LCAwLCBOVUxMKSkKQEAgLTQ1Niw2ICs0OTQsMTAg QEAgcGRjX3dyaXRlX3JlZ3MgKHB0aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRfcGlkLAogICAgICB0 aGlzIGlzIG5lZWRlZCwgSSBoYXZlIGltcGxlbWVudGVkIHdoYXQgSSB0aGluayBpdCBzaG91bGQg ZG8sCiAgICAgIGhvd2V2ZXIgdGhpcyBjb2RlIGlzIHVudGVzdGVkLiAgKi8KIAorICBzdHJ1Y3Qg YWl4X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7CisgIAorICBkYXRhID0gZ2V0X3RocmVhZF9kYXRh X2hlbHBlcl9mb3JfcGlkICh1c2VyX2N1cnJlbnRfcGlkKTsKKwogICBpZiAoZGVidWdfYWl4X3Ro cmVhZCkKICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLCAicGRjX3dyaXRlX3JlZ3MgdGlkPSVk IGZsYWdzPSVzXG4iLAogCQkoaW50KSB0aWQsIGhleF9zdHJpbmcgKGZsYWdzKSk7CkBAIC00NjMs NyArNTA1LDcgQEAgcGRjX3dyaXRlX3JlZ3MgKHB0aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRfcGlk LAogICAvKiBHZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzLiAgKi8KICAgaWYgKGZsYWdzICYgUFRI REJfRkxBR19HUFJTKQogICAgIHsKLSAgICAgIGlmIChhcmNoNjQpCisgICAgICBpZiAoZGF0YS0+ YXJjaDY0KQogCXB0cmFjZTY0YWl4IChQVFRfV1JJVEVfR1BSUywgdGlkLCAKIAkJICAgICAodW5z aWduZWQgbG9uZykgY29udGV4dC0+Z3ByLCAwLCBOVUxMKTsKICAgICAgIGVsc2UKQEAgLTQ3OSw3 ICs1MjEsNyBAQCBwZGNfd3JpdGVfcmVncyAocHRoZGJfdXNlcl90IHVzZXJfY3VycmVudF9waWQs CiAgIC8qIFNwZWNpYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLwogICBpZiAoZmxhZ3MgJiBQVEhE Ql9GTEFHX1NQUlMpCiAgICAgewotICAgICAgaWYgKGFyY2g2NCkKKyAgICAgIGlmIChkYXRhLT5h cmNoNjQpCiAJewogCSAgcHRyYWNlNjRhaXggKFBUVF9XUklURV9TUFJTLCB0aWQsIAogCQkgICAg ICAgKHVuc2lnbmVkIGxvbmcpICZjb250ZXh0LT5tc3IsIDAsIE5VTEwpOwpAQCAtNDk5LDcgKzU0 MSw5IEBAIHBkY19yZWFkX2RhdGEgKHB0aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRfcGlkLCB2b2lk ICpidWYsCiAJICAgICAgIHB0aGRiX2FkZHJfdCBhZGRyLCBzaXplX3QgbGVuKQogewogICBpbnQg c3RhdHVzLCByZXQ7Ci0KKyAgaW5mZXJpb3IgKmluZiA9IGZpbmRfaW5mZXJpb3JfcGlkIChjdXJy ZW50X2luZmVyaW9yICgpLT5wcm9jZXNzX3RhcmdldCAoKSwgCisJCQkJICAgICB1c2VyX2N1cnJl bnRfcGlkKTsKKyAgCiAgIGlmIChkZWJ1Z19haXhfdGhyZWFkKQogICAgIGdkYl9wcmludGYgKGdk Yl9zdGRsb2csCiAJCSJwZGNfcmVhZF9kYXRhICh1c2VyX2N1cnJlbnRfcGlkID0gJWxkLCBidWYg PSAweCVseCwgYWRkciA9ICVzLCBsZW4gPSAlbGQpXG4iLApAQCAtNTA4LDE0ICs1NTIsMTMgQEAg cGRjX3JlYWRfZGF0YSAocHRoZGJfdXNlcl90IHVzZXJfY3VycmVudF9waWQsIHZvaWQgKmJ1ZiwK ICAgLyogVGhpcyBpcyBuZWVkZWQgdG8gZWxpbWluYXRlIHRoZSBkZXBlbmRlbmN5IG9mIGN1cnJl bnQgdGhyZWFkCiAgICAgIHdoaWNoIGlzIG51bGwgc28gdGhhdCB0aHJlYWQgcmVhZHMgdGhlIGNv cnJlY3QgdGFyZ2V0IG1lbW9yeS4gICovCiAgIHsKLSAgICBzY29wZWRfcmVzdG9yZV9jdXJyZW50 X3RocmVhZCByZXN0b3JlX2N1cnJlbnRfdGhyZWFkOwotICAgIC8qIEJlZm9yZSB0aGUgZmlyc3Qg aW5mZXJpb3IgaXMgYWRkZWQsIHdlIHBhc3MgaW5mZXJpb3JfcHRpZC5waWQgKCkKLSAgICAgICBm cm9tIHBkX2VuYWJsZSAoKSB3aGljaCBpcyAwLiAgVGhlcmUgaXMgbm8gbmVlZCB0byBzd2l0Y2gg dGhyZWFkcwotICAgICAgIGR1cmluZyBmaXJzdCBpbml0aWFsaXNhdGlvbi4gIEluIHRoZSByZXN0 IG9mIHRoZSBjYWxsYmFja3MgdGhlCi0gICAgICAgY3VycmVudCB0aHJlYWQgbmVlZHMgdG8gYmUg Y29ycmVjdC4gICovCi0gICAgaWYgKHVzZXJfY3VycmVudF9waWQgIT0gMCkKLSAgICAgIHN3aXRj aF90b190aHJlYWQgKGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgpLAotCQkJ cHRpZF90ICh1c2VyX2N1cnJlbnRfcGlkKSk7CisgICAgc2NvcGVkX3Jlc3RvcmUgc2F2ZV9pbmZl cmlvcl9wdGlkID0gbWFrZV9zY29wZWRfcmVzdG9yZSAoJmluZmVyaW9yX3B0aWQpOworICAgIGlu ZmVyaW9yX3B0aWQgPSBwdGlkX3QgKHVzZXJfY3VycmVudF9waWQpOworICAgIHNjb3BlZF9yZXN0 b3JlX2N1cnJlbnRfaW5mZXJpb3IgcmVzdG9yZV9pbmZlcmlvcjsKKyAgICBzZXRfY3VycmVudF9p bmZlcmlvciAoaW5mKTsKKworICAgIHNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfcHJvZ3JhbV9zcGFj ZSByZXN0b3JlX2N1cnJlbnRfcHJvZ3NwYWNlOworICAgIHNldF9jdXJyZW50X3Byb2dyYW1fc3Bh Y2UgKGluZi0+cHNwYWNlKTsKICAgICBzdGF0dXMgPSB0YXJnZXRfcmVhZF9tZW1vcnkgKGFkZHIs IChnZGJfYnl0ZSAqKSBidWYsIGxlbik7CiAgIH0KICAgcmV0ID0gc3RhdHVzID09IDAgPyBQRENf U1VDQ0VTUyA6IFBEQ19GQUlMVVJFOwpAQCAtNTMzLDEzICs1NzYsMjUgQEAgcGRjX3dyaXRlX2Rh dGEgKHB0aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRfcGlkLCB2b2lkICpidWYsCiAJCXB0aGRiX2Fk ZHJfdCBhZGRyLCBzaXplX3QgbGVuKQogewogICBpbnQgc3RhdHVzLCByZXQ7CisgIGluZmVyaW9y ICppbmYgPSBmaW5kX2luZmVyaW9yX3BpZCAoY3VycmVudF9pbmZlcmlvciAoKS0+cHJvY2Vzc190 YXJnZXQgKCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY3Vy cmVudF9waWQpOwogCiAgIGlmIChkZWJ1Z19haXhfdGhyZWFkKQogICAgIGdkYl9wcmludGYgKGdk Yl9zdGRsb2csCiAJCSJwZGNfd3JpdGVfZGF0YSAodXNlcl9jdXJyZW50X3BpZCA9ICVsZCwgYnVm ID0gMHglbHgsIGFkZHIgPSAlcywgbGVuID0gJWxkKVxuIiwKIAkJdXNlcl9jdXJyZW50X3BpZCwg KGxvbmcpIGJ1ZiwgaGV4X3N0cmluZyAoYWRkciksIGxlbik7CiAKLSAgc3RhdHVzID0gdGFyZ2V0 X3dyaXRlX21lbW9yeSAoYWRkciwgKGdkYl9ieXRlICopIGJ1ZiwgbGVuKTsKKyAgeworICAgIHNj b3BlZF9yZXN0b3JlIHNhdmVfaW5mZXJpb3JfcHRpZCA9IG1ha2Vfc2NvcGVkX3Jlc3RvcmUgKCZp bmZlcmlvcl9wdGlkKTsKKyAgICBpbmZlcmlvcl9wdGlkID0gcHRpZF90ICh1c2VyX2N1cnJlbnRf cGlkKTsKKyAgICBzY29wZWRfcmVzdG9yZV9jdXJyZW50X2luZmVyaW9yIHJlc3RvcmVfaW5mZXJp b3I7CisgICAgc2V0X2N1cnJlbnRfaW5mZXJpb3IgKGluZik7CisKKyAgICBzY29wZWRfcmVzdG9y ZV9jdXJyZW50X3Byb2dyYW1fc3BhY2UgcmVzdG9yZV9jdXJyZW50X3Byb2dzcGFjZTsKKyAgICBz ZXRfY3VycmVudF9wcm9ncmFtX3NwYWNlIChpbmYtPnBzcGFjZSk7CisgICAgc3RhdHVzID0gdGFy Z2V0X3dyaXRlX21lbW9yeSAoYWRkciwgKGdkYl9ieXRlICopIGJ1ZiwgbGVuKTsKKyAgfQorCiAg IHJldCA9IHN0YXR1cyA9PSAwID8gUERDX1NVQ0NFU1MgOiBQRENfRkFJTFVSRTsKIAogICBpZiAo ZGVidWdfYWl4X3RocmVhZCkKQEAgLTYzOSwzOSArNjk0LDYgQEAgcGNtcCAoY29uc3Qgdm9pZCAq cDF2LCBjb25zdCB2b2lkICpwMnYpCiAgIHJldHVybiBwMS0+cHRoaWQgPCBwMi0+cHRoaWQgPyAt MSA6IHAxLT5wdGhpZCA+IHAyLT5wdGhpZDsKIH0KIAotLyogaXRlcmF0ZV9vdmVyX3RocmVhZHMo KSBjYWxsYmFjayBmb3IgY291bnRpbmcgR0RCIHRocmVhZHMuCi0KLSAgIERvIG5vdCBjb3VudCB0 aGUgbWFpbiB0aHJlYWQgKHdob3NlIHRpZCBpcyB6ZXJvKS4gIFRoaXMgbWF0Y2hlcwotICAgdGhl IGxpc3Qgb2YgdGhyZWFkcyBwcm92aWRlZCBieSB0aGUgcHRocmVhZGRlYnVnIGxpYnJhcnksIHdo aWNoCi0gICBkb2VzIG5vdCBpbmNsdWRlIHRoYXQgbWFpbiB0aHJlYWQgZWl0aGVyLCBhbmQgdGh1 cyBhbGxvd3MgdXMKLSAgIHRvIGNvbXBhcmUgdGhlIHR3byBsaXN0cy4gICovCi0KLXN0YXRpYyBp bnQKLWdpdGVyX2NvdW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCwgdm9pZCAqY291bnRw KQotewotICBpZiAoUERfVElEICh0aHJlYWQtPnB0aWQpKQotICAgICgqKGludCAqKSBjb3VudHAp Kys7Ci0gIHJldHVybiAwOwotfQotCi0vKiBpdGVyYXRlX292ZXJfdGhyZWFkcygpIGNhbGxiYWNr IGZvciBhY2N1bXVsYXRpbmcgR0RCIHRocmVhZCBwaWRzLgotCi0gICBEbyBub3QgaW5jbHVkZSB0 aGUgbWFpbiB0aHJlYWQgKHdob3NlIHRpZCBpcyB6ZXJvKS4gIFRoaXMgbWF0Y2hlcwotICAgdGhl IGxpc3Qgb2YgdGhyZWFkcyBwcm92aWRlZCBieSB0aGUgcHRocmVhZGRlYnVnIGxpYnJhcnksIHdo aWNoCi0gICBkb2VzIG5vdCBpbmNsdWRlIHRoYXQgbWFpbiB0aHJlYWQgZWl0aGVyLCBhbmQgdGh1 cyBhbGxvd3MgdXMKLSAgIHRvIGNvbXBhcmUgdGhlIHR3byBsaXN0cy4gICovCi0KLXN0YXRpYyBp bnQKLWdpdGVyX2FjY3VtIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCwgdm9pZCAqYnVmcCkK LXsKLSAgaWYgKFBEX1RJRCAodGhyZWFkLT5wdGlkKSkKLSAgICB7Ci0gICAgICAqKihzdHJ1Y3Qg dGhyZWFkX2luZm8gKioqKSBidWZwID0gdGhyZWFkOwotICAgICAgKCooc3RydWN0IHRocmVhZF9p bmZvICoqKikgYnVmcCkrKzsKLSAgICB9Ci0gIHJldHVybiAwOwotfQotCiAvKiBwdGlkIGNvbXBh cmlzb24gZnVuY3Rpb24gKi8KIAogc3RhdGljIGludApAQCAtNzE5LDcgKzc0MSwxMCBAQCBnZXRf c2lnbmFsZWRfdGhyZWFkIChpbnQgcGlkKQogCQkgICAgc2l6ZW9mICh0aHJpbmYpLCAma3RpZCwg MSkgIT0gMSkKIAlicmVhazsKIAotICAgICAgaWYgKHRocmluZi50aV9jdXJzaWcgPT0gU0lHVFJB UCkKKyAgICAgIC8qIFdlIGFsc28gbmVlZCB0byBrZWVwIGluIG1pbmQgVHJhcCBhbmQgaW50ZXJy dXB0IG9yIGFueQorICAgICAgICAgc2lnbmFsIHRoYXQgbmVlZHMgdG8gYmUgaGFuZGxlZCBpbiBw ZF91cGRhdGUgKCkuICAqLworCisgICAgICBpZiAodGhyaW5mLnRpX2N1cnNpZykKIAlyZXR1cm4g dGhyaW5mLnRpX3RpZDsKICAgICB9CiAKQEAgLTc0MSw3ICs3NjYsNyBAQCBnZXRfc2lnbmFsZWRf dGhyZWFkIChpbnQgcGlkKQogICAgICAgIGhhdmUgZGlmZmljdWx0eSB3aXRoIGNlcnRhaW4gY2Fs bCBwYXR0ZXJucyAqLwogCiBzdGF0aWMgdm9pZAotc3luY190aHJlYWRsaXN0cyAoaW50IHBpZCkK K3N5bmNfdGhyZWFkbGlzdHMgKHBpZF90IHBpZCkgCiB7CiAgIGludCBjbWQsIHN0YXR1czsKICAg aW50IHBjb3VudCwgcHNpemUsIHBpLCBnY291bnQsIGdpOwpAQCAtNzUwLDYgKzc3NSwxMSBAQCBz eW5jX3RocmVhZGxpc3RzIChpbnQgcGlkKQogICBwdGhkYl9wdGhyZWFkX3QgcGR0aWQ7CiAgIHB0 aHJlYWRfdCBwdGhpZDsKICAgcHRoZGJfdGlkX3QgdGlkOworICBwcm9jZXNzX3N0cmF0dW1fdGFy Z2V0ICpwcm9jX3RhcmdldAorICAgICAgICAgICAgPSBjdXJyZW50X2luZmVyaW9yICgpLT5wcm9j ZXNzX3RhcmdldCAoKTsKKyAgdGhyZWFkX2luZm8gICp0cDsKKyAgc3RydWN0IGFpeF90aHJlYWRf dmFyaWFibGVzICpkYXRhOworICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcGlk IChwaWQpOwogCiAgIC8qIEFjY3VtdWxhdGUgYW4gYXJyYXkgb2YgbGlicHRoZGVidWcgdGhyZWFk cyBzb3J0ZWQgYnkgcHRocmVhZCBpZC4gICovCiAKQEAgLTc1OSwxMSArNzg5LDExIEBAIHN5bmNf dGhyZWFkbGlzdHMgKGludCBwaWQpCiAKICAgZm9yIChjbWQgPSBQVEhEQl9MSVNUX0ZJUlNUOzsg Y21kID0gUFRIREJfTElTVF9ORVhUKQogICAgIHsKLSAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJl YWQgKHBkX3Nlc3Npb24sICZwZHRpZCwgY21kKTsKKyAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJl YWQgKGRhdGEtPnBkX3Nlc3Npb24sICZwZHRpZCwgY21kKTsKICAgICAgIGlmIChzdGF0dXMgIT0g UFRIREJfU1VDQ0VTUyB8fCBwZHRpZCA9PSBQVEhEQl9JTlZBTElEX1BUSFJFQUQpCiAJYnJlYWs7 CiAKLSAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfcHRpZCAocGRfc2Vzc2lvbiwgcGR0aWQs ICZwdGhpZCk7CisgICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3B0aWQgKGRhdGEtPnBkX3Nl c3Npb24sIHBkdGlkLCAmcHRoaWQpOwogICAgICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNT IHx8IHB0aGlkID09IFBUSERCX0lOVkFMSURfUFRJRCkKIAljb250aW51ZTsKIApAQCAtNzgwLDcg KzgxMCw3IEBAIHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAKICAgZm9yIChwaSA9IDA7IHBp IDwgcGNvdW50OyBwaSsrKQogICAgIHsKLSAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfdGlk IChwZF9zZXNzaW9uLCBwYnVmW3BpXS5wZHRpZCwgJnRpZCk7CisgICAgICBzdGF0dXMgPSBwdGhk Yl9wdGhyZWFkX3RpZCAoZGF0YS0+cGRfc2Vzc2lvbiwgcGJ1ZltwaV0ucGR0aWQsICZ0aWQpOwog ICAgICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTKQogCXRpZCA9IFBUSERCX0lOVkFMSURf VElEOwogICAgICAgcGJ1ZltwaV0udGlkID0gdGlkOwpAQCAtNzkwLDEzICs4MjAsMTggQEAgc3lu Y190aHJlYWRsaXN0cyAoaW50IHBpZCkKIAogICAvKiBBY2N1bXVsYXRlIGFuIGFycmF5IG9mIEdE QiB0aHJlYWRzIHNvcnRlZCBieSBwaWQuICAqLwogCisgIC8qIGdjb3VudCBpcyBHREIgdGhyZWFk IGNvdW50IGFuZCBwY291bnQgaXMgcHRocmVhZGxpYiB0aHJlYWQgY291bnQuICAqLworCiAgIGdj b3VudCA9IDA7Ci0gIGl0ZXJhdGVfb3Zlcl90aHJlYWRzIChnaXRlcl9jb3VudCwgJmdjb3VudCk7 CisgIGZvciAodGhyZWFkX2luZm8gKnRwIDogYWxsX3RocmVhZHMgKHByb2NfdGFyZ2V0LCBwdGlk X3QgKHBpZCkpKQorICAgIGdjb3VudCsrOwogICBnID0gZ2J1ZiA9IFhORVdWRUMgKHN0cnVjdCB0 aHJlYWRfaW5mbyAqLCBnY291bnQpOwotICBpdGVyYXRlX292ZXJfdGhyZWFkcyAoZ2l0ZXJfYWNj dW0sICZnKTsKKyAgZm9yICh0aHJlYWRfaW5mbyAqdHAgOiBhbGxfdGhyZWFkcyAocHJvY190YXJn ZXQsIHB0aWRfdCAocGlkKSkpCisgICAgKmcrKyA9IHRwOwogICBxc29ydCAoZ2J1ZiwgZ2NvdW50 LCBzaXplb2YgKmdidWYsIGdjbXApOwogCiAgIC8qIEFwcGx5IGRpZmZlcmVuY2VzIGJldHdlZW4g dGhlIHR3byBhcnJheXMgdG8gR0RCJ3MgdGhyZWFkIGxpc3QuICAqLworCiAgIGZvciAocGkgPSBn aSA9IDA7IHBpIDwgcGNvdW50IHx8IGdpIDwgZ2NvdW50OykKICAgICB7CiAgICAgICBpZiAocGkg PT0gcGNvdW50KQpAQCAtODEwLDggKzg0NSw2IEBAIHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQp CiAJICBwcml2LT5wZHRpZCA9IHBidWZbcGldLnBkdGlkOwogCSAgcHJpdi0+dGlkID0gcGJ1Zltw aV0udGlkOwogCi0JICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpwcm9jX3RhcmdldAotCSAgICA9 IGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgpOwogCSAgdGhyZWFkID0gYWRk X3RocmVhZF93aXRoX2luZm8gKHByb2NfdGFyZ2V0LAogCQkJCQkgcHRpZF90IChwaWQsIDAsIHBi dWZbcGldLnB0aGlkKSwKIAkJCQkJIHByaXYpOwpAQCAtODQxLDEzICs4NzQsMjggQEAgc3luY190 aHJlYWRsaXN0cyAoaW50IHBpZCkKIAkgICAgfQogCSAgZWxzZSBpZiAoY21wX3Jlc3VsdCA+IDAp CiAJICAgIHsKLQkgICAgICBkZWxldGVfdGhyZWFkIChnYnVmW2dpXSk7Ci0JICAgICAgZ2krKzsK KwkgICAgICAvKiBUaGlzIGlzIHRvIG1ha2UgdGhlIG1haW4gcHJvY2VzcyB0aHJlYWQgbm93IGxv b2sKKyAgICAgICAgICAgICAgICAgbGlrZSBhIHRocmVhZC4gICovCisKKwkgICAgICBpZiAoZ3B0 aWQuaXNfcGlkICgpKQorCQl7CisJCSAgdHAgPSBmaW5kX3RocmVhZF9wdGlkIChwcm9jX3Rhcmdl dCwgZ3B0aWQpOworCQkgIHRocmVhZF9jaGFuZ2VfcHRpZCAocHJvY190YXJnZXQsIGdwdGlkLCBw cHRpZCk7CisJCSAgYWl4X3RocmVhZF9pbmZvICpwcml2ID0gbmV3IGFpeF90aHJlYWRfaW5mbzsK KwkJICBwcml2LT5wZHRpZCA9IHBidWZbcGldLnBkdGlkOworCQkgIHByaXYtPnRpZCA9IHBidWZb cGldLnRpZDsKKwkJICB0cC0+cHJpdi5yZXNldCAocHJpdik7CisJCSAgZ2krKzsKKwkJICBwaSsr OworCQl9CisJICAgICAgZWxzZQorCQl7CisJCSAgZGVsZXRlX3RocmVhZCAoZ2J1ZltnaV0pOwor CQkgIGdpKys7CisJCX0KIAkgICAgfQogCSAgZWxzZQogCSAgICB7Ci0JICAgICAgcHJvY2Vzc19z dHJhdHVtX3RhcmdldCAqcHJvY190YXJnZXQKLQkJPSBjdXJyZW50X2luZmVyaW9yICgpLT5wcm9j ZXNzX3RhcmdldCAoKTsKIAkgICAgICB0aHJlYWQgPSBhZGRfdGhyZWFkIChwcm9jX3RhcmdldCwg cHB0aWQpOwogCiAJICAgICAgYWl4X3RocmVhZF9pbmZvICpwcml2ID0gbmV3IGFpeF90aHJlYWRf aW5mbzsKQEAgLTg4MSwxNyArOTI5LDIwIEBAIGl0ZXJfdGlkIChzdHJ1Y3QgdGhyZWFkX2luZm8g KnRocmVhZCwgdm9pZCAqdGlkcCkKICAgIHJldHVybiBhIHBpZC1vbmx5IHB0aWQgd2l0aCBQSUQu ICAqLwogCiBzdGF0aWMgcHRpZF90Ci1wZF91cGRhdGUgKGludCBwaWQpCitwZF91cGRhdGUgKHBp ZF90IHBpZCkKIHsKICAgaW50IHN0YXR1czsKICAgcHRpZF90IHB0aWQ7CiAgIHB0aGRiX3RpZF90 IHRpZDsKICAgc3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQgPSBOVUxMOworICBzdHJ1Y3QgYWl4 X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7CisKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxw ZXJfZm9yX3BpZCAocGlkKTsKIAotICBpZiAoIXBkX2FjdGl2ZSkKKyAgaWYgKCFkYXRhLT5wZF9h Y3RpdmUpCiAgICAgcmV0dXJuIHB0aWRfdCAocGlkKTsKIAotICBzdGF0dXMgPSBwdGhkYl9zZXNz aW9uX3VwZGF0ZSAocGRfc2Vzc2lvbik7CisgIHN0YXR1cyA9IHB0aGRiX3Nlc3Npb25fdXBkYXRl IChkYXRhLT5wZF9zZXNzaW9uKTsKICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTKQogICAg IHJldHVybiBwdGlkX3QgKHBpZCk7CiAKQEAgLTkxNSwzNCArOTY2LDIzIEBAIHBkX3VwZGF0ZSAo aW50IHBpZCkKICAgIGZvciB0aGF0IHRocmVhZC4gIE90aGVyd2lzZSwgcmV0dXJuIGEgcHRpZC1v bmx5IHB0aWQgdXNpbmcgUElELiAgKi8KIAogc3RhdGljIHB0aWRfdAotcGRfYWN0aXZhdGUgKGlu dCBwaWQpCitwZF9hY3RpdmF0ZSAocGlkX3QgcGlkKQogewogICBpbnQgc3RhdHVzOwotCQkKLSAg c3RhdHVzID0gcHRoZGJfc2Vzc2lvbl9pbml0IChwaWQsIGFyY2g2NCA/IFBFTV82NEJJVCA6IFBF TV8zMkJJVCwKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworICBkYXRhID0g Z2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcGlkIChwaWQpOworICAKKyAgc3RhdHVzID0gcHRo ZGJfc2Vzc2lvbl9pbml0IChwaWQsIGRhdGEtPmFyY2g2NCA/IFBFTV82NEJJVCA6IFBFTV8zMkJJ VCwKIAkJCSAgICAgICBQVEhEQl9GTEFHX1JFR1MsICZwZF9jYWxsYmFja3MsIAotCQkJICAgICAg ICZwZF9zZXNzaW9uKTsKKwkJCSAgICAgICAmZGF0YS0+cGRfc2Vzc2lvbik7CiAgIGlmIChzdGF0 dXMgIT0gUFRIREJfU1VDQ0VTUykKICAgICB7CiAgICAgICByZXR1cm4gcHRpZF90IChwaWQpOwog ICAgIH0KLSAgcGRfYWN0aXZlID0gMTsKKyAgZGF0YS0+cGRfYWN0aXZlID0gMTsKICAgcmV0dXJu IHBkX3VwZGF0ZSAocGlkKTsKIH0KIAotLyogVW5kbyB0aGUgZWZmZWN0cyBvZiBwZF9hY3RpdmF0 ZSgpLiAgKi8KLQotc3RhdGljIHZvaWQKLXBkX2RlYWN0aXZhdGUgKHZvaWQpCi17Ci0gIGlmICgh cGRfYWN0aXZlKQotICAgIHJldHVybjsKLSAgcHRoZGJfc2Vzc2lvbl9kZXN0cm95IChwZF9zZXNz aW9uKTsKLSAgCi0gIHBpZF90b19wcmMgKCZpbmZlcmlvcl9wdGlkKTsKLSAgcGRfYWN0aXZlID0g MDsKLX0KLQogLyogQW4gb2JqZWN0IGZpbGUgaGFzIGp1c3QgYmVlbiBsb2FkZWQuICBDaGVjayB3 aGV0aGVyIHRoZSBjdXJyZW50CiAgICBhcHBsaWNhdGlvbiBpcyBwdGhyZWFkZWQsIGFuZCBpZiBz bywgcHJlcGFyZSBmb3IgdGhyZWFkIGRlYnVnZ2luZy4gICovCiAKQEAgLTk1MiwxMyArOTkyLDE5 IEBAIHBkX2VuYWJsZSAodm9pZCkKICAgaW50IHN0YXR1czsKICAgY2hhciAqc3R1Yl9uYW1lOwog ICBzdHJ1Y3QgYm91bmRfbWluaW1hbF9zeW1ib2wgbXM7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3Zh cmlhYmxlcyAqZGF0YTsKKworICBpZiAoIWluZmVyaW9yX3B0aWQucGlkICgpKQorICAgIHJldHVy bjsKKyAgCisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlkIChpbmZlcmlv cl9wdGlkKTsKIAogICAvKiBEb24ndCBpbml0aWFsaXplIHR3aWNlLiAgKi8KLSAgaWYgKHBkX2Fi bGUpCisgIGlmIChkYXRhLT5wZF9hYmxlKQogICAgIHJldHVybjsKIAogICAvKiBDaGVjayBhcHBs aWNhdGlvbiB3b3JkIHNpemUuICAqLwotICBhcmNoNjQgPSByZWdpc3Rlcl9zaXplICh0YXJnZXRf Z2RiYXJjaCAoKSwgMCkgPT0gODsKKyAgZGF0YS0+YXJjaDY0ID0gcmVnaXN0ZXJfc2l6ZSAodGFy Z2V0X2dkYmFyY2ggKCksIDApID09IDg7CiAKICAgLyogQ2hlY2sgd2hldGhlciB0aGUgYXBwbGlj YXRpb24gaXMgcHRocmVhZGVkLiAgKi8KICAgc3R1Yl9uYW1lID0gTlVMTDsKQEAgLTk3MiwxMyAr MTAxOCwxOSBAQCBwZF9lbmFibGUgKHZvaWQpCiAgIG1zID0gbG9va3VwX21pbmltYWxfc3ltYm9s IChzdHViX25hbWUsIE5VTEwsIE5VTEwpOwogICBpZiAobXMubWluc3ltID09IE5VTEwpCiAgICAg cmV0dXJuOwotICBwZF9icmtfYWRkciA9IG1zLnZhbHVlX2FkZHJlc3MgKCk7Ci0gIGlmICghY3Jl YXRlX3RocmVhZF9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgcGRfYnJrX2Fk ZHIpKQorICBkYXRhLT5wZF9icmtfYWRkciA9IG1zLnZhbHVlX2FkZHJlc3MgKCk7CisgIGlmICgh Y3JlYXRlX3RocmVhZF9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgZGF0YS0+ cGRfYnJrX2FkZHIpKQogICAgIHJldHVybjsKIAogICAvKiBQcmVwYXJlIGZvciB0aHJlYWQgZGVi dWdnaW5nLiAgKi8KICAgY3VycmVudF9pbmZlcmlvciAoKS0+cHVzaF90YXJnZXQgKCZhaXhfdGhy ZWFkX29wcyk7Ci0gIHBkX2FibGUgPSAxOworICBkYXRhLT5wZF9hYmxlID0gMTsgCisKKyAgaW5m ZXJpb3IgKmluZiA9IGN1cnJlbnRfaW5mZXJpb3IgKCk7IAorICAvKiBXaGVuIGF0dGFjaGluZyAv IGhhbmRsaW5nIGZvcmsgY2hpbGQsIGRvbid0IHRyeSBhY3RpdmF0aW5nCisgICAgIHRocmVhZCBk ZWJ1Z2dpbmcgdW50aWwgd2Uga25vdyBhYm91dCBhbGwgc2hhcmVkIGxpYnJhcmllcy4gICovIAor ICBpZiAoaW5mLT5pbl9pbml0aWFsX2xpYnJhcnlfc2NhbikKKyAgICByZXR1cm47CiAKICAgLyog SWYgd2UncmUgZGVidWdnaW5nIGEgY29yZSBmaWxlIG9yIGFuIGF0dGFjaGVkIGluZmVyaW9yLCB0 aGUKICAgICAgcHRocmVhZCBsaWJyYXJ5IG1heSBhbHJlYWR5IGhhdmUgYmVlbiBpbml0aWFsaXpl ZCwgc28gdHJ5IHRvCkBAIC05OTEsMjggKzEwNDMsMzEgQEAgcGRfZW5hYmxlICh2b2lkKQogc3Rh dGljIHZvaWQKIHBkX2Rpc2FibGUgKHZvaWQpCiB7Ci0gIGlmICghcGRfYWJsZSkKKyAgc3RydWN0 IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hl bHBlcl9mb3JfcHRpZCAoaW5mZXJpb3JfcHRpZCk7CisKKyAgaWYgKCFkYXRhLT5wZF9hYmxlKQog ICAgIHJldHVybjsKLSAgaWYgKHBkX2FjdGl2ZSkKLSAgICBwZF9kZWFjdGl2YXRlICgpOwotICBw ZF9hYmxlID0gMDsKKyAgaWYgKCFkYXRhLT5wZF9hY3RpdmUpCisgICAgcmV0dXJuOworICBwdGhk Yl9zZXNzaW9uX2Rlc3Ryb3kgKGRhdGEtPnBkX3Nlc3Npb24pOworIAorICBwaWRfdG9fcHJjICgm aW5mZXJpb3JfcHRpZCk7CisgIGRhdGEtPnBkX2FjdGl2ZSA9IDA7CisgIGRhdGEtPnBkX2FibGUg PSAwOwogICBjdXJyZW50X2luZmVyaW9yICgpLT51bnB1c2hfdGFyZ2V0ICgmYWl4X3RocmVhZF9v cHMpOwogfQogCiAvKiBuZXdfb2JqZmlsZSBvYnNlcnZlciBjYWxsYmFjay4KIAogICAgSWYgT0JK RklMRSBpcyBub24tbnVsbCwgY2hlY2sgd2hldGhlciBhIHRocmVhZGVkIGFwcGxpY2F0aW9uIGlz Ci0gICBiZWluZyBkZWJ1Z2dlZCwgYW5kIGlmIHNvLCBwcmVwYXJlIGZvciB0aHJlYWQgZGVidWdn aW5nLgotCi0gICBJZiBPQkpGSUxFIGlzIG51bGwsIHN0b3AgZGVidWdnaW5nIHRocmVhZHMuICAq LworICAgYmVpbmcgZGVidWdnZWQsIGFuZCBpZiBzbywgcHJlcGFyZSBmb3IgdGhyZWFkIGRlYnVn Z2luZy4gICovCiAKIHN0YXRpYyB2b2lkCiBuZXdfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUpCiB7CiAgIGlmIChvYmpmaWxlKQogICAgIHBkX2VuYWJsZSAoKTsKLSAgZWxzZQotICAg IHBkX2Rpc2FibGUgKCk7CiB9CiAKIC8qIEF0dGFjaCB0byBwcm9jZXNzIHNwZWNpZmllZCBieSBB UkdTLiAgKi8KQEAgLTEwNDIsOCArMTA5NywxMSBAQCBhaXhfdGhyZWFkX3RhcmdldDo6cmVzdW1l IChwdGlkX3QgcHRpZCwgaW50IHN0ZXAsIGVudW0gZ2RiX3NpZ25hbCBzaWcpCiB7CiAgIHN0cnVj dCB0aHJlYWRfaW5mbyAqdGhyZWFkOwogICBwdGhkYl90aWRfdCB0aWRbMl07CisgIHN0cnVjdCBh aXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAgCisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFf aGVscGVyX2Zvcl9wdGlkIChwdGlkKTsKIAotICBpZiAoIVBEX1RJRCAocHRpZCkpCisgIGlmIChw dGlkLnRpZCAoKSA9PSAwKQogICAgIHsKICAgICAgIHNjb3BlZF9yZXN0b3JlIHNhdmVfaW5mZXJp b3JfcHRpZCA9IG1ha2Vfc2NvcGVkX3Jlc3RvcmUgKCZpbmZlcmlvcl9wdGlkKTsKICAgICAgIApA QCAtMTA2NSw3ICsxMTIzLDcgQEAgYWl4X3RocmVhZF90YXJnZXQ6OnJlc3VtZSAocHRpZF90IHB0 aWQsIGludCBzdGVwLCBlbnVtIGdkYl9zaWduYWwgc2lnKQogCSAgICAgICBwdGlkLmx3cCAoKSk7 CiAgICAgICB0aWRbMV0gPSAwOwogCi0gICAgICBpZiAoYXJjaDY0KQorICAgICAgaWYgKGRhdGEt PmFyY2g2NCkKIAlwdHJhY2U2NGFpeCAoUFRUX0NPTlRJTlVFLCB0aWRbMF0sIChsb25nIGxvbmcp IDEsCiAJCSAgICAgZ2RiX3NpZ25hbF90b19ob3N0IChzaWcpLCAoUFRSQUNFX1RZUEVfQVJHNSkg dGlkKTsKICAgICAgIGVsc2UKQEAgLTEwODIsNiArMTE0MCw3IEBAIHB0aWRfdAogYWl4X3RocmVh ZF90YXJnZXQ6OndhaXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0dXMgKnN0 YXR1cywKIAkJCSB0YXJnZXRfd2FpdF9mbGFncyBvcHRpb25zKQogeworICBzdHJ1Y3QgYWl4X3Ro cmVhZF92YXJpYWJsZXMgKmRhdGE7CiAgIHsKICAgICBwaWRfdG9fcHJjICgmcHRpZCk7CiAKQEAg LTEwOTUsOCArMTE1NCwxMCBAQCBhaXhfdGhyZWFkX3RhcmdldDo6d2FpdCAocHRpZF90IHB0aWQs IHN0cnVjdCB0YXJnZXRfd2FpdHN0YXR1cyAqc3RhdHVzLAogICAgICBwaWQtb25seSBwdGlkcy4g ICovCiAgIGdkYl9hc3NlcnQgKHB0aWQuaXNfcGlkICgpKTsKIAorICBkYXRhID0gZ2V0X3RocmVh ZF9kYXRhX2hlbHBlcl9mb3JfcHRpZCAocHRpZCk7CisKICAgLyogQ2hlY2sgd2hldGhlciBsaWJw dGhkZWJ1ZyBtaWdodCBiZSByZWFkeSB0byBiZSBpbml0aWFsaXplZC4gICovCi0gIGlmICghcGRf YWN0aXZlICYmIHN0YXR1cy0+a2luZCAoKSA9PSBUQVJHRVRfV0FJVEtJTkRfU1RPUFBFRAorICBp ZiAoIWRhdGEtPnBkX2FjdGl2ZSAmJiBzdGF0dXMtPmtpbmQgKCkgPT0gVEFSR0VUX1dBSVRLSU5E X1NUT1BQRUQKICAgICAgICYmIHN0YXR1cy0+c2lnICgpID09IEdEQl9TSUdOQUxfVFJBUCkKICAg ICB7CiAgICAgICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpwcm9jX3RhcmdldApAQCAtMTEwNSw3 ICsxMTY2LDcgQEAgYWl4X3RocmVhZF90YXJnZXQ6OndhaXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3Qg dGFyZ2V0X3dhaXRzdGF0dXMgKnN0YXR1cywKICAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo ID0gcmVnY2FjaGUtPmFyY2ggKCk7CiAKICAgICAgIGlmIChyZWdjYWNoZV9yZWFkX3BjIChyZWdj YWNoZSkKLQkgIC0gZ2RiYXJjaF9kZWNyX3BjX2FmdGVyX2JyZWFrIChnZGJhcmNoKSA9PSBwZF9i cmtfYWRkcikKKwkgIC0gZ2RiYXJjaF9kZWNyX3BjX2FmdGVyX2JyZWFrIChnZGJhcmNoKSA9PSBk YXRhLT5wZF9icmtfYWRkcikKIAlyZXR1cm4gcGRfYWN0aXZhdGUgKHB0aWQucGlkICgpKTsKICAg ICB9CiAKQEAgLTEyMjksMTggKzEyOTAsMjAgQEAgZmV0Y2hfcmVnc191c2VyX3RocmVhZCAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJfcHRocmVhZF90IHBkdGlkKQogICBwcGNfZ2Ri YXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwPHBwY19nZGJhcmNoX3RkZXA+IChnZGJhcmNo KTsKICAgaW50IHN0YXR1cywgaTsKICAgcHRoZGJfY29udGV4dF90IGN0eDsKKyAgc3RydWN0IGFp eF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBl cl9mb3JfcHRpZCAoaW5mZXJpb3JfcHRpZCk7CiAKICAgaWYgKGRlYnVnX2FpeF90aHJlYWQpCiAg ICAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywgCiAJCSJmZXRjaF9yZWdzX3VzZXJfdGhyZWFkICVs eFxuIiwgKGxvbmcpIHBkdGlkKTsKLSAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9jb250ZXh0IChw ZF9zZXNzaW9uLCBwZHRpZCwgJmN0eCk7CisgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfY29udGV4 dCAoZGF0YS0+cGRfc2Vzc2lvbiwgcGR0aWQsICZjdHgpOwogICBpZiAoc3RhdHVzICE9IFBUSERC X1NVQ0NFU1MpCiAgICAgZXJyb3IgKF8oImFpeC10aHJlYWQ6IGZldGNoX3JlZ2lzdGVyczogcHRo ZGJfcHRocmVhZF9jb250ZXh0IHJldHVybmVkICVzIiksCiAJICAgcGRfc3RhdHVzMnN0ciAoc3Rh dHVzKSk7CiAKICAgLyogR2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycy4gICovCiAKLSAgaWYgKGFy Y2g2NCkKKyAgaWYgKGRhdGEtPmFyY2g2NCkKICAgICBzdXBwbHlfZ3ByczY0IChyZWdjYWNoZSwg Y3R4Lmdwcik7CiAgIGVsc2UKICAgICBmb3IgKGkgPSAwOyBpIDwgcHBjX251bV9ncHJzOyBpKysp CkBAIC0xMjUzLDcgKzEzMTYsNyBAQCBmZXRjaF9yZWdzX3VzZXJfdGhyZWFkIChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCBwdGhkYl9wdGhyZWFkX3QgcGR0aWQpCiAKICAgLyogU3BlY2lhbCBy ZWdpc3RlcnMuICAqLwogCi0gIGlmIChhcmNoNjQpCisgIGlmIChkYXRhLT5hcmNoNjQpCiAgICAg c3VwcGx5X3NwcnM2NCAocmVnY2FjaGUsIGN0eC5pYXIsIGN0eC5tc3IsIGN0eC5jciwgY3R4Lmxy LCBjdHguY3RyLAogCQkJICAgICBjdHgueGVyLCBjdHguZnBzY3IpOwogICBlbHNlCkBAIC0xMjg4 LDE4ICsxMzUxLDIxIEBAIGZldGNoX3JlZ3Nfa2VybmVsX3RocmVhZCAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgaW50IHJlZ25vLAogICBzdHJ1Y3QgcHR4c3BycyBzcHJzNjQ7CiAgIHN0cnVj dCBwdHNwcnMgc3ByczMyOwogICBpbnQgaTsKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVz ICpkYXRhOworICAKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKHJl Z2NhY2hlLT5wdGlkICgpKTsKIAogICBpZiAoZGVidWdfYWl4X3RocmVhZCkKICAgICBnZGJfcHJp bnRmIChnZGJfc3RkbG9nLAogCQkiZmV0Y2hfcmVnc19rZXJuZWxfdGhyZWFkIHRpZD0lbHggcmVn bm89JWQgYXJjaDY0PSVkXG4iLAotCQkobG9uZykgdGlkLCByZWdubywgYXJjaDY0KTsKKwkJKGxv bmcpIHRpZCwgcmVnbm8sIGRhdGEtPmFyY2g2NCk7CiAKICAgLyogR2VuZXJhbC1wdXJwb3NlIHJl Z2lzdGVycy4gICovCiAgIGlmIChyZWdubyA9PSAtMQogICAgICAgfHwgKHRkZXAtPnBwY19ncDBf cmVnbnVtIDw9IHJlZ25vCiAJICAmJiByZWdubyA8IHRkZXAtPnBwY19ncDBfcmVnbnVtICsgcHBj X251bV9ncHJzKSkKICAgICB7Ci0gICAgICBpZiAoYXJjaDY0KQorICAgICAgaWYgKGRhdGEtPmFy Y2g2NCkKIAl7CiAJICBpZiAoIXB0cmFjZTY0YWl4IChQVFRfUkVBRF9HUFJTLCB0aWQsIAogCQkJ ICAgICh1bnNpZ25lZCBsb25nKSBncHJzNjQsIDAsIE5VTEwpKQpAQCAtMTMzMSw3ICsxMzk3LDcg QEAgZmV0Y2hfcmVnc19rZXJuZWxfdGhyZWFkIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBp bnQgcmVnbm8sCiAKICAgaWYgKHJlZ25vID09IC0xIHx8IHNwZWNpYWxfcmVnaXN0ZXJfcCAoZ2Ri YXJjaCwgcmVnbm8pKQogICAgIHsKLSAgICAgIGlmIChhcmNoNjQpCisgICAgICBpZiAoZGF0YS0+ YXJjaDY0KQogCXsKIAkgIGlmICghcHRyYWNlNjRhaXggKFBUVF9SRUFEX1NQUlMsIHRpZCwgCiAJ CQkgICAgKHVuc2lnbmVkIGxvbmcpICZzcHJzNjQsIDAsIE5VTEwpKQpAQCAtMTM2Myw3ICsxNDI5 LDExIEBAIGFpeF90aHJlYWRfdGFyZ2V0OjpmZXRjaF9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsIGludCByZWdubykKICAgc3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQ7CiAg IHB0aGRiX3RpZF90IHRpZDsKIAotICBpZiAoIVBEX1RJRCAocmVnY2FjaGUtPnB0aWQgKCkpKQor ICAvKiBJZiBhIG5ldyBpbmZlcmlvciBpcyBib3JuLCB0aGVuIGl0cyBwdGhyZWFkIGRlYnVnIGxp YnJhcnkgaXMgeWV0IHRvCisgICAgIGluaXRpYWxpc2VkIGFuZCBoZW5jZSBoYXMgbm8gcHJpdmF0 ZSBkYXRhLiBTbyB0aGUgYmVsb3cgaWYgY29uZGl0aW9uCisgICAgIGV4aXN0cy4gICovCisKKyAg aWYgKHJlZ2NhY2hlLT5wdGlkICgpLnRpZCAoKSA9PSAwKQogICAgIGJlbmVhdGggKCktPmZldGNo X3JlZ2lzdGVycyAocmVnY2FjaGUsIHJlZ25vKTsKICAgZWxzZQogICAgIHsKQEAgLTE1MTEsNiAr MTU4MSw4IEBAIHN0b3JlX3JlZ3NfdXNlcl90aHJlYWQgKGNvbnN0IHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsIHB0aGRiX3B0aHJlYWRfdCBwZHRpZCkKICAgcHRoZGJfY29udGV4dF90IGN0eDsK ICAgdWludDMyX3QgaW50MzI7CiAgIHVpbnQ2NF90IGludDY0OworICBzdHJ1Y3QgYWl4X3RocmVh ZF92YXJpYWJsZXMgKmRhdGE7CisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9w dGlkIChpbmZlcmlvcl9wdGlkKTsKIAogICBpZiAoZGVidWdfYWl4X3RocmVhZCkKICAgICBnZGJf cHJpbnRmIChnZGJfc3RkbG9nLCAKQEAgLTE1MTgsNyArMTU5MCw3IEBAIHN0b3JlX3JlZ3NfdXNl cl90aHJlYWQgKGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHB0aGRiX3B0aHJlYWRf dCBwZHRpZCkKIAogICAvKiBSZXRyaWV2ZSB0aGUgdGhyZWFkJ3MgY3VycmVudCBjb250ZXh0IGZv ciBpdHMgbm9uLXJlZ2lzdGVyCiAgICAgIHZhbHVlcy4gICovCi0gIHN0YXR1cyA9IHB0aGRiX3B0 aHJlYWRfY29udGV4dCAocGRfc2Vzc2lvbiwgcGR0aWQsICZjdHgpOworICBzdGF0dXMgPSBwdGhk Yl9wdGhyZWFkX2NvbnRleHQgKGRhdGEtPnBkX3Nlc3Npb24sIHBkdGlkLCAmY3R4KTsKICAgaWYg KHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTKQogICAgIGVycm9yIChfKCJhaXgtdGhyZWFkOiBzdG9y ZV9yZWdpc3RlcnM6IHB0aGRiX3B0aHJlYWRfY29udGV4dCByZXR1cm5lZCAlcyIpLAogCSAgIHBk X3N0YXR1czJzdHIgKHN0YXR1cykpOwpAQCAtMTUyOCw3ICsxNjAwLDcgQEAgc3RvcmVfcmVnc191 c2VyX3RocmVhZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJfcHRocmVh ZF90IHBkdGlkKQogICBmb3IgKGkgPSAwOyBpIDwgcHBjX251bV9ncHJzOyBpKyspCiAgICAgaWYg KFJFR19WQUxJRCA9PSByZWdjYWNoZS0+Z2V0X3JlZ2lzdGVyX3N0YXR1cyAodGRlcC0+cHBjX2dw MF9yZWdudW0gKyBpKSkKICAgICAgIHsKLQlpZiAoYXJjaDY0KQorCWlmIChkYXRhLT5hcmNoNjQp CiAJICB7CiAJICAgIHJlZ2NhY2hlLT5yYXdfY29sbGVjdCAodGRlcC0+cHBjX2dwMF9yZWdudW0g KyBpLCAodm9pZCAqKSAmaW50NjQpOwogCSAgICBjdHguZ3ByW2ldID0gaW50NjQ7CkBAIC0xNTQ1 LDcgKzE2MTcsNyBAQCBzdG9yZV9yZWdzX3VzZXJfdGhyZWFkIChjb25zdCBzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLCBwdGhkYl9wdGhyZWFkX3QgcGR0aWQpCiAgICAgZmlsbF9mcHJzIChyZWdj YWNoZSwgY3R4LmZwcik7CiAKICAgLyogU3BlY2lhbCByZWdpc3RlcnMgKGFsd2F5cyBrZXB0IGlu IGN0eCBhcyA2NCBiaXRzKS4gICovCi0gIGlmIChhcmNoNjQpCisgIGlmIChkYXRhLT5hcmNoNjQp CiAgICAgewogICAgICAgZmlsbF9zcHJzNjQgKHJlZ2NhY2hlLCAmY3R4LmlhciwgJmN0eC5tc3Is ICZjdHguY3IsICZjdHgubHIsICZjdHguY3RyLAogCQkJICAgICAmY3R4LnhlciwgJmN0eC5mcHNj cik7CkBAIC0xNTc2LDcgKzE2NDgsNyBAQCBzdG9yZV9yZWdzX3VzZXJfdGhyZWFkIChjb25zdCBz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBwdGhkYl9wdGhyZWFkX3QgcGR0aWQpCiAJY3R4LmZw c2NyID0gdG1wX2Zwc2NyOwogICAgIH0KIAotICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3NldGNv bnRleHQgKHBkX3Nlc3Npb24sIHBkdGlkLCAmY3R4KTsKKyAgc3RhdHVzID0gcHRoZGJfcHRocmVh ZF9zZXRjb250ZXh0IChkYXRhLT5wZF9zZXNzaW9uLCBwZHRpZCwgJmN0eCk7CiAgIGlmIChzdGF0 dXMgIT0gUFRIREJfU1VDQ0VTUykKICAgICBlcnJvciAoXygiYWl4LXRocmVhZDogc3RvcmVfcmVn aXN0ZXJzOiAiCiAJICAgICAicHRoZGJfcHRocmVhZF9zZXRjb250ZXh0IHJldHVybmVkICVzIiks CkBAIC0xNjAyLDYgKzE2NzQsOSBAQCBzdG9yZV9yZWdzX2tlcm5lbF90aHJlYWQgKGNvbnN0IHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubywKICAgZG91YmxlIGZwcnNbcHBjX251 bV9mcHJzXTsKICAgc3RydWN0IHB0eHNwcnMgc3ByczY0OwogICBzdHJ1Y3QgcHRzcHJzICBzcHJz MzI7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAgCisgIGRhdGEgPSBn ZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlkIChyZWdjYWNoZS0+cHRpZCAoKSk7CiAKICAg aWYgKGRlYnVnX2FpeF90aHJlYWQpCiAgICAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywgCkBAIC0x NjEzLDcgKzE2ODgsNyBAQCBzdG9yZV9yZWdzX2tlcm5lbF90aHJlYWQgKGNvbnN0IHN0cnVjdCBy ZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubywKICAgICAgIHx8ICh0ZGVwLT5wcGNfZ3AwX3Jl Z251bSA8PSByZWdubwogCSAgJiYgcmVnbm8gPCB0ZGVwLT5wcGNfZ3AwX3JlZ251bSArIHBwY19u dW1fZnBycykpCiAgICAgewotICAgICAgaWYgKGFyY2g2NCkKKyAgICAgIGlmIChkYXRhLT5hcmNo NjQpCiAJewogCSAgLyogUHJlLWZldGNoOiBzb21lIHJlZ3MgbWF5IG5vdCBiZSBpbiB0aGUgY2Fj aGUuICAqLwogCSAgcHRyYWNlNjRhaXggKFBUVF9SRUFEX0dQUlMsIHRpZCwgKHVuc2lnbmVkIGxv bmcpIGdwcnM2NCwgMCwgTlVMTCk7CkBAIC0xNjQ2LDcgKzE3MjEsNyBAQCBzdG9yZV9yZWdzX2tl cm5lbF90aHJlYWQgKGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubywK IAogICBpZiAocmVnbm8gPT0gLTEgfHwgc3BlY2lhbF9yZWdpc3Rlcl9wIChnZGJhcmNoLCByZWdu bykpCiAgICAgewotICAgICAgaWYgKGFyY2g2NCkKKyAgICAgIGlmIChkYXRhLT5hcmNoNjQpCiAJ ewogCSAgLyogUHJlLWZldGNoOiBzb21lIHJlZ2lzdGVycyB3b24ndCBiZSBpbiB0aGUgY2FjaGUu ICAqLwogCSAgcHRyYWNlNjRhaXggKFBUVF9SRUFEX1NQUlMsIHRpZCwgCkBAIC0xNzAzLDcgKzE3 NzgsNyBAQCBhaXhfdGhyZWFkX3RhcmdldDo6c3RvcmVfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8pCiAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdGhyZWFkOwog ICBwdGhkYl90aWRfdCB0aWQ7CiAKLSAgaWYgKCFQRF9USUQgKHJlZ2NhY2hlLT5wdGlkICgpKSkK KyAgaWYgKHJlZ2NhY2hlLT5wdGlkICgpLnRpZCAoKSA9PSAwKQogICAgIGJlbmVhdGggKCktPnN0 b3JlX3JlZ2lzdGVycyAocmVnY2FjaGUsIHJlZ25vKTsKICAgZWxzZQogICAgIHsKQEAgLTE3NDEs NyArMTgxNiw3IEBAIGFpeF90aHJlYWRfdGFyZ2V0Ojptb3Vybl9pbmZlcmlvciAoKQogewogICB0 YXJnZXRfb3BzICpiZW5lYXRoID0gdGhpcy0+YmVuZWF0aCAoKTsKIAotICBwZF9kZWFjdGl2YXRl ICgpOworICBwZF9kaXNhYmxlICgpOwogICBiZW5lYXRoLT5tb3Vybl9pbmZlcmlvciAoKTsKIH0K IApAQCAtMTc1MCw3ICsxODI1LDcgQEAgYWl4X3RocmVhZF90YXJnZXQ6Om1vdXJuX2luZmVyaW9y ICgpCiBib29sCiBhaXhfdGhyZWFkX3RhcmdldDo6dGhyZWFkX2FsaXZlIChwdGlkX3QgcHRpZCkK IHsKLSAgaWYgKCFQRF9USUQgKHB0aWQpKQorICBpZiAocHRpZC50aWQgKCkgPT0gMCkKICAgICBy ZXR1cm4gYmVuZWF0aCAoKS0+dGhyZWFkX2FsaXZlIChwdGlkKTsKIAogICAvKiBXZSB1cGRhdGUg dGhlIHRocmVhZCBsaXN0IGV2ZXJ5IHRpbWUgdGhlIGNoaWxkIHN0b3BzLCBzbyBhbGwKQEAgLTE3 NjYsNyArMTg0MSw3IEBAIGFpeF90aHJlYWRfdGFyZ2V0Ojp0aHJlYWRfYWxpdmUgKHB0aWRfdCBw dGlkKQogc3RkOjpzdHJpbmcKIGFpeF90aHJlYWRfdGFyZ2V0OjpwaWRfdG9fc3RyIChwdGlkX3Qg cHRpZCkKIHsKLSAgaWYgKCFQRF9USUQgKHB0aWQpKQorICBpZiAocHRpZC50aWQgKCkgPT0gMCkK ICAgICByZXR1cm4gYmVuZWF0aCAoKS0+cGlkX3RvX3N0ciAocHRpZCk7CiAKICAgcmV0dXJuIHN0 cmluZ19wcmludGYgKF8oIlRocmVhZCAlcyIpLCBwdWxvbmdlc3QgKHB0aWQudGlkICgpKSk7CkBA IC0xNzg2LDggKzE4NjEsMTEgQEAgYWl4X3RocmVhZF90YXJnZXQ6OmV4dHJhX3RocmVhZF9pbmZv IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCkKICAgcHRoZGJfZGV0YWNoc3RhdGVfdCBkZXRh Y2hzdGF0ZTsKICAgaW50IGNhbmNlbHBlbmQ7CiAgIHN0YXRpYyBjaGFyICpyZXQgPSBOVUxMOwor ICBzdHJ1Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7CisKKyAgZGF0YSA9IGdldF90aHJl YWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKHRocmVhZC0+cHRpZCk7CiAKLSAgaWYgKCFQRF9USUQg KHRocmVhZC0+cHRpZCkpCisgIGlmICh0aHJlYWQtPnB0aWQudGlkICgpID09IDApCiAgICAgcmV0 dXJuIE5VTEw7CiAKICAgc3RyaW5nX2ZpbGUgYnVmOwpAQCAtMTgwMCwyNCArMTg3OCwyNCBAQCBh aXhfdGhyZWFkX3RhcmdldDo6ZXh0cmFfdGhyZWFkX2luZm8gKHN0cnVjdCB0aHJlYWRfaW5mbyAq dGhyZWFkKQogICAgIC8qIGkxOG46IExpa2UgInRocmVhZC1pZGVudGlmaWVyICVkLCBbc3RhdGVd IHJ1bm5pbmcsIHN1c3BlbmRlZCIgKi8KICAgICBidWYucHJpbnRmIChfKCJ0aWQgJWQiKSwgKGlu dCl0aWQpOwogCi0gIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfc3RhdGUgKHBkX3Nlc3Npb24sIHBk dGlkLCAmc3RhdGUpOworICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3N0YXRlIChkYXRhLT5wZF9z ZXNzaW9uLCBwZHRpZCwgJnN0YXRlKTsKICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTKQog ICAgIHN0YXRlID0gUFNUX05PVFNVUDsKICAgYnVmLnByaW50ZiAoIiwgJXMiLCBzdGF0ZTJzdHIg KHN0YXRlKSk7CiAKLSAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9zdXNwZW5kc3RhdGUgKHBkX3Nl c3Npb24sIHBkdGlkLCAKKyAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9zdXNwZW5kc3RhdGUgKGRh dGEtPnBkX3Nlc3Npb24sIHBkdGlkLCAKIAkJCQkgICAgICAgJnN1c3BlbmRzdGF0ZSk7CiAgIGlm IChzdGF0dXMgPT0gUFRIREJfU1VDQ0VTUyAmJiBzdXNwZW5kc3RhdGUgPT0gUFNTX1NVU1BFTkRF RCkKICAgICAvKiBpMThuOiBMaWtlICJUaHJlYWQtSWQgJWQsIFtzdGF0ZV0gcnVubmluZywgc3Vz cGVuZGVkIiAqLwogICAgIGJ1Zi5wcmludGYgKF8oIiwgc3VzcGVuZGVkIikpOwogCi0gIHN0YXR1 cyA9IHB0aGRiX3B0aHJlYWRfZGV0YWNoc3RhdGUgKHBkX3Nlc3Npb24sIHBkdGlkLCAKKyAgc3Rh dHVzID0gcHRoZGJfcHRocmVhZF9kZXRhY2hzdGF0ZSAoZGF0YS0+cGRfc2Vzc2lvbiwgcGR0aWQs IAogCQkJCSAgICAgICZkZXRhY2hzdGF0ZSk7CiAgIGlmIChzdGF0dXMgPT0gUFRIREJfU1VDQ0VT UyAmJiBkZXRhY2hzdGF0ZSA9PSBQRFNfREVUQUNIRUQpCiAgICAgLyogaTE4bjogTGlrZSAiVGhy ZWFkLUlkICVkLCBbc3RhdGVdIHJ1bm5pbmcsIGRldGFjaGVkIiAqLwogICAgIGJ1Zi5wcmludGYg KF8oIiwgZGV0YWNoZWQiKSk7CiAKLSAgcHRoZGJfcHRocmVhZF9jYW5jZWxwZW5kIChwZF9zZXNz aW9uLCBwZHRpZCwgJmNhbmNlbHBlbmQpOworICBwdGhkYl9wdGhyZWFkX2NhbmNlbHBlbmQgKGRh dGEtPnBkX3Nlc3Npb24sIHBkdGlkLCAmY2FuY2VscGVuZCk7CiAgIGlmIChzdGF0dXMgPT0gUFRI REJfU1VDQ0VTUyAmJiBjYW5jZWxwZW5kKQogICAgIC8qIGkxOG46IExpa2UgIlRocmVhZC1JZCAl ZCwgW3N0YXRlXSBydW5uaW5nLCBjYW5jZWwgcGVuZGluZyIgKi8KICAgICBidWYucHJpbnRmIChf KCIsIGNhbmNlbCBwZW5kaW5nIikpOwpkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLWFpeC5jIGIvZ2Ri L3NvbGliLWFpeC5jCmluZGV4IGY0ODNmNTRkZTEzLi42YmU4MTA2NGViZCAxMDA2NDQKLS0tIGEv Z2RiL3NvbGliLWFpeC5jCisrKyBiL2dkYi9zb2xpYi1haXguYwpAQCAtNjE4LDYgKzYxOCwyMCBA QCBzb2xpYl9haXhfYmZkX29wZW4gKGNvbnN0IGNoYXIgKnBhdGhuYW1lKQogICAgICAgaWYgKG1l bWJlcl9uYW1lID09IGJmZF9nZXRfZmlsZW5hbWUgKG9iamVjdF9iZmQuZ2V0ICgpKSkKIAlicmVh azsKIAorICAgICAgc3RkOjpzdHJpbmcgcyA9IGJmZF9nZXRfZmlsZW5hbWUgKG9iamVjdF9iZmQu Z2V0ICgpKTsKKworICAgICAgLyogRm9yIGV2ZXJ5IGluZmVyaW9yIGFmdGVyIGZpcnN0IGludCBi ZmQgc3lzdGVtIHdlIAorCSB3aWxsIGhhdmUgdGhlIHBhdGhuYW1lIGluc3RlYWQgb2YgdGhlIG1l bWJlciBuYW1lCisJIHJlZ2lzdGVyZWQuIEhlbmNlIHRoZSBiZWxvdyBjb25kaXRpb24gZXhpc3Rz LiAgKi8KKworICAgICAgaWYgKHMuZmluZCAoJygnKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKwl7 CisJICBpbnQgcG9zID0gcy5maW5kICgnKCcpOworCSAgaW50IGxlbiA9IHMuZmluZCAoJyknKSAt IHMuZmluZCAoJygnKTsKKwkgIGlmIChzLnN1YnN0ciAocG9zKzEsIGxlbi0xKSA9PSBtZW1iZXJf bmFtZSkgCisJICAgIHJldHVybiBvYmplY3RfYmZkOworCX0KKwogICAgICAgb2JqZWN0X2JmZCA9 IGdkYl9iZmRfb3BlbnJfbmV4dF9hcmNoaXZlZF9maWxlIChhcmNoaXZlX2JmZC5nZXQgKCksCiAJ CQkJCQkgICAgIG9iamVjdF9iZmQuZ2V0ICgpKTsKICAgICB9Ci0tIAoyLjMxLjEKCg== --_004_CH2PR15MB3544E905156ECE35D5ADCD43D6A19CH2PR15MB3544namp_--