From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id 8E3D93858C31 for ; Fri, 17 Feb 2023 13:22:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8E3D93858C31 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 (m0098404.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31HBJlvR014835; Fri, 17 Feb 2023 13:22:12 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=FpZ8Pp66k/u971GErjFoSNXVE/6zZgvByBHxGZZ5ndM=; b=L8BHeoCV/n6cP/FUsjbZbSp2Lkj81e60AyQff4yYJaAPedbp1I4i2dsIgTYWDNP1d4A0 8KrKW11DBYsvKSsuAaxPbNF9UsHbltxyHOb7OSPwO29z6nVFA1dIk53vZNt6pc/VoAHB FZ30sq9aMkB1CGyr5y9JB8IEP58UAdsAEzolRsIE5zvGK/LzHESRDkqlr+aQ42XxbqkE 4KbcALsjKOLgktGuY4OPfKBTV3U0lU5vxpNrGoXRlYQgFPOy6OWRV8MQntpwcdhHxkst fgBltUJsCjyH1M402xhexwM5nMdAALxSqXOjZgDgRqSRwGLxotkTtfCl0pIw+VYxz1Ul Fg== Received: from nam02-bn1-obe.outbound.protection.outlook.com (mail-bn1nam02lp2047.outbound.protection.outlook.com [104.47.51.47]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3nt05151rv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 17 Feb 2023 13:22:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ESeNngAD0NjgM+mc8FFCNB+V040t3SOFceB3jhE+5EGMMRFOXa108T5o+99VJeUb+bqp0uoCAPvJXbkvBAEInjuUM9Y1LZE9qVtY9ZHBRngEetIzlDBrKMR0segMMvaGHnFoiZ6kMd341P9x5Tou0VGTiEMmFmePCatyw5Wy2UhxqNXlr1apzmcDsYr5SO5OhAUwW35zVvULtNFYLgHKl5xtxXvRyFxwS9gtBMXK8h/di5IHEctKwjtXTmUTvhAsJYV8ELE34nzdBhU/PTEfTby0tdOvXxhm8i4hfkNYd5fezP3lfnLLz8mx5PVS+dQaqBRNBRgWoIqxJAAYG/63DA== 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=FpZ8Pp66k/u971GErjFoSNXVE/6zZgvByBHxGZZ5ndM=; b=kfHD5Qt9AyxNKVeOWfo7buNglPnXAxlLqHuzr6R5iSN0RhKFDEFDVfmMbEW69hVLd/s3rY9DAPRJqVDDqrILRBeXvS1wl/tLdbB/FXuo1rNtmiDDtEDoYy1CAHt/hgjBJInnyECAsvtnonAUfhHxbduOZd/cuvX+FSad0wohkf3AmcExexDKtYS7XRF47nD+fnk1KSAttydOTAkICMJBLHC71jGFrvqopoGE72wZLBTl/uIE0HRJdmjZ6j3kTvguhVcPsULX9WMR5CKW6G/ek3CRZRtrtXpsJmJ3D0V97eZAjtxYfoSykfiDlxnThXnZFItQgLSNo/dnuXuYI2GUjw== 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 SN7PR15MB6085.namprd15.prod.outlook.com (2603:10b6:806:2e9::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.15; Fri, 17 Feb 2023 13:22:09 +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 13:22:09 +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+AgAAT164= Date: Fri, 17 Feb 2023 13:22:08 +0000 Message-ID: References: <09f2433177505899c9bd31347af9b43118e4f890.camel@de.ibm.com> <8b7c91369d53c1ace668ff03f4d819a66f5e64e6.camel@de.ibm.com> <10cb526ef81fd8a63fd776e51bf9505c8dff1e33.camel@de.ibm.com> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-IN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH2PR15MB3544:EE_|SN7PR15MB6085:EE_ x-ms-office365-filtering-correlation-id: 9319abbf-c937-4b8b-4618-08db10e9f8b0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: CKnO7BBv9BSfFkQc9R78GPDYiXNUf9MLkRyEX5llI0bqz1TFFxzSvGAcQVIdQiPx2AIYl6XKQYZdTI49HzBp90+kuK6AgtN2T3uv2QosynanVVXMkmW4WuAvS8bTtLb82/NWbNn8b3sXAGrE8mNAAbJiZzCAwzfpwH2ZS3goJw648CQRE2WL4dWMc5ubhKW83DK+r6XwPEiazXO6nSVI7bFczXuM2yoCe3Kvtp0tVWT6Ybu/ysspy3+Vu4fmiiFHMrgVGmaUF8lXtLlSG9AWqOe2IgzaQNmJVTThGbKbIAmkqx8Uz3s3jAkA2BEfBuav9Zoc+nZ1h7GZ4jI0SvA4tfeWFYgrLPgAt+c3n3VDn441Gs6q0nqAsytGeb8CfmY1SD5pT2ekxrbE9UOKe8gJGXT30VInEJHKxY7zLHVb5s+cMC9qXAxllN1ceLGSfS2QxiZiIoZJWNcvGL6cBDgPd7RG3CVI2OJoscbadRoPfXn+a+l1OdVZsmm8RRH3qCUS1foPX4R+yNB7jrHLSsZsJd5Jj+MhD0BivLQwW1YVs+ciXChYWPC9JCYRjfsjJKsklKV0caGb0nHtqzsJ1loxuqXry0Kj+xY0ErWIeUxP1X3FcZ/uz1/S1OxX6+AbNIazf9I6rpDYz0KcNq4rZ+vpaiFHwIQJbUrKmWGGekKlGW4bEtiRBPc7U8Hlg9PatQGfpkzi5UJDFiG9W/yjSjYk9w== 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)(396003)(39860400002)(136003)(366004)(346002)(376002)(451199018)(99936003)(83380400001)(33656002)(55016003)(9686003)(186003)(38070700005)(86362001)(38100700002)(122000001)(71200400001)(7696005)(52536014)(5660300002)(478600001)(316002)(6506007)(53546011)(8676002)(66476007)(66946007)(91956017)(76116006)(64756008)(66556008)(66446008)(4326008)(8936002)(41300700001)(2906002)(110136005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?sKXcSW0ZMWEGBC1NhWffOowbKp93c4ULgLzcX1uhG5ILKCBoLs8SzkDwawHs?= =?us-ascii?Q?z/vrqutcbP0umcktXTwkjXByMTHdPd2YHxSF5PDRNwcuPGQDo0aaR75EtFL7?= =?us-ascii?Q?yvw4SPYi5vyxKpOeYAVaNZa2UJaGIkI4TtnUxQ9c1RGyxWzON9qjpiMReznF?= =?us-ascii?Q?dvtC/du9ECrxCk24x7t6yjKA0hLA0+A4WXz3u6+ppkltoSaC4SGwnOP0XC/H?= =?us-ascii?Q?V+1WWVHjgQii1/qz/yVTL1jMEmCakesfIXAco/k/h6Pm++qaPN5go245c1uU?= =?us-ascii?Q?0VxXEP/GuohJFxLWxNPxcD8gPhW6BTFFAaaPJc1uiaEaNX0z6Lqsn3CyKKby?= =?us-ascii?Q?kbYMEZ7lQMoEP0s983Ct4WA4VfSxiyiJySdT8snpFca6Tafyz1vUVKYWibkC?= =?us-ascii?Q?NlQ16RLTaITwvmB7ZgVrW59hb4/a1rJWydcDbai7eyan7Z0CHfonKc3WgT5I?= =?us-ascii?Q?L/WFcQi0/I3AIO4/3MBAdbhedHMwgIuviXXBDqGslwUeCQWK8a7ij/hraPQK?= =?us-ascii?Q?xmJeZnzTg+b2nwL4j1fxpHb2pN0Rms1XuDJ45x0m6pwUcG8wtOl0Q/LLCfY3?= =?us-ascii?Q?RuF0Y5mmZ2ZFNRdLZ8GNhMDNHB4inOZJQaek7wxgJnEFdxZmDY/uQ8oq7wNZ?= =?us-ascii?Q?PDS4rP0wpny6LK4hGA7749i84BwabzbJATfWZDDqmAyTr9EZjPAHXt4aRvpv?= =?us-ascii?Q?ZeWzdChVtPA23lUTCMxyhl6SUt40sLepZfo49ekwenp0ccRAUGx+M5eAlnFQ?= =?us-ascii?Q?rh8mmvL35qGWC16Zro0R9NLgj58dW/w5sD1M940BBWI++RGkQXL9wM12Vjmm?= =?us-ascii?Q?rSn+o8QACtyJ38KpV8NIXdGPjzTyqtqrxWbzK5yeU2GqlrgepNQ1lD8sljyY?= =?us-ascii?Q?NpF+ZNX88vk8bYCJfmmZyLFoV7HLCkjsxLU77yx/phTNsCenr34LfC7owsDQ?= =?us-ascii?Q?uguzGDO8nA3bOIXx3r3oqe+dvSXGY1H/MiqRvn3ScVIbBnSN2CGNIJHjgB5o?= =?us-ascii?Q?mhGNv2gFn78lxcf/57FV7FCx4po6nKaqQIAPQ4RNz9u+Hq/PgpvR7iG9USwU?= =?us-ascii?Q?PH887yUV3g6WHJ4oTaii8Wb88EpWJ/HElwFWphJbmCQD/mX0bM6XdDwtDNtE?= =?us-ascii?Q?mjCkJCQVSf0P0S43A1pmMI2wQSI+1CIvXsAexs4MxiTM9yTny84pkujGzAWW?= =?us-ascii?Q?ywKcEiXijUHPclicIxfnumU+ZkSnoRH8VlqEQmG8+kopoKJplEOH13BbN7nm?= =?us-ascii?Q?n8zVXreBCxkUgZkxY1N0nFJuUDbbQrAtl0MZ4RZNpalzZ9ALqJrUj8PSyf4J?= =?us-ascii?Q?OZXEjjo1bV9XQZOlPSZC4VCpVT7bTOMiy+g7XESoQU+MONugBQQaKewfJrl8?= =?us-ascii?Q?XeflM9KM+vzhvVIPWF73qNj6gHp/3GpjCcRd/BjTCybYML98hYbhjuYwKPRT?= =?us-ascii?Q?LS6Me77Os9mbZL9gh5TjJT12cF//sj5DR2aldFzj8B6PSf6rLP8A5H/+kRJO?= =?us-ascii?Q?Il3OnaBMT6CzIBmocat8yYM69/IJBwo/rGs+mYkwuuEHEEt8FQU23d8mgdDW?= =?us-ascii?Q?WGLvXW6TqDRoWpqkbGgZCJxf/cs/24A5CZpXeLkGpx5Qs5Lu1gHsaMS/zwTz?= =?us-ascii?Q?NMfn8plRsc64uPvKGm+K+wAVHzOFsG7A9xkjCZ6sTNy8MURfQ1WpSk8RJog9?= =?us-ascii?Q?xyQRbkuecT3pC8e6OSo3cn7qKsM=3D?= Content-Type: multipart/mixed; boundary="_004_CH2PR15MB3544B015A880690CA1F6284AD6A19CH2PR15MB3544namp_" 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: 9319abbf-c937-4b8b-4618-08db10e9f8b0 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Feb 2023 13:22:08.8627 (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: /hTlGvzL8gmZvSzAeqgIcTyTcXLflO+P9J1i8jEOCaZB3FhpTWmi8yLAgwVssPur7qVlvxrUANJYoMNDHdfCyQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR15MB6085 X-Proofpoint-GUID: 5KWEX3aO1EnN828inj_RdiLnqcP1YEuz X-Proofpoint-ORIG-GUID: 5KWEX3aO1EnN828inj_RdiLnqcP1YEuz 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_08,2023-02-17_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 mlxscore=0 phishscore=0 mlxlogscore=999 malwarescore=0 spamscore=0 suspectscore=0 priorityscore=1501 bulkscore=0 impostorscore=0 clxscore=1015 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302170118 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,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_CH2PR15MB3544B015A880690CA1F6284AD6A19CH2PR15MB3544namp_ Content-Type: multipart/alternative; boundary="_000_CH2PR15MB3544B015A880690CA1F6284AD6A19CH2PR15MB3544namp_" --_000_CH2PR15MB3544B015A880690CA1F6284AD6A19CH2PR15MB3544namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Ulrich, Tom and community, Yes, it resolves the issue. Thank you so much for all the support and guida= nce Ulrich, Tom and community. Kindly let me know if any changes. If not ki= ndly push these changes. Kindly see the outputs for both parent and child follow cases for the same = code in the previous email pasted below. Kindly find attached the patch. {See: 0001-Fix-multi-thread-debug-bug-in-AI= X.patch} Have a nice day ahead. Thanks and regards, Aditya. --------------------- Output with following child Reading symbols from /home/aditya/gdb_tests/ultimate-multi-thread-fork... (gdb) set detach-on-fork off (gdb) set follow-fork-mode child (gdb) r Starting program: /home/aditya/gdb_tests/ultimate-multi-thread-fork [New Thread 258] [New Thread 515] [Attaching after Thread 515 fork to child process 10748334] [New inferior 2 (process 10748334)] [Attaching after process 10748334 fork to child process 9568638] [New inferior 3 (process 9568638)] I am grandchild Reading symbols from /home/aditya/gdb_tests/ultimate-multi-thread-fork... Thread 3.1 received signal SIGINT, Interrupt. [Switching to process 9568638] thread_function (arg=3D0x0) at /home/aditya/gdb_tests/ultimate-multi-thread= -fork.c:32 32 while (1); /* break here */ ------------------- Output with following parent Reading symbols from /home/aditya/gdb_tests/ultimate-multi-thread-fork... (gdb) set detach-on-fork off (gdb) r Starting program: /home/aditya/gdb_tests/ultimate-multi-thread-fork [New Thread 258] [New Thread 515] [New inferior 2 (process 9568642)] I am parent [New inferior 3 (process 15991254)] I am parent Thread 1.2 received signal SIGINT, Interrupt. [Switching to Thread 258] thread_function (arg=3D0x0) at /home/aditya/gdb_tests/ultimate-multi-thread= -fork.c:32 32 while (1); /* break here */ (gdb) info sharedlibrary =46rom To Syms Read Shared Object Library 0xd05bc124 0xd05bf194 Yes (*) /usr/lib/libpthreads.a(shr_comm.o) 0xd05bb240 0xd05bb9a1 Yes (*) /usr/lib/libcrypt.a(shr.o) 0xd0576180 0xd05ba731 Yes (*) /usr/lib/libpthread.a(shr_xpg5.o) 0xd0100e00 0xd0575123 Yes (*) /usr/lib/libc.a(shr.o) (*): Shared library is missing debugging information. (gdb) info inferiors Num Description Connection Executable * 1 process 18743566 1 (native) /home/aditya/gdb_tests/ultima= te-multi-thread-fork 2 process 9568642 1 (native) /home/aditya/gdb_tests/ultima= te-multi-thread-fork 3 process 15991254 1 (native) /home/aditya/gdb_tests/ultima= te-multi-thread-fork (gdb) From: Ulrich Weigand Date: Friday, 17 February 2023 at 5:34 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: >GDB has three things to do here. >** It will get a new object file notifier of the new process, >** new inferior is created so the new inferior notifier >** And follow_fork () event since GDB must decide it has to follow the chi= ld. >Note:- Our child process is > >This is the exact order in which the above 3 things will be executed from = the >main GDB event loop. Hmm. I understood the order to be a bit different. I agree there will fir= st be new objfile notifiers for the main executable and shared libraries. But then we should get to infrun.c:follow_fork, which calls infrun.c:follow_fork_inferior, which does in sequence: switch_to_thread (*child_inf->threads ().begin ()); post_create_inferior (0); So it should *first* do the switch_to_thread, and only *then* call post_create_inferior (which in turn triggers the new inferior notifier). As a result, I understand it should be fine to switch ptid_t in the new inferior notifier. But I agree that already switching it in the new objfile notifier is a problem. I see that linux-thread-db.c has special code for that: /* 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 false; I believe you need to similarly skip calling pd_activate from pd_enable if that in_initial_library_scan flag is true for the current inferior. Can you try if this resolves the problem? Bye, Ulrich --_000_CH2PR15MB3544B015A880690CA1F6284AD6A19CH2PR15MB3544namp_-- --_004_CH2PR15MB3544B015A880690CA1F6284AD6A19CH2PR15MB3544namp_ 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=29994; creation-date="Fri, 17 Feb 2023 13:21:01 GMT"; modification-date="Fri, 17 Feb 2023 13:21:01 GMT" Content-Transfer-Encoding: base64 RnJvbSAxZmU2Y2RkZThiNjUwNjc0ZTMxN2JlYjVhOTRmNmE0NWFhNDNkZTg0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFk aGFyIEthbWF0aCA8QWRpdHlhLkthbWF0aDFAaWJtLmNvbT4KRGF0ZTogRnJp LCAxNyBGZWIgMjAyMyAwNzoxMTo0OCAtMDYwMApTdWJqZWN0OiBbUEFUQ0hd 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 YWl4LXRocmVhZC5jIHwgMzc1ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tCiBnZGIvc29saWItYWl4LmMgIHwgIDE0 ICsrCiAyIGZpbGVzIGNoYW5nZWQsIDI0NiBpbnNlcnRpb25zKCspLCAxNDMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2RiL2FpeC10aHJlYWQuYyBi L2dkYi9haXgtdGhyZWFkLmMKaW5kZXggZTU1NmMxNTM1NzYuLmM3MzI4ZDlk YzY0IDEwMDY0NAotLS0gYS9nZGIvYWl4LXRocmVhZC5jCisrKyBiL2dkYi9h 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 cGVyIHRvIGdldCBkYXRhIGZvciBwdGlkIGluIGEgZnVuY3Rpb24uICAqLwor CitzdGF0aWMgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzKgorZ2V0X3Ro cmVhZF9kYXRhX2hlbHBlcl9mb3JfcHRpZCAocHRpZF90IHB0aWQpCit7Cisg IGluZmVyaW9yICppbmYgPSBmaW5kX2luZmVyaW9yX3B0aWQgKGN1cnJlbnRf aW5mZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgpLAorCQkJCQlwdGlkKTsK KyAgcmV0dXJuIGdldF9haXhfdGhyZWFkX3ZhcmlhYmxlc19kYXRhIChpbmYp OworfQorCisvKiBIZWxwZXIgdG8gZ2V0IGRhdGEgZm9yIHBpZCBpbiBhIGZ1 bmN0aW9uLiAgKi8KIAotc3RhdGljIHB0aGRiX3Nlc3Npb25fdCBwZF9zZXNz aW9uOworc3RhdGljIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyoKK2dl 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 NTIsMTcgQEAgcGRjX3JlYWRfZGF0YSAocHRoZGJfdXNlcl90IHVzZXJfY3Vy cmVudF9waWQsIHZvaWQgKmJ1ZiwKICAgLyogVGhpcyBpcyBuZWVkZWQgdG8g ZWxpbWluYXRlIHRoZSBkZXBlbmRlbmN5IG9mIGN1cnJlbnQgdGhyZWFkCiAg ICAgIHdoaWNoIGlzIG51bGwgc28gdGhhdCB0aHJlYWQgcmVhZHMgdGhlIGNv cnJlY3QgdGFyZ2V0IG1lbW9yeS4gICovCiAgIHsKLSAgICBzY29wZWRfcmVz dG9yZV9jdXJyZW50X3RocmVhZCByZXN0b3JlX2N1cnJlbnRfdGhyZWFkOwor ICAgIHNjb3BlZF9yZXN0b3JlIHNhdmVfaW5mZXJpb3JfcHRpZCA9IG1ha2Vf c2NvcGVkX3Jlc3RvcmUgKCZpbmZlcmlvcl9wdGlkKTsKICAgICAvKiBCZWZv cmUgdGhlIGZpcnN0IGluZmVyaW9yIGlzIGFkZGVkLCB3ZSBwYXNzIGluZmVy aW9yX3B0aWQucGlkICgpCiAgICAgICAgZnJvbSBwZF9lbmFibGUgKCkgd2hp Y2ggaXMgMC4gIFRoZXJlIGlzIG5vIG5lZWQgdG8gc3dpdGNoIHRocmVhZHMK ICAgICAgICBkdXJpbmcgZmlyc3QgaW5pdGlhbGlzYXRpb24uICBJbiB0aGUg cmVzdCBvZiB0aGUgY2FsbGJhY2tzIHRoZQogICAgICAgIGN1cnJlbnQgdGhy ZWFkIG5lZWRzIHRvIGJlIGNvcnJlY3QuICAqLwotICAgIGlmICh1c2VyX2N1 cnJlbnRfcGlkICE9IDApCi0gICAgICBzd2l0Y2hfdG9fdGhyZWFkIChjdXJy ZW50X2luZmVyaW9yICgpLT5wcm9jZXNzX3RhcmdldCAoKSwKLQkJCXB0aWRf dCAodXNlcl9jdXJyZW50X3BpZCkpOworICAgIGluZmVyaW9yX3B0aWQgPSBw dGlkX3QgKHVzZXJfY3VycmVudF9waWQpOworICAgIHNjb3BlZF9yZXN0b3Jl X2N1cnJlbnRfaW5mZXJpb3IgcmVzdG9yZV9pbmZlcmlvcjsKKyAgICBzZXRf Y3VycmVudF9pbmZlcmlvciAoaW5mKTsKKworICAgIHNjb3BlZF9yZXN0b3Jl X2N1cnJlbnRfcHJvZ3JhbV9zcGFjZSByZXN0b3JlX2N1cnJlbnRfcHJvZ3Nw YWNlOworICAgIHNldF9jdXJyZW50X3Byb2dyYW1fc3BhY2UgKGluZi0+cHNw YWNlKTsKICAgICBzdGF0dXMgPSB0YXJnZXRfcmVhZF9tZW1vcnkgKGFkZHIs IChnZGJfYnl0ZSAqKSBidWYsIGxlbik7CiAgIH0KICAgcmV0ID0gc3RhdHVz ID09IDAgPyBQRENfU1VDQ0VTUyA6IFBEQ19GQUlMVVJFOwpAQCAtNTMzLDEz ICs1ODAsMjUgQEAgcGRjX3dyaXRlX2RhdGEgKHB0aGRiX3VzZXJfdCB1c2Vy X2N1cnJlbnRfcGlkLCB2b2lkICpidWYsCiAJCXB0aGRiX2FkZHJfdCBhZGRy LCBzaXplX3QgbGVuKQogewogICBpbnQgc3RhdHVzLCByZXQ7CisgIGluZmVy aW9yICppbmYgPSBmaW5kX2luZmVyaW9yX3BpZCAoY3VycmVudF9pbmZlcmlv ciAoKS0+cHJvY2Vzc190YXJnZXQgKCksIAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVzZXJfY3VycmVudF9waWQpOwogCiAgIGlm IChkZWJ1Z19haXhfdGhyZWFkKQogICAgIGdkYl9wcmludGYgKGdkYl9zdGRs b2csCiAJCSJwZGNfd3JpdGVfZGF0YSAodXNlcl9jdXJyZW50X3BpZCA9ICVs ZCwgYnVmID0gMHglbHgsIGFkZHIgPSAlcywgbGVuID0gJWxkKVxuIiwKIAkJ dXNlcl9jdXJyZW50X3BpZCwgKGxvbmcpIGJ1ZiwgaGV4X3N0cmluZyAoYWRk ciksIGxlbik7CiAKLSAgc3RhdHVzID0gdGFyZ2V0X3dyaXRlX21lbW9yeSAo YWRkciwgKGdkYl9ieXRlICopIGJ1ZiwgbGVuKTsKKyAgeworICAgIHNjb3Bl ZF9yZXN0b3JlIHNhdmVfaW5mZXJpb3JfcHRpZCA9IG1ha2Vfc2NvcGVkX3Jl c3RvcmUgKCZpbmZlcmlvcl9wdGlkKTsKKyAgICBpbmZlcmlvcl9wdGlkID0g cHRpZF90ICh1c2VyX2N1cnJlbnRfcGlkKTsKKyAgICBzY29wZWRfcmVzdG9y ZV9jdXJyZW50X2luZmVyaW9yIHJlc3RvcmVfaW5mZXJpb3I7CisgICAgc2V0 X2N1cnJlbnRfaW5mZXJpb3IgKGluZik7CisKKyAgICBzY29wZWRfcmVzdG9y ZV9jdXJyZW50X3Byb2dyYW1fc3BhY2UgcmVzdG9yZV9jdXJyZW50X3Byb2dz cGFjZTsKKyAgICBzZXRfY3VycmVudF9wcm9ncmFtX3NwYWNlIChpbmYtPnBz cGFjZSk7CisgICAgc3RhdHVzID0gdGFyZ2V0X3dyaXRlX21lbW9yeSAoYWRk ciwgKGdkYl9ieXRlICopIGJ1ZiwgbGVuKTsKKyAgfQorCiAgIHJldCA9IHN0 YXR1cyA9PSAwID8gUERDX1NVQ0NFU1MgOiBQRENfRkFJTFVSRTsKIAogICBp ZiAoZGVidWdfYWl4X3RocmVhZCkKQEAgLTYzOSwzOSArNjk4LDYgQEAgcGNt 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 IGludApAQCAtNzE5LDcgKzc0NSwxMCBAQCBnZXRfc2lnbmFsZWRfdGhyZWFk IChpbnQgcGlkKQogCQkgICAgc2l6ZW9mICh0aHJpbmYpLCAma3RpZCwgMSkg IT0gMSkKIAlicmVhazsKIAotICAgICAgaWYgKHRocmluZi50aV9jdXJzaWcg PT0gU0lHVFJBUCkKKyAgICAgIC8qIFdlIGFsc28gbmVlZCB0byBrZWVwIGlu IG1pbmQgVHJhcCBhbmQgaW50ZXJydXB0IG9yIGFueQorICAgICAgICAgc2ln bmFsIHRoYXQgbmVlZHMgdG8gYmUgaGFuZGxlZCBpbiBwZF91cGRhdGUgKCku ICAqLworCisgICAgICBpZiAodGhyaW5mLnRpX2N1cnNpZykKIAlyZXR1cm4g dGhyaW5mLnRpX3RpZDsKICAgICB9CiAKQEAgLTc0MSw3ICs3NzAsNyBAQCBn ZXRfc2lnbmFsZWRfdGhyZWFkIChpbnQgcGlkKQogICAgICAgIGhhdmUgZGlm ZmljdWx0eSB3aXRoIGNlcnRhaW4gY2FsbCBwYXR0ZXJucyAqLwogCiBzdGF0 aWMgdm9pZAotc3luY190aHJlYWRsaXN0cyAoaW50IHBpZCkKK3N5bmNfdGhy ZWFkbGlzdHMgKHBpZF90IHBpZCkgCiB7CiAgIGludCBjbWQsIHN0YXR1czsK ICAgaW50IHBjb3VudCwgcHNpemUsIHBpLCBnY291bnQsIGdpOwpAQCAtNzUw LDYgKzc3OSwxMSBAQCBzeW5jX3RocmVhZGxpc3RzIChpbnQgcGlkKQogICBw dGhkYl9wdGhyZWFkX3QgcGR0aWQ7CiAgIHB0aHJlYWRfdCBwdGhpZDsKICAg cHRoZGJfdGlkX3QgdGlkOworICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpw cm9jX3RhcmdldAorICAgICAgICAgICAgPSBjdXJyZW50X2luZmVyaW9yICgp LT5wcm9jZXNzX3RhcmdldCAoKTsKKyAgdGhyZWFkX2luZm8gICp0cDsKKyAg c3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworICBkYXRhID0g Z2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcGlkIChwaWQpOwogCiAgIC8q IEFjY3VtdWxhdGUgYW4gYXJyYXkgb2YgbGlicHRoZGVidWcgdGhyZWFkcyBz b3J0ZWQgYnkgcHRocmVhZCBpZC4gICovCiAKQEAgLTc1OSwxMSArNzkzLDEx IEBAIHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAKICAgZm9yIChjbWQg PSBQVEhEQl9MSVNUX0ZJUlNUOzsgY21kID0gUFRIREJfTElTVF9ORVhUKQog ICAgIHsKLSAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWQgKHBkX3Nlc3Np b24sICZwZHRpZCwgY21kKTsKKyAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJl YWQgKGRhdGEtPnBkX3Nlc3Npb24sICZwZHRpZCwgY21kKTsKICAgICAgIGlm IChzdGF0dXMgIT0gUFRIREJfU1VDQ0VTUyB8fCBwZHRpZCA9PSBQVEhEQl9J TlZBTElEX1BUSFJFQUQpCiAJYnJlYWs7CiAKLSAgICAgIHN0YXR1cyA9IHB0 aGRiX3B0aHJlYWRfcHRpZCAocGRfc2Vzc2lvbiwgcGR0aWQsICZwdGhpZCk7 CisgICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3B0aWQgKGRhdGEtPnBk X3Nlc3Npb24sIHBkdGlkLCAmcHRoaWQpOwogICAgICAgaWYgKHN0YXR1cyAh PSBQVEhEQl9TVUNDRVNTIHx8IHB0aGlkID09IFBUSERCX0lOVkFMSURfUFRJ RCkKIAljb250aW51ZTsKIApAQCAtNzgwLDcgKzgxNCw3IEBAIHN5bmNfdGhy ZWFkbGlzdHMgKGludCBwaWQpCiAKICAgZm9yIChwaSA9IDA7IHBpIDwgcGNv dW50OyBwaSsrKQogICAgIHsKLSAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJl YWRfdGlkIChwZF9zZXNzaW9uLCBwYnVmW3BpXS5wZHRpZCwgJnRpZCk7Cisg ICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3RpZCAoZGF0YS0+cGRfc2Vz c2lvbiwgcGJ1ZltwaV0ucGR0aWQsICZ0aWQpOwogICAgICAgaWYgKHN0YXR1 cyAhPSBQVEhEQl9TVUNDRVNTKQogCXRpZCA9IFBUSERCX0lOVkFMSURfVElE OwogICAgICAgcGJ1ZltwaV0udGlkID0gdGlkOwpAQCAtNzkwLDEzICs4MjQs MjYgQEAgc3luY190aHJlYWRsaXN0cyAoaW50IHBpZCkKIAogICAvKiBBY2N1 bXVsYXRlIGFuIGFycmF5IG9mIEdEQiB0aHJlYWRzIHNvcnRlZCBieSBwaWQu ICAqLwogCisgIC8qIGdjb3VudCBpcyBHREIgdGhyZWFkIGNvdW50IGFuZCBw Y291bnQgaXMgcHRocmVhZGxpYiB0aHJlYWQgY291bnQuICAqLworCiAgIGdj b3VudCA9IDA7Ci0gIGl0ZXJhdGVfb3Zlcl90aHJlYWRzIChnaXRlcl9jb3Vu dCwgJmdjb3VudCk7CisgIGZvciAodGhyZWFkX2luZm8gKnRwIDogYWxsX3Ro cmVhZHMgKHByb2NfdGFyZ2V0LCBwdGlkX3QgKHBpZCkpKQorICAgIGdjb3Vu dCsrOwogICBnID0gZ2J1ZiA9IFhORVdWRUMgKHN0cnVjdCB0aHJlYWRfaW5m byAqLCBnY291bnQpOwotICBpdGVyYXRlX292ZXJfdGhyZWFkcyAoZ2l0ZXJf YWNjdW0sICZnKTsKKyAgZm9yICh0aHJlYWRfaW5mbyAqdHAgOiBhbGxfdGhy ZWFkcyAocHJvY190YXJnZXQsIHB0aWRfdCAocGlkKSkpCisgICAgKmcrKyA9 IHRwOwogICBxc29ydCAoZ2J1ZiwgZ2NvdW50LCBzaXplb2YgKmdidWYsIGdj bXApOwogCisgIHRwID0gZmluZF90aHJlYWRfcHRpZCAocHJvY190YXJnZXQs IHB0aWRfdCAocGlkKSk7CisKKyAgLyogSWYgdGhlIHB0aHJlYWRsaWJyYXJ5 IGlzIG5vdCByZWFkeSB0byBkZWJ1ZyAKKyAgICAgdGhlbiB0aGlzIGlzIGp1 c3QgYSBtYWluIHByb2Nlc3Mgd2hpY2ggbmVlZHMgCisgICAgIGEgcHJpdiB0 byBiZSBzZXQuICBUaGUgaWYgY29uZGl0aW9uIGJlbG93IGRvZXMgCisgICAg IHRoZSBzYW1lLiAgT3RoZXJ3aXNlIHdlIGdvIHRvIHRoZSBmb3IgbG9vcCB0 byAKKyAgICAgc3luYyB0aGUgcHRocmVhZCBhbmQgR0RCIHRocmVhZCBsaXN0 cy4gICovCisKICAgLyogQXBwbHkgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUg dHdvIGFycmF5cyB0byBHREIncyB0aHJlYWQgbGlzdC4gICovCisKICAgZm9y IChwaSA9IGdpID0gMDsgcGkgPCBwY291bnQgfHwgZ2kgPCBnY291bnQ7KQog ICAgIHsKICAgICAgIGlmIChwaSA9PSBwY291bnQpCkBAIC04MTAsOCArODU3 LDYgQEAgc3luY190aHJlYWRsaXN0cyAoaW50IHBpZCkKIAkgIHByaXYtPnBk dGlkID0gcGJ1ZltwaV0ucGR0aWQ7CiAJICBwcml2LT50aWQgPSBwYnVmW3Bp XS50aWQ7CiAKLQkgIHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQgKnByb2NfdGFy Z2V0Ci0JICAgID0gY3VycmVudF9pbmZlcmlvciAoKS0+cHJvY2Vzc190YXJn ZXQgKCk7CiAJICB0aHJlYWQgPSBhZGRfdGhyZWFkX3dpdGhfaW5mbyAocHJv Y190YXJnZXQsCiAJCQkJCSBwdGlkX3QgKHBpZCwgMCwgcGJ1ZltwaV0ucHRo aWQpLAogCQkJCQkgcHJpdik7CkBAIC04NDEsMTMgKzg4NiwyNyBAQCBzeW5j X3RocmVhZGxpc3RzIChpbnQgcGlkKQogCSAgICB9CiAJICBlbHNlIGlmIChj bXBfcmVzdWx0ID4gMCkKIAkgICAgewotCSAgICAgIGRlbGV0ZV90aHJlYWQg KGdidWZbZ2ldKTsKLQkgICAgICBnaSsrOworCSAgICAgIC8qIFRoaXMgaXMg dG8gbWFrZSB0aGUgbWFpbiBwcm9jZXNzIHRocmVhZCBub3cgbG9vaworICAg ICAgICAgICAgICAgICBsaWtlIGEgdGhyZWFkLiAgKi8KKworCSAgICAgIGlm IChncHRpZC5pc19waWQgKCkpCisJCXsKKwkJICB0aHJlYWRfY2hhbmdlX3B0 aWQgKHByb2NfdGFyZ2V0LCBncHRpZCwgcHB0aWQpOworCQkgIGFpeF90aHJl YWRfaW5mbyAqcHJpdiA9IG5ldyBhaXhfdGhyZWFkX2luZm87CisgICAgICAg ICAgICAgICAgICBwcml2LT5wZHRpZCA9IHBidWZbcGldLnBkdGlkOworICAg ICAgICAgICAgICAgICAgcHJpdi0+dGlkID0gcGJ1ZltwaV0udGlkOworCQkg IHRwLT5wcml2LnJlc2V0IChwcml2KTsKKwkJICBnaSsrOworCQkgIHBpKys7 CisJCX0KKwkgICAgICBlbHNlCisJCXsKKwkJICBkZWxldGVfdGhyZWFkIChn YnVmW2dpXSk7CisJCSAgZ2krKzsKKwkJfQogCSAgICB9CiAJICBlbHNlCiAJ ICAgIHsKLQkgICAgICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpwcm9jX3Rh cmdldAotCQk9IGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0 ICgpOwogCSAgICAgIHRocmVhZCA9IGFkZF90aHJlYWQgKHByb2NfdGFyZ2V0 LCBwcHRpZCk7CiAKIAkgICAgICBhaXhfdGhyZWFkX2luZm8gKnByaXYgPSBu ZXcgYWl4X3RocmVhZF9pbmZvOwpAQCAtODgxLDE3ICs5NDAsMjAgQEAgaXRl cl90aWQgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdGhyZWFkLCB2b2lkICp0aWRw KQogICAgcmV0dXJuIGEgcGlkLW9ubHkgcHRpZCB3aXRoIFBJRC4gICovCiAK IHN0YXRpYyBwdGlkX3QKLXBkX3VwZGF0ZSAoaW50IHBpZCkKK3BkX3VwZGF0 ZSAocGlkX3QgcGlkKQogewogICBpbnQgc3RhdHVzOwogICBwdGlkX3QgcHRp ZDsKICAgcHRoZGJfdGlkX3QgdGlkOwogICBzdHJ1Y3QgdGhyZWFkX2luZm8g KnRocmVhZCA9IE5VTEw7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxl cyAqZGF0YTsKKworICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9m b3JfcGlkIChwaWQpOwogCi0gIGlmICghcGRfYWN0aXZlKQorICBpZiAoIWRh dGEtPnBkX2FjdGl2ZSkKICAgICByZXR1cm4gcHRpZF90IChwaWQpOwogCi0g IHN0YXR1cyA9IHB0aGRiX3Nlc3Npb25fdXBkYXRlIChwZF9zZXNzaW9uKTsK KyAgc3RhdHVzID0gcHRoZGJfc2Vzc2lvbl91cGRhdGUgKGRhdGEtPnBkX3Nl c3Npb24pOwogICBpZiAoc3RhdHVzICE9IFBUSERCX1NVQ0NFU1MpCiAgICAg cmV0dXJuIHB0aWRfdCAocGlkKTsKIApAQCAtOTE1LDM0ICs5NzcsMjMgQEAg cGRfdXBkYXRlIChpbnQgcGlkKQogICAgZm9yIHRoYXQgdGhyZWFkLiAgT3Ro ZXJ3aXNlLCByZXR1cm4gYSBwdGlkLW9ubHkgcHRpZCB1c2luZyBQSUQuICAq LwogCiBzdGF0aWMgcHRpZF90Ci1wZF9hY3RpdmF0ZSAoaW50IHBpZCkKK3Bk X2FjdGl2YXRlIChwaWRfdCBwaWQpCiB7CiAgIGludCBzdGF0dXM7Ci0JCQot ICBzdGF0dXMgPSBwdGhkYl9zZXNzaW9uX2luaXQgKHBpZCwgYXJjaDY0ID8g UEVNXzY0QklUIDogUEVNXzMyQklULAorICBzdHJ1Y3QgYWl4X3RocmVhZF92 YXJpYWJsZXMgKmRhdGE7CisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFfaGVs cGVyX2Zvcl9waWQgKHBpZCk7CisgIAorICBzdGF0dXMgPSBwdGhkYl9zZXNz aW9uX2luaXQgKHBpZCwgZGF0YS0+YXJjaDY0ID8gUEVNXzY0QklUIDogUEVN XzMyQklULAogCQkJICAgICAgIFBUSERCX0ZMQUdfUkVHUywgJnBkX2NhbGxi YWNrcywgCi0JCQkgICAgICAgJnBkX3Nlc3Npb24pOworCQkJICAgICAgICZk YXRhLT5wZF9zZXNzaW9uKTsKICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUND RVNTKQogICAgIHsKICAgICAgIHJldHVybiBwdGlkX3QgKHBpZCk7CiAgICAg fQotICBwZF9hY3RpdmUgPSAxOworICBkYXRhLT5wZF9hY3RpdmUgPSAxOwog ICByZXR1cm4gcGRfdXBkYXRlIChwaWQpOwogfQogCi0vKiBVbmRvIHRoZSBl ZmZlY3RzIG9mIHBkX2FjdGl2YXRlKCkuICAqLwotCi1zdGF0aWMgdm9pZAot cGRfZGVhY3RpdmF0ZSAodm9pZCkKLXsKLSAgaWYgKCFwZF9hY3RpdmUpCi0g ICAgcmV0dXJuOwotICBwdGhkYl9zZXNzaW9uX2Rlc3Ryb3kgKHBkX3Nlc3Np b24pOwotICAKLSAgcGlkX3RvX3ByYyAoJmluZmVyaW9yX3B0aWQpOwotICBw ZF9hY3RpdmUgPSAwOwotfQotCiAvKiBBbiBvYmplY3QgZmlsZSBoYXMganVz dCBiZWVuIGxvYWRlZC4gIENoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQKICAg IGFwcGxpY2F0aW9uIGlzIHB0aHJlYWRlZCwgYW5kIGlmIHNvLCBwcmVwYXJl IGZvciB0aHJlYWQgZGVidWdnaW5nLiAgKi8KIApAQCAtOTUyLDEzICsxMDAz LDE5IEBAIHBkX2VuYWJsZSAodm9pZCkKICAgaW50IHN0YXR1czsKICAgY2hh ciAqc3R1Yl9uYW1lOwogICBzdHJ1Y3QgYm91bmRfbWluaW1hbF9zeW1ib2wg bXM7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKwor ICBpZiAoIWluZmVyaW9yX3B0aWQucGlkICgpKQorICAgIHJldHVybjsKKyAg CisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlkIChp bmZlcmlvcl9wdGlkKTsKIAogICAvKiBEb24ndCBpbml0aWFsaXplIHR3aWNl LiAgKi8KLSAgaWYgKHBkX2FibGUpCisgIGlmIChkYXRhLT5wZF9hYmxlKQog ICAgIHJldHVybjsKIAogICAvKiBDaGVjayBhcHBsaWNhdGlvbiB3b3JkIHNp emUuICAqLwotICBhcmNoNjQgPSByZWdpc3Rlcl9zaXplICh0YXJnZXRfZ2Ri YXJjaCAoKSwgMCkgPT0gODsKKyAgZGF0YS0+YXJjaDY0ID0gcmVnaXN0ZXJf c2l6ZSAodGFyZ2V0X2dkYmFyY2ggKCksIDApID09IDg7CiAKICAgLyogQ2hl Y2sgd2hldGhlciB0aGUgYXBwbGljYXRpb24gaXMgcHRocmVhZGVkLiAgKi8K ICAgc3R1Yl9uYW1lID0gTlVMTDsKQEAgLTk3MiwxMyArMTAyOSwxOSBAQCBw ZF9lbmFibGUgKHZvaWQpCiAgIG1zID0gbG9va3VwX21pbmltYWxfc3ltYm9s IChzdHViX25hbWUsIE5VTEwsIE5VTEwpOwogICBpZiAobXMubWluc3ltID09 IE5VTEwpCiAgICAgcmV0dXJuOwotICBwZF9icmtfYWRkciA9IG1zLnZhbHVl X2FkZHJlc3MgKCk7Ci0gIGlmICghY3JlYXRlX3RocmVhZF9ldmVudF9icmVh a3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgcGRfYnJrX2FkZHIpKQorICBk YXRhLT5wZF9icmtfYWRkciA9IG1zLnZhbHVlX2FkZHJlc3MgKCk7CisgIGlm ICghY3JlYXRlX3RocmVhZF9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2Ri YXJjaCAoKSwgZGF0YS0+cGRfYnJrX2FkZHIpKQogICAgIHJldHVybjsKIAog ICAvKiBQcmVwYXJlIGZvciB0aHJlYWQgZGVidWdnaW5nLiAgKi8KICAgY3Vy cmVudF9pbmZlcmlvciAoKS0+cHVzaF90YXJnZXQgKCZhaXhfdGhyZWFkX29w cyk7Ci0gIHBkX2FibGUgPSAxOworICBkYXRhLT5wZF9hYmxlID0gMTsgCisK KyAgaW5mZXJpb3IgKmluZiA9IGN1cnJlbnRfaW5mZXJpb3IgKCk7IAorICAv KiBXaGVuIGF0dGFjaGluZyAvIGhhbmRsaW5nIGZvcmsgY2hpbGQsIGRvbid0 IHRyeSBsb2FkaW5nIGxpYnRocmVhZF9kYgorICAgICB1bnRpbCB3ZSBrbm93 IGFib3V0IGFsbCBzaGFyZWQgbGlicmFyaWVzLiAgKi8KKyAgaWYgKGluZi0+ aW5faW5pdGlhbF9saWJyYXJ5X3NjYW4pCisgICAgcmV0dXJuOwogCiAgIC8q IElmIHdlJ3JlIGRlYnVnZ2luZyBhIGNvcmUgZmlsZSBvciBhbiBhdHRhY2hl ZCBpbmZlcmlvciwgdGhlCiAgICAgIHB0aHJlYWQgbGlicmFyeSBtYXkgYWxy ZWFkeSBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQsIHNvIHRyeSB0bwpAQCAtOTkx LDI4ICsxMDU0LDMxIEBAIHBkX2VuYWJsZSAodm9pZCkKIHN0YXRpYyB2b2lk CiBwZF9kaXNhYmxlICh2b2lkKQogewotICBpZiAoIXBkX2FibGUpCisgIHN0 cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAgZGF0YSA9IGdl dF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKGluZmVyaW9yX3B0aWQp OworCisgIGlmICghZGF0YS0+cGRfYWJsZSkKKyAgICByZXR1cm47CisgIGlm ICghZGF0YS0+cGRfYWN0aXZlKQogICAgIHJldHVybjsKLSAgaWYgKHBkX2Fj dGl2ZSkKLSAgICBwZF9kZWFjdGl2YXRlICgpOwotICBwZF9hYmxlID0gMDsK KyAgcHRoZGJfc2Vzc2lvbl9kZXN0cm95IChkYXRhLT5wZF9zZXNzaW9uKTsK KyAKKyAgcGlkX3RvX3ByYyAoJmluZmVyaW9yX3B0aWQpOworICBkYXRhLT5w ZF9hY3RpdmUgPSAwOworICBkYXRhLT5wZF9hYmxlID0gMDsKICAgY3VycmVu dF9pbmZlcmlvciAoKS0+dW5wdXNoX3RhcmdldCAoJmFpeF90aHJlYWRfb3Bz KTsKIH0KIAogLyogbmV3X29iamZpbGUgb2JzZXJ2ZXIgY2FsbGJhY2suCiAK ICAgIElmIE9CSkZJTEUgaXMgbm9uLW51bGwsIGNoZWNrIHdoZXRoZXIgYSB0 aHJlYWRlZCBhcHBsaWNhdGlvbiBpcwotICAgYmVpbmcgZGVidWdnZWQsIGFu ZCBpZiBzbywgcHJlcGFyZSBmb3IgdGhyZWFkIGRlYnVnZ2luZy4KLQotICAg SWYgT0JKRklMRSBpcyBudWxsLCBzdG9wIGRlYnVnZ2luZyB0aHJlYWRzLiAg Ki8KKyAgIGJlaW5nIGRlYnVnZ2VkLCBhbmQgaWYgc28sIHByZXBhcmUgZm9y IHRocmVhZCBkZWJ1Z2dpbmcuICAqLwogCiBzdGF0aWMgdm9pZAogbmV3X29i amZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQogewogICBpZiAob2Jq ZmlsZSkKICAgICBwZF9lbmFibGUgKCk7Ci0gIGVsc2UKLSAgICBwZF9kaXNh YmxlICgpOwogfQogCiAvKiBBdHRhY2ggdG8gcHJvY2VzcyBzcGVjaWZpZWQg YnkgQVJHUy4gICovCkBAIC0xMDQyLDggKzExMDgsMTEgQEAgYWl4X3RocmVh ZF90YXJnZXQ6OnJlc3VtZSAocHRpZF90IHB0aWQsIGludCBzdGVwLCBlbnVt IGdkYl9zaWduYWwgc2lnKQogewogICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRo cmVhZDsKICAgcHRoZGJfdGlkX3QgdGlkWzJdOworICBzdHJ1Y3QgYWl4X3Ro cmVhZF92YXJpYWJsZXMgKmRhdGE7CisgIAorICBkYXRhID0gZ2V0X3RocmVh ZF9kYXRhX2hlbHBlcl9mb3JfcHRpZCAocHRpZCk7CiAKLSAgaWYgKCFQRF9U SUQgKHB0aWQpKQorICBpZiAocHRpZC50aWQgKCkgPT0gMCkKICAgICB7CiAg ICAgICBzY29wZWRfcmVzdG9yZSBzYXZlX2luZmVyaW9yX3B0aWQgPSBtYWtl X3Njb3BlZF9yZXN0b3JlICgmaW5mZXJpb3JfcHRpZCk7CiAgICAgICAKQEAg LTEwNjUsNyArMTEzNCw3IEBAIGFpeF90aHJlYWRfdGFyZ2V0OjpyZXN1bWUg KHB0aWRfdCBwdGlkLCBpbnQgc3RlcCwgZW51bSBnZGJfc2lnbmFsIHNpZykK IAkgICAgICAgcHRpZC5sd3AgKCkpOwogICAgICAgdGlkWzFdID0gMDsKIAot ICAgICAgaWYgKGFyY2g2NCkKKyAgICAgIGlmIChkYXRhLT5hcmNoNjQpCiAJ cHRyYWNlNjRhaXggKFBUVF9DT05USU5VRSwgdGlkWzBdLCAobG9uZyBsb25n KSAxLAogCQkgICAgIGdkYl9zaWduYWxfdG9faG9zdCAoc2lnKSwgKFBUUkFD RV9UWVBFX0FSRzUpIHRpZCk7CiAgICAgICBlbHNlCkBAIC0xMDgyLDYgKzEx NTEsNyBAQCBwdGlkX3QKIGFpeF90aHJlYWRfdGFyZ2V0Ojp3YWl0IChwdGlk X3QgcHRpZCwgc3RydWN0IHRhcmdldF93YWl0c3RhdHVzICpzdGF0dXMsCiAJ CQkgdGFyZ2V0X3dhaXRfZmxhZ3Mgb3B0aW9ucykKIHsKKyAgc3RydWN0IGFp eF90aHJlYWRfdmFyaWFibGVzICpkYXRhOwogICB7CiAgICAgcGlkX3RvX3By YyAoJnB0aWQpOwogCkBAIC0xMDk1LDggKzExNjUsMTAgQEAgYWl4X3RocmVh ZF90YXJnZXQ6OndhaXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFyZ2V0X3dh aXRzdGF0dXMgKnN0YXR1cywKICAgICAgcGlkLW9ubHkgcHRpZHMuICAqLwog ICBnZGJfYXNzZXJ0IChwdGlkLmlzX3BpZCAoKSk7CiAKKyAgZGF0YSA9IGdl dF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKHB0aWQpOworCiAgIC8q IENoZWNrIHdoZXRoZXIgbGlicHRoZGVidWcgbWlnaHQgYmUgcmVhZHkgdG8g YmUgaW5pdGlhbGl6ZWQuICAqLwotICBpZiAoIXBkX2FjdGl2ZSAmJiBzdGF0 dXMtPmtpbmQgKCkgPT0gVEFSR0VUX1dBSVRLSU5EX1NUT1BQRUQKKyAgaWYg KCFkYXRhLT5wZF9hY3RpdmUgJiYgc3RhdHVzLT5raW5kICgpID09IFRBUkdF VF9XQUlUS0lORF9TVE9QUEVECiAgICAgICAmJiBzdGF0dXMtPnNpZyAoKSA9 PSBHREJfU0lHTkFMX1RSQVApCiAgICAgewogICAgICAgcHJvY2Vzc19zdHJh dHVtX3RhcmdldCAqcHJvY190YXJnZXQKQEAgLTExMDUsNyArMTE3Nyw3IEBA IGFpeF90aHJlYWRfdGFyZ2V0Ojp3YWl0IChwdGlkX3QgcHRpZCwgc3RydWN0 IHRhcmdldF93YWl0c3RhdHVzICpzdGF0dXMsCiAgICAgICBzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgpOwogCiAgICAgICBp ZiAocmVnY2FjaGVfcmVhZF9wYyAocmVnY2FjaGUpCi0JICAtIGdkYmFyY2hf ZGVjcl9wY19hZnRlcl9icmVhayAoZ2RiYXJjaCkgPT0gcGRfYnJrX2FkZHIp CisJICAtIGdkYmFyY2hfZGVjcl9wY19hZnRlcl9icmVhayAoZ2RiYXJjaCkg PT0gZGF0YS0+cGRfYnJrX2FkZHIpCiAJcmV0dXJuIHBkX2FjdGl2YXRlIChw dGlkLnBpZCAoKSk7CiAgICAgfQogCkBAIC0xMjI5LDE4ICsxMzAxLDIwIEBA IGZldGNoX3JlZ3NfdXNlcl90aHJlYWQgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIHB0aGRiX3B0aHJlYWRfdCBwZHRpZCkKICAgcHBjX2dkYmFyY2hf dGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcDxwcGNfZ2RiYXJjaF90ZGVwPiAo Z2RiYXJjaCk7CiAgIGludCBzdGF0dXMsIGk7CiAgIHB0aGRiX2NvbnRleHRf dCBjdHg7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsK KyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKGlu ZmVyaW9yX3B0aWQpOwogCiAgIGlmIChkZWJ1Z19haXhfdGhyZWFkKQogICAg IGdkYl9wcmludGYgKGdkYl9zdGRsb2csIAogCQkiZmV0Y2hfcmVnc191c2Vy X3RocmVhZCAlbHhcbiIsIChsb25nKSBwZHRpZCk7Ci0gIHN0YXR1cyA9IHB0 aGRiX3B0aHJlYWRfY29udGV4dCAocGRfc2Vzc2lvbiwgcGR0aWQsICZjdHgp OworICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX2NvbnRleHQgKGRhdGEtPnBk X3Nlc3Npb24sIHBkdGlkLCAmY3R4KTsKICAgaWYgKHN0YXR1cyAhPSBQVEhE Ql9TVUNDRVNTKQogICAgIGVycm9yIChfKCJhaXgtdGhyZWFkOiBmZXRjaF9y ZWdpc3RlcnM6IHB0aGRiX3B0aHJlYWRfY29udGV4dCByZXR1cm5lZCAlcyIp LAogCSAgIHBkX3N0YXR1czJzdHIgKHN0YXR1cykpOwogCiAgIC8qIEdlbmVy YWwtcHVycG9zZSByZWdpc3RlcnMuICAqLwogCi0gIGlmIChhcmNoNjQpCisg IGlmIChkYXRhLT5hcmNoNjQpCiAgICAgc3VwcGx5X2dwcnM2NCAocmVnY2Fj aGUsIGN0eC5ncHIpOwogICBlbHNlCiAgICAgZm9yIChpID0gMDsgaSA8IHBw Y19udW1fZ3ByczsgaSsrKQpAQCAtMTI1Myw3ICsxMzI3LDcgQEAgZmV0Y2hf cmVnc191c2VyX3RocmVhZCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwg cHRoZGJfcHRocmVhZF90IHBkdGlkKQogCiAgIC8qIFNwZWNpYWwgcmVnaXN0 ZXJzLiAgKi8KIAotICBpZiAoYXJjaDY0KQorICBpZiAoZGF0YS0+YXJjaDY0 KQogICAgIHN1cHBseV9zcHJzNjQgKHJlZ2NhY2hlLCBjdHguaWFyLCBjdHgu bXNyLCBjdHguY3IsIGN0eC5sciwgY3R4LmN0ciwKIAkJCSAgICAgY3R4Lnhl ciwgY3R4LmZwc2NyKTsKICAgZWxzZQpAQCAtMTI4OCwxOCArMTM2MiwyMSBA QCBmZXRjaF9yZWdzX2tlcm5lbF90aHJlYWQgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsIGludCByZWdubywKICAgc3RydWN0IHB0eHNwcnMgc3ByczY0 OwogICBzdHJ1Y3QgcHRzcHJzIHNwcnMzMjsKICAgaW50IGk7CisgIHN0cnVj dCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAgCisgIGRhdGEgPSBn ZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlkIChyZWdjYWNoZS0+cHRp ZCAoKSk7CiAKICAgaWYgKGRlYnVnX2FpeF90aHJlYWQpCiAgICAgZ2RiX3By aW50ZiAoZ2RiX3N0ZGxvZywKIAkJImZldGNoX3JlZ3Nfa2VybmVsX3RocmVh ZCB0aWQ9JWx4IHJlZ25vPSVkIGFyY2g2ND0lZFxuIiwKLQkJKGxvbmcpIHRp ZCwgcmVnbm8sIGFyY2g2NCk7CisJCShsb25nKSB0aWQsIHJlZ25vLCBkYXRh LT5hcmNoNjQpOwogCiAgIC8qIEdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMu ICAqLwogICBpZiAocmVnbm8gPT0gLTEKICAgICAgIHx8ICh0ZGVwLT5wcGNf Z3AwX3JlZ251bSA8PSByZWdubwogCSAgJiYgcmVnbm8gPCB0ZGVwLT5wcGNf Z3AwX3JlZ251bSArIHBwY19udW1fZ3BycykpCiAgICAgewotICAgICAgaWYg KGFyY2g2NCkKKyAgICAgIGlmIChkYXRhLT5hcmNoNjQpCiAJewogCSAgaWYg KCFwdHJhY2U2NGFpeCAoUFRUX1JFQURfR1BSUywgdGlkLCAKIAkJCSAgICAo dW5zaWduZWQgbG9uZykgZ3ByczY0LCAwLCBOVUxMKSkKQEAgLTEzMzEsNyAr MTQwOCw3IEBAIGZldGNoX3JlZ3Nfa2VybmVsX3RocmVhZCAoc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vLAogCiAgIGlmIChyZWdubyA9 PSAtMSB8fCBzcGVjaWFsX3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ25vKSkK ICAgICB7Ci0gICAgICBpZiAoYXJjaDY0KQorICAgICAgaWYgKGRhdGEtPmFy Y2g2NCkKIAl7CiAJICBpZiAoIXB0cmFjZTY0YWl4IChQVFRfUkVBRF9TUFJT LCB0aWQsIAogCQkJICAgICh1bnNpZ25lZCBsb25nKSAmc3ByczY0LCAwLCBO VUxMKSkKQEAgLTEzNjIsMTIgKzE0MzksMTYgQEAgYWl4X3RocmVhZF90YXJn ZXQ6OmZldGNoX3JlZ2lzdGVycyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgaW50IHJlZ25vKQogewogICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVh ZDsKICAgcHRoZGJfdGlkX3QgdGlkOworICB0aHJlYWQgPSBmaW5kX3RocmVh ZF9wdGlkIChjdXJyZW50X2luZmVyaW9yICgpLT5wcm9jZXNzX3RhcmdldCAo KSwgcHRpZF90IChyZWdjYWNoZS0+cHRpZCAoKS5waWQgKCksIDAsIHJlZ2Nh Y2hlLT5wdGlkICgpLnRpZCAoKSkpOwogCi0gIGlmICghUERfVElEIChyZWdj YWNoZS0+cHRpZCAoKSkpCisgIC8qIElmIGEgbmV3IGluZmVyaW9yIGlzIGJv cm4sIHRoZW4gaXRzIHB0aHJlYWQgZGVidWcgbGlicmFyeSBpcyB5ZXQgdG8K KyAgICAgaW5pdGlhbGlzZWQgYW5kIGhlbmNlIGhhcyBubyBwcml2YXRlIGRh dGEuIFNvIHRoZSBiZWxvdyBpZiBjb25kaXRpb24KKyAgICAgZXhpc3RzLiAg Ki8KKworICBpZiAocmVnY2FjaGUtPnB0aWQgKCkudGlkICgpID09IDApCiAg ICAgYmVuZWF0aCAoKS0+ZmV0Y2hfcmVnaXN0ZXJzIChyZWdjYWNoZSwgcmVn bm8pOwogICBlbHNlCiAgICAgewotICAgICAgdGhyZWFkID0gZmluZF90aHJl YWRfcHRpZCAoY3VycmVudF9pbmZlcmlvciAoKSwgcmVnY2FjaGUtPnB0aWQg KCkpOwogICAgICAgYWl4X3RocmVhZF9pbmZvICpwcml2ID0gZ2V0X2FpeF90 aHJlYWRfaW5mbyAodGhyZWFkKTsKICAgICAgIHRpZCA9IHByaXYtPnRpZDsK IApAQCAtMTUxMSw2ICsxNTkyLDggQEAgc3RvcmVfcmVnc191c2VyX3RocmVh ZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJfcHRo cmVhZF90IHBkdGlkKQogICBwdGhkYl9jb250ZXh0X3QgY3R4OwogICB1aW50 MzJfdCBpbnQzMjsKICAgdWludDY0X3QgaW50NjQ7CisgIHN0cnVjdCBhaXhf dGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAgZGF0YSA9IGdldF90aHJlYWRf ZGF0YV9oZWxwZXJfZm9yX3B0aWQgKGluZmVyaW9yX3B0aWQpOwogCiAgIGlm IChkZWJ1Z19haXhfdGhyZWFkKQogICAgIGdkYl9wcmludGYgKGdkYl9zdGRs b2csIApAQCAtMTUxOCw3ICsxNjAxLDcgQEAgc3RvcmVfcmVnc191c2VyX3Ro cmVhZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJf cHRocmVhZF90IHBkdGlkKQogCiAgIC8qIFJldHJpZXZlIHRoZSB0aHJlYWQn cyBjdXJyZW50IGNvbnRleHQgZm9yIGl0cyBub24tcmVnaXN0ZXIKICAgICAg dmFsdWVzLiAgKi8KLSAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9jb250ZXh0 IChwZF9zZXNzaW9uLCBwZHRpZCwgJmN0eCk7CisgIHN0YXR1cyA9IHB0aGRi X3B0aHJlYWRfY29udGV4dCAoZGF0YS0+cGRfc2Vzc2lvbiwgcGR0aWQsICZj dHgpOwogICBpZiAoc3RhdHVzICE9IFBUSERCX1NVQ0NFU1MpCiAgICAgZXJy b3IgKF8oImFpeC10aHJlYWQ6IHN0b3JlX3JlZ2lzdGVyczogcHRoZGJfcHRo cmVhZF9jb250ZXh0IHJldHVybmVkICVzIiksCiAJICAgcGRfc3RhdHVzMnN0 ciAoc3RhdHVzKSk7CkBAIC0xNTI4LDcgKzE2MTEsNyBAQCBzdG9yZV9yZWdz X3VzZXJfdGhyZWFkIChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCBwdGhkYl9wdGhyZWFkX3QgcGR0aWQpCiAgIGZvciAoaSA9IDA7IGkgPCBw cGNfbnVtX2dwcnM7IGkrKykKICAgICBpZiAoUkVHX1ZBTElEID09IHJlZ2Nh Y2hlLT5nZXRfcmVnaXN0ZXJfc3RhdHVzICh0ZGVwLT5wcGNfZ3AwX3JlZ251 bSArIGkpKQogICAgICAgewotCWlmIChhcmNoNjQpCisJaWYgKGRhdGEtPmFy Y2g2NCkKIAkgIHsKIAkgICAgcmVnY2FjaGUtPnJhd19jb2xsZWN0ICh0ZGVw LT5wcGNfZ3AwX3JlZ251bSArIGksICh2b2lkICopICZpbnQ2NCk7CiAJICAg IGN0eC5ncHJbaV0gPSBpbnQ2NDsKQEAgLTE1NDUsNyArMTYyOCw3IEBAIHN0 b3JlX3JlZ3NfdXNlcl90aHJlYWQgKGNvbnN0IHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsIHB0aGRiX3B0aHJlYWRfdCBwZHRpZCkKICAgICBmaWxsX2Zw cnMgKHJlZ2NhY2hlLCBjdHguZnByKTsKIAogICAvKiBTcGVjaWFsIHJlZ2lz dGVycyAoYWx3YXlzIGtlcHQgaW4gY3R4IGFzIDY0IGJpdHMpLiAgKi8KLSAg aWYgKGFyY2g2NCkKKyAgaWYgKGRhdGEtPmFyY2g2NCkKICAgICB7CiAgICAg ICBmaWxsX3NwcnM2NCAocmVnY2FjaGUsICZjdHguaWFyLCAmY3R4Lm1zciwg JmN0eC5jciwgJmN0eC5sciwgJmN0eC5jdHIsCiAJCQkgICAgICZjdHgueGVy LCAmY3R4LmZwc2NyKTsKQEAgLTE1NzYsNyArMTY1OSw3IEBAIHN0b3JlX3Jl Z3NfdXNlcl90aHJlYWQgKGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2Fj aGUsIHB0aGRiX3B0aHJlYWRfdCBwZHRpZCkKIAljdHguZnBzY3IgPSB0bXBf ZnBzY3I7CiAgICAgfQogCi0gIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfc2V0 Y29udGV4dCAocGRfc2Vzc2lvbiwgcGR0aWQsICZjdHgpOworICBzdGF0dXMg PSBwdGhkYl9wdGhyZWFkX3NldGNvbnRleHQgKGRhdGEtPnBkX3Nlc3Npb24s IHBkdGlkLCAmY3R4KTsKICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNT KQogICAgIGVycm9yIChfKCJhaXgtdGhyZWFkOiBzdG9yZV9yZWdpc3RlcnM6 ICIKIAkgICAgICJwdGhkYl9wdGhyZWFkX3NldGNvbnRleHQgcmV0dXJuZWQg JXMiKSwKQEAgLTE2MDIsNiArMTY4NSw5IEBAIHN0b3JlX3JlZ3Nfa2VybmVs X3RocmVhZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50 IHJlZ25vLAogICBkb3VibGUgZnByc1twcGNfbnVtX2ZwcnNdOwogICBzdHJ1 Y3QgcHR4c3BycyBzcHJzNjQ7CiAgIHN0cnVjdCBwdHNwcnMgIHNwcnMzMjsK KyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworICAKKyAg ZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKHJlZ2Nh Y2hlLT5wdGlkICgpKTsKIAogICBpZiAoZGVidWdfYWl4X3RocmVhZCkKICAg ICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLCAKQEAgLTE2MTMsNyArMTY5OSw3 IEBAIHN0b3JlX3JlZ3Nfa2VybmVsX3RocmVhZCAoY29uc3Qgc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vLAogICAgICAgfHwgKHRkZXAt PnBwY19ncDBfcmVnbnVtIDw9IHJlZ25vCiAJICAmJiByZWdubyA8IHRkZXAt PnBwY19ncDBfcmVnbnVtICsgcHBjX251bV9mcHJzKSkKICAgICB7Ci0gICAg ICBpZiAoYXJjaDY0KQorICAgICAgaWYgKGRhdGEtPmFyY2g2NCkKIAl7CiAJ ICAvKiBQcmUtZmV0Y2g6IHNvbWUgcmVncyBtYXkgbm90IGJlIGluIHRoZSBj YWNoZS4gICovCiAJICBwdHJhY2U2NGFpeCAoUFRUX1JFQURfR1BSUywgdGlk LCAodW5zaWduZWQgbG9uZykgZ3ByczY0LCAwLCBOVUxMKTsKQEAgLTE2NDYs NyArMTczMiw3IEBAIHN0b3JlX3JlZ3Nfa2VybmVsX3RocmVhZCAoY29uc3Qg c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vLAogCiAgIGlm IChyZWdubyA9PSAtMSB8fCBzcGVjaWFsX3JlZ2lzdGVyX3AgKGdkYmFyY2gs IHJlZ25vKSkKICAgICB7Ci0gICAgICBpZiAoYXJjaDY0KQorICAgICAgaWYg KGRhdGEtPmFyY2g2NCkKIAl7CiAJICAvKiBQcmUtZmV0Y2g6IHNvbWUgcmVn aXN0ZXJzIHdvbid0IGJlIGluIHRoZSBjYWNoZS4gICovCiAJICBwdHJhY2U2 NGFpeCAoUFRUX1JFQURfU1BSUywgdGlkLCAKQEAgLTE3MDMsNyArMTc4OSw3 IEBAIGFpeF90aHJlYWRfdGFyZ2V0OjpzdG9yZV9yZWdpc3RlcnMgKHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubykKICAgc3RydWN0IHRo cmVhZF9pbmZvICp0aHJlYWQ7CiAgIHB0aGRiX3RpZF90IHRpZDsKIAotICBp ZiAoIVBEX1RJRCAocmVnY2FjaGUtPnB0aWQgKCkpKQorICBpZiAocmVnY2Fj aGUtPnB0aWQgKCkudGlkICgpID09IDApCiAgICAgYmVuZWF0aCAoKS0+c3Rv cmVfcmVnaXN0ZXJzIChyZWdjYWNoZSwgcmVnbm8pOwogICBlbHNlCiAgICAg ewpAQCAtMTc0MSw3ICsxODI3LDcgQEAgYWl4X3RocmVhZF90YXJnZXQ6Om1v dXJuX2luZmVyaW9yICgpCiB7CiAgIHRhcmdldF9vcHMgKmJlbmVhdGggPSB0 aGlzLT5iZW5lYXRoICgpOwogCi0gIHBkX2RlYWN0aXZhdGUgKCk7CisgIHBk X2Rpc2FibGUgKCk7CiAgIGJlbmVhdGgtPm1vdXJuX2luZmVyaW9yICgpOwog fQogCkBAIC0xNzUwLDcgKzE4MzYsNyBAQCBhaXhfdGhyZWFkX3RhcmdldDo6 bW91cm5faW5mZXJpb3IgKCkKIGJvb2wKIGFpeF90aHJlYWRfdGFyZ2V0Ojp0 aHJlYWRfYWxpdmUgKHB0aWRfdCBwdGlkKQogewotICBpZiAoIVBEX1RJRCAo cHRpZCkpCisgIGlmIChwdGlkLnRpZCAoKSA9PSAwKQogICAgIHJldHVybiBi ZW5lYXRoICgpLT50aHJlYWRfYWxpdmUgKHB0aWQpOwogCiAgIC8qIFdlIHVw ZGF0ZSB0aGUgdGhyZWFkIGxpc3QgZXZlcnkgdGltZSB0aGUgY2hpbGQgc3Rv cHMsIHNvIGFsbApAQCAtMTc2Niw3ICsxODUyLDcgQEAgYWl4X3RocmVhZF90 YXJnZXQ6OnRocmVhZF9hbGl2ZSAocHRpZF90IHB0aWQpCiBzdGQ6OnN0cmlu ZwogYWl4X3RocmVhZF90YXJnZXQ6OnBpZF90b19zdHIgKHB0aWRfdCBwdGlk KQogewotICBpZiAoIVBEX1RJRCAocHRpZCkpCisgIGlmIChwdGlkLnRpZCAo KSA9PSAwKQogICAgIHJldHVybiBiZW5lYXRoICgpLT5waWRfdG9fc3RyIChw dGlkKTsKIAogICByZXR1cm4gc3RyaW5nX3ByaW50ZiAoXygiVGhyZWFkICVz IiksIHB1bG9uZ2VzdCAocHRpZC50aWQgKCkpKTsKQEAgLTE3ODYsOCArMTg3 MiwxMSBAQCBhaXhfdGhyZWFkX3RhcmdldDo6ZXh0cmFfdGhyZWFkX2luZm8g KHN0cnVjdCB0aHJlYWRfaW5mbyAqdGhyZWFkKQogICBwdGhkYl9kZXRhY2hz dGF0ZV90IGRldGFjaHN0YXRlOwogICBpbnQgY2FuY2VscGVuZDsKICAgc3Rh dGljIGNoYXIgKnJldCA9IE5VTEw7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3Zh cmlhYmxlcyAqZGF0YTsKKworICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hl bHBlcl9mb3JfcHRpZCAodGhyZWFkLT5wdGlkKTsKIAotICBpZiAoIVBEX1RJ RCAodGhyZWFkLT5wdGlkKSkKKyAgaWYgKHRocmVhZC0+cHRpZC50aWQgKCkg PT0gMCkKICAgICByZXR1cm4gTlVMTDsKIAogICBzdHJpbmdfZmlsZSBidWY7 CkBAIC0xODAwLDI0ICsxODg5LDI0IEBAIGFpeF90aHJlYWRfdGFyZ2V0Ojpl eHRyYV90aHJlYWRfaW5mbyAoc3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQp CiAgICAgLyogaTE4bjogTGlrZSAidGhyZWFkLWlkZW50aWZpZXIgJWQsIFtz dGF0ZV0gcnVubmluZywgc3VzcGVuZGVkIiAqLwogICAgIGJ1Zi5wcmludGYg KF8oInRpZCAlZCIpLCAoaW50KXRpZCk7CiAKLSAgc3RhdHVzID0gcHRoZGJf cHRocmVhZF9zdGF0ZSAocGRfc2Vzc2lvbiwgcGR0aWQsICZzdGF0ZSk7Cisg IHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfc3RhdGUgKGRhdGEtPnBkX3Nlc3Np b24sIHBkdGlkLCAmc3RhdGUpOwogICBpZiAoc3RhdHVzICE9IFBUSERCX1NV Q0NFU1MpCiAgICAgc3RhdGUgPSBQU1RfTk9UU1VQOwogICBidWYucHJpbnRm ICgiLCAlcyIsIHN0YXRlMnN0ciAoc3RhdGUpKTsKIAotICBzdGF0dXMgPSBw dGhkYl9wdGhyZWFkX3N1c3BlbmRzdGF0ZSAocGRfc2Vzc2lvbiwgcGR0aWQs IAorICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3N1c3BlbmRzdGF0ZSAoZGF0 YS0+cGRfc2Vzc2lvbiwgcGR0aWQsIAogCQkJCSAgICAgICAmc3VzcGVuZHN0 YXRlKTsKICAgaWYgKHN0YXR1cyA9PSBQVEhEQl9TVUNDRVNTICYmIHN1c3Bl bmRzdGF0ZSA9PSBQU1NfU1VTUEVOREVEKQogICAgIC8qIGkxOG46IExpa2Ug IlRocmVhZC1JZCAlZCwgW3N0YXRlXSBydW5uaW5nLCBzdXNwZW5kZWQiICov CiAgICAgYnVmLnByaW50ZiAoXygiLCBzdXNwZW5kZWQiKSk7CiAKLSAgc3Rh dHVzID0gcHRoZGJfcHRocmVhZF9kZXRhY2hzdGF0ZSAocGRfc2Vzc2lvbiwg cGR0aWQsIAorICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX2RldGFjaHN0YXRl IChkYXRhLT5wZF9zZXNzaW9uLCBwZHRpZCwgCiAJCQkJICAgICAgJmRldGFj aHN0YXRlKTsKICAgaWYgKHN0YXR1cyA9PSBQVEhEQl9TVUNDRVNTICYmIGRl dGFjaHN0YXRlID09IFBEU19ERVRBQ0hFRCkKICAgICAvKiBpMThuOiBMaWtl ICJUaHJlYWQtSWQgJWQsIFtzdGF0ZV0gcnVubmluZywgZGV0YWNoZWQiICov CiAgICAgYnVmLnByaW50ZiAoXygiLCBkZXRhY2hlZCIpKTsKIAotICBwdGhk Yl9wdGhyZWFkX2NhbmNlbHBlbmQgKHBkX3Nlc3Npb24sIHBkdGlkLCAmY2Fu Y2VscGVuZCk7CisgIHB0aGRiX3B0aHJlYWRfY2FuY2VscGVuZCAoZGF0YS0+ cGRfc2Vzc2lvbiwgcGR0aWQsICZjYW5jZWxwZW5kKTsKICAgaWYgKHN0YXR1 cyA9PSBQVEhEQl9TVUNDRVNTICYmIGNhbmNlbHBlbmQpCiAgICAgLyogaTE4 bjogTGlrZSAiVGhyZWFkLUlkICVkLCBbc3RhdGVdIHJ1bm5pbmcsIGNhbmNl bCBwZW5kaW5nIiAqLwogICAgIGJ1Zi5wcmludGYgKF8oIiwgY2FuY2VsIHBl bmRpbmciKSk7CmRpZmYgLS1naXQgYS9nZGIvc29saWItYWl4LmMgYi9nZGIv c29saWItYWl4LmMKaW5kZXggZjQ4M2Y1NGRlMTMuLjZiZTgxMDY0ZWJkIDEw MDY0NAotLS0gYS9nZGIvc29saWItYWl4LmMKKysrIGIvZ2RiL3NvbGliLWFp eC5jCkBAIC02MTgsNiArNjE4LDIwIEBAIHNvbGliX2FpeF9iZmRfb3BlbiAo Y29uc3QgY2hhciAqcGF0aG5hbWUpCiAgICAgICBpZiAobWVtYmVyX25hbWUg PT0gYmZkX2dldF9maWxlbmFtZSAob2JqZWN0X2JmZC5nZXQgKCkpKQogCWJy ZWFrOwogCisgICAgICBzdGQ6OnN0cmluZyBzID0gYmZkX2dldF9maWxlbmFt ZSAob2JqZWN0X2JmZC5nZXQgKCkpOworCisgICAgICAvKiBGb3IgZXZlcnkg aW5mZXJpb3IgYWZ0ZXIgZmlyc3QgaW50IGJmZCBzeXN0ZW0gd2UgCisJIHdp bGwgaGF2ZSB0aGUgcGF0aG5hbWUgaW5zdGVhZCBvZiB0aGUgbWVtYmVyIG5h bWUKKwkgcmVnaXN0ZXJlZC4gSGVuY2UgdGhlIGJlbG93IGNvbmRpdGlvbiBl eGlzdHMuICAqLworCisgICAgICBpZiAocy5maW5kICgnKCcpICE9IHN0ZDo6 c3RyaW5nOjpucG9zKQorCXsKKwkgIGludCBwb3MgPSBzLmZpbmQgKCcoJyk7 CisJICBpbnQgbGVuID0gcy5maW5kICgnKScpIC0gcy5maW5kICgnKCcpOwor CSAgaWYgKHMuc3Vic3RyIChwb3MrMSwgbGVuLTEpID09IG1lbWJlcl9uYW1l KSAKKwkgICAgcmV0dXJuIG9iamVjdF9iZmQ7CisJfQorCiAgICAgICBvYmpl Y3RfYmZkID0gZ2RiX2JmZF9vcGVucl9uZXh0X2FyY2hpdmVkX2ZpbGUgKGFy Y2hpdmVfYmZkLmdldCAoKSwKIAkJCQkJCSAgICAgb2JqZWN0X2JmZC5nZXQg KCkpOwogICAgIH0KLS0gCjIuMzEuMQoK --_004_CH2PR15MB3544B015A880690CA1F6284AD6A19CH2PR15MB3544namp_--