From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id iBpNLp9/72NQeTYAWB0awg (envelope-from ) for ; Fri, 17 Feb 2023 08:22:39 -0500 Received: by simark.ca (Postfix, from userid 112) id B9E171E222; Fri, 17 Feb 2023 08:22:39 -0500 (EST) Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=ZwP9zUeq; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-8.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 2C4FF1E110 for ; Fri, 17 Feb 2023 08:22:39 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7C0AC385B53C for ; Fri, 17 Feb 2023 13:22:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7C0AC385B53C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1676640157; bh=n7HvEqeT9egYnoLVho6zotPcXVFvIMVuDuESxmprxMA=; h=To:CC:Subject:Date:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=ZwP9zUeq01W3Kj0UnFA2h5kgtpWGHtSI75At1re3NqliWoW8GZ/dA2Az37Dm+JVhn BRvI3ylUuEY79Pl4pg2J0xFx8q+knsLTnbESNf2NaZsPTf7WHSfSq6ifs8+BVfYZzM g9vk/cz1Be3U5boq+GCW7fh0mx2RO9nkXQFAHjLY= 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 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 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 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-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Aditya Kamath1 via Gdb-patches Reply-To: Aditya Kamath1 Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" --_004_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 >From 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 --_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 RnJvbSAxZmU2Y2RkZThiNjUwNjc0ZTMxN2JlYjVhOTRmNmE0NWFhNDNkZTg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFkaGFyIEthbWF0aCA8QWRpdHlhLkthbWF0 aDFAaWJtLmNvbT4KRGF0ZTogRnJpLCAxNyBGZWIgMjAyMyAwNzoxMTo0OCAtMDYwMApTdWJqZWN0 OiBbUEFUQ0hdIEZpeCBtdWx0aS10aHJlYWRlZCBkZWJ1Z2dpbmcgdW5kZXIgQUlYCgpNdWx0aS10 aHJlYWRlZCBkZWJ1Z2dpbmcgdXNpbmcgdGhlIGxpYnB0aGRlYnVnIGRlYnVnIGludGVyZmFjZQpp cyBjdXJyZW50bHkgYnJva2VuIGR1ZSB0byBtdWx0aXBsZSBpc3N1ZXMuCgpXaGVuIGRlYnVnZ2lu ZyBhIHNpbmdsZSBpbmZlcmlvciwgd2Ugd2VyZSBnZXR0aW5nIGFzc2VydGlvbgpmYWlsdXJlcyBp biBnZXRfYWl4X3RocmVhZF9pbmZvIGFzIG5vIHRwLT5wcml2IHN0cnVjdHVyZSB3YXMKYWxsb2Nh dGVkIGZvciB0aGUgbWFpbiB0aHJlYWQuCgpXZSBmaXhlZCB0aGlzIGJ5IHN3aXRjaGluZyB0aGUg bWFpbgp0aHJlYWQgZnJvbSBhIChwaWQsIDAsIDApIHB0aWRfdCB0byBhIChwaWQsIDAsIHRpZCkg cHRpZF90IGFuZAphbGxvY2FpbmcgdGhlIHRwLT5wcml2IHN0cnVjdHVyZSBpbiBzeW5jX3RocmVh ZGxpc3RzLgoKQXMgYSByZXN1bHQsIHRoZSBzd2l0Y2hfdG9fdGhyZWFkIGNhbGwgaW4gcGRjX3Jl YWRfZGF0YSBjb3VsZApub3cgZmFpbCBzaW5jZSB0aGUgbWFpbiB0aHJlYWQgbm8gbG9uZ2VyIHVz ZXMgKHBpZCwgMCwgMCkuCgpTbyB3ZSByZXBsYWNlZCB0aGUgY2FsbCBieSBvbmx5IHN3aXRjaGlu ZyBpbmZlcmlvcl9wdGlkLCB0aGUgY3VycmVudAppbmZlcmlvciwgYW5kIHRoZSBjdXJyZW50IGFk ZHJlc3Mgc3BhY2UgKGxpa2UgcHJvYy1zZXJ2aWNlLmMpLgpBZGQgc2ltaWxhciBzd2l0Y2hpbmcg dG8gcGRjX3dyaXRlX2RhdGEgd2hlcmUgaXQgd2FzIG1pc3NpbmcKY29tcGxldGVseS4KCldoZW4g ZGVidWdnaW5nIG11bHRpcGxlIGluZmVyaW9ycywgYW4gYWRkaXRpb25hbCBzZXQgb2YKcHJvYmxl bXMgcHJldmVudGVkIGNvcnJlY3QgbXVsdGktdGhyZWFkZWQgZGVidWdnaW5nOgoKRmlyc3Qgb2Yg YWxsLCBhaXgtdGhyZWFkLmMgdXNlZCB0byBoYXZlIGEgbnVtYmVyIG9mIGdsb2JhbAp2YXJpYWJs ZXMgaG9sZGluZyBwZXItaW5mZXJpb3IgaW5mb3JtYXRpb24uCgpXZSBzd2l0Y2hlZCBoZXNlCnRv IGEgcGVyLWluZmVyaW9yIGRhdGEgc3RydWN0dXJlIGluc3RlYWQuCgpBbHNvLCBzeW5jX3RocmVh ZGxpc3RzIHdhcyBnZXR0aW5nIGNvbmZ1c2VkIGFzIHdlIHdlcmUKY29tcGFyaW5nIHRoZSBsaXN0 IG9mIHRocmVhZHMgcmV0dXJuZWQgYnkgbGlicHRoZGVidWcKZm9yICpvbmUqIHByb2Nlc3Mgd2l0 aCBHREIncyBsaXN0IG9mIHRocmVhZHMgZm9yICphbGwqCnByb2Nlc3Nlcy4gTm93IHdlIG9ubHkg dXNlIGhlIEdEQiB0aHJlYWRzIG9mIHRoZSBjdXJyZW50CmluZmVyaW9yIGluc3RlYWQuCgpXZSBh bHNvIHNraXAgY2FsbGluZyBwZF9hY3RpdmF0ZQpmcm9tIHBkX2VuYWJsZSBpZiB0aGF0IGluX2lu aXRpYWxfbGlicmFyeV9zY2FuIGZsYWcgaXMKdHJ1ZSBmb3IgdGhlIGN1cnJlbnQgaW5mZXJpb3Iu CgpGaW5hbGx5LCB0aGUgcHJlc2VuY2Ugb2YgdGhlIHRocmVhZCBsaWJyYXJ5IGluIGFueSBidXQK dGhlIGZpcnN0IGluZmVyaW9yIHdhcyBub3QgY29ycmVjdGx5IGRldGVjdGVkIGR1ZSB0byBhCmJ1 ZyBpbiBzb2xpYi1haXguYywgd2hlcmUgdGhlIEJGRCBmaWxlIG5hbWUgZm9yIHNoYXJlZApsaWJy YXJ5IG1lbWJlcnMgd2FzIGNoYW5nZWQgd2hlbiB0aGUgbGlicmFyeSB3YXMgbG9hZGVkCmZvciB0 aGUgZmlyc3QgdGltZSwgd2hpY2ggY2F1c2VkIHRoZSBsaWJyYXJ5IHRvIG5vIGxvbmdlcgpiZSBy ZWNvZ25pemVkIGJ5IG5hbWUgd2hlbiBsb2FkZWQgYSBzZWNvbmQgdGltZS4KLS0tCiBnZGIvYWl4 LXRocmVhZC5jIHwgMzc1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tCiBnZGIvc29saWItYWl4LmMgIHwgIDE0ICsrCiAyIGZpbGVzIGNoYW5nZWQsIDI0NiBp bnNlcnRpb25zKCspLCAxNDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2RiL2FpeC10aHJl YWQuYyBiL2dkYi9haXgtdGhyZWFkLmMKaW5kZXggZTU1NmMxNTM1NzYuLmM3MzI4ZDlkYzY0IDEw MDY0NAotLS0gYS9nZGIvYWl4LXRocmVhZC5jCisrKyBiL2dkYi9haXgtdGhyZWFkLmMKQEAgLTY4 LDEwICs2OCw2IEBAIHN0YXRpYyBib29sIGRlYnVnX2FpeF90aHJlYWQ7CiAjZGVmaW5lIHB0aGRi X3RpZF90CXRpZF90CiAjZW5kaWYKIAotLyogUmV0dXJuIHdoZXRoZXIgdG8gdHJlYXQgUElEIGFz IGEgZGVidWdnYWJsZSB0aHJlYWQgaWQuICAqLwotCi0jZGVmaW5lIFBEX1RJRChwdGlkKQkocGRf YWN0aXZlICYmIHB0aWQudGlkICgpICE9IDApCi0KIC8qIFN1Y2Nlc3MgYW5kIGZhaWx1cmUgdmFs dWVzIHJldHVybmVkIGJ5IHB0aGRiIGNhbGxiYWNrcy4gICovCiAKICNkZWZpbmUgUERDX1NVQ0NF U1MJUFRIREJfU1VDQ0VTUwpAQCAtMTQ0LDI0ICsxNDAsNiBAQCBjbGFzcyBhaXhfdGhyZWFkX3Rh cmdldCBmaW5hbCA6IHB1YmxpYyB0YXJnZXRfb3BzCiAKIHN0YXRpYyBhaXhfdGhyZWFkX3Rhcmdl dCBhaXhfdGhyZWFkX29wczsKIAotLyogQWRkcmVzcyBvZiB0aGUgZnVuY3Rpb24gdGhhdCBsaWJw dGhyZWFkIHdpbGwgY2FsbCB3aGVuIGxpYnB0aGRlYnVnCi0gICBpcyByZWFkeSB0byBiZSBpbml0 aWFsaXplZC4gICovCi0KLXN0YXRpYyBDT1JFX0FERFIgcGRfYnJrX2FkZHI7Ci0KLS8qIFdoZXRo ZXIgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24gaXMgZGVidWdnYWJsZSBieSBwdGhkYi4gICovCi0K LXN0YXRpYyBpbnQgcGRfYWJsZSA9IDA7Ci0KLS8qIFdoZXRoZXIgYSB0aHJlYWRlZCBhcHBsaWNh dGlvbiBpcyBiZWluZyBkZWJ1Z2dlZC4gICovCi0KLXN0YXRpYyBpbnQgcGRfYWN0aXZlID0gMDsK LQotLyogV2hldGhlciB0aGUgY3VycmVudCBhcmNoaXRlY3R1cmUgaXMgNjQtYml0LiAgCi0gICBP bmx5IHZhbGlkIHdoZW4gcGRfYWJsZSBpcyB0cnVlLiAgKi8KLQotc3RhdGljIGludCBhcmNoNjQ7 Ci0KIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zIGZvciBwdGhkYiBjYWxsYmFja3MuICAqLwogCiBz dGF0aWMgaW50IHBkY19zeW1ib2xfYWRkcnMgKHB0aGRiX3VzZXJfdCwgcHRoZGJfc3ltYm9sX3Qg KiwgaW50KTsKQEAgLTE5MSw5ICsxNjksNjYgQEAgc3RhdGljIHB0aGRiX2NhbGxiYWNrc190IHBk X2NhbGxiYWNrcyA9IHsKICAgTlVMTAogfTsKIAotLyogQ3VycmVudCBwdGhkYiBzZXNzaW9uLiAg Ki8KKy8qIEFpeCB2YXJpYWJsZSBzdHJ1Y3R1cmUuICAqLworc3RydWN0IGFpeF90aHJlYWRfdmFy aWFibGVzIAoreworICAvKiBXaGV0aGVyIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGlzIGRlYnVn Z2FibGUgYnkgcHRoZGIuICAqLworICBpbnQgcGRfYWJsZTsKKworICAvKiBXaGV0aGVyIGEgdGhy ZWFkZWQgYXBwbGljYXRpb24gaXMgYmVpbmcgZGVidWdnZWQuICAqLworICBpbnQgcGRfYWN0aXZl OworCisgIC8qIEN1cnJlbnQgcHRoZGIgc2Vzc2lvbi4gICovCisgIHB0aGRiX3Nlc3Npb25fdCBw ZF9zZXNzaW9uOworCisgIC8qIEFkZHJlc3Mgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgbGlicHRocmVh ZCB3aWxsIGNhbGwgd2hlbiBsaWJwdGhkZWJ1ZworICAgaXMgcmVhZHkgdG8gYmUgaW5pdGlhbGl6 ZWQuICAqLworICBDT1JFX0FERFIgcGRfYnJrX2FkZHI7CisKKyAgLyogV2hldGhlciB0aGUgY3Vy cmVudCBhcmNoaXRlY3R1cmUgaXMgNjQtYml0LgorICAgT25seSB2YWxpZCB3aGVuIHBkX2FibGUg aXMgdHJ1ZS4gICovCisgIGludCBhcmNoNjQ7Cit9OworCisvKiBLZXkgdG8gb3VyIHBlci1pbmZl cmlvciBkYXRhLiAgKi8KK3N0YXRpYyBjb25zdCByZWdpc3RyeTxpbmZlcmlvcj46OmtleTxhaXhf dGhyZWFkX3ZhcmlhYmxlcz4KKyAgYWl4X3RocmVhZF92YXJpYWJsZXNfaGFuZGxlOworCisvKiBG dW5jdGlvbiB0byBHZXQgYWl4X3RocmVhZF92YXJpYWJsZXMgZGF0YS4gICovCitzdGF0aWMgc3Ry dWN0IGFpeF90aHJlYWRfdmFyaWFibGVzKgorZ2V0X2FpeF90aHJlYWRfdmFyaWFibGVzX2RhdGEg KHN0cnVjdCBpbmZlcmlvciAqaW5mKQoreworICBpZiAoaW5mID09IE5VTEwpCisgICAgcmV0dXJu IE5VTEw7CisKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzKiBkYXRhOworCisgIGRhdGEg PSBhaXhfdGhyZWFkX3ZhcmlhYmxlc19oYW5kbGUuZ2V0IChpbmYpOworICBpZiAoZGF0YSA9PSBO VUxMKQorICAgIGRhdGEgPSBhaXhfdGhyZWFkX3ZhcmlhYmxlc19oYW5kbGUuZW1wbGFjZSAoaW5m KTsKKworICByZXR1cm4gZGF0YTsKK30KKworLyogSGVscGVyIHRvIGdldCBkYXRhIGZvciBwdGlk IGluIGEgZnVuY3Rpb24uICAqLworCitzdGF0aWMgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVz KgorZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcHRpZCAocHRpZF90IHB0aWQpCit7CisgIGlu ZmVyaW9yICppbmYgPSBmaW5kX2luZmVyaW9yX3B0aWQgKGN1cnJlbnRfaW5mZXJpb3IgKCktPnBy b2Nlc3NfdGFyZ2V0ICgpLAorCQkJCQlwdGlkKTsKKyAgcmV0dXJuIGdldF9haXhfdGhyZWFkX3Zh cmlhYmxlc19kYXRhIChpbmYpOworfQorCisvKiBIZWxwZXIgdG8gZ2V0IGRhdGEgZm9yIHBpZCBp biBhIGZ1bmN0aW9uLiAgKi8KIAotc3RhdGljIHB0aGRiX3Nlc3Npb25fdCBwZF9zZXNzaW9uOwor c3RhdGljIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyoKK2dldF90aHJlYWRfZGF0YV9oZWxw ZXJfZm9yX3BpZCAocGlkX3QgcGlkKQoreworICBpbmZlcmlvciAqaW5mID0gZmluZF9pbmZlcmlv cl9waWQgKGN1cnJlbnRfaW5mZXJpb3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCk7CisgIHJldHVybiBnZXRfYWl4X3Ro cmVhZF92YXJpYWJsZXNfZGF0YSAoaW5mKTsKK30KIAogLyogUmV0dXJuIGEgcHJpbnRhYmxlIHJl cHJlc2VudGF0aW9uIG9mIHB0aGRlYnVnIGZ1bmN0aW9uIHJldHVybgogICAgU1RBVFVTLiAgKi8K QEAgLTMxOCw3ICszNTMsNyBAQCBwaWRfdG9fcHJjIChwdGlkX3QgKnB0aWRwKQogICBwdGlkX3Qg cHRpZDsKIAogICBwdGlkID0gKnB0aWRwOwotICBpZiAoUERfVElEIChwdGlkKSkKKyAgaWYgKHB0 aWQudGlkICgpICE9IDApCiAgICAgKnB0aWRwID0gcHRpZF90IChwdGlkLnBpZCAoKSk7CiB9CiAK QEAgLTM4OSw2ICs0MjQsOSBAQCBwZGNfcmVhZF9yZWdzIChwdGhkYl91c2VyX3QgdXNlcl9jdXJy ZW50X3BpZCwKICAgZG91YmxlIGZwcnNbcHBjX251bV9mcHJzXTsKICAgc3RydWN0IHB0eHNwcnMg c3ByczY0OwogICBzdHJ1Y3QgcHRzcHJzIHNwcnMzMjsKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFy aWFibGVzICpkYXRhOworICAKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3Bp ZCAodXNlcl9jdXJyZW50X3BpZCk7CiAgIAogICBpZiAoZGVidWdfYWl4X3RocmVhZCkKICAgICBn ZGJfcHJpbnRmIChnZGJfc3RkbG9nLCAicGRjX3JlYWRfcmVncyB0aWQ9JWQgZmxhZ3M9JXNcbiIs CkBAIC0zOTcsNyArNDM1LDcgQEAgcGRjX3JlYWRfcmVncyAocHRoZGJfdXNlcl90IHVzZXJfY3Vy cmVudF9waWQsCiAgIC8qIEdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLwogICBpZiAoZmxh Z3MgJiBQVEhEQl9GTEFHX0dQUlMpCiAgICAgewotICAgICAgaWYgKGFyY2g2NCkKKyAgICAgIGlm IChkYXRhLT5hcmNoNjQpCiAJewogCSAgaWYgKCFwdHJhY2U2NGFpeCAoUFRUX1JFQURfR1BSUywg dGlkLCAKIAkJCSAgICAodW5zaWduZWQgbG9uZykgZ3ByczY0LCAwLCBOVUxMKSkKQEAgLTQyMyw3 ICs0NjEsNyBAQCBwZGNfcmVhZF9yZWdzIChwdGhkYl91c2VyX3QgdXNlcl9jdXJyZW50X3BpZCwK ICAgLyogU3BlY2lhbC1wdXJwb3NlIHJlZ2lzdGVycy4gICovCiAgIGlmIChmbGFncyAmIFBUSERC X0ZMQUdfU1BSUykKICAgICB7Ci0gICAgICBpZiAoYXJjaDY0KQorICAgICAgaWYgKGRhdGEtPmFy Y2g2NCkKIAl7CiAJICBpZiAoIXB0cmFjZTY0YWl4IChQVFRfUkVBRF9TUFJTLCB0aWQsIAogCQkJ ICAgICh1bnNpZ25lZCBsb25nKSAmc3ByczY0LCAwLCBOVUxMKSkKQEAgLTQ1Niw2ICs0OTQsMTAg QEAgcGRjX3dyaXRlX3JlZ3MgKHB0aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRfcGlkLAogICAgICB0 aGlzIGlzIG5lZWRlZCwgSSBoYXZlIGltcGxlbWVudGVkIHdoYXQgSSB0aGluayBpdCBzaG91bGQg ZG8sCiAgICAgIGhvd2V2ZXIgdGhpcyBjb2RlIGlzIHVudGVzdGVkLiAgKi8KIAorICBzdHJ1Y3Qg YWl4X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7CisgIAorICBkYXRhID0gZ2V0X3RocmVhZF9kYXRh X2hlbHBlcl9mb3JfcGlkICh1c2VyX2N1cnJlbnRfcGlkKTsKKwogICBpZiAoZGVidWdfYWl4X3Ro cmVhZCkKICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLCAicGRjX3dyaXRlX3JlZ3MgdGlkPSVk IGZsYWdzPSVzXG4iLAogCQkoaW50KSB0aWQsIGhleF9zdHJpbmcgKGZsYWdzKSk7CkBAIC00NjMs NyArNTA1LDcgQEAgcGRjX3dyaXRlX3JlZ3MgKHB0aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRfcGlk LAogICAvKiBHZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzLiAgKi8KICAgaWYgKGZsYWdzICYgUFRI REJfRkxBR19HUFJTKQogICAgIHsKLSAgICAgIGlmIChhcmNoNjQpCisgICAgICBpZiAoZGF0YS0+ YXJjaDY0KQogCXB0cmFjZTY0YWl4IChQVFRfV1JJVEVfR1BSUywgdGlkLCAKIAkJICAgICAodW5z aWduZWQgbG9uZykgY29udGV4dC0+Z3ByLCAwLCBOVUxMKTsKICAgICAgIGVsc2UKQEAgLTQ3OSw3 ICs1MjEsNyBAQCBwZGNfd3JpdGVfcmVncyAocHRoZGJfdXNlcl90IHVzZXJfY3VycmVudF9waWQs CiAgIC8qIFNwZWNpYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLwogICBpZiAoZmxhZ3MgJiBQVEhE Ql9GTEFHX1NQUlMpCiAgICAgewotICAgICAgaWYgKGFyY2g2NCkKKyAgICAgIGlmIChkYXRhLT5h cmNoNjQpCiAJewogCSAgcHRyYWNlNjRhaXggKFBUVF9XUklURV9TUFJTLCB0aWQsIAogCQkgICAg ICAgKHVuc2lnbmVkIGxvbmcpICZjb250ZXh0LT5tc3IsIDAsIE5VTEwpOwpAQCAtNDk5LDcgKzU0 MSw5IEBAIHBkY19yZWFkX2RhdGEgKHB0aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRfcGlkLCB2b2lk ICpidWYsCiAJICAgICAgIHB0aGRiX2FkZHJfdCBhZGRyLCBzaXplX3QgbGVuKQogewogICBpbnQg c3RhdHVzLCByZXQ7Ci0KKyAgaW5mZXJpb3IgKmluZiA9IGZpbmRfaW5mZXJpb3JfcGlkIChjdXJy ZW50X2luZmVyaW9yICgpLT5wcm9jZXNzX3RhcmdldCAoKSwgCisJCQkJICAgICB1c2VyX2N1cnJl bnRfcGlkKTsKKyAgCiAgIGlmIChkZWJ1Z19haXhfdGhyZWFkKQogICAgIGdkYl9wcmludGYgKGdk Yl9zdGRsb2csCiAJCSJwZGNfcmVhZF9kYXRhICh1c2VyX2N1cnJlbnRfcGlkID0gJWxkLCBidWYg PSAweCVseCwgYWRkciA9ICVzLCBsZW4gPSAlbGQpXG4iLApAQCAtNTA4LDE0ICs1NTIsMTcgQEAg cGRjX3JlYWRfZGF0YSAocHRoZGJfdXNlcl90IHVzZXJfY3VycmVudF9waWQsIHZvaWQgKmJ1ZiwK ICAgLyogVGhpcyBpcyBuZWVkZWQgdG8gZWxpbWluYXRlIHRoZSBkZXBlbmRlbmN5IG9mIGN1cnJl bnQgdGhyZWFkCiAgICAgIHdoaWNoIGlzIG51bGwgc28gdGhhdCB0aHJlYWQgcmVhZHMgdGhlIGNv cnJlY3QgdGFyZ2V0IG1lbW9yeS4gICovCiAgIHsKLSAgICBzY29wZWRfcmVzdG9yZV9jdXJyZW50 X3RocmVhZCByZXN0b3JlX2N1cnJlbnRfdGhyZWFkOworICAgIHNjb3BlZF9yZXN0b3JlIHNhdmVf aW5mZXJpb3JfcHRpZCA9IG1ha2Vfc2NvcGVkX3Jlc3RvcmUgKCZpbmZlcmlvcl9wdGlkKTsKICAg ICAvKiBCZWZvcmUgdGhlIGZpcnN0IGluZmVyaW9yIGlzIGFkZGVkLCB3ZSBwYXNzIGluZmVyaW9y X3B0aWQucGlkICgpCiAgICAgICAgZnJvbSBwZF9lbmFibGUgKCkgd2hpY2ggaXMgMC4gIFRoZXJl IGlzIG5vIG5lZWQgdG8gc3dpdGNoIHRocmVhZHMKICAgICAgICBkdXJpbmcgZmlyc3QgaW5pdGlh bGlzYXRpb24uICBJbiB0aGUgcmVzdCBvZiB0aGUgY2FsbGJhY2tzIHRoZQogICAgICAgIGN1cnJl bnQgdGhyZWFkIG5lZWRzIHRvIGJlIGNvcnJlY3QuICAqLwotICAgIGlmICh1c2VyX2N1cnJlbnRf cGlkICE9IDApCi0gICAgICBzd2l0Y2hfdG9fdGhyZWFkIChjdXJyZW50X2luZmVyaW9yICgpLT5w cm9jZXNzX3RhcmdldCAoKSwKLQkJCXB0aWRfdCAodXNlcl9jdXJyZW50X3BpZCkpOworICAgIGlu ZmVyaW9yX3B0aWQgPSBwdGlkX3QgKHVzZXJfY3VycmVudF9waWQpOworICAgIHNjb3BlZF9yZXN0 b3JlX2N1cnJlbnRfaW5mZXJpb3IgcmVzdG9yZV9pbmZlcmlvcjsKKyAgICBzZXRfY3VycmVudF9p bmZlcmlvciAoaW5mKTsKKworICAgIHNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfcHJvZ3JhbV9zcGFj ZSByZXN0b3JlX2N1cnJlbnRfcHJvZ3NwYWNlOworICAgIHNldF9jdXJyZW50X3Byb2dyYW1fc3Bh Y2UgKGluZi0+cHNwYWNlKTsKICAgICBzdGF0dXMgPSB0YXJnZXRfcmVhZF9tZW1vcnkgKGFkZHIs IChnZGJfYnl0ZSAqKSBidWYsIGxlbik7CiAgIH0KICAgcmV0ID0gc3RhdHVzID09IDAgPyBQRENf U1VDQ0VTUyA6IFBEQ19GQUlMVVJFOwpAQCAtNTMzLDEzICs1ODAsMjUgQEAgcGRjX3dyaXRlX2Rh dGEgKHB0aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRfcGlkLCB2b2lkICpidWYsCiAJCXB0aGRiX2Fk ZHJfdCBhZGRyLCBzaXplX3QgbGVuKQogewogICBpbnQgc3RhdHVzLCByZXQ7CisgIGluZmVyaW9y ICppbmYgPSBmaW5kX2luZmVyaW9yX3BpZCAoY3VycmVudF9pbmZlcmlvciAoKS0+cHJvY2Vzc190 YXJnZXQgKCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY3Vy cmVudF9waWQpOwogCiAgIGlmIChkZWJ1Z19haXhfdGhyZWFkKQogICAgIGdkYl9wcmludGYgKGdk Yl9zdGRsb2csCiAJCSJwZGNfd3JpdGVfZGF0YSAodXNlcl9jdXJyZW50X3BpZCA9ICVsZCwgYnVm ID0gMHglbHgsIGFkZHIgPSAlcywgbGVuID0gJWxkKVxuIiwKIAkJdXNlcl9jdXJyZW50X3BpZCwg KGxvbmcpIGJ1ZiwgaGV4X3N0cmluZyAoYWRkciksIGxlbik7CiAKLSAgc3RhdHVzID0gdGFyZ2V0 X3dyaXRlX21lbW9yeSAoYWRkciwgKGdkYl9ieXRlICopIGJ1ZiwgbGVuKTsKKyAgeworICAgIHNj b3BlZF9yZXN0b3JlIHNhdmVfaW5mZXJpb3JfcHRpZCA9IG1ha2Vfc2NvcGVkX3Jlc3RvcmUgKCZp bmZlcmlvcl9wdGlkKTsKKyAgICBpbmZlcmlvcl9wdGlkID0gcHRpZF90ICh1c2VyX2N1cnJlbnRf cGlkKTsKKyAgICBzY29wZWRfcmVzdG9yZV9jdXJyZW50X2luZmVyaW9yIHJlc3RvcmVfaW5mZXJp b3I7CisgICAgc2V0X2N1cnJlbnRfaW5mZXJpb3IgKGluZik7CisKKyAgICBzY29wZWRfcmVzdG9y ZV9jdXJyZW50X3Byb2dyYW1fc3BhY2UgcmVzdG9yZV9jdXJyZW50X3Byb2dzcGFjZTsKKyAgICBz ZXRfY3VycmVudF9wcm9ncmFtX3NwYWNlIChpbmYtPnBzcGFjZSk7CisgICAgc3RhdHVzID0gdGFy Z2V0X3dyaXRlX21lbW9yeSAoYWRkciwgKGdkYl9ieXRlICopIGJ1ZiwgbGVuKTsKKyAgfQorCiAg IHJldCA9IHN0YXR1cyA9PSAwID8gUERDX1NVQ0NFU1MgOiBQRENfRkFJTFVSRTsKIAogICBpZiAo ZGVidWdfYWl4X3RocmVhZCkKQEAgLTYzOSwzOSArNjk4LDYgQEAgcGNtcCAoY29uc3Qgdm9pZCAq cDF2LCBjb25zdCB2b2lkICpwMnYpCiAgIHJldHVybiBwMS0+cHRoaWQgPCBwMi0+cHRoaWQgPyAt MSA6IHAxLT5wdGhpZCA+IHAyLT5wdGhpZDsKIH0KIAotLyogaXRlcmF0ZV9vdmVyX3RocmVhZHMo KSBjYWxsYmFjayBmb3IgY291bnRpbmcgR0RCIHRocmVhZHMuCi0KLSAgIERvIG5vdCBjb3VudCB0 aGUgbWFpbiB0aHJlYWQgKHdob3NlIHRpZCBpcyB6ZXJvKS4gIFRoaXMgbWF0Y2hlcwotICAgdGhl IGxpc3Qgb2YgdGhyZWFkcyBwcm92aWRlZCBieSB0aGUgcHRocmVhZGRlYnVnIGxpYnJhcnksIHdo aWNoCi0gICBkb2VzIG5vdCBpbmNsdWRlIHRoYXQgbWFpbiB0aHJlYWQgZWl0aGVyLCBhbmQgdGh1 cyBhbGxvd3MgdXMKLSAgIHRvIGNvbXBhcmUgdGhlIHR3byBsaXN0cy4gICovCi0KLXN0YXRpYyBp bnQKLWdpdGVyX2NvdW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCwgdm9pZCAqY291bnRw KQotewotICBpZiAoUERfVElEICh0aHJlYWQtPnB0aWQpKQotICAgICgqKGludCAqKSBjb3VudHAp Kys7Ci0gIHJldHVybiAwOwotfQotCi0vKiBpdGVyYXRlX292ZXJfdGhyZWFkcygpIGNhbGxiYWNr IGZvciBhY2N1bXVsYXRpbmcgR0RCIHRocmVhZCBwaWRzLgotCi0gICBEbyBub3QgaW5jbHVkZSB0 aGUgbWFpbiB0aHJlYWQgKHdob3NlIHRpZCBpcyB6ZXJvKS4gIFRoaXMgbWF0Y2hlcwotICAgdGhl IGxpc3Qgb2YgdGhyZWFkcyBwcm92aWRlZCBieSB0aGUgcHRocmVhZGRlYnVnIGxpYnJhcnksIHdo aWNoCi0gICBkb2VzIG5vdCBpbmNsdWRlIHRoYXQgbWFpbiB0aHJlYWQgZWl0aGVyLCBhbmQgdGh1 cyBhbGxvd3MgdXMKLSAgIHRvIGNvbXBhcmUgdGhlIHR3byBsaXN0cy4gICovCi0KLXN0YXRpYyBp bnQKLWdpdGVyX2FjY3VtIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCwgdm9pZCAqYnVmcCkK LXsKLSAgaWYgKFBEX1RJRCAodGhyZWFkLT5wdGlkKSkKLSAgICB7Ci0gICAgICAqKihzdHJ1Y3Qg dGhyZWFkX2luZm8gKioqKSBidWZwID0gdGhyZWFkOwotICAgICAgKCooc3RydWN0IHRocmVhZF9p bmZvICoqKikgYnVmcCkrKzsKLSAgICB9Ci0gIHJldHVybiAwOwotfQotCiAvKiBwdGlkIGNvbXBh cmlzb24gZnVuY3Rpb24gKi8KIAogc3RhdGljIGludApAQCAtNzE5LDcgKzc0NSwxMCBAQCBnZXRf c2lnbmFsZWRfdGhyZWFkIChpbnQgcGlkKQogCQkgICAgc2l6ZW9mICh0aHJpbmYpLCAma3RpZCwg MSkgIT0gMSkKIAlicmVhazsKIAotICAgICAgaWYgKHRocmluZi50aV9jdXJzaWcgPT0gU0lHVFJB UCkKKyAgICAgIC8qIFdlIGFsc28gbmVlZCB0byBrZWVwIGluIG1pbmQgVHJhcCBhbmQgaW50ZXJy dXB0IG9yIGFueQorICAgICAgICAgc2lnbmFsIHRoYXQgbmVlZHMgdG8gYmUgaGFuZGxlZCBpbiBw ZF91cGRhdGUgKCkuICAqLworCisgICAgICBpZiAodGhyaW5mLnRpX2N1cnNpZykKIAlyZXR1cm4g dGhyaW5mLnRpX3RpZDsKICAgICB9CiAKQEAgLTc0MSw3ICs3NzAsNyBAQCBnZXRfc2lnbmFsZWRf dGhyZWFkIChpbnQgcGlkKQogICAgICAgIGhhdmUgZGlmZmljdWx0eSB3aXRoIGNlcnRhaW4gY2Fs bCBwYXR0ZXJucyAqLwogCiBzdGF0aWMgdm9pZAotc3luY190aHJlYWRsaXN0cyAoaW50IHBpZCkK K3N5bmNfdGhyZWFkbGlzdHMgKHBpZF90IHBpZCkgCiB7CiAgIGludCBjbWQsIHN0YXR1czsKICAg aW50IHBjb3VudCwgcHNpemUsIHBpLCBnY291bnQsIGdpOwpAQCAtNzUwLDYgKzc3OSwxMSBAQCBz eW5jX3RocmVhZGxpc3RzIChpbnQgcGlkKQogICBwdGhkYl9wdGhyZWFkX3QgcGR0aWQ7CiAgIHB0 aHJlYWRfdCBwdGhpZDsKICAgcHRoZGJfdGlkX3QgdGlkOworICBwcm9jZXNzX3N0cmF0dW1fdGFy Z2V0ICpwcm9jX3RhcmdldAorICAgICAgICAgICAgPSBjdXJyZW50X2luZmVyaW9yICgpLT5wcm9j ZXNzX3RhcmdldCAoKTsKKyAgdGhyZWFkX2luZm8gICp0cDsKKyAgc3RydWN0IGFpeF90aHJlYWRf dmFyaWFibGVzICpkYXRhOworICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcGlk IChwaWQpOwogCiAgIC8qIEFjY3VtdWxhdGUgYW4gYXJyYXkgb2YgbGlicHRoZGVidWcgdGhyZWFk cyBzb3J0ZWQgYnkgcHRocmVhZCBpZC4gICovCiAKQEAgLTc1OSwxMSArNzkzLDExIEBAIHN5bmNf dGhyZWFkbGlzdHMgKGludCBwaWQpCiAKICAgZm9yIChjbWQgPSBQVEhEQl9MSVNUX0ZJUlNUOzsg Y21kID0gUFRIREJfTElTVF9ORVhUKQogICAgIHsKLSAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJl YWQgKHBkX3Nlc3Npb24sICZwZHRpZCwgY21kKTsKKyAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJl YWQgKGRhdGEtPnBkX3Nlc3Npb24sICZwZHRpZCwgY21kKTsKICAgICAgIGlmIChzdGF0dXMgIT0g UFRIREJfU1VDQ0VTUyB8fCBwZHRpZCA9PSBQVEhEQl9JTlZBTElEX1BUSFJFQUQpCiAJYnJlYWs7 CiAKLSAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfcHRpZCAocGRfc2Vzc2lvbiwgcGR0aWQs ICZwdGhpZCk7CisgICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX3B0aWQgKGRhdGEtPnBkX3Nl c3Npb24sIHBkdGlkLCAmcHRoaWQpOwogICAgICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNT IHx8IHB0aGlkID09IFBUSERCX0lOVkFMSURfUFRJRCkKIAljb250aW51ZTsKIApAQCAtNzgwLDcg KzgxNCw3IEBAIHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAKICAgZm9yIChwaSA9IDA7IHBp IDwgcGNvdW50OyBwaSsrKQogICAgIHsKLSAgICAgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfdGlk IChwZF9zZXNzaW9uLCBwYnVmW3BpXS5wZHRpZCwgJnRpZCk7CisgICAgICBzdGF0dXMgPSBwdGhk Yl9wdGhyZWFkX3RpZCAoZGF0YS0+cGRfc2Vzc2lvbiwgcGJ1ZltwaV0ucGR0aWQsICZ0aWQpOwog ICAgICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTKQogCXRpZCA9IFBUSERCX0lOVkFMSURf VElEOwogICAgICAgcGJ1ZltwaV0udGlkID0gdGlkOwpAQCAtNzkwLDEzICs4MjQsMjYgQEAgc3lu Y190aHJlYWRsaXN0cyAoaW50IHBpZCkKIAogICAvKiBBY2N1bXVsYXRlIGFuIGFycmF5IG9mIEdE QiB0aHJlYWRzIHNvcnRlZCBieSBwaWQuICAqLwogCisgIC8qIGdjb3VudCBpcyBHREIgdGhyZWFk IGNvdW50IGFuZCBwY291bnQgaXMgcHRocmVhZGxpYiB0aHJlYWQgY291bnQuICAqLworCiAgIGdj b3VudCA9IDA7Ci0gIGl0ZXJhdGVfb3Zlcl90aHJlYWRzIChnaXRlcl9jb3VudCwgJmdjb3VudCk7 CisgIGZvciAodGhyZWFkX2luZm8gKnRwIDogYWxsX3RocmVhZHMgKHByb2NfdGFyZ2V0LCBwdGlk X3QgKHBpZCkpKQorICAgIGdjb3VudCsrOwogICBnID0gZ2J1ZiA9IFhORVdWRUMgKHN0cnVjdCB0 aHJlYWRfaW5mbyAqLCBnY291bnQpOwotICBpdGVyYXRlX292ZXJfdGhyZWFkcyAoZ2l0ZXJfYWNj dW0sICZnKTsKKyAgZm9yICh0aHJlYWRfaW5mbyAqdHAgOiBhbGxfdGhyZWFkcyAocHJvY190YXJn ZXQsIHB0aWRfdCAocGlkKSkpCisgICAgKmcrKyA9IHRwOwogICBxc29ydCAoZ2J1ZiwgZ2NvdW50 LCBzaXplb2YgKmdidWYsIGdjbXApOwogCisgIHRwID0gZmluZF90aHJlYWRfcHRpZCAocHJvY190 YXJnZXQsIHB0aWRfdCAocGlkKSk7CisKKyAgLyogSWYgdGhlIHB0aHJlYWRsaWJyYXJ5IGlzIG5v dCByZWFkeSB0byBkZWJ1ZyAKKyAgICAgdGhlbiB0aGlzIGlzIGp1c3QgYSBtYWluIHByb2Nlc3Mg d2hpY2ggbmVlZHMgCisgICAgIGEgcHJpdiB0byBiZSBzZXQuICBUaGUgaWYgY29uZGl0aW9uIGJl bG93IGRvZXMgCisgICAgIHRoZSBzYW1lLiAgT3RoZXJ3aXNlIHdlIGdvIHRvIHRoZSBmb3IgbG9v cCB0byAKKyAgICAgc3luYyB0aGUgcHRocmVhZCBhbmQgR0RCIHRocmVhZCBsaXN0cy4gICovCisK ICAgLyogQXBwbHkgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvIGFycmF5cyB0byBHREIncyB0 aHJlYWQgbGlzdC4gICovCisKICAgZm9yIChwaSA9IGdpID0gMDsgcGkgPCBwY291bnQgfHwgZ2kg PCBnY291bnQ7KQogICAgIHsKICAgICAgIGlmIChwaSA9PSBwY291bnQpCkBAIC04MTAsOCArODU3 LDYgQEAgc3luY190aHJlYWRsaXN0cyAoaW50IHBpZCkKIAkgIHByaXYtPnBkdGlkID0gcGJ1Zltw aV0ucGR0aWQ7CiAJICBwcml2LT50aWQgPSBwYnVmW3BpXS50aWQ7CiAKLQkgIHByb2Nlc3Nfc3Ry YXR1bV90YXJnZXQgKnByb2NfdGFyZ2V0Ci0JICAgID0gY3VycmVudF9pbmZlcmlvciAoKS0+cHJv Y2Vzc190YXJnZXQgKCk7CiAJICB0aHJlYWQgPSBhZGRfdGhyZWFkX3dpdGhfaW5mbyAocHJvY190 YXJnZXQsCiAJCQkJCSBwdGlkX3QgKHBpZCwgMCwgcGJ1ZltwaV0ucHRoaWQpLAogCQkJCQkgcHJp dik7CkBAIC04NDEsMTMgKzg4NiwyNyBAQCBzeW5jX3RocmVhZGxpc3RzIChpbnQgcGlkKQogCSAg ICB9CiAJICBlbHNlIGlmIChjbXBfcmVzdWx0ID4gMCkKIAkgICAgewotCSAgICAgIGRlbGV0ZV90 aHJlYWQgKGdidWZbZ2ldKTsKLQkgICAgICBnaSsrOworCSAgICAgIC8qIFRoaXMgaXMgdG8gbWFr ZSB0aGUgbWFpbiBwcm9jZXNzIHRocmVhZCBub3cgbG9vaworICAgICAgICAgICAgICAgICBsaWtl IGEgdGhyZWFkLiAgKi8KKworCSAgICAgIGlmIChncHRpZC5pc19waWQgKCkpCisJCXsKKwkJICB0 aHJlYWRfY2hhbmdlX3B0aWQgKHByb2NfdGFyZ2V0LCBncHRpZCwgcHB0aWQpOworCQkgIGFpeF90 aHJlYWRfaW5mbyAqcHJpdiA9IG5ldyBhaXhfdGhyZWFkX2luZm87CisgICAgICAgICAgICAgICAg ICBwcml2LT5wZHRpZCA9IHBidWZbcGldLnBkdGlkOworICAgICAgICAgICAgICAgICAgcHJpdi0+ dGlkID0gcGJ1ZltwaV0udGlkOworCQkgIHRwLT5wcml2LnJlc2V0IChwcml2KTsKKwkJICBnaSsr OworCQkgIHBpKys7CisJCX0KKwkgICAgICBlbHNlCisJCXsKKwkJICBkZWxldGVfdGhyZWFkIChn YnVmW2dpXSk7CisJCSAgZ2krKzsKKwkJfQogCSAgICB9CiAJICBlbHNlCiAJICAgIHsKLQkgICAg ICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpwcm9jX3RhcmdldAotCQk9IGN1cnJlbnRfaW5mZXJp b3IgKCktPnByb2Nlc3NfdGFyZ2V0ICgpOwogCSAgICAgIHRocmVhZCA9IGFkZF90aHJlYWQgKHBy b2NfdGFyZ2V0LCBwcHRpZCk7CiAKIAkgICAgICBhaXhfdGhyZWFkX2luZm8gKnByaXYgPSBuZXcg YWl4X3RocmVhZF9pbmZvOwpAQCAtODgxLDE3ICs5NDAsMjAgQEAgaXRlcl90aWQgKHN0cnVjdCB0 aHJlYWRfaW5mbyAqdGhyZWFkLCB2b2lkICp0aWRwKQogICAgcmV0dXJuIGEgcGlkLW9ubHkgcHRp ZCB3aXRoIFBJRC4gICovCiAKIHN0YXRpYyBwdGlkX3QKLXBkX3VwZGF0ZSAoaW50IHBpZCkKK3Bk X3VwZGF0ZSAocGlkX3QgcGlkKQogewogICBpbnQgc3RhdHVzOwogICBwdGlkX3QgcHRpZDsKICAg cHRoZGJfdGlkX3QgdGlkOwogICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCA9IE5VTEw7Cisg IHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKworICBkYXRhID0gZ2V0X3RocmVh ZF9kYXRhX2hlbHBlcl9mb3JfcGlkIChwaWQpOwogCi0gIGlmICghcGRfYWN0aXZlKQorICBpZiAo IWRhdGEtPnBkX2FjdGl2ZSkKICAgICByZXR1cm4gcHRpZF90IChwaWQpOwogCi0gIHN0YXR1cyA9 IHB0aGRiX3Nlc3Npb25fdXBkYXRlIChwZF9zZXNzaW9uKTsKKyAgc3RhdHVzID0gcHRoZGJfc2Vz c2lvbl91cGRhdGUgKGRhdGEtPnBkX3Nlc3Npb24pOwogICBpZiAoc3RhdHVzICE9IFBUSERCX1NV Q0NFU1MpCiAgICAgcmV0dXJuIHB0aWRfdCAocGlkKTsKIApAQCAtOTE1LDM0ICs5NzcsMjMgQEAg cGRfdXBkYXRlIChpbnQgcGlkKQogICAgZm9yIHRoYXQgdGhyZWFkLiAgT3RoZXJ3aXNlLCByZXR1 cm4gYSBwdGlkLW9ubHkgcHRpZCB1c2luZyBQSUQuICAqLwogCiBzdGF0aWMgcHRpZF90Ci1wZF9h Y3RpdmF0ZSAoaW50IHBpZCkKK3BkX2FjdGl2YXRlIChwaWRfdCBwaWQpCiB7CiAgIGludCBzdGF0 dXM7Ci0JCQotICBzdGF0dXMgPSBwdGhkYl9zZXNzaW9uX2luaXQgKHBpZCwgYXJjaDY0ID8gUEVN XzY0QklUIDogUEVNXzMyQklULAorICBzdHJ1Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7 CisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9waWQgKHBpZCk7CisgIAorICBz dGF0dXMgPSBwdGhkYl9zZXNzaW9uX2luaXQgKHBpZCwgZGF0YS0+YXJjaDY0ID8gUEVNXzY0QklU IDogUEVNXzMyQklULAogCQkJICAgICAgIFBUSERCX0ZMQUdfUkVHUywgJnBkX2NhbGxiYWNrcywg Ci0JCQkgICAgICAgJnBkX3Nlc3Npb24pOworCQkJICAgICAgICZkYXRhLT5wZF9zZXNzaW9uKTsK ICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTKQogICAgIHsKICAgICAgIHJldHVybiBwdGlk X3QgKHBpZCk7CiAgICAgfQotICBwZF9hY3RpdmUgPSAxOworICBkYXRhLT5wZF9hY3RpdmUgPSAx OwogICByZXR1cm4gcGRfdXBkYXRlIChwaWQpOwogfQogCi0vKiBVbmRvIHRoZSBlZmZlY3RzIG9m IHBkX2FjdGl2YXRlKCkuICAqLwotCi1zdGF0aWMgdm9pZAotcGRfZGVhY3RpdmF0ZSAodm9pZCkK LXsKLSAgaWYgKCFwZF9hY3RpdmUpCi0gICAgcmV0dXJuOwotICBwdGhkYl9zZXNzaW9uX2Rlc3Ry b3kgKHBkX3Nlc3Npb24pOwotICAKLSAgcGlkX3RvX3ByYyAoJmluZmVyaW9yX3B0aWQpOwotICBw ZF9hY3RpdmUgPSAwOwotfQotCiAvKiBBbiBvYmplY3QgZmlsZSBoYXMganVzdCBiZWVuIGxvYWRl ZC4gIENoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQKICAgIGFwcGxpY2F0aW9uIGlzIHB0aHJlYWRl ZCwgYW5kIGlmIHNvLCBwcmVwYXJlIGZvciB0aHJlYWQgZGVidWdnaW5nLiAgKi8KIApAQCAtOTUy LDEzICsxMDAzLDE5IEBAIHBkX2VuYWJsZSAodm9pZCkKICAgaW50IHN0YXR1czsKICAgY2hhciAq c3R1Yl9uYW1lOwogICBzdHJ1Y3QgYm91bmRfbWluaW1hbF9zeW1ib2wgbXM7CisgIHN0cnVjdCBh aXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKworICBpZiAoIWluZmVyaW9yX3B0aWQucGlkICgp KQorICAgIHJldHVybjsKKyAgCisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9w dGlkIChpbmZlcmlvcl9wdGlkKTsKIAogICAvKiBEb24ndCBpbml0aWFsaXplIHR3aWNlLiAgKi8K LSAgaWYgKHBkX2FibGUpCisgIGlmIChkYXRhLT5wZF9hYmxlKQogICAgIHJldHVybjsKIAogICAv KiBDaGVjayBhcHBsaWNhdGlvbiB3b3JkIHNpemUuICAqLwotICBhcmNoNjQgPSByZWdpc3Rlcl9z aXplICh0YXJnZXRfZ2RiYXJjaCAoKSwgMCkgPT0gODsKKyAgZGF0YS0+YXJjaDY0ID0gcmVnaXN0 ZXJfc2l6ZSAodGFyZ2V0X2dkYmFyY2ggKCksIDApID09IDg7CiAKICAgLyogQ2hlY2sgd2hldGhl ciB0aGUgYXBwbGljYXRpb24gaXMgcHRocmVhZGVkLiAgKi8KICAgc3R1Yl9uYW1lID0gTlVMTDsK QEAgLTk3MiwxMyArMTAyOSwxOSBAQCBwZF9lbmFibGUgKHZvaWQpCiAgIG1zID0gbG9va3VwX21p bmltYWxfc3ltYm9sIChzdHViX25hbWUsIE5VTEwsIE5VTEwpOwogICBpZiAobXMubWluc3ltID09 IE5VTEwpCiAgICAgcmV0dXJuOwotICBwZF9icmtfYWRkciA9IG1zLnZhbHVlX2FkZHJlc3MgKCk7 Ci0gIGlmICghY3JlYXRlX3RocmVhZF9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAo KSwgcGRfYnJrX2FkZHIpKQorICBkYXRhLT5wZF9icmtfYWRkciA9IG1zLnZhbHVlX2FkZHJlc3Mg KCk7CisgIGlmICghY3JlYXRlX3RocmVhZF9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJj aCAoKSwgZGF0YS0+cGRfYnJrX2FkZHIpKQogICAgIHJldHVybjsKIAogICAvKiBQcmVwYXJlIGZv ciB0aHJlYWQgZGVidWdnaW5nLiAgKi8KICAgY3VycmVudF9pbmZlcmlvciAoKS0+cHVzaF90YXJn ZXQgKCZhaXhfdGhyZWFkX29wcyk7Ci0gIHBkX2FibGUgPSAxOworICBkYXRhLT5wZF9hYmxlID0g MTsgCisKKyAgaW5mZXJpb3IgKmluZiA9IGN1cnJlbnRfaW5mZXJpb3IgKCk7IAorICAvKiBXaGVu IGF0dGFjaGluZyAvIGhhbmRsaW5nIGZvcmsgY2hpbGQsIGRvbid0IHRyeSBsb2FkaW5nIGxpYnRo cmVhZF9kYgorICAgICB1bnRpbCB3ZSBrbm93IGFib3V0IGFsbCBzaGFyZWQgbGlicmFyaWVzLiAg Ki8KKyAgaWYgKGluZi0+aW5faW5pdGlhbF9saWJyYXJ5X3NjYW4pCisgICAgcmV0dXJuOwogCiAg IC8qIElmIHdlJ3JlIGRlYnVnZ2luZyBhIGNvcmUgZmlsZSBvciBhbiBhdHRhY2hlZCBpbmZlcmlv ciwgdGhlCiAgICAgIHB0aHJlYWQgbGlicmFyeSBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gaW5pdGlh bGl6ZWQsIHNvIHRyeSB0bwpAQCAtOTkxLDI4ICsxMDU0LDMxIEBAIHBkX2VuYWJsZSAodm9pZCkK IHN0YXRpYyB2b2lkCiBwZF9kaXNhYmxlICh2b2lkKQogewotICBpZiAoIXBkX2FibGUpCisgIHN0 cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0 YV9oZWxwZXJfZm9yX3B0aWQgKGluZmVyaW9yX3B0aWQpOworCisgIGlmICghZGF0YS0+cGRfYWJs ZSkKKyAgICByZXR1cm47CisgIGlmICghZGF0YS0+cGRfYWN0aXZlKQogICAgIHJldHVybjsKLSAg aWYgKHBkX2FjdGl2ZSkKLSAgICBwZF9kZWFjdGl2YXRlICgpOwotICBwZF9hYmxlID0gMDsKKyAg cHRoZGJfc2Vzc2lvbl9kZXN0cm95IChkYXRhLT5wZF9zZXNzaW9uKTsKKyAKKyAgcGlkX3RvX3By YyAoJmluZmVyaW9yX3B0aWQpOworICBkYXRhLT5wZF9hY3RpdmUgPSAwOworICBkYXRhLT5wZF9h YmxlID0gMDsKICAgY3VycmVudF9pbmZlcmlvciAoKS0+dW5wdXNoX3RhcmdldCAoJmFpeF90aHJl YWRfb3BzKTsKIH0KIAogLyogbmV3X29iamZpbGUgb2JzZXJ2ZXIgY2FsbGJhY2suCiAKICAgIElm IE9CSkZJTEUgaXMgbm9uLW51bGwsIGNoZWNrIHdoZXRoZXIgYSB0aHJlYWRlZCBhcHBsaWNhdGlv biBpcwotICAgYmVpbmcgZGVidWdnZWQsIGFuZCBpZiBzbywgcHJlcGFyZSBmb3IgdGhyZWFkIGRl YnVnZ2luZy4KLQotICAgSWYgT0JKRklMRSBpcyBudWxsLCBzdG9wIGRlYnVnZ2luZyB0aHJlYWRz LiAgKi8KKyAgIGJlaW5nIGRlYnVnZ2VkLCBhbmQgaWYgc28sIHByZXBhcmUgZm9yIHRocmVhZCBk ZWJ1Z2dpbmcuICAqLwogCiBzdGF0aWMgdm9pZAogbmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlKQogewogICBpZiAob2JqZmlsZSkKICAgICBwZF9lbmFibGUgKCk7Ci0gIGVsc2UK LSAgICBwZF9kaXNhYmxlICgpOwogfQogCiAvKiBBdHRhY2ggdG8gcHJvY2VzcyBzcGVjaWZpZWQg YnkgQVJHUy4gICovCkBAIC0xMDQyLDggKzExMDgsMTEgQEAgYWl4X3RocmVhZF90YXJnZXQ6OnJl c3VtZSAocHRpZF90IHB0aWQsIGludCBzdGVwLCBlbnVtIGdkYl9zaWduYWwgc2lnKQogewogICBz dHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZDsKICAgcHRoZGJfdGlkX3QgdGlkWzJdOworICBzdHJ1 Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7CisgIAorICBkYXRhID0gZ2V0X3RocmVhZF9k YXRhX2hlbHBlcl9mb3JfcHRpZCAocHRpZCk7CiAKLSAgaWYgKCFQRF9USUQgKHB0aWQpKQorICBp ZiAocHRpZC50aWQgKCkgPT0gMCkKICAgICB7CiAgICAgICBzY29wZWRfcmVzdG9yZSBzYXZlX2lu ZmVyaW9yX3B0aWQgPSBtYWtlX3Njb3BlZF9yZXN0b3JlICgmaW5mZXJpb3JfcHRpZCk7CiAgICAg ICAKQEAgLTEwNjUsNyArMTEzNCw3IEBAIGFpeF90aHJlYWRfdGFyZ2V0OjpyZXN1bWUgKHB0aWRf dCBwdGlkLCBpbnQgc3RlcCwgZW51bSBnZGJfc2lnbmFsIHNpZykKIAkgICAgICAgcHRpZC5sd3Ag KCkpOwogICAgICAgdGlkWzFdID0gMDsKIAotICAgICAgaWYgKGFyY2g2NCkKKyAgICAgIGlmIChk YXRhLT5hcmNoNjQpCiAJcHRyYWNlNjRhaXggKFBUVF9DT05USU5VRSwgdGlkWzBdLCAobG9uZyBs b25nKSAxLAogCQkgICAgIGdkYl9zaWduYWxfdG9faG9zdCAoc2lnKSwgKFBUUkFDRV9UWVBFX0FS RzUpIHRpZCk7CiAgICAgICBlbHNlCkBAIC0xMDgyLDYgKzExNTEsNyBAQCBwdGlkX3QKIGFpeF90 aHJlYWRfdGFyZ2V0Ojp3YWl0IChwdGlkX3QgcHRpZCwgc3RydWN0IHRhcmdldF93YWl0c3RhdHVz ICpzdGF0dXMsCiAJCQkgdGFyZ2V0X3dhaXRfZmxhZ3Mgb3B0aW9ucykKIHsKKyAgc3RydWN0IGFp eF90aHJlYWRfdmFyaWFibGVzICpkYXRhOwogICB7CiAgICAgcGlkX3RvX3ByYyAoJnB0aWQpOwog CkBAIC0xMDk1LDggKzExNjUsMTAgQEAgYWl4X3RocmVhZF90YXJnZXQ6OndhaXQgKHB0aWRfdCBw dGlkLCBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0dXMgKnN0YXR1cywKICAgICAgcGlkLW9ubHkgcHRp ZHMuICAqLwogICBnZGJfYXNzZXJ0IChwdGlkLmlzX3BpZCAoKSk7CiAKKyAgZGF0YSA9IGdldF90 aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKHB0aWQpOworCiAgIC8qIENoZWNrIHdoZXRoZXIg bGlicHRoZGVidWcgbWlnaHQgYmUgcmVhZHkgdG8gYmUgaW5pdGlhbGl6ZWQuICAqLwotICBpZiAo IXBkX2FjdGl2ZSAmJiBzdGF0dXMtPmtpbmQgKCkgPT0gVEFSR0VUX1dBSVRLSU5EX1NUT1BQRUQK KyAgaWYgKCFkYXRhLT5wZF9hY3RpdmUgJiYgc3RhdHVzLT5raW5kICgpID09IFRBUkdFVF9XQUlU S0lORF9TVE9QUEVECiAgICAgICAmJiBzdGF0dXMtPnNpZyAoKSA9PSBHREJfU0lHTkFMX1RSQVAp CiAgICAgewogICAgICAgcHJvY2Vzc19zdHJhdHVtX3RhcmdldCAqcHJvY190YXJnZXQKQEAgLTEx MDUsNyArMTE3Nyw3IEBAIGFpeF90aHJlYWRfdGFyZ2V0Ojp3YWl0IChwdGlkX3QgcHRpZCwgc3Ry dWN0IHRhcmdldF93YWl0c3RhdHVzICpzdGF0dXMsCiAgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgpOwogCiAgICAgICBpZiAocmVnY2FjaGVfcmVhZF9wYyAo cmVnY2FjaGUpCi0JICAtIGdkYmFyY2hfZGVjcl9wY19hZnRlcl9icmVhayAoZ2RiYXJjaCkgPT0g cGRfYnJrX2FkZHIpCisJICAtIGdkYmFyY2hfZGVjcl9wY19hZnRlcl9icmVhayAoZ2RiYXJjaCkg PT0gZGF0YS0+cGRfYnJrX2FkZHIpCiAJcmV0dXJuIHBkX2FjdGl2YXRlIChwdGlkLnBpZCAoKSk7 CiAgICAgfQogCkBAIC0xMjI5LDE4ICsxMzAxLDIwIEBAIGZldGNoX3JlZ3NfdXNlcl90aHJlYWQg KHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHB0aGRiX3B0aHJlYWRfdCBwZHRpZCkKICAgcHBj X2dkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcDxwcGNfZ2RiYXJjaF90ZGVwPiAoZ2Ri YXJjaCk7CiAgIGludCBzdGF0dXMsIGk7CiAgIHB0aGRiX2NvbnRleHRfdCBjdHg7CisgIHN0cnVj dCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9o ZWxwZXJfZm9yX3B0aWQgKGluZmVyaW9yX3B0aWQpOwogCiAgIGlmIChkZWJ1Z19haXhfdGhyZWFk KQogICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csIAogCQkiZmV0Y2hfcmVnc191c2VyX3RocmVh ZCAlbHhcbiIsIChsb25nKSBwZHRpZCk7Ci0gIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfY29udGV4 dCAocGRfc2Vzc2lvbiwgcGR0aWQsICZjdHgpOworICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX2Nv bnRleHQgKGRhdGEtPnBkX3Nlc3Npb24sIHBkdGlkLCAmY3R4KTsKICAgaWYgKHN0YXR1cyAhPSBQ VEhEQl9TVUNDRVNTKQogICAgIGVycm9yIChfKCJhaXgtdGhyZWFkOiBmZXRjaF9yZWdpc3RlcnM6 IHB0aGRiX3B0aHJlYWRfY29udGV4dCByZXR1cm5lZCAlcyIpLAogCSAgIHBkX3N0YXR1czJzdHIg KHN0YXR1cykpOwogCiAgIC8qIEdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLwogCi0gIGlm IChhcmNoNjQpCisgIGlmIChkYXRhLT5hcmNoNjQpCiAgICAgc3VwcGx5X2dwcnM2NCAocmVnY2Fj aGUsIGN0eC5ncHIpOwogICBlbHNlCiAgICAgZm9yIChpID0gMDsgaSA8IHBwY19udW1fZ3Byczsg aSsrKQpAQCAtMTI1Myw3ICsxMzI3LDcgQEAgZmV0Y2hfcmVnc191c2VyX3RocmVhZCAoc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJfcHRocmVhZF90IHBkdGlkKQogCiAgIC8qIFNwZWNp YWwgcmVnaXN0ZXJzLiAgKi8KIAotICBpZiAoYXJjaDY0KQorICBpZiAoZGF0YS0+YXJjaDY0KQog ICAgIHN1cHBseV9zcHJzNjQgKHJlZ2NhY2hlLCBjdHguaWFyLCBjdHgubXNyLCBjdHguY3IsIGN0 eC5sciwgY3R4LmN0ciwKIAkJCSAgICAgY3R4LnhlciwgY3R4LmZwc2NyKTsKICAgZWxzZQpAQCAt MTI4OCwxOCArMTM2MiwyMSBAQCBmZXRjaF9yZWdzX2tlcm5lbF90aHJlYWQgKHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGUsIGludCByZWdubywKICAgc3RydWN0IHB0eHNwcnMgc3ByczY0OwogICBz dHJ1Y3QgcHRzcHJzIHNwcnMzMjsKICAgaW50IGk7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3Zhcmlh YmxlcyAqZGF0YTsKKyAgCisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlk IChyZWdjYWNoZS0+cHRpZCAoKSk7CiAKICAgaWYgKGRlYnVnX2FpeF90aHJlYWQpCiAgICAgZ2Ri X3ByaW50ZiAoZ2RiX3N0ZGxvZywKIAkJImZldGNoX3JlZ3Nfa2VybmVsX3RocmVhZCB0aWQ9JWx4 IHJlZ25vPSVkIGFyY2g2ND0lZFxuIiwKLQkJKGxvbmcpIHRpZCwgcmVnbm8sIGFyY2g2NCk7CisJ CShsb25nKSB0aWQsIHJlZ25vLCBkYXRhLT5hcmNoNjQpOwogCiAgIC8qIEdlbmVyYWwtcHVycG9z ZSByZWdpc3RlcnMuICAqLwogICBpZiAocmVnbm8gPT0gLTEKICAgICAgIHx8ICh0ZGVwLT5wcGNf Z3AwX3JlZ251bSA8PSByZWdubwogCSAgJiYgcmVnbm8gPCB0ZGVwLT5wcGNfZ3AwX3JlZ251bSAr IHBwY19udW1fZ3BycykpCiAgICAgewotICAgICAgaWYgKGFyY2g2NCkKKyAgICAgIGlmIChkYXRh LT5hcmNoNjQpCiAJewogCSAgaWYgKCFwdHJhY2U2NGFpeCAoUFRUX1JFQURfR1BSUywgdGlkLCAK IAkJCSAgICAodW5zaWduZWQgbG9uZykgZ3ByczY0LCAwLCBOVUxMKSkKQEAgLTEzMzEsNyArMTQw OCw3IEBAIGZldGNoX3JlZ3Nfa2VybmVsX3RocmVhZCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgaW50IHJlZ25vLAogCiAgIGlmIChyZWdubyA9PSAtMSB8fCBzcGVjaWFsX3JlZ2lzdGVyX3Ag KGdkYmFyY2gsIHJlZ25vKSkKICAgICB7Ci0gICAgICBpZiAoYXJjaDY0KQorICAgICAgaWYgKGRh dGEtPmFyY2g2NCkKIAl7CiAJICBpZiAoIXB0cmFjZTY0YWl4IChQVFRfUkVBRF9TUFJTLCB0aWQs IAogCQkJICAgICh1bnNpZ25lZCBsb25nKSAmc3ByczY0LCAwLCBOVUxMKSkKQEAgLTEzNjIsMTIg KzE0MzksMTYgQEAgYWl4X3RocmVhZF90YXJnZXQ6OmZldGNoX3JlZ2lzdGVycyAoc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vKQogewogICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRo cmVhZDsKICAgcHRoZGJfdGlkX3QgdGlkOworICB0aHJlYWQgPSBmaW5kX3RocmVhZF9wdGlkIChj dXJyZW50X2luZmVyaW9yICgpLT5wcm9jZXNzX3RhcmdldCAoKSwgcHRpZF90IChyZWdjYWNoZS0+ cHRpZCAoKS5waWQgKCksIDAsIHJlZ2NhY2hlLT5wdGlkICgpLnRpZCAoKSkpOwogCi0gIGlmICgh UERfVElEIChyZWdjYWNoZS0+cHRpZCAoKSkpCisgIC8qIElmIGEgbmV3IGluZmVyaW9yIGlzIGJv cm4sIHRoZW4gaXRzIHB0aHJlYWQgZGVidWcgbGlicmFyeSBpcyB5ZXQgdG8KKyAgICAgaW5pdGlh bGlzZWQgYW5kIGhlbmNlIGhhcyBubyBwcml2YXRlIGRhdGEuIFNvIHRoZSBiZWxvdyBpZiBjb25k aXRpb24KKyAgICAgZXhpc3RzLiAgKi8KKworICBpZiAocmVnY2FjaGUtPnB0aWQgKCkudGlkICgp ID09IDApCiAgICAgYmVuZWF0aCAoKS0+ZmV0Y2hfcmVnaXN0ZXJzIChyZWdjYWNoZSwgcmVnbm8p OwogICBlbHNlCiAgICAgewotICAgICAgdGhyZWFkID0gZmluZF90aHJlYWRfcHRpZCAoY3VycmVu dF9pbmZlcmlvciAoKSwgcmVnY2FjaGUtPnB0aWQgKCkpOwogICAgICAgYWl4X3RocmVhZF9pbmZv ICpwcml2ID0gZ2V0X2FpeF90aHJlYWRfaW5mbyAodGhyZWFkKTsKICAgICAgIHRpZCA9IHByaXYt PnRpZDsKIApAQCAtMTUxMSw2ICsxNTkyLDggQEAgc3RvcmVfcmVnc191c2VyX3RocmVhZCAoY29u c3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgcHRoZGJfcHRocmVhZF90IHBkdGlkKQogICBw dGhkYl9jb250ZXh0X3QgY3R4OwogICB1aW50MzJfdCBpbnQzMjsKICAgdWludDY0X3QgaW50NjQ7 CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAgZGF0YSA9IGdldF90aHJl YWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKGluZmVyaW9yX3B0aWQpOwogCiAgIGlmIChkZWJ1Z19h aXhfdGhyZWFkKQogICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csIApAQCAtMTUxOCw3ICsxNjAx LDcgQEAgc3RvcmVfcmVnc191c2VyX3RocmVhZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZSwgcHRoZGJfcHRocmVhZF90IHBkdGlkKQogCiAgIC8qIFJldHJpZXZlIHRoZSB0aHJlYWQn cyBjdXJyZW50IGNvbnRleHQgZm9yIGl0cyBub24tcmVnaXN0ZXIKICAgICAgdmFsdWVzLiAgKi8K LSAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9jb250ZXh0IChwZF9zZXNzaW9uLCBwZHRpZCwgJmN0 eCk7CisgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfY29udGV4dCAoZGF0YS0+cGRfc2Vzc2lvbiwg cGR0aWQsICZjdHgpOwogICBpZiAoc3RhdHVzICE9IFBUSERCX1NVQ0NFU1MpCiAgICAgZXJyb3Ig KF8oImFpeC10aHJlYWQ6IHN0b3JlX3JlZ2lzdGVyczogcHRoZGJfcHRocmVhZF9jb250ZXh0IHJl dHVybmVkICVzIiksCiAJICAgcGRfc3RhdHVzMnN0ciAoc3RhdHVzKSk7CkBAIC0xNTI4LDcgKzE2 MTEsNyBAQCBzdG9yZV9yZWdzX3VzZXJfdGhyZWFkIChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlLCBwdGhkYl9wdGhyZWFkX3QgcGR0aWQpCiAgIGZvciAoaSA9IDA7IGkgPCBwcGNfbnVt X2dwcnM7IGkrKykKICAgICBpZiAoUkVHX1ZBTElEID09IHJlZ2NhY2hlLT5nZXRfcmVnaXN0ZXJf c3RhdHVzICh0ZGVwLT5wcGNfZ3AwX3JlZ251bSArIGkpKQogICAgICAgewotCWlmIChhcmNoNjQp CisJaWYgKGRhdGEtPmFyY2g2NCkKIAkgIHsKIAkgICAgcmVnY2FjaGUtPnJhd19jb2xsZWN0ICh0 ZGVwLT5wcGNfZ3AwX3JlZ251bSArIGksICh2b2lkICopICZpbnQ2NCk7CiAJICAgIGN0eC5ncHJb aV0gPSBpbnQ2NDsKQEAgLTE1NDUsNyArMTYyOCw3IEBAIHN0b3JlX3JlZ3NfdXNlcl90aHJlYWQg KGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHB0aGRiX3B0aHJlYWRfdCBwZHRpZCkK ICAgICBmaWxsX2ZwcnMgKHJlZ2NhY2hlLCBjdHguZnByKTsKIAogICAvKiBTcGVjaWFsIHJlZ2lz dGVycyAoYWx3YXlzIGtlcHQgaW4gY3R4IGFzIDY0IGJpdHMpLiAgKi8KLSAgaWYgKGFyY2g2NCkK KyAgaWYgKGRhdGEtPmFyY2g2NCkKICAgICB7CiAgICAgICBmaWxsX3NwcnM2NCAocmVnY2FjaGUs ICZjdHguaWFyLCAmY3R4Lm1zciwgJmN0eC5jciwgJmN0eC5sciwgJmN0eC5jdHIsCiAJCQkgICAg ICZjdHgueGVyLCAmY3R4LmZwc2NyKTsKQEAgLTE1NzYsNyArMTY1OSw3IEBAIHN0b3JlX3JlZ3Nf dXNlcl90aHJlYWQgKGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHB0aGRiX3B0aHJl YWRfdCBwZHRpZCkKIAljdHguZnBzY3IgPSB0bXBfZnBzY3I7CiAgICAgfQogCi0gIHN0YXR1cyA9 IHB0aGRiX3B0aHJlYWRfc2V0Y29udGV4dCAocGRfc2Vzc2lvbiwgcGR0aWQsICZjdHgpOworICBz dGF0dXMgPSBwdGhkYl9wdGhyZWFkX3NldGNvbnRleHQgKGRhdGEtPnBkX3Nlc3Npb24sIHBkdGlk LCAmY3R4KTsKICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTKQogICAgIGVycm9yIChfKCJh aXgtdGhyZWFkOiBzdG9yZV9yZWdpc3RlcnM6ICIKIAkgICAgICJwdGhkYl9wdGhyZWFkX3NldGNv bnRleHQgcmV0dXJuZWQgJXMiKSwKQEAgLTE2MDIsNiArMTY4NSw5IEBAIHN0b3JlX3JlZ3Nfa2Vy bmVsX3RocmVhZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vLAog ICBkb3VibGUgZnByc1twcGNfbnVtX2ZwcnNdOwogICBzdHJ1Y3QgcHR4c3BycyBzcHJzNjQ7CiAg IHN0cnVjdCBwdHNwcnMgIHNwcnMzMjsKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpk YXRhOworICAKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKHJlZ2Nh Y2hlLT5wdGlkICgpKTsKIAogICBpZiAoZGVidWdfYWl4X3RocmVhZCkKICAgICBnZGJfcHJpbnRm IChnZGJfc3RkbG9nLCAKQEAgLTE2MTMsNyArMTY5OSw3IEBAIHN0b3JlX3JlZ3Nfa2VybmVsX3Ro cmVhZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vLAogICAgICAg fHwgKHRkZXAtPnBwY19ncDBfcmVnbnVtIDw9IHJlZ25vCiAJICAmJiByZWdubyA8IHRkZXAtPnBw Y19ncDBfcmVnbnVtICsgcHBjX251bV9mcHJzKSkKICAgICB7Ci0gICAgICBpZiAoYXJjaDY0KQor ICAgICAgaWYgKGRhdGEtPmFyY2g2NCkKIAl7CiAJICAvKiBQcmUtZmV0Y2g6IHNvbWUgcmVncyBt YXkgbm90IGJlIGluIHRoZSBjYWNoZS4gICovCiAJICBwdHJhY2U2NGFpeCAoUFRUX1JFQURfR1BS UywgdGlkLCAodW5zaWduZWQgbG9uZykgZ3ByczY0LCAwLCBOVUxMKTsKQEAgLTE2NDYsNyArMTcz Miw3IEBAIHN0b3JlX3JlZ3Nfa2VybmVsX3RocmVhZCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpy ZWdjYWNoZSwgaW50IHJlZ25vLAogCiAgIGlmIChyZWdubyA9PSAtMSB8fCBzcGVjaWFsX3JlZ2lz dGVyX3AgKGdkYmFyY2gsIHJlZ25vKSkKICAgICB7Ci0gICAgICBpZiAoYXJjaDY0KQorICAgICAg aWYgKGRhdGEtPmFyY2g2NCkKIAl7CiAJICAvKiBQcmUtZmV0Y2g6IHNvbWUgcmVnaXN0ZXJzIHdv bid0IGJlIGluIHRoZSBjYWNoZS4gICovCiAJICBwdHJhY2U2NGFpeCAoUFRUX1JFQURfU1BSUywg dGlkLCAKQEAgLTE3MDMsNyArMTc4OSw3IEBAIGFpeF90aHJlYWRfdGFyZ2V0OjpzdG9yZV9yZWdp c3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubykKICAgc3RydWN0IHRo cmVhZF9pbmZvICp0aHJlYWQ7CiAgIHB0aGRiX3RpZF90IHRpZDsKIAotICBpZiAoIVBEX1RJRCAo cmVnY2FjaGUtPnB0aWQgKCkpKQorICBpZiAocmVnY2FjaGUtPnB0aWQgKCkudGlkICgpID09IDAp CiAgICAgYmVuZWF0aCAoKS0+c3RvcmVfcmVnaXN0ZXJzIChyZWdjYWNoZSwgcmVnbm8pOwogICBl bHNlCiAgICAgewpAQCAtMTc0MSw3ICsxODI3LDcgQEAgYWl4X3RocmVhZF90YXJnZXQ6Om1vdXJu X2luZmVyaW9yICgpCiB7CiAgIHRhcmdldF9vcHMgKmJlbmVhdGggPSB0aGlzLT5iZW5lYXRoICgp OwogCi0gIHBkX2RlYWN0aXZhdGUgKCk7CisgIHBkX2Rpc2FibGUgKCk7CiAgIGJlbmVhdGgtPm1v dXJuX2luZmVyaW9yICgpOwogfQogCkBAIC0xNzUwLDcgKzE4MzYsNyBAQCBhaXhfdGhyZWFkX3Rh cmdldDo6bW91cm5faW5mZXJpb3IgKCkKIGJvb2wKIGFpeF90aHJlYWRfdGFyZ2V0Ojp0aHJlYWRf YWxpdmUgKHB0aWRfdCBwdGlkKQogewotICBpZiAoIVBEX1RJRCAocHRpZCkpCisgIGlmIChwdGlk LnRpZCAoKSA9PSAwKQogICAgIHJldHVybiBiZW5lYXRoICgpLT50aHJlYWRfYWxpdmUgKHB0aWQp OwogCiAgIC8qIFdlIHVwZGF0ZSB0aGUgdGhyZWFkIGxpc3QgZXZlcnkgdGltZSB0aGUgY2hpbGQg c3RvcHMsIHNvIGFsbApAQCAtMTc2Niw3ICsxODUyLDcgQEAgYWl4X3RocmVhZF90YXJnZXQ6OnRo cmVhZF9hbGl2ZSAocHRpZF90IHB0aWQpCiBzdGQ6OnN0cmluZwogYWl4X3RocmVhZF90YXJnZXQ6 OnBpZF90b19zdHIgKHB0aWRfdCBwdGlkKQogewotICBpZiAoIVBEX1RJRCAocHRpZCkpCisgIGlm IChwdGlkLnRpZCAoKSA9PSAwKQogICAgIHJldHVybiBiZW5lYXRoICgpLT5waWRfdG9fc3RyIChw dGlkKTsKIAogICByZXR1cm4gc3RyaW5nX3ByaW50ZiAoXygiVGhyZWFkICVzIiksIHB1bG9uZ2Vz dCAocHRpZC50aWQgKCkpKTsKQEAgLTE3ODYsOCArMTg3MiwxMSBAQCBhaXhfdGhyZWFkX3Rhcmdl dDo6ZXh0cmFfdGhyZWFkX2luZm8gKHN0cnVjdCB0aHJlYWRfaW5mbyAqdGhyZWFkKQogICBwdGhk Yl9kZXRhY2hzdGF0ZV90IGRldGFjaHN0YXRlOwogICBpbnQgY2FuY2VscGVuZDsKICAgc3RhdGlj IGNoYXIgKnJldCA9IE5VTEw7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsK KworICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcHRpZCAodGhyZWFkLT5wdGlk KTsKIAotICBpZiAoIVBEX1RJRCAodGhyZWFkLT5wdGlkKSkKKyAgaWYgKHRocmVhZC0+cHRpZC50 aWQgKCkgPT0gMCkKICAgICByZXR1cm4gTlVMTDsKIAogICBzdHJpbmdfZmlsZSBidWY7CkBAIC0x ODAwLDI0ICsxODg5LDI0IEBAIGFpeF90aHJlYWRfdGFyZ2V0OjpleHRyYV90aHJlYWRfaW5mbyAo c3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQpCiAgICAgLyogaTE4bjogTGlrZSAidGhyZWFkLWlk ZW50aWZpZXIgJWQsIFtzdGF0ZV0gcnVubmluZywgc3VzcGVuZGVkIiAqLwogICAgIGJ1Zi5wcmlu dGYgKF8oInRpZCAlZCIpLCAoaW50KXRpZCk7CiAKLSAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9z dGF0ZSAocGRfc2Vzc2lvbiwgcGR0aWQsICZzdGF0ZSk7CisgIHN0YXR1cyA9IHB0aGRiX3B0aHJl YWRfc3RhdGUgKGRhdGEtPnBkX3Nlc3Npb24sIHBkdGlkLCAmc3RhdGUpOwogICBpZiAoc3RhdHVz ICE9IFBUSERCX1NVQ0NFU1MpCiAgICAgc3RhdGUgPSBQU1RfTk9UU1VQOwogICBidWYucHJpbnRm ICgiLCAlcyIsIHN0YXRlMnN0ciAoc3RhdGUpKTsKIAotICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFk X3N1c3BlbmRzdGF0ZSAocGRfc2Vzc2lvbiwgcGR0aWQsIAorICBzdGF0dXMgPSBwdGhkYl9wdGhy ZWFkX3N1c3BlbmRzdGF0ZSAoZGF0YS0+cGRfc2Vzc2lvbiwgcGR0aWQsIAogCQkJCSAgICAgICAm c3VzcGVuZHN0YXRlKTsKICAgaWYgKHN0YXR1cyA9PSBQVEhEQl9TVUNDRVNTICYmIHN1c3BlbmRz dGF0ZSA9PSBQU1NfU1VTUEVOREVEKQogICAgIC8qIGkxOG46IExpa2UgIlRocmVhZC1JZCAlZCwg W3N0YXRlXSBydW5uaW5nLCBzdXNwZW5kZWQiICovCiAgICAgYnVmLnByaW50ZiAoXygiLCBzdXNw ZW5kZWQiKSk7CiAKLSAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9kZXRhY2hzdGF0ZSAocGRfc2Vz c2lvbiwgcGR0aWQsIAorICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX2RldGFjaHN0YXRlIChkYXRh LT5wZF9zZXNzaW9uLCBwZHRpZCwgCiAJCQkJICAgICAgJmRldGFjaHN0YXRlKTsKICAgaWYgKHN0 YXR1cyA9PSBQVEhEQl9TVUNDRVNTICYmIGRldGFjaHN0YXRlID09IFBEU19ERVRBQ0hFRCkKICAg ICAvKiBpMThuOiBMaWtlICJUaHJlYWQtSWQgJWQsIFtzdGF0ZV0gcnVubmluZywgZGV0YWNoZWQi ICovCiAgICAgYnVmLnByaW50ZiAoXygiLCBkZXRhY2hlZCIpKTsKIAotICBwdGhkYl9wdGhyZWFk X2NhbmNlbHBlbmQgKHBkX3Nlc3Npb24sIHBkdGlkLCAmY2FuY2VscGVuZCk7CisgIHB0aGRiX3B0 aHJlYWRfY2FuY2VscGVuZCAoZGF0YS0+cGRfc2Vzc2lvbiwgcGR0aWQsICZjYW5jZWxwZW5kKTsK ICAgaWYgKHN0YXR1cyA9PSBQVEhEQl9TVUNDRVNTICYmIGNhbmNlbHBlbmQpCiAgICAgLyogaTE4 bjogTGlrZSAiVGhyZWFkLUlkICVkLCBbc3RhdGVdIHJ1bm5pbmcsIGNhbmNlbCBwZW5kaW5nIiAq LwogICAgIGJ1Zi5wcmludGYgKF8oIiwgY2FuY2VsIHBlbmRpbmciKSk7CmRpZmYgLS1naXQgYS9n ZGIvc29saWItYWl4LmMgYi9nZGIvc29saWItYWl4LmMKaW5kZXggZjQ4M2Y1NGRlMTMuLjZiZTgx MDY0ZWJkIDEwMDY0NAotLS0gYS9nZGIvc29saWItYWl4LmMKKysrIGIvZ2RiL3NvbGliLWFpeC5j CkBAIC02MTgsNiArNjE4LDIwIEBAIHNvbGliX2FpeF9iZmRfb3BlbiAoY29uc3QgY2hhciAqcGF0 aG5hbWUpCiAgICAgICBpZiAobWVtYmVyX25hbWUgPT0gYmZkX2dldF9maWxlbmFtZSAob2JqZWN0 X2JmZC5nZXQgKCkpKQogCWJyZWFrOwogCisgICAgICBzdGQ6OnN0cmluZyBzID0gYmZkX2dldF9m aWxlbmFtZSAob2JqZWN0X2JmZC5nZXQgKCkpOworCisgICAgICAvKiBGb3IgZXZlcnkgaW5mZXJp b3IgYWZ0ZXIgZmlyc3QgaW50IGJmZCBzeXN0ZW0gd2UgCisJIHdpbGwgaGF2ZSB0aGUgcGF0aG5h bWUgaW5zdGVhZCBvZiB0aGUgbWVtYmVyIG5hbWUKKwkgcmVnaXN0ZXJlZC4gSGVuY2UgdGhlIGJl bG93IGNvbmRpdGlvbiBleGlzdHMuICAqLworCisgICAgICBpZiAocy5maW5kICgnKCcpICE9IHN0 ZDo6c3RyaW5nOjpucG9zKQorCXsKKwkgIGludCBwb3MgPSBzLmZpbmQgKCcoJyk7CisJICBpbnQg bGVuID0gcy5maW5kICgnKScpIC0gcy5maW5kICgnKCcpOworCSAgaWYgKHMuc3Vic3RyIChwb3Mr MSwgbGVuLTEpID09IG1lbWJlcl9uYW1lKSAKKwkgICAgcmV0dXJuIG9iamVjdF9iZmQ7CisJfQor CiAgICAgICBvYmplY3RfYmZkID0gZ2RiX2JmZF9vcGVucl9uZXh0X2FyY2hpdmVkX2ZpbGUgKGFy Y2hpdmVfYmZkLmdldCAoKSwKIAkJCQkJCSAgICAgb2JqZWN0X2JmZC5nZXQgKCkpOwogICAgIH0K LS0gCjIuMzEuMQoK --_004_CH2PR15MB3544B015A880690CA1F6284AD6A19CH2PR15MB3544namp_--