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 5D410385781F for ; Fri, 17 Feb 2023 15:15:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5D410385781F 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 (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 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=tvGl8uDnxijBe7Pd4o2UqCZBuh6x5RIDG61Esxbrkhs=; b=FcENh5cralLeBYRoMJeSRrSqlBnE3J8hEgnaDlyxuAOcGCA95pDiLQQgaNidHd2wvs3h wdIv6/CpLt7YTeH8SXxX5/v7MebV3qmanhQZ2wduQIobk6ClIbZtQf/uQgzBtX3kvIFv eWXHs99tcX5UnZMoemdmXhxv1Ldgt14nxMYp5WfMW03VXhm6qYfGeFx8O4wXMWUinazn S1dQRpyXH4saS7NzLvq7VrQw6NaVcL2QdSgqvRAV83EMjrFC3w0KSgAdC/YUBPhFez2U VUtNlkiZXo6xR+DEhaHvIibYkoGSnKM8+j8me2UhRl1QMUvvxAkFtt4AeRCbn8PTtApH VQ== 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 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+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-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_CH2PR15MB3544E905156ECE35D5ADCD43D6A19CH2PR15MB3544namp_ Content-Type: multipart/alternative; boundary="_000_CH2PR15MB3544E905156ECE35D5ADCD43D6A19CH2PR15MB3544namp_" --_000_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_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. 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 --_000_CH2PR15MB3544E905156ECE35D5ADCD43D6A19CH2PR15MB3544namp_-- --_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 RnJvbSAzZDZhZjQyMjQzNzRjM2Y3NzUzNjBkYjViMTNhYTc2NmE0MzMxYTJk IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFk aGFyIEthbWF0aCA8QWRpdHlhLkthbWF0aDFAaWJtLmNvbT4KRGF0ZTogRnJp LCAxNyBGZWIgMjAyMyAwOTowNzo0NCAtMDYwMApTdWJqZWN0OiBbUEFUQ0hd 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 YWRzIG9mIHRoZSBjdXJyZW50CmluZmVyaW9yIGluc3RlYWQuCgpXZSBhbHNv IHNraXAgY2FsbGluZyBwZF9hY3RpdmF0ZQpmcm9tIHBkX2VuYWJsZSBpZiB0 aGF0IGluX2luaXRpYWxfbGlicmFyeV9zY2FuIGZsYWcgaXMKdHJ1ZSBmb3Ig dGhlIGN1cnJlbnQgaW5mZXJpb3IuCgpGaW5hbGx5LCB0aGUgcHJlc2VuY2Ug b2YgdGhlIHRocmVhZCBsaWJyYXJ5IGluIGFueSBidXQKdGhlIGZpcnN0IGlu ZmVyaW9yIHdhcyBub3QgY29ycmVjdGx5IGRldGVjdGVkIGR1ZSB0byBhCmJ1 ZyBpbiBzb2xpYi1haXguYywgd2hlcmUgdGhlIEJGRCBmaWxlIG5hbWUgZm9y IHNoYXJlZApsaWJyYXJ5IG1lbWJlcnMgd2FzIGNoYW5nZWQgd2hlbiB0aGUg bGlicmFyeSB3YXMgbG9hZGVkCmZvciB0aGUgZmlyc3QgdGltZSwgd2hpY2gg Y2F1c2VkIHRoZSBsaWJyYXJ5IHRvIG5vIGxvbmdlcgpiZSByZWNvZ25pemVk IGJ5IG5hbWUgd2hlbiBsb2FkZWQgYSBzZWNvbmQgdGltZS4KLS0tCiBnZGIv YWl4LXRocmVhZC5jIHwgMzcwICsrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tCiBnZGIvc29saWItYWl4LmMgIHwgIDE0 ICsrCiAyIGZpbGVzIGNoYW5nZWQsIDIzOCBpbnNlcnRpb25zKCspLCAxNDYg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2RiL2FpeC10aHJlYWQuYyBi L2dkYi9haXgtdGhyZWFkLmMKaW5kZXggZTU1NmMxNTM1NzYuLmI3YTE2ZDc2 Y2Y3IDEwMDY0NAotLS0gYS9nZGIvYWl4LXRocmVhZC5jCisrKyBiL2dkYi9h aXgtdGhyZWFkLmMKQEAgLTY4LDEwICs2OCw2IEBAIHN0YXRpYyBib29sIGRl YnVnX2FpeF90aHJlYWQ7CiAjZGVmaW5lIHB0aGRiX3RpZF90CXRpZF90CiAj ZW5kaWYKIAotLyogUmV0dXJuIHdoZXRoZXIgdG8gdHJlYXQgUElEIGFzIGEg ZGVidWdnYWJsZSB0aHJlYWQgaWQuICAqLwotCi0jZGVmaW5lIFBEX1RJRChw dGlkKQkocGRfYWN0aXZlICYmIHB0aWQudGlkICgpICE9IDApCi0KIC8qIFN1 Y2Nlc3MgYW5kIGZhaWx1cmUgdmFsdWVzIHJldHVybmVkIGJ5IHB0aGRiIGNh bGxiYWNrcy4gICovCiAKICNkZWZpbmUgUERDX1NVQ0NFU1MJUFRIREJfU1VD Q0VTUwpAQCAtMTQ0LDI0ICsxNDAsNiBAQCBjbGFzcyBhaXhfdGhyZWFkX3Rh cmdldCBmaW5hbCA6IHB1YmxpYyB0YXJnZXRfb3BzCiAKIHN0YXRpYyBhaXhf dGhyZWFkX3RhcmdldCBhaXhfdGhyZWFkX29wczsKIAotLyogQWRkcmVzcyBv ZiB0aGUgZnVuY3Rpb24gdGhhdCBsaWJwdGhyZWFkIHdpbGwgY2FsbCB3aGVu IGxpYnB0aGRlYnVnCi0gICBpcyByZWFkeSB0byBiZSBpbml0aWFsaXplZC4g ICovCi0KLXN0YXRpYyBDT1JFX0FERFIgcGRfYnJrX2FkZHI7Ci0KLS8qIFdo ZXRoZXIgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24gaXMgZGVidWdnYWJsZSBi eSBwdGhkYi4gICovCi0KLXN0YXRpYyBpbnQgcGRfYWJsZSA9IDA7Ci0KLS8q IFdoZXRoZXIgYSB0aHJlYWRlZCBhcHBsaWNhdGlvbiBpcyBiZWluZyBkZWJ1 Z2dlZC4gICovCi0KLXN0YXRpYyBpbnQgcGRfYWN0aXZlID0gMDsKLQotLyog V2hldGhlciB0aGUgY3VycmVudCBhcmNoaXRlY3R1cmUgaXMgNjQtYml0LiAg Ci0gICBPbmx5IHZhbGlkIHdoZW4gcGRfYWJsZSBpcyB0cnVlLiAgKi8KLQot c3RhdGljIGludCBhcmNoNjQ7Ci0KIC8qIEZvcndhcmQgZGVjbGFyYXRpb25z IGZvciBwdGhkYiBjYWxsYmFja3MuICAqLwogCiBzdGF0aWMgaW50IHBkY19z eW1ib2xfYWRkcnMgKHB0aGRiX3VzZXJfdCwgcHRoZGJfc3ltYm9sX3QgKiwg aW50KTsKQEAgLTE5MSw5ICsxNjksNjYgQEAgc3RhdGljIHB0aGRiX2NhbGxi YWNrc190IHBkX2NhbGxiYWNrcyA9IHsKICAgTlVMTAogfTsKIAotLyogQ3Vy cmVudCBwdGhkYiBzZXNzaW9uLiAgKi8KKy8qIEFpeCB2YXJpYWJsZSBzdHJ1 Y3R1cmUuICAqLworc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzIAorewor ICAvKiBXaGV0aGVyIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGlzIGRlYnVn Z2FibGUgYnkgcHRoZGIuICAqLworICBpbnQgcGRfYWJsZTsKKworICAvKiBX aGV0aGVyIGEgdGhyZWFkZWQgYXBwbGljYXRpb24gaXMgYmVpbmcgZGVidWdn ZWQuICAqLworICBpbnQgcGRfYWN0aXZlOworCisgIC8qIEN1cnJlbnQgcHRo ZGIgc2Vzc2lvbi4gICovCisgIHB0aGRiX3Nlc3Npb25fdCBwZF9zZXNzaW9u OworCisgIC8qIEFkZHJlc3Mgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgbGlicHRo cmVhZCB3aWxsIGNhbGwgd2hlbiBsaWJwdGhkZWJ1ZworICAgaXMgcmVhZHkg dG8gYmUgaW5pdGlhbGl6ZWQuICAqLworICBDT1JFX0FERFIgcGRfYnJrX2Fk ZHI7CisKKyAgLyogV2hldGhlciB0aGUgY3VycmVudCBhcmNoaXRlY3R1cmUg aXMgNjQtYml0LgorICAgT25seSB2YWxpZCB3aGVuIHBkX2FibGUgaXMgdHJ1 ZS4gICovCisgIGludCBhcmNoNjQ7Cit9OworCisvKiBLZXkgdG8gb3VyIHBl ci1pbmZlcmlvciBkYXRhLiAgKi8KK3N0YXRpYyBjb25zdCByZWdpc3RyeTxp bmZlcmlvcj46OmtleTxhaXhfdGhyZWFkX3ZhcmlhYmxlcz4KKyAgYWl4X3Ro cmVhZF92YXJpYWJsZXNfaGFuZGxlOworCisvKiBGdW5jdGlvbiB0byBHZXQg YWl4X3RocmVhZF92YXJpYWJsZXMgZGF0YS4gICovCitzdGF0aWMgc3RydWN0 IGFpeF90aHJlYWRfdmFyaWFibGVzKgorZ2V0X2FpeF90aHJlYWRfdmFyaWFi bGVzX2RhdGEgKHN0cnVjdCBpbmZlcmlvciAqaW5mKQoreworICBpZiAoaW5m ID09IE5VTEwpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgc3RydWN0IGFpeF90 aHJlYWRfdmFyaWFibGVzKiBkYXRhOworCisgIGRhdGEgPSBhaXhfdGhyZWFk X3ZhcmlhYmxlc19oYW5kbGUuZ2V0IChpbmYpOworICBpZiAoZGF0YSA9PSBO VUxMKQorICAgIGRhdGEgPSBhaXhfdGhyZWFkX3ZhcmlhYmxlc19oYW5kbGUu ZW1wbGFjZSAoaW5mKTsKKworICByZXR1cm4gZGF0YTsKK30KKworLyogSGVs cGVyIHRvIGdldCBkYXRhIGZvciBwdGlkIGluIGEgZnVuY3Rpb24uICAqLwog Ci1zdGF0aWMgcHRoZGJfc2Vzc2lvbl90IHBkX3Nlc3Npb247CitzdGF0aWMg c3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzKgorZ2V0X3RocmVhZF9kYXRh X2hlbHBlcl9mb3JfcHRpZCAocHRpZF90IHB0aWQpCit7CisgIGluZmVyaW9y ICppbmYgPSBmaW5kX2luZmVyaW9yX3B0aWQgKGN1cnJlbnRfaW5mZXJpb3Ig KCktPnByb2Nlc3NfdGFyZ2V0ICgpLAorCQkJCQlwdGlkKTsKKyAgcmV0dXJu IGdldF9haXhfdGhyZWFkX3ZhcmlhYmxlc19kYXRhIChpbmYpOworfQorCisv KiBIZWxwZXIgdG8gZ2V0IGRhdGEgZm9yIHBpZCBpbiBhIGZ1bmN0aW9uLiAg Ki8KKworc3RhdGljIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyoKK2dl dF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3BpZCAocGlkX3QgcGlkKQorewor ICBpbmZlcmlvciAqaW5mID0gZmluZF9pbmZlcmlvcl9waWQgKGN1cnJlbnRf aW5mZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgpLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCk7CisgIHJldHVybiBn ZXRfYWl4X3RocmVhZF92YXJpYWJsZXNfZGF0YSAoaW5mKTsKK30KIAogLyog UmV0dXJuIGEgcHJpbnRhYmxlIHJlcHJlc2VudGF0aW9uIG9mIHB0aGRlYnVn IGZ1bmN0aW9uIHJldHVybgogICAgU1RBVFVTLiAgKi8KQEAgLTMxOCw3ICsz NTMsNyBAQCBwaWRfdG9fcHJjIChwdGlkX3QgKnB0aWRwKQogICBwdGlkX3Qg cHRpZDsKIAogICBwdGlkID0gKnB0aWRwOwotICBpZiAoUERfVElEIChwdGlk KSkKKyAgaWYgKHB0aWQudGlkICgpICE9IDApCiAgICAgKnB0aWRwID0gcHRp ZF90IChwdGlkLnBpZCAoKSk7CiB9CiAKQEAgLTM4OSw2ICs0MjQsOSBAQCBw ZGNfcmVhZF9yZWdzIChwdGhkYl91c2VyX3QgdXNlcl9jdXJyZW50X3BpZCwK ICAgZG91YmxlIGZwcnNbcHBjX251bV9mcHJzXTsKICAgc3RydWN0IHB0eHNw cnMgc3ByczY0OwogICBzdHJ1Y3QgcHRzcHJzIHNwcnMzMjsKKyAgc3RydWN0 IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworICAKKyAgZGF0YSA9IGdl dF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3BpZCAodXNlcl9jdXJyZW50X3Bp ZCk7CiAgIAogICBpZiAoZGVidWdfYWl4X3RocmVhZCkKICAgICBnZGJfcHJp bnRmIChnZGJfc3RkbG9nLCAicGRjX3JlYWRfcmVncyB0aWQ9JWQgZmxhZ3M9 JXNcbiIsCkBAIC0zOTcsNyArNDM1LDcgQEAgcGRjX3JlYWRfcmVncyAocHRo ZGJfdXNlcl90IHVzZXJfY3VycmVudF9waWQsCiAgIC8qIEdlbmVyYWwtcHVy cG9zZSByZWdpc3RlcnMuICAqLwogICBpZiAoZmxhZ3MgJiBQVEhEQl9GTEFH X0dQUlMpCiAgICAgewotICAgICAgaWYgKGFyY2g2NCkKKyAgICAgIGlmIChk YXRhLT5hcmNoNjQpCiAJewogCSAgaWYgKCFwdHJhY2U2NGFpeCAoUFRUX1JF QURfR1BSUywgdGlkLCAKIAkJCSAgICAodW5zaWduZWQgbG9uZykgZ3ByczY0 LCAwLCBOVUxMKSkKQEAgLTQyMyw3ICs0NjEsNyBAQCBwZGNfcmVhZF9yZWdz IChwdGhkYl91c2VyX3QgdXNlcl9jdXJyZW50X3BpZCwKICAgLyogU3BlY2lh bC1wdXJwb3NlIHJlZ2lzdGVycy4gICovCiAgIGlmIChmbGFncyAmIFBUSERC X0ZMQUdfU1BSUykKICAgICB7Ci0gICAgICBpZiAoYXJjaDY0KQorICAgICAg aWYgKGRhdGEtPmFyY2g2NCkKIAl7CiAJICBpZiAoIXB0cmFjZTY0YWl4IChQ VFRfUkVBRF9TUFJTLCB0aWQsIAogCQkJICAgICh1bnNpZ25lZCBsb25nKSAm c3ByczY0LCAwLCBOVUxMKSkKQEAgLTQ1Niw2ICs0OTQsMTAgQEAgcGRjX3dy aXRlX3JlZ3MgKHB0aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRfcGlkLAogICAg ICB0aGlzIGlzIG5lZWRlZCwgSSBoYXZlIGltcGxlbWVudGVkIHdoYXQgSSB0 aGluayBpdCBzaG91bGQgZG8sCiAgICAgIGhvd2V2ZXIgdGhpcyBjb2RlIGlz IHVudGVzdGVkLiAgKi8KIAorICBzdHJ1Y3QgYWl4X3RocmVhZF92YXJpYWJs ZXMgKmRhdGE7CisgIAorICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBl cl9mb3JfcGlkICh1c2VyX2N1cnJlbnRfcGlkKTsKKwogICBpZiAoZGVidWdf YWl4X3RocmVhZCkKICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLCAicGRj X3dyaXRlX3JlZ3MgdGlkPSVkIGZsYWdzPSVzXG4iLAogCQkoaW50KSB0aWQs IGhleF9zdHJpbmcgKGZsYWdzKSk7CkBAIC00NjMsNyArNTA1LDcgQEAgcGRj X3dyaXRlX3JlZ3MgKHB0aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRfcGlkLAog ICAvKiBHZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzLiAgKi8KICAgaWYgKGZs YWdzICYgUFRIREJfRkxBR19HUFJTKQogICAgIHsKLSAgICAgIGlmIChhcmNo NjQpCisgICAgICBpZiAoZGF0YS0+YXJjaDY0KQogCXB0cmFjZTY0YWl4IChQ VFRfV1JJVEVfR1BSUywgdGlkLCAKIAkJICAgICAodW5zaWduZWQgbG9uZykg Y29udGV4dC0+Z3ByLCAwLCBOVUxMKTsKICAgICAgIGVsc2UKQEAgLTQ3OSw3 ICs1MjEsNyBAQCBwZGNfd3JpdGVfcmVncyAocHRoZGJfdXNlcl90IHVzZXJf Y3VycmVudF9waWQsCiAgIC8qIFNwZWNpYWwtcHVycG9zZSByZWdpc3RlcnMu ICAqLwogICBpZiAoZmxhZ3MgJiBQVEhEQl9GTEFHX1NQUlMpCiAgICAgewot ICAgICAgaWYgKGFyY2g2NCkKKyAgICAgIGlmIChkYXRhLT5hcmNoNjQpCiAJ ewogCSAgcHRyYWNlNjRhaXggKFBUVF9XUklURV9TUFJTLCB0aWQsIAogCQkg ICAgICAgKHVuc2lnbmVkIGxvbmcpICZjb250ZXh0LT5tc3IsIDAsIE5VTEwp OwpAQCAtNDk5LDcgKzU0MSw5IEBAIHBkY19yZWFkX2RhdGEgKHB0aGRiX3Vz ZXJfdCB1c2VyX2N1cnJlbnRfcGlkLCB2b2lkICpidWYsCiAJICAgICAgIHB0 aGRiX2FkZHJfdCBhZGRyLCBzaXplX3QgbGVuKQogewogICBpbnQgc3RhdHVz LCByZXQ7Ci0KKyAgaW5mZXJpb3IgKmluZiA9IGZpbmRfaW5mZXJpb3JfcGlk IChjdXJyZW50X2luZmVyaW9yICgpLT5wcm9jZXNzX3RhcmdldCAoKSwgCisJ CQkJICAgICB1c2VyX2N1cnJlbnRfcGlkKTsKKyAgCiAgIGlmIChkZWJ1Z19h aXhfdGhyZWFkKQogICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csCiAJCSJw ZGNfcmVhZF9kYXRhICh1c2VyX2N1cnJlbnRfcGlkID0gJWxkLCBidWYgPSAw eCVseCwgYWRkciA9ICVzLCBsZW4gPSAlbGQpXG4iLApAQCAtNTA4LDE0ICs1 NTIsMTMgQEAgcGRjX3JlYWRfZGF0YSAocHRoZGJfdXNlcl90IHVzZXJfY3Vy cmVudF9waWQsIHZvaWQgKmJ1ZiwKICAgLyogVGhpcyBpcyBuZWVkZWQgdG8g ZWxpbWluYXRlIHRoZSBkZXBlbmRlbmN5IG9mIGN1cnJlbnQgdGhyZWFkCiAg ICAgIHdoaWNoIGlzIG51bGwgc28gdGhhdCB0aHJlYWQgcmVhZHMgdGhlIGNv cnJlY3QgdGFyZ2V0IG1lbW9yeS4gICovCiAgIHsKLSAgICBzY29wZWRfcmVz dG9yZV9jdXJyZW50X3RocmVhZCByZXN0b3JlX2N1cnJlbnRfdGhyZWFkOwot ICAgIC8qIEJlZm9yZSB0aGUgZmlyc3QgaW5mZXJpb3IgaXMgYWRkZWQsIHdl IHBhc3MgaW5mZXJpb3JfcHRpZC5waWQgKCkKLSAgICAgICBmcm9tIHBkX2Vu YWJsZSAoKSB3aGljaCBpcyAwLiAgVGhlcmUgaXMgbm8gbmVlZCB0byBzd2l0 Y2ggdGhyZWFkcwotICAgICAgIGR1cmluZyBmaXJzdCBpbml0aWFsaXNhdGlv bi4gIEluIHRoZSByZXN0IG9mIHRoZSBjYWxsYmFja3MgdGhlCi0gICAgICAg Y3VycmVudCB0aHJlYWQgbmVlZHMgdG8gYmUgY29ycmVjdC4gICovCi0gICAg aWYgKHVzZXJfY3VycmVudF9waWQgIT0gMCkKLSAgICAgIHN3aXRjaF90b190 aHJlYWQgKGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgp LAotCQkJcHRpZF90ICh1c2VyX2N1cnJlbnRfcGlkKSk7CisgICAgc2NvcGVk X3Jlc3RvcmUgc2F2ZV9pbmZlcmlvcl9wdGlkID0gbWFrZV9zY29wZWRfcmVz dG9yZSAoJmluZmVyaW9yX3B0aWQpOworICAgIGluZmVyaW9yX3B0aWQgPSBw dGlkX3QgKHVzZXJfY3VycmVudF9waWQpOworICAgIHNjb3BlZF9yZXN0b3Jl X2N1cnJlbnRfaW5mZXJpb3IgcmVzdG9yZV9pbmZlcmlvcjsKKyAgICBzZXRf Y3VycmVudF9pbmZlcmlvciAoaW5mKTsKKworICAgIHNjb3BlZF9yZXN0b3Jl X2N1cnJlbnRfcHJvZ3JhbV9zcGFjZSByZXN0b3JlX2N1cnJlbnRfcHJvZ3Nw YWNlOworICAgIHNldF9jdXJyZW50X3Byb2dyYW1fc3BhY2UgKGluZi0+cHNw YWNlKTsKICAgICBzdGF0dXMgPSB0YXJnZXRfcmVhZF9tZW1vcnkgKGFkZHIs IChnZGJfYnl0ZSAqKSBidWYsIGxlbik7CiAgIH0KICAgcmV0ID0gc3RhdHVz ID09IDAgPyBQRENfU1VDQ0VTUyA6IFBEQ19GQUlMVVJFOwpAQCAtNTMzLDEz ICs1NzYsMjUgQEAgcGRjX3dyaXRlX2RhdGEgKHB0aGRiX3VzZXJfdCB1c2Vy X2N1cnJlbnRfcGlkLCB2b2lkICpidWYsCiAJCXB0aGRiX2FkZHJfdCBhZGRy LCBzaXplX3QgbGVuKQogewogICBpbnQgc3RhdHVzLCByZXQ7CisgIGluZmVy aW9yICppbmYgPSBmaW5kX2luZmVyaW9yX3BpZCAoY3VycmVudF9pbmZlcmlv ciAoKS0+cHJvY2Vzc190YXJnZXQgKCksIAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVzZXJfY3VycmVudF9waWQpOwogCiAgIGlm IChkZWJ1Z19haXhfdGhyZWFkKQogICAgIGdkYl9wcmludGYgKGdkYl9zdGRs b2csCiAJCSJwZGNfd3JpdGVfZGF0YSAodXNlcl9jdXJyZW50X3BpZCA9ICVs ZCwgYnVmID0gMHglbHgsIGFkZHIgPSAlcywgbGVuID0gJWxkKVxuIiwKIAkJ dXNlcl9jdXJyZW50X3BpZCwgKGxvbmcpIGJ1ZiwgaGV4X3N0cmluZyAoYWRk ciksIGxlbik7CiAKLSAgc3RhdHVzID0gdGFyZ2V0X3dyaXRlX21lbW9yeSAo YWRkciwgKGdkYl9ieXRlICopIGJ1ZiwgbGVuKTsKKyAgeworICAgIHNjb3Bl ZF9yZXN0b3JlIHNhdmVfaW5mZXJpb3JfcHRpZCA9IG1ha2Vfc2NvcGVkX3Jl c3RvcmUgKCZpbmZlcmlvcl9wdGlkKTsKKyAgICBpbmZlcmlvcl9wdGlkID0g cHRpZF90ICh1c2VyX2N1cnJlbnRfcGlkKTsKKyAgICBzY29wZWRfcmVzdG9y ZV9jdXJyZW50X2luZmVyaW9yIHJlc3RvcmVfaW5mZXJpb3I7CisgICAgc2V0 X2N1cnJlbnRfaW5mZXJpb3IgKGluZik7CisKKyAgICBzY29wZWRfcmVzdG9y ZV9jdXJyZW50X3Byb2dyYW1fc3BhY2UgcmVzdG9yZV9jdXJyZW50X3Byb2dz cGFjZTsKKyAgICBzZXRfY3VycmVudF9wcm9ncmFtX3NwYWNlIChpbmYtPnBz cGFjZSk7CisgICAgc3RhdHVzID0gdGFyZ2V0X3dyaXRlX21lbW9yeSAoYWRk ciwgKGdkYl9ieXRlICopIGJ1ZiwgbGVuKTsKKyAgfQorCiAgIHJldCA9IHN0 YXR1cyA9PSAwID8gUERDX1NVQ0NFU1MgOiBQRENfRkFJTFVSRTsKIAogICBp ZiAoZGVidWdfYWl4X3RocmVhZCkKQEAgLTYzOSwzOSArNjk0LDYgQEAgcGNt cCAoY29uc3Qgdm9pZCAqcDF2LCBjb25zdCB2b2lkICpwMnYpCiAgIHJldHVy biBwMS0+cHRoaWQgPCBwMi0+cHRoaWQgPyAtMSA6IHAxLT5wdGhpZCA+IHAy LT5wdGhpZDsKIH0KIAotLyogaXRlcmF0ZV9vdmVyX3RocmVhZHMoKSBjYWxs YmFjayBmb3IgY291bnRpbmcgR0RCIHRocmVhZHMuCi0KLSAgIERvIG5vdCBj b3VudCB0aGUgbWFpbiB0aHJlYWQgKHdob3NlIHRpZCBpcyB6ZXJvKS4gIFRo aXMgbWF0Y2hlcwotICAgdGhlIGxpc3Qgb2YgdGhyZWFkcyBwcm92aWRlZCBi eSB0aGUgcHRocmVhZGRlYnVnIGxpYnJhcnksIHdoaWNoCi0gICBkb2VzIG5v dCBpbmNsdWRlIHRoYXQgbWFpbiB0aHJlYWQgZWl0aGVyLCBhbmQgdGh1cyBh bGxvd3MgdXMKLSAgIHRvIGNvbXBhcmUgdGhlIHR3byBsaXN0cy4gICovCi0K LXN0YXRpYyBpbnQKLWdpdGVyX2NvdW50IChzdHJ1Y3QgdGhyZWFkX2luZm8g KnRocmVhZCwgdm9pZCAqY291bnRwKQotewotICBpZiAoUERfVElEICh0aHJl YWQtPnB0aWQpKQotICAgICgqKGludCAqKSBjb3VudHApKys7Ci0gIHJldHVy biAwOwotfQotCi0vKiBpdGVyYXRlX292ZXJfdGhyZWFkcygpIGNhbGxiYWNr IGZvciBhY2N1bXVsYXRpbmcgR0RCIHRocmVhZCBwaWRzLgotCi0gICBEbyBu b3QgaW5jbHVkZSB0aGUgbWFpbiB0aHJlYWQgKHdob3NlIHRpZCBpcyB6ZXJv KS4gIFRoaXMgbWF0Y2hlcwotICAgdGhlIGxpc3Qgb2YgdGhyZWFkcyBwcm92 aWRlZCBieSB0aGUgcHRocmVhZGRlYnVnIGxpYnJhcnksIHdoaWNoCi0gICBk b2VzIG5vdCBpbmNsdWRlIHRoYXQgbWFpbiB0aHJlYWQgZWl0aGVyLCBhbmQg dGh1cyBhbGxvd3MgdXMKLSAgIHRvIGNvbXBhcmUgdGhlIHR3byBsaXN0cy4g ICovCi0KLXN0YXRpYyBpbnQKLWdpdGVyX2FjY3VtIChzdHJ1Y3QgdGhyZWFk X2luZm8gKnRocmVhZCwgdm9pZCAqYnVmcCkKLXsKLSAgaWYgKFBEX1RJRCAo dGhyZWFkLT5wdGlkKSkKLSAgICB7Ci0gICAgICAqKihzdHJ1Y3QgdGhyZWFk X2luZm8gKioqKSBidWZwID0gdGhyZWFkOwotICAgICAgKCooc3RydWN0IHRo cmVhZF9pbmZvICoqKikgYnVmcCkrKzsKLSAgICB9Ci0gIHJldHVybiAwOwot fQotCiAvKiBwdGlkIGNvbXBhcmlzb24gZnVuY3Rpb24gKi8KIAogc3RhdGlj IGludApAQCAtNzE5LDcgKzc0MSwxMCBAQCBnZXRfc2lnbmFsZWRfdGhyZWFk IChpbnQgcGlkKQogCQkgICAgc2l6ZW9mICh0aHJpbmYpLCAma3RpZCwgMSkg IT0gMSkKIAlicmVhazsKIAotICAgICAgaWYgKHRocmluZi50aV9jdXJzaWcg PT0gU0lHVFJBUCkKKyAgICAgIC8qIFdlIGFsc28gbmVlZCB0byBrZWVwIGlu IG1pbmQgVHJhcCBhbmQgaW50ZXJydXB0IG9yIGFueQorICAgICAgICAgc2ln bmFsIHRoYXQgbmVlZHMgdG8gYmUgaGFuZGxlZCBpbiBwZF91cGRhdGUgKCku ICAqLworCisgICAgICBpZiAodGhyaW5mLnRpX2N1cnNpZykKIAlyZXR1cm4g dGhyaW5mLnRpX3RpZDsKICAgICB9CiAKQEAgLTc0MSw3ICs3NjYsNyBAQCBn ZXRfc2lnbmFsZWRfdGhyZWFkIChpbnQgcGlkKQogICAgICAgIGhhdmUgZGlm ZmljdWx0eSB3aXRoIGNlcnRhaW4gY2FsbCBwYXR0ZXJucyAqLwogCiBzdGF0 aWMgdm9pZAotc3luY190aHJlYWRsaXN0cyAoaW50IHBpZCkKK3N5bmNfdGhy ZWFkbGlzdHMgKHBpZF90IHBpZCkgCiB7CiAgIGludCBjbWQsIHN0YXR1czsK ICAgaW50IHBjb3VudCwgcHNpemUsIHBpLCBnY291bnQsIGdpOwpAQCAtNzUw LDYgKzc3NSwxMSBAQCBzeW5jX3RocmVhZGxpc3RzIChpbnQgcGlkKQogICBw dGhkYl9wdGhyZWFkX3QgcGR0aWQ7CiAgIHB0aHJlYWRfdCBwdGhpZDsKICAg cHRoZGJfdGlkX3QgdGlkOworICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpw cm9jX3RhcmdldAorICAgICAgICAgICAgPSBjdXJyZW50X2luZmVyaW9yICgp LT5wcm9jZXNzX3RhcmdldCAoKTsKKyAgdGhyZWFkX2luZm8gICp0cDsKKyAg c3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworICBkYXRhID0g Z2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcGlkIChwaWQpOwogCiAgIC8q IEFjY3VtdWxhdGUgYW4gYXJyYXkgb2YgbGlicHRoZGVidWcgdGhyZWFkcyBz b3J0ZWQgYnkgcHRocmVhZCBpZC4gICovCiAKQEAgLTc1OSwxMSArNzg5LDEx IEBAIHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAKICAgZm9yIChjbWQg PSBQVEhEQl9MSVNUX0ZJUlNUOzsgY21kID0gUFRIREJfTElTVF9ORVhUKQog ICAgIHsKLSAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWQgKHBkX3Nlc3Np b24sICZwZHRpZCwgY21kKTsKKyAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJl YWQgKGRhdGEtPnBkX3Nlc3Npb24sICZwZHRpZCwgY21kKTsKICAgICAgIGlm IChzdGF0dXMgIT0gUFRIREJfU1VDQ0VTUyB8fCBwZHRpZCA9PSBQVEhEQl9J TlZBTElEX1BUSFJFQUQpCiAJYnJlYWs7CiAKLSAgICAgIHN0YXR1cyA9IHB0 aGRiX3B0aHJlYWRfcHRpZCAocGRfc2Vzc2lvbiwgcGR0aWQsICZwdGhpZCk7 CisgICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3B0aWQgKGRhdGEtPnBk X3Nlc3Npb24sIHBkdGlkLCAmcHRoaWQpOwogICAgICAgaWYgKHN0YXR1cyAh PSBQVEhEQl9TVUNDRVNTIHx8IHB0aGlkID09IFBUSERCX0lOVkFMSURfUFRJ RCkKIAljb250aW51ZTsKIApAQCAtNzgwLDcgKzgxMCw3IEBAIHN5bmNfdGhy ZWFkbGlzdHMgKGludCBwaWQpCiAKICAgZm9yIChwaSA9IDA7IHBpIDwgcGNv dW50OyBwaSsrKQogICAgIHsKLSAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJl YWRfdGlkIChwZF9zZXNzaW9uLCBwYnVmW3BpXS5wZHRpZCwgJnRpZCk7Cisg ICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3RpZCAoZGF0YS0+cGRfc2Vz c2lvbiwgcGJ1ZltwaV0ucGR0aWQsICZ0aWQpOwogICAgICAgaWYgKHN0YXR1 cyAhPSBQVEhEQl9TVUNDRVNTKQogCXRpZCA9IFBUSERCX0lOVkFMSURfVElE OwogICAgICAgcGJ1ZltwaV0udGlkID0gdGlkOwpAQCAtNzkwLDEzICs4MjAs MTggQEAgc3luY190aHJlYWRsaXN0cyAoaW50IHBpZCkKIAogICAvKiBBY2N1 bXVsYXRlIGFuIGFycmF5IG9mIEdEQiB0aHJlYWRzIHNvcnRlZCBieSBwaWQu ICAqLwogCisgIC8qIGdjb3VudCBpcyBHREIgdGhyZWFkIGNvdW50IGFuZCBw Y291bnQgaXMgcHRocmVhZGxpYiB0aHJlYWQgY291bnQuICAqLworCiAgIGdj b3VudCA9IDA7Ci0gIGl0ZXJhdGVfb3Zlcl90aHJlYWRzIChnaXRlcl9jb3Vu dCwgJmdjb3VudCk7CisgIGZvciAodGhyZWFkX2luZm8gKnRwIDogYWxsX3Ro cmVhZHMgKHByb2NfdGFyZ2V0LCBwdGlkX3QgKHBpZCkpKQorICAgIGdjb3Vu dCsrOwogICBnID0gZ2J1ZiA9IFhORVdWRUMgKHN0cnVjdCB0aHJlYWRfaW5m byAqLCBnY291bnQpOwotICBpdGVyYXRlX292ZXJfdGhyZWFkcyAoZ2l0ZXJf YWNjdW0sICZnKTsKKyAgZm9yICh0aHJlYWRfaW5mbyAqdHAgOiBhbGxfdGhy ZWFkcyAocHJvY190YXJnZXQsIHB0aWRfdCAocGlkKSkpCisgICAgKmcrKyA9 IHRwOwogICBxc29ydCAoZ2J1ZiwgZ2NvdW50LCBzaXplb2YgKmdidWYsIGdj bXApOwogCiAgIC8qIEFwcGx5IGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHR3 byBhcnJheXMgdG8gR0RCJ3MgdGhyZWFkIGxpc3QuICAqLworCiAgIGZvciAo cGkgPSBnaSA9IDA7IHBpIDwgcGNvdW50IHx8IGdpIDwgZ2NvdW50OykKICAg ICB7CiAgICAgICBpZiAocGkgPT0gcGNvdW50KQpAQCAtODEwLDggKzg0NSw2 IEBAIHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAJICBwcml2LT5wZHRp ZCA9IHBidWZbcGldLnBkdGlkOwogCSAgcHJpdi0+dGlkID0gcGJ1ZltwaV0u dGlkOwogCi0JICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpwcm9jX3Rhcmdl dAotCSAgICA9IGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0 ICgpOwogCSAgdGhyZWFkID0gYWRkX3RocmVhZF93aXRoX2luZm8gKHByb2Nf dGFyZ2V0LAogCQkJCQkgcHRpZF90IChwaWQsIDAsIHBidWZbcGldLnB0aGlk KSwKIAkJCQkJIHByaXYpOwpAQCAtODQxLDEzICs4NzQsMjggQEAgc3luY190 aHJlYWRsaXN0cyAoaW50IHBpZCkKIAkgICAgfQogCSAgZWxzZSBpZiAoY21w X3Jlc3VsdCA+IDApCiAJICAgIHsKLQkgICAgICBkZWxldGVfdGhyZWFkIChn YnVmW2dpXSk7Ci0JICAgICAgZ2krKzsKKwkgICAgICAvKiBUaGlzIGlzIHRv IG1ha2UgdGhlIG1haW4gcHJvY2VzcyB0aHJlYWQgbm93IGxvb2sKKyAgICAg ICAgICAgICAgICAgbGlrZSBhIHRocmVhZC4gICovCisKKwkgICAgICBpZiAo Z3B0aWQuaXNfcGlkICgpKQorCQl7CisJCSAgdHAgPSBmaW5kX3RocmVhZF9w dGlkIChwcm9jX3RhcmdldCwgZ3B0aWQpOworCQkgIHRocmVhZF9jaGFuZ2Vf cHRpZCAocHJvY190YXJnZXQsIGdwdGlkLCBwcHRpZCk7CisJCSAgYWl4X3Ro cmVhZF9pbmZvICpwcml2ID0gbmV3IGFpeF90aHJlYWRfaW5mbzsKKwkJICBw cml2LT5wZHRpZCA9IHBidWZbcGldLnBkdGlkOworCQkgIHByaXYtPnRpZCA9 IHBidWZbcGldLnRpZDsKKwkJICB0cC0+cHJpdi5yZXNldCAocHJpdik7CisJ CSAgZ2krKzsKKwkJICBwaSsrOworCQl9CisJICAgICAgZWxzZQorCQl7CisJ CSAgZGVsZXRlX3RocmVhZCAoZ2J1ZltnaV0pOworCQkgIGdpKys7CisJCX0K IAkgICAgfQogCSAgZWxzZQogCSAgICB7Ci0JICAgICAgcHJvY2Vzc19zdHJh dHVtX3RhcmdldCAqcHJvY190YXJnZXQKLQkJPSBjdXJyZW50X2luZmVyaW9y ICgpLT5wcm9jZXNzX3RhcmdldCAoKTsKIAkgICAgICB0aHJlYWQgPSBhZGRf dGhyZWFkIChwcm9jX3RhcmdldCwgcHB0aWQpOwogCiAJICAgICAgYWl4X3Ro cmVhZF9pbmZvICpwcml2ID0gbmV3IGFpeF90aHJlYWRfaW5mbzsKQEAgLTg4 MSwxNyArOTI5LDIwIEBAIGl0ZXJfdGlkIChzdHJ1Y3QgdGhyZWFkX2luZm8g KnRocmVhZCwgdm9pZCAqdGlkcCkKICAgIHJldHVybiBhIHBpZC1vbmx5IHB0 aWQgd2l0aCBQSUQuICAqLwogCiBzdGF0aWMgcHRpZF90Ci1wZF91cGRhdGUg KGludCBwaWQpCitwZF91cGRhdGUgKHBpZF90IHBpZCkKIHsKICAgaW50IHN0 YXR1czsKICAgcHRpZF90IHB0aWQ7CiAgIHB0aGRiX3RpZF90IHRpZDsKICAg c3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQgPSBOVUxMOworICBzdHJ1Y3Qg YWl4X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7CisKKyAgZGF0YSA9IGdldF90 aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3BpZCAocGlkKTsKIAotICBpZiAoIXBk X2FjdGl2ZSkKKyAgaWYgKCFkYXRhLT5wZF9hY3RpdmUpCiAgICAgcmV0dXJu IHB0aWRfdCAocGlkKTsKIAotICBzdGF0dXMgPSBwdGhkYl9zZXNzaW9uX3Vw ZGF0ZSAocGRfc2Vzc2lvbik7CisgIHN0YXR1cyA9IHB0aGRiX3Nlc3Npb25f dXBkYXRlIChkYXRhLT5wZF9zZXNzaW9uKTsKICAgaWYgKHN0YXR1cyAhPSBQ VEhEQl9TVUNDRVNTKQogICAgIHJldHVybiBwdGlkX3QgKHBpZCk7CiAKQEAg LTkxNSwzNCArOTY2LDIzIEBAIHBkX3VwZGF0ZSAoaW50IHBpZCkKICAgIGZv ciB0aGF0IHRocmVhZC4gIE90aGVyd2lzZSwgcmV0dXJuIGEgcHRpZC1vbmx5 IHB0aWQgdXNpbmcgUElELiAgKi8KIAogc3RhdGljIHB0aWRfdAotcGRfYWN0 aXZhdGUgKGludCBwaWQpCitwZF9hY3RpdmF0ZSAocGlkX3QgcGlkKQogewog ICBpbnQgc3RhdHVzOwotCQkKLSAgc3RhdHVzID0gcHRoZGJfc2Vzc2lvbl9p bml0IChwaWQsIGFyY2g2NCA/IFBFTV82NEJJVCA6IFBFTV8zMkJJVCwKKyAg c3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworICBkYXRhID0g Z2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcGlkIChwaWQpOworICAKKyAg c3RhdHVzID0gcHRoZGJfc2Vzc2lvbl9pbml0IChwaWQsIGRhdGEtPmFyY2g2 NCA/IFBFTV82NEJJVCA6IFBFTV8zMkJJVCwKIAkJCSAgICAgICBQVEhEQl9G TEFHX1JFR1MsICZwZF9jYWxsYmFja3MsIAotCQkJICAgICAgICZwZF9zZXNz aW9uKTsKKwkJCSAgICAgICAmZGF0YS0+cGRfc2Vzc2lvbik7CiAgIGlmIChz dGF0dXMgIT0gUFRIREJfU1VDQ0VTUykKICAgICB7CiAgICAgICByZXR1cm4g cHRpZF90IChwaWQpOwogICAgIH0KLSAgcGRfYWN0aXZlID0gMTsKKyAgZGF0 YS0+cGRfYWN0aXZlID0gMTsKICAgcmV0dXJuIHBkX3VwZGF0ZSAocGlkKTsK IH0KIAotLyogVW5kbyB0aGUgZWZmZWN0cyBvZiBwZF9hY3RpdmF0ZSgpLiAg Ki8KLQotc3RhdGljIHZvaWQKLXBkX2RlYWN0aXZhdGUgKHZvaWQpCi17Ci0g IGlmICghcGRfYWN0aXZlKQotICAgIHJldHVybjsKLSAgcHRoZGJfc2Vzc2lv bl9kZXN0cm95IChwZF9zZXNzaW9uKTsKLSAgCi0gIHBpZF90b19wcmMgKCZp bmZlcmlvcl9wdGlkKTsKLSAgcGRfYWN0aXZlID0gMDsKLX0KLQogLyogQW4g b2JqZWN0IGZpbGUgaGFzIGp1c3QgYmVlbiBsb2FkZWQuICBDaGVjayB3aGV0 aGVyIHRoZSBjdXJyZW50CiAgICBhcHBsaWNhdGlvbiBpcyBwdGhyZWFkZWQs IGFuZCBpZiBzbywgcHJlcGFyZSBmb3IgdGhyZWFkIGRlYnVnZ2luZy4gICov CiAKQEAgLTk1MiwxMyArOTkyLDE5IEBAIHBkX2VuYWJsZSAodm9pZCkKICAg aW50IHN0YXR1czsKICAgY2hhciAqc3R1Yl9uYW1lOwogICBzdHJ1Y3QgYm91 bmRfbWluaW1hbF9zeW1ib2wgbXM7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3Zh cmlhYmxlcyAqZGF0YTsKKworICBpZiAoIWluZmVyaW9yX3B0aWQucGlkICgp KQorICAgIHJldHVybjsKKyAgCisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFf aGVscGVyX2Zvcl9wdGlkIChpbmZlcmlvcl9wdGlkKTsKIAogICAvKiBEb24n dCBpbml0aWFsaXplIHR3aWNlLiAgKi8KLSAgaWYgKHBkX2FibGUpCisgIGlm IChkYXRhLT5wZF9hYmxlKQogICAgIHJldHVybjsKIAogICAvKiBDaGVjayBh cHBsaWNhdGlvbiB3b3JkIHNpemUuICAqLwotICBhcmNoNjQgPSByZWdpc3Rl cl9zaXplICh0YXJnZXRfZ2RiYXJjaCAoKSwgMCkgPT0gODsKKyAgZGF0YS0+ YXJjaDY0ID0gcmVnaXN0ZXJfc2l6ZSAodGFyZ2V0X2dkYmFyY2ggKCksIDAp ID09IDg7CiAKICAgLyogQ2hlY2sgd2hldGhlciB0aGUgYXBwbGljYXRpb24g aXMgcHRocmVhZGVkLiAgKi8KICAgc3R1Yl9uYW1lID0gTlVMTDsKQEAgLTk3 MiwxMyArMTAxOCwxOSBAQCBwZF9lbmFibGUgKHZvaWQpCiAgIG1zID0gbG9v a3VwX21pbmltYWxfc3ltYm9sIChzdHViX25hbWUsIE5VTEwsIE5VTEwpOwog ICBpZiAobXMubWluc3ltID09IE5VTEwpCiAgICAgcmV0dXJuOwotICBwZF9i cmtfYWRkciA9IG1zLnZhbHVlX2FkZHJlc3MgKCk7Ci0gIGlmICghY3JlYXRl X3RocmVhZF9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwg cGRfYnJrX2FkZHIpKQorICBkYXRhLT5wZF9icmtfYWRkciA9IG1zLnZhbHVl X2FkZHJlc3MgKCk7CisgIGlmICghY3JlYXRlX3RocmVhZF9ldmVudF9icmVh a3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgZGF0YS0+cGRfYnJrX2FkZHIp KQogICAgIHJldHVybjsKIAogICAvKiBQcmVwYXJlIGZvciB0aHJlYWQgZGVi dWdnaW5nLiAgKi8KICAgY3VycmVudF9pbmZlcmlvciAoKS0+cHVzaF90YXJn ZXQgKCZhaXhfdGhyZWFkX29wcyk7Ci0gIHBkX2FibGUgPSAxOworICBkYXRh LT5wZF9hYmxlID0gMTsgCisKKyAgaW5mZXJpb3IgKmluZiA9IGN1cnJlbnRf aW5mZXJpb3IgKCk7IAorICAvKiBXaGVuIGF0dGFjaGluZyAvIGhhbmRsaW5n IGZvcmsgY2hpbGQsIGRvbid0IHRyeSBhY3RpdmF0aW5nCisgICAgIHRocmVh ZCBkZWJ1Z2dpbmcgdW50aWwgd2Uga25vdyBhYm91dCBhbGwgc2hhcmVkIGxp YnJhcmllcy4gICovIAorICBpZiAoaW5mLT5pbl9pbml0aWFsX2xpYnJhcnlf c2NhbikKKyAgICByZXR1cm47CiAKICAgLyogSWYgd2UncmUgZGVidWdnaW5n IGEgY29yZSBmaWxlIG9yIGFuIGF0dGFjaGVkIGluZmVyaW9yLCB0aGUKICAg ICAgcHRocmVhZCBsaWJyYXJ5IG1heSBhbHJlYWR5IGhhdmUgYmVlbiBpbml0 aWFsaXplZCwgc28gdHJ5IHRvCkBAIC05OTEsMjggKzEwNDMsMzEgQEAgcGRf ZW5hYmxlICh2b2lkKQogc3RhdGljIHZvaWQKIHBkX2Rpc2FibGUgKHZvaWQp CiB7Ci0gIGlmICghcGRfYWJsZSkKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFy aWFibGVzICpkYXRhOworICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBl cl9mb3JfcHRpZCAoaW5mZXJpb3JfcHRpZCk7CisKKyAgaWYgKCFkYXRhLT5w ZF9hYmxlKQogICAgIHJldHVybjsKLSAgaWYgKHBkX2FjdGl2ZSkKLSAgICBw ZF9kZWFjdGl2YXRlICgpOwotICBwZF9hYmxlID0gMDsKKyAgaWYgKCFkYXRh LT5wZF9hY3RpdmUpCisgICAgcmV0dXJuOworICBwdGhkYl9zZXNzaW9uX2Rl c3Ryb3kgKGRhdGEtPnBkX3Nlc3Npb24pOworIAorICBwaWRfdG9fcHJjICgm aW5mZXJpb3JfcHRpZCk7CisgIGRhdGEtPnBkX2FjdGl2ZSA9IDA7CisgIGRh dGEtPnBkX2FibGUgPSAwOwogICBjdXJyZW50X2luZmVyaW9yICgpLT51bnB1 c2hfdGFyZ2V0ICgmYWl4X3RocmVhZF9vcHMpOwogfQogCiAvKiBuZXdfb2Jq ZmlsZSBvYnNlcnZlciBjYWxsYmFjay4KIAogICAgSWYgT0JKRklMRSBpcyBu b24tbnVsbCwgY2hlY2sgd2hldGhlciBhIHRocmVhZGVkIGFwcGxpY2F0aW9u IGlzCi0gICBiZWluZyBkZWJ1Z2dlZCwgYW5kIGlmIHNvLCBwcmVwYXJlIGZv ciB0aHJlYWQgZGVidWdnaW5nLgotCi0gICBJZiBPQkpGSUxFIGlzIG51bGws IHN0b3AgZGVidWdnaW5nIHRocmVhZHMuICAqLworICAgYmVpbmcgZGVidWdn ZWQsIGFuZCBpZiBzbywgcHJlcGFyZSBmb3IgdGhyZWFkIGRlYnVnZ2luZy4g ICovCiAKIHN0YXRpYyB2b2lkCiBuZXdfb2JqZmlsZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUpCiB7CiAgIGlmIChvYmpmaWxlKQogICAgIHBkX2VuYWJs ZSAoKTsKLSAgZWxzZQotICAgIHBkX2Rpc2FibGUgKCk7CiB9CiAKIC8qIEF0 dGFjaCB0byBwcm9jZXNzIHNwZWNpZmllZCBieSBBUkdTLiAgKi8KQEAgLTEw NDIsOCArMTA5NywxMSBAQCBhaXhfdGhyZWFkX3RhcmdldDo6cmVzdW1lIChw dGlkX3QgcHRpZCwgaW50IHN0ZXAsIGVudW0gZ2RiX3NpZ25hbCBzaWcpCiB7 CiAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdGhyZWFkOwogICBwdGhkYl90aWRf dCB0aWRbMl07CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0 YTsKKyAgCisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9w dGlkIChwdGlkKTsKIAotICBpZiAoIVBEX1RJRCAocHRpZCkpCisgIGlmIChw dGlkLnRpZCAoKSA9PSAwKQogICAgIHsKICAgICAgIHNjb3BlZF9yZXN0b3Jl IHNhdmVfaW5mZXJpb3JfcHRpZCA9IG1ha2Vfc2NvcGVkX3Jlc3RvcmUgKCZp bmZlcmlvcl9wdGlkKTsKICAgICAgIApAQCAtMTA2NSw3ICsxMTIzLDcgQEAg YWl4X3RocmVhZF90YXJnZXQ6OnJlc3VtZSAocHRpZF90IHB0aWQsIGludCBz dGVwLCBlbnVtIGdkYl9zaWduYWwgc2lnKQogCSAgICAgICBwdGlkLmx3cCAo KSk7CiAgICAgICB0aWRbMV0gPSAwOwogCi0gICAgICBpZiAoYXJjaDY0KQor ICAgICAgaWYgKGRhdGEtPmFyY2g2NCkKIAlwdHJhY2U2NGFpeCAoUFRUX0NP TlRJTlVFLCB0aWRbMF0sIChsb25nIGxvbmcpIDEsCiAJCSAgICAgZ2RiX3Np Z25hbF90b19ob3N0IChzaWcpLCAoUFRSQUNFX1RZUEVfQVJHNSkgdGlkKTsK ICAgICAgIGVsc2UKQEAgLTEwODIsNiArMTE0MCw3IEBAIHB0aWRfdAogYWl4 X3RocmVhZF90YXJnZXQ6OndhaXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFy Z2V0X3dhaXRzdGF0dXMgKnN0YXR1cywKIAkJCSB0YXJnZXRfd2FpdF9mbGFn cyBvcHRpb25zKQogeworICBzdHJ1Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMg KmRhdGE7CiAgIHsKICAgICBwaWRfdG9fcHJjICgmcHRpZCk7CiAKQEAgLTEw OTUsOCArMTE1NCwxMCBAQCBhaXhfdGhyZWFkX3RhcmdldDo6d2FpdCAocHRp ZF90IHB0aWQsIHN0cnVjdCB0YXJnZXRfd2FpdHN0YXR1cyAqc3RhdHVzLAog ICAgICBwaWQtb25seSBwdGlkcy4gICovCiAgIGdkYl9hc3NlcnQgKHB0aWQu aXNfcGlkICgpKTsKIAorICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBl cl9mb3JfcHRpZCAocHRpZCk7CisKICAgLyogQ2hlY2sgd2hldGhlciBsaWJw dGhkZWJ1ZyBtaWdodCBiZSByZWFkeSB0byBiZSBpbml0aWFsaXplZC4gICov Ci0gIGlmICghcGRfYWN0aXZlICYmIHN0YXR1cy0+a2luZCAoKSA9PSBUQVJH RVRfV0FJVEtJTkRfU1RPUFBFRAorICBpZiAoIWRhdGEtPnBkX2FjdGl2ZSAm JiBzdGF0dXMtPmtpbmQgKCkgPT0gVEFSR0VUX1dBSVRLSU5EX1NUT1BQRUQK ICAgICAgICYmIHN0YXR1cy0+c2lnICgpID09IEdEQl9TSUdOQUxfVFJBUCkK ICAgICB7CiAgICAgICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpwcm9jX3Rh cmdldApAQCAtMTEwNSw3ICsxMTY2LDcgQEAgYWl4X3RocmVhZF90YXJnZXQ6 OndhaXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0dXMg KnN0YXR1cywKICAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gcmVn Y2FjaGUtPmFyY2ggKCk7CiAKICAgICAgIGlmIChyZWdjYWNoZV9yZWFkX3Bj IChyZWdjYWNoZSkKLQkgIC0gZ2RiYXJjaF9kZWNyX3BjX2FmdGVyX2JyZWFr IChnZGJhcmNoKSA9PSBwZF9icmtfYWRkcikKKwkgIC0gZ2RiYXJjaF9kZWNy X3BjX2FmdGVyX2JyZWFrIChnZGJhcmNoKSA9PSBkYXRhLT5wZF9icmtfYWRk cikKIAlyZXR1cm4gcGRfYWN0aXZhdGUgKHB0aWQucGlkICgpKTsKICAgICB9 CiAKQEAgLTEyMjksMTggKzEyOTAsMjAgQEAgZmV0Y2hfcmVnc191c2VyX3Ro cmVhZCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJfcHRocmVh ZF90IHBkdGlkKQogICBwcGNfZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJj aF90ZGVwPHBwY19nZGJhcmNoX3RkZXA+IChnZGJhcmNoKTsKICAgaW50IHN0 YXR1cywgaTsKICAgcHRoZGJfY29udGV4dF90IGN0eDsKKyAgc3RydWN0IGFp eF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworICBkYXRhID0gZ2V0X3RocmVh ZF9kYXRhX2hlbHBlcl9mb3JfcHRpZCAoaW5mZXJpb3JfcHRpZCk7CiAKICAg aWYgKGRlYnVnX2FpeF90aHJlYWQpCiAgICAgZ2RiX3ByaW50ZiAoZ2RiX3N0 ZGxvZywgCiAJCSJmZXRjaF9yZWdzX3VzZXJfdGhyZWFkICVseFxuIiwgKGxv bmcpIHBkdGlkKTsKLSAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9jb250ZXh0 IChwZF9zZXNzaW9uLCBwZHRpZCwgJmN0eCk7CisgIHN0YXR1cyA9IHB0aGRi X3B0aHJlYWRfY29udGV4dCAoZGF0YS0+cGRfc2Vzc2lvbiwgcGR0aWQsICZj dHgpOwogICBpZiAoc3RhdHVzICE9IFBUSERCX1NVQ0NFU1MpCiAgICAgZXJy b3IgKF8oImFpeC10aHJlYWQ6IGZldGNoX3JlZ2lzdGVyczogcHRoZGJfcHRo cmVhZF9jb250ZXh0IHJldHVybmVkICVzIiksCiAJICAgcGRfc3RhdHVzMnN0 ciAoc3RhdHVzKSk7CiAKICAgLyogR2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVy cy4gICovCiAKLSAgaWYgKGFyY2g2NCkKKyAgaWYgKGRhdGEtPmFyY2g2NCkK ICAgICBzdXBwbHlfZ3ByczY0IChyZWdjYWNoZSwgY3R4Lmdwcik7CiAgIGVs c2UKICAgICBmb3IgKGkgPSAwOyBpIDwgcHBjX251bV9ncHJzOyBpKyspCkBA IC0xMjUzLDcgKzEzMTYsNyBAQCBmZXRjaF9yZWdzX3VzZXJfdGhyZWFkIChz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBwdGhkYl9wdGhyZWFkX3QgcGR0 aWQpCiAKICAgLyogU3BlY2lhbCByZWdpc3RlcnMuICAqLwogCi0gIGlmIChh cmNoNjQpCisgIGlmIChkYXRhLT5hcmNoNjQpCiAgICAgc3VwcGx5X3NwcnM2 NCAocmVnY2FjaGUsIGN0eC5pYXIsIGN0eC5tc3IsIGN0eC5jciwgY3R4Lmxy LCBjdHguY3RyLAogCQkJICAgICBjdHgueGVyLCBjdHguZnBzY3IpOwogICBl bHNlCkBAIC0xMjg4LDE4ICsxMzUxLDIxIEBAIGZldGNoX3JlZ3Nfa2VybmVs X3RocmVhZCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25v LAogICBzdHJ1Y3QgcHR4c3BycyBzcHJzNjQ7CiAgIHN0cnVjdCBwdHNwcnMg c3ByczMyOwogICBpbnQgaTsKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFi bGVzICpkYXRhOworICAKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxw ZXJfZm9yX3B0aWQgKHJlZ2NhY2hlLT5wdGlkICgpKTsKIAogICBpZiAoZGVi dWdfYWl4X3RocmVhZCkKICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLAog CQkiZmV0Y2hfcmVnc19rZXJuZWxfdGhyZWFkIHRpZD0lbHggcmVnbm89JWQg YXJjaDY0PSVkXG4iLAotCQkobG9uZykgdGlkLCByZWdubywgYXJjaDY0KTsK KwkJKGxvbmcpIHRpZCwgcmVnbm8sIGRhdGEtPmFyY2g2NCk7CiAKICAgLyog R2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycy4gICovCiAgIGlmIChyZWdubyA9 PSAtMQogICAgICAgfHwgKHRkZXAtPnBwY19ncDBfcmVnbnVtIDw9IHJlZ25v CiAJICAmJiByZWdubyA8IHRkZXAtPnBwY19ncDBfcmVnbnVtICsgcHBjX251 bV9ncHJzKSkKICAgICB7Ci0gICAgICBpZiAoYXJjaDY0KQorICAgICAgaWYg KGRhdGEtPmFyY2g2NCkKIAl7CiAJICBpZiAoIXB0cmFjZTY0YWl4IChQVFRf UkVBRF9HUFJTLCB0aWQsIAogCQkJICAgICh1bnNpZ25lZCBsb25nKSBncHJz NjQsIDAsIE5VTEwpKQpAQCAtMTMzMSw3ICsxMzk3LDcgQEAgZmV0Y2hfcmVn c19rZXJuZWxfdGhyZWFkIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBp bnQgcmVnbm8sCiAKICAgaWYgKHJlZ25vID09IC0xIHx8IHNwZWNpYWxfcmVn aXN0ZXJfcCAoZ2RiYXJjaCwgcmVnbm8pKQogICAgIHsKLSAgICAgIGlmIChh cmNoNjQpCisgICAgICBpZiAoZGF0YS0+YXJjaDY0KQogCXsKIAkgIGlmICgh cHRyYWNlNjRhaXggKFBUVF9SRUFEX1NQUlMsIHRpZCwgCiAJCQkgICAgKHVu c2lnbmVkIGxvbmcpICZzcHJzNjQsIDAsIE5VTEwpKQpAQCAtMTM2Myw3ICsx NDI5LDExIEBAIGFpeF90aHJlYWRfdGFyZ2V0OjpmZXRjaF9yZWdpc3RlcnMg KHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubykKICAgc3Ry dWN0IHRocmVhZF9pbmZvICp0aHJlYWQ7CiAgIHB0aGRiX3RpZF90IHRpZDsK IAotICBpZiAoIVBEX1RJRCAocmVnY2FjaGUtPnB0aWQgKCkpKQorICAvKiBJ ZiBhIG5ldyBpbmZlcmlvciBpcyBib3JuLCB0aGVuIGl0cyBwdGhyZWFkIGRl YnVnIGxpYnJhcnkgaXMgeWV0IHRvCisgICAgIGluaXRpYWxpc2VkIGFuZCBo ZW5jZSBoYXMgbm8gcHJpdmF0ZSBkYXRhLiBTbyB0aGUgYmVsb3cgaWYgY29u ZGl0aW9uCisgICAgIGV4aXN0cy4gICovCisKKyAgaWYgKHJlZ2NhY2hlLT5w dGlkICgpLnRpZCAoKSA9PSAwKQogICAgIGJlbmVhdGggKCktPmZldGNoX3Jl Z2lzdGVycyAocmVnY2FjaGUsIHJlZ25vKTsKICAgZWxzZQogICAgIHsKQEAg LTE1MTEsNiArMTU4MSw4IEBAIHN0b3JlX3JlZ3NfdXNlcl90aHJlYWQgKGNv bnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHB0aGRiX3B0aHJlYWRf dCBwZHRpZCkKICAgcHRoZGJfY29udGV4dF90IGN0eDsKICAgdWludDMyX3Qg aW50MzI7CiAgIHVpbnQ2NF90IGludDY0OworICBzdHJ1Y3QgYWl4X3RocmVh ZF92YXJpYWJsZXMgKmRhdGE7CisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFf aGVscGVyX2Zvcl9wdGlkIChpbmZlcmlvcl9wdGlkKTsKIAogICBpZiAoZGVi dWdfYWl4X3RocmVhZCkKICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLCAK QEAgLTE1MTgsNyArMTU5MCw3IEBAIHN0b3JlX3JlZ3NfdXNlcl90aHJlYWQg KGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHB0aGRiX3B0aHJl YWRfdCBwZHRpZCkKIAogICAvKiBSZXRyaWV2ZSB0aGUgdGhyZWFkJ3MgY3Vy cmVudCBjb250ZXh0IGZvciBpdHMgbm9uLXJlZ2lzdGVyCiAgICAgIHZhbHVl cy4gICovCi0gIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfY29udGV4dCAocGRf c2Vzc2lvbiwgcGR0aWQsICZjdHgpOworICBzdGF0dXMgPSBwdGhkYl9wdGhy ZWFkX2NvbnRleHQgKGRhdGEtPnBkX3Nlc3Npb24sIHBkdGlkLCAmY3R4KTsK ICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTKQogICAgIGVycm9yIChf KCJhaXgtdGhyZWFkOiBzdG9yZV9yZWdpc3RlcnM6IHB0aGRiX3B0aHJlYWRf Y29udGV4dCByZXR1cm5lZCAlcyIpLAogCSAgIHBkX3N0YXR1czJzdHIgKHN0 YXR1cykpOwpAQCAtMTUyOCw3ICsxNjAwLDcgQEAgc3RvcmVfcmVnc191c2Vy X3RocmVhZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRo ZGJfcHRocmVhZF90IHBkdGlkKQogICBmb3IgKGkgPSAwOyBpIDwgcHBjX251 bV9ncHJzOyBpKyspCiAgICAgaWYgKFJFR19WQUxJRCA9PSByZWdjYWNoZS0+ Z2V0X3JlZ2lzdGVyX3N0YXR1cyAodGRlcC0+cHBjX2dwMF9yZWdudW0gKyBp KSkKICAgICAgIHsKLQlpZiAoYXJjaDY0KQorCWlmIChkYXRhLT5hcmNoNjQp CiAJICB7CiAJICAgIHJlZ2NhY2hlLT5yYXdfY29sbGVjdCAodGRlcC0+cHBj X2dwMF9yZWdudW0gKyBpLCAodm9pZCAqKSAmaW50NjQpOwogCSAgICBjdHgu Z3ByW2ldID0gaW50NjQ7CkBAIC0xNTQ1LDcgKzE2MTcsNyBAQCBzdG9yZV9y ZWdzX3VzZXJfdGhyZWFkIChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCBwdGhkYl9wdGhyZWFkX3QgcGR0aWQpCiAgICAgZmlsbF9mcHJzIChy ZWdjYWNoZSwgY3R4LmZwcik7CiAKICAgLyogU3BlY2lhbCByZWdpc3RlcnMg KGFsd2F5cyBrZXB0IGluIGN0eCBhcyA2NCBiaXRzKS4gICovCi0gIGlmIChh cmNoNjQpCisgIGlmIChkYXRhLT5hcmNoNjQpCiAgICAgewogICAgICAgZmls bF9zcHJzNjQgKHJlZ2NhY2hlLCAmY3R4LmlhciwgJmN0eC5tc3IsICZjdHgu Y3IsICZjdHgubHIsICZjdHguY3RyLAogCQkJICAgICAmY3R4LnhlciwgJmN0 eC5mcHNjcik7CkBAIC0xNTc2LDcgKzE2NDgsNyBAQCBzdG9yZV9yZWdzX3Vz ZXJfdGhyZWFkIChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBw dGhkYl9wdGhyZWFkX3QgcGR0aWQpCiAJY3R4LmZwc2NyID0gdG1wX2Zwc2Ny OwogICAgIH0KIAotICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3NldGNvbnRl eHQgKHBkX3Nlc3Npb24sIHBkdGlkLCAmY3R4KTsKKyAgc3RhdHVzID0gcHRo ZGJfcHRocmVhZF9zZXRjb250ZXh0IChkYXRhLT5wZF9zZXNzaW9uLCBwZHRp ZCwgJmN0eCk7CiAgIGlmIChzdGF0dXMgIT0gUFRIREJfU1VDQ0VTUykKICAg ICBlcnJvciAoXygiYWl4LXRocmVhZDogc3RvcmVfcmVnaXN0ZXJzOiAiCiAJ ICAgICAicHRoZGJfcHRocmVhZF9zZXRjb250ZXh0IHJldHVybmVkICVzIiks CkBAIC0xNjAyLDYgKzE2NzQsOSBAQCBzdG9yZV9yZWdzX2tlcm5lbF90aHJl YWQgKGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdu bywKICAgZG91YmxlIGZwcnNbcHBjX251bV9mcHJzXTsKICAgc3RydWN0IHB0 eHNwcnMgc3ByczY0OwogICBzdHJ1Y3QgcHRzcHJzICBzcHJzMzI7CisgIHN0 cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAgCisgIGRhdGEg PSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlkIChyZWdjYWNoZS0+ cHRpZCAoKSk7CiAKICAgaWYgKGRlYnVnX2FpeF90aHJlYWQpCiAgICAgZ2Ri X3ByaW50ZiAoZ2RiX3N0ZGxvZywgCkBAIC0xNjEzLDcgKzE2ODgsNyBAQCBz dG9yZV9yZWdzX2tlcm5lbF90aHJlYWQgKGNvbnN0IHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsIGludCByZWdubywKICAgICAgIHx8ICh0ZGVwLT5wcGNf Z3AwX3JlZ251bSA8PSByZWdubwogCSAgJiYgcmVnbm8gPCB0ZGVwLT5wcGNf Z3AwX3JlZ251bSArIHBwY19udW1fZnBycykpCiAgICAgewotICAgICAgaWYg KGFyY2g2NCkKKyAgICAgIGlmIChkYXRhLT5hcmNoNjQpCiAJewogCSAgLyog UHJlLWZldGNoOiBzb21lIHJlZ3MgbWF5IG5vdCBiZSBpbiB0aGUgY2FjaGUu ICAqLwogCSAgcHRyYWNlNjRhaXggKFBUVF9SRUFEX0dQUlMsIHRpZCwgKHVu c2lnbmVkIGxvbmcpIGdwcnM2NCwgMCwgTlVMTCk7CkBAIC0xNjQ2LDcgKzE3 MjEsNyBAQCBzdG9yZV9yZWdzX2tlcm5lbF90aHJlYWQgKGNvbnN0IHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubywKIAogICBpZiAocmVn bm8gPT0gLTEgfHwgc3BlY2lhbF9yZWdpc3Rlcl9wIChnZGJhcmNoLCByZWdu bykpCiAgICAgewotICAgICAgaWYgKGFyY2g2NCkKKyAgICAgIGlmIChkYXRh LT5hcmNoNjQpCiAJewogCSAgLyogUHJlLWZldGNoOiBzb21lIHJlZ2lzdGVy cyB3b24ndCBiZSBpbiB0aGUgY2FjaGUuICAqLwogCSAgcHRyYWNlNjRhaXgg KFBUVF9SRUFEX1NQUlMsIHRpZCwgCkBAIC0xNzAzLDcgKzE3NzgsNyBAQCBh aXhfdGhyZWFkX3RhcmdldDo6c3RvcmVfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8pCiAgIHN0cnVjdCB0aHJlYWRf aW5mbyAqdGhyZWFkOwogICBwdGhkYl90aWRfdCB0aWQ7CiAKLSAgaWYgKCFQ RF9USUQgKHJlZ2NhY2hlLT5wdGlkICgpKSkKKyAgaWYgKHJlZ2NhY2hlLT5w dGlkICgpLnRpZCAoKSA9PSAwKQogICAgIGJlbmVhdGggKCktPnN0b3JlX3Jl Z2lzdGVycyAocmVnY2FjaGUsIHJlZ25vKTsKICAgZWxzZQogICAgIHsKQEAg LTE3NDEsNyArMTgxNiw3IEBAIGFpeF90aHJlYWRfdGFyZ2V0Ojptb3Vybl9p bmZlcmlvciAoKQogewogICB0YXJnZXRfb3BzICpiZW5lYXRoID0gdGhpcy0+ YmVuZWF0aCAoKTsKIAotICBwZF9kZWFjdGl2YXRlICgpOworICBwZF9kaXNh YmxlICgpOwogICBiZW5lYXRoLT5tb3Vybl9pbmZlcmlvciAoKTsKIH0KIApA QCAtMTc1MCw3ICsxODI1LDcgQEAgYWl4X3RocmVhZF90YXJnZXQ6Om1vdXJu X2luZmVyaW9yICgpCiBib29sCiBhaXhfdGhyZWFkX3RhcmdldDo6dGhyZWFk X2FsaXZlIChwdGlkX3QgcHRpZCkKIHsKLSAgaWYgKCFQRF9USUQgKHB0aWQp KQorICBpZiAocHRpZC50aWQgKCkgPT0gMCkKICAgICByZXR1cm4gYmVuZWF0 aCAoKS0+dGhyZWFkX2FsaXZlIChwdGlkKTsKIAogICAvKiBXZSB1cGRhdGUg dGhlIHRocmVhZCBsaXN0IGV2ZXJ5IHRpbWUgdGhlIGNoaWxkIHN0b3BzLCBz byBhbGwKQEAgLTE3NjYsNyArMTg0MSw3IEBAIGFpeF90aHJlYWRfdGFyZ2V0 Ojp0aHJlYWRfYWxpdmUgKHB0aWRfdCBwdGlkKQogc3RkOjpzdHJpbmcKIGFp eF90aHJlYWRfdGFyZ2V0OjpwaWRfdG9fc3RyIChwdGlkX3QgcHRpZCkKIHsK LSAgaWYgKCFQRF9USUQgKHB0aWQpKQorICBpZiAocHRpZC50aWQgKCkgPT0g MCkKICAgICByZXR1cm4gYmVuZWF0aCAoKS0+cGlkX3RvX3N0ciAocHRpZCk7 CiAKICAgcmV0dXJuIHN0cmluZ19wcmludGYgKF8oIlRocmVhZCAlcyIpLCBw dWxvbmdlc3QgKHB0aWQudGlkICgpKSk7CkBAIC0xNzg2LDggKzE4NjEsMTEg QEAgYWl4X3RocmVhZF90YXJnZXQ6OmV4dHJhX3RocmVhZF9pbmZvIChzdHJ1 Y3QgdGhyZWFkX2luZm8gKnRocmVhZCkKICAgcHRoZGJfZGV0YWNoc3RhdGVf dCBkZXRhY2hzdGF0ZTsKICAgaW50IGNhbmNlbHBlbmQ7CiAgIHN0YXRpYyBj aGFyICpyZXQgPSBOVUxMOworICBzdHJ1Y3QgYWl4X3RocmVhZF92YXJpYWJs ZXMgKmRhdGE7CisKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJf Zm9yX3B0aWQgKHRocmVhZC0+cHRpZCk7CiAKLSAgaWYgKCFQRF9USUQgKHRo cmVhZC0+cHRpZCkpCisgIGlmICh0aHJlYWQtPnB0aWQudGlkICgpID09IDAp CiAgICAgcmV0dXJuIE5VTEw7CiAKICAgc3RyaW5nX2ZpbGUgYnVmOwpAQCAt MTgwMCwyNCArMTg3OCwyNCBAQCBhaXhfdGhyZWFkX3RhcmdldDo6ZXh0cmFf dGhyZWFkX2luZm8gKHN0cnVjdCB0aHJlYWRfaW5mbyAqdGhyZWFkKQogICAg IC8qIGkxOG46IExpa2UgInRocmVhZC1pZGVudGlmaWVyICVkLCBbc3RhdGVd IHJ1bm5pbmcsIHN1c3BlbmRlZCIgKi8KICAgICBidWYucHJpbnRmIChfKCJ0 aWQgJWQiKSwgKGludCl0aWQpOwogCi0gIHN0YXR1cyA9IHB0aGRiX3B0aHJl YWRfc3RhdGUgKHBkX3Nlc3Npb24sIHBkdGlkLCAmc3RhdGUpOworICBzdGF0 dXMgPSBwdGhkYl9wdGhyZWFkX3N0YXRlIChkYXRhLT5wZF9zZXNzaW9uLCBw ZHRpZCwgJnN0YXRlKTsKICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNT KQogICAgIHN0YXRlID0gUFNUX05PVFNVUDsKICAgYnVmLnByaW50ZiAoIiwg JXMiLCBzdGF0ZTJzdHIgKHN0YXRlKSk7CiAKLSAgc3RhdHVzID0gcHRoZGJf cHRocmVhZF9zdXNwZW5kc3RhdGUgKHBkX3Nlc3Npb24sIHBkdGlkLCAKKyAg c3RhdHVzID0gcHRoZGJfcHRocmVhZF9zdXNwZW5kc3RhdGUgKGRhdGEtPnBk X3Nlc3Npb24sIHBkdGlkLCAKIAkJCQkgICAgICAgJnN1c3BlbmRzdGF0ZSk7 CiAgIGlmIChzdGF0dXMgPT0gUFRIREJfU1VDQ0VTUyAmJiBzdXNwZW5kc3Rh dGUgPT0gUFNTX1NVU1BFTkRFRCkKICAgICAvKiBpMThuOiBMaWtlICJUaHJl YWQtSWQgJWQsIFtzdGF0ZV0gcnVubmluZywgc3VzcGVuZGVkIiAqLwogICAg IGJ1Zi5wcmludGYgKF8oIiwgc3VzcGVuZGVkIikpOwogCi0gIHN0YXR1cyA9 IHB0aGRiX3B0aHJlYWRfZGV0YWNoc3RhdGUgKHBkX3Nlc3Npb24sIHBkdGlk LCAKKyAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9kZXRhY2hzdGF0ZSAoZGF0 YS0+cGRfc2Vzc2lvbiwgcGR0aWQsIAogCQkJCSAgICAgICZkZXRhY2hzdGF0 ZSk7CiAgIGlmIChzdGF0dXMgPT0gUFRIREJfU1VDQ0VTUyAmJiBkZXRhY2hz dGF0ZSA9PSBQRFNfREVUQUNIRUQpCiAgICAgLyogaTE4bjogTGlrZSAiVGhy ZWFkLUlkICVkLCBbc3RhdGVdIHJ1bm5pbmcsIGRldGFjaGVkIiAqLwogICAg IGJ1Zi5wcmludGYgKF8oIiwgZGV0YWNoZWQiKSk7CiAKLSAgcHRoZGJfcHRo cmVhZF9jYW5jZWxwZW5kIChwZF9zZXNzaW9uLCBwZHRpZCwgJmNhbmNlbHBl bmQpOworICBwdGhkYl9wdGhyZWFkX2NhbmNlbHBlbmQgKGRhdGEtPnBkX3Nl c3Npb24sIHBkdGlkLCAmY2FuY2VscGVuZCk7CiAgIGlmIChzdGF0dXMgPT0g UFRIREJfU1VDQ0VTUyAmJiBjYW5jZWxwZW5kKQogICAgIC8qIGkxOG46IExp a2UgIlRocmVhZC1JZCAlZCwgW3N0YXRlXSBydW5uaW5nLCBjYW5jZWwgcGVu ZGluZyIgKi8KICAgICBidWYucHJpbnRmIChfKCIsIGNhbmNlbCBwZW5kaW5n IikpOwpkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLWFpeC5jIGIvZ2RiL3NvbGli LWFpeC5jCmluZGV4IGY0ODNmNTRkZTEzLi42YmU4MTA2NGViZCAxMDA2NDQK LS0tIGEvZ2RiL3NvbGliLWFpeC5jCisrKyBiL2dkYi9zb2xpYi1haXguYwpA QCAtNjE4LDYgKzYxOCwyMCBAQCBzb2xpYl9haXhfYmZkX29wZW4gKGNvbnN0 IGNoYXIgKnBhdGhuYW1lKQogICAgICAgaWYgKG1lbWJlcl9uYW1lID09IGJm ZF9nZXRfZmlsZW5hbWUgKG9iamVjdF9iZmQuZ2V0ICgpKSkKIAlicmVhazsK IAorICAgICAgc3RkOjpzdHJpbmcgcyA9IGJmZF9nZXRfZmlsZW5hbWUgKG9i amVjdF9iZmQuZ2V0ICgpKTsKKworICAgICAgLyogRm9yIGV2ZXJ5IGluZmVy aW9yIGFmdGVyIGZpcnN0IGludCBiZmQgc3lzdGVtIHdlIAorCSB3aWxsIGhh dmUgdGhlIHBhdGhuYW1lIGluc3RlYWQgb2YgdGhlIG1lbWJlciBuYW1lCisJ IHJlZ2lzdGVyZWQuIEhlbmNlIHRoZSBiZWxvdyBjb25kaXRpb24gZXhpc3Rz LiAgKi8KKworICAgICAgaWYgKHMuZmluZCAoJygnKSAhPSBzdGQ6OnN0cmlu Zzo6bnBvcykKKwl7CisJICBpbnQgcG9zID0gcy5maW5kICgnKCcpOworCSAg aW50IGxlbiA9IHMuZmluZCAoJyknKSAtIHMuZmluZCAoJygnKTsKKwkgIGlm IChzLnN1YnN0ciAocG9zKzEsIGxlbi0xKSA9PSBtZW1iZXJfbmFtZSkgCisJ ICAgIHJldHVybiBvYmplY3RfYmZkOworCX0KKwogICAgICAgb2JqZWN0X2Jm ZCA9IGdkYl9iZmRfb3BlbnJfbmV4dF9hcmNoaXZlZF9maWxlIChhcmNoaXZl X2JmZC5nZXQgKCksCiAJCQkJCQkgICAgIG9iamVjdF9iZmQuZ2V0ICgpKTsK ICAgICB9Ci0tIAoyLjMxLjEKCg== --_004_CH2PR15MB3544E905156ECE35D5ADCD43D6A19CH2PR15MB3544namp_--