From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id DA887F4BB99 for ; Tue, 24 Feb 2026 22:40:49 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2F9BB10E62F; Tue, 24 Feb 2026 22:40:49 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.b="DJzyKRdP"; dkim-atps=neutral Received: from BYAPR05CU005.outbound.protection.outlook.com (mail-westusazon11010065.outbound.protection.outlook.com [52.101.85.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0468810E340; Tue, 24 Feb 2026 22:40:47 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=flJL0raWhkcUEV6gHghxvsyFAMEo8xJNDIMVUQvbt3n1/MSuyLtBDLtkcowfb2HuLEbHuTtLE028owoK9RTmywgrzGNR8J9uTHrTMwST+eDaXqvw27huIY0afwWPUjzTsJ2agvRnbgZqtTwHaoXQihnU5W8y9maVdswu22UNc1dpYJv6h9cgYXN+MfVqmSE2tDsVvezN8Cs+GlQzYvj3BF8W4xYE+e8Cgfk1P1i+hXIYlrPhQsEqrTXxzZzJwGeA3iG/BWz9k4NGC2XIGgEYeQPcC7KFTMmj2U97HfKTRF+Ok+OhOIbuq+qBSbikCdDYPp42bCEkkjsMGJ+P8BbVBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=On68GUi7IYDricIQ9WRvB5IuoNnm6w4u9DMdbJReF1E=; b=qrs42z08HP3mrBBFMxLAogNqB7LC2zs3IeXvtutnXAopNngva3tDlO/Y/O/B2LPRn/9EoYLdn5+2BOIfTOb/FmOgrCz+U49QBGPhcvAbGBXY39kgkVJ4ijiUQbmU+TqIrUVR3nsnfqvEmUIBTzq4GwySvJI/ioz0gRDdcpIszQbt2PYCCDUDRGbVQx1xiwQNW1YkhRNGGBACOgVX8+BoNhFBpTrGnPeEfIG2MbQikjdjTRBPaX4nNGEaXpYrUrJOtSLKrIye3I2/pSfOWYKh6aifbOmuoD9AK+luXjxTk8Hv24LdVLEGkhbA9vVvsw5+k2f5avWbJXcfljHXIChpdw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=On68GUi7IYDricIQ9WRvB5IuoNnm6w4u9DMdbJReF1E=; b=DJzyKRdPnzh0KWsr18Gv83A3SwtNmU+BQqJt6IQRMqUt94f2Q0CcIuZiPrF7DXs4hEmP+8D6qL5gizOH5zCxSI2KJMLTKHqmpI9RuwJPzvEXhO1w6F9bwOCFXvIWQsa4n51IJTI/slUCjunZ38GXNfsfU3tpxI73T9y3MPNYOUV1H3zZxmKXL+oI5R2vdjHoTHs2JnhQsiFaE9oH1UHnqQKhrRIlessmT+yLzVjkYQwFcjW/ZbCqPnoLZmRkSAwY9VVZVDVFzVksAYXUKzOm1ZKuBOqv4FWvlxmCTGteL+gtZOozRj/pRxt6UHeNlYUNiTpxfRptpAZDLg3gvsMgYQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS0PR12MB6486.namprd12.prod.outlook.com (2603:10b6:8:c5::21) by PH0PR12MB7816.namprd12.prod.outlook.com (2603:10b6:510:28c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Tue, 24 Feb 2026 22:40:15 +0000 Received: from DS0PR12MB6486.namprd12.prod.outlook.com ([fe80::88a9:f314:c95f:8b33]) by DS0PR12MB6486.namprd12.prod.outlook.com ([fe80::88a9:f314:c95f:8b33%4]) with mapi id 15.20.9632.017; Tue, 24 Feb 2026 22:40:15 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org Cc: Miguel Ojeda , Boqun Feng , Gary Guo , =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Dave Airlie , Daniel Almeida , Koen Koning , dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org, rust-for-linux@vger.kernel.org, Nikola Djukic , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jonathan Corbet , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , Huang Rui , Matthew Auld , Matthew Brost , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Helge Deller , Alex Gaynor , Boqun Feng , John Hubbard , Alistair Popple , Timur Tabi , Edwin Peer , Alexandre Courbot , Andrea Righi , Andy Ritger , Zhi Wang , Balbir Singh , Philipp Stanner , Elle Rhumsaa , alexeyi@nvidia.com, Eliot Courtney , joel@joelfernandes.org, linux-doc@vger.kernel.org, amd-gfx@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, linux-fbdev@vger.kernel.org, Joel Fernandes Subject: [reference PATCH v11 2/4] gpu: Move DRM buddy allocator one level up (part two) Date: Tue, 24 Feb 2026 17:40:03 -0500 Message-Id: <20260224224005.3232841-3-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260224224005.3232841-1-joelagnelf@nvidia.com> References: <20260224224005.3232841-1-joelagnelf@nvidia.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-ClientProxiedBy: MN0PR05CA0025.namprd05.prod.outlook.com (2603:10b6:208:52c::13) To DS0PR12MB6486.namprd12.prod.outlook.com (2603:10b6:8:c5::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR12MB6486:EE_|PH0PR12MB7816:EE_ X-MS-Office365-Filtering-Correlation-Id: 8943b040-dd16-4249-b50f-08de73f5ada2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|7416014|376014|366016|13003099007; X-Microsoft-Antispam-Message-Info: =?utf-8?B?NVo0SUJVVkpiSFBSTDhWSWM5dTZNMlcyQWk5SS9UdWJOb0ZCTHA0djNnMzI2?= =?utf-8?B?WlQrSGRSVGJ2Z1R2T01mN0JKemhKeDJ6MWpMdGVGSWFvMWxXc2lpSThPMEVt?= =?utf-8?B?M2MyRDZhcTlyMnFnNCs5ZFVjZG9la0NYbUJ4eGFaZ3pLeVJBTzZ5MkxobDF6?= =?utf-8?B?VkxFbzZZTDMwcEUzM040Y1BhRXppUFdQSzJ6RUpjeHdwakt0alJlRTFWWUVV?= =?utf-8?B?RU1RNmFaNHdhcUVqTWNNZ1VQNmVsejBRcTZsdHc3U0d1d2E4bXhZRitLdkph?= =?utf-8?B?c1A5VDNqRHpTdTJaS3VSb2xUNEQvTzFhT2VxR29NeHJaQVFkcm1veUF0Q0k3?= =?utf-8?B?QkxybjFxYm9HTWdnTDNZczA1MHRkdFRna3M3L1ZET25VRnFvSHJkbEhtSWs3?= =?utf-8?B?bVJhQ1RBYU1rNXhVUGkwdTFKVGpDUlRLcEduV080dUVUcHh1VEsyNFlBQnc2?= =?utf-8?B?VmllQnVsQ1NQdXd2SDlEOE5Gd2NvdFNCbGRFdGVvWTY1OUpxNWVHM09rQmk2?= =?utf-8?B?cGxxS05mWStZVWNFTVcyUG9JNXJsSXcwRkhGenIwTnBhd3pjS2VkUW44VFU4?= =?utf-8?B?MXVVS2N4TjRsS1RsT2pqVDdUbElPcWZ2T0FGaHEyazE4dVBIUjNyNHl3UUFV?= =?utf-8?B?aVlBZEcvS1Q2OU5Qb1NFbFRjei8xVGM4c0N0eDVPNm01S29LZWF4UFNVRkhi?= =?utf-8?B?QTlhSURFOXp2OFlYdzd2cVNCSjVwdTltWUJGK0cxcFExVVQ1ZGIvWmtxVlpx?= =?utf-8?B?WWRwWDNkbm85YlQ5UEIyeWhmZWFVUmwxeVpycm15SnNQQUdtN2dpS3lvSHFD?= =?utf-8?B?c2I0ZUR6L203M2poTHlvaFZURzMvUGU4TWtsNzhsbUk5UHpicFVzd21ZUnZX?= =?utf-8?B?TFRpaHZtY2xGbzJxVVptN1lPcUhGSjlocFk2Y3BHZUlobG15M2F1ekkrT08v?= =?utf-8?B?VU9tMGlSUTZZV2RCdWdMUGNRTXdxMm01WnNUNytGRkdFQnJLZlFHbUZRMHdO?= =?utf-8?B?NGplM0Fyd0lFRGQ0Y0dGU3ZNRGUxNitIeWhDWW9UT0F6THhMYWY2RlI0Zzc2?= =?utf-8?B?czA4S2xFdmtRNS9YOFE0RTE2MmJYdjlSMUhMdGF6bWNDRGtUSFpMT1Y5Nzdw?= =?utf-8?B?OVg5bTVGS2xUTjlmaGxIUE5ZbXd4NWxqRW1NbTRJeFhjb0NNMzJXS1luZzJ2?= =?utf-8?B?M1JCL2wyQjBqS1ErRkxRQzhNME1kUEJGRnlLR3V3WVFnKzZ6ZitsZmxIelI0?= =?utf-8?B?V1g1WUFYYlhEckRZdzNkR2VSRXcvM1BUU2hab2xNMVM1WFhKc0hxVGt4NE41?= =?utf-8?B?MmxRcXN6YmVxWXdGVzE4bkFZS2hOTmZjc2lIcktwMGkvdTAyb3l5UDZoQ2Rh?= =?utf-8?B?aHo2bHBySTFkSzRKMzVRR2VwVTd6S1Iyc0VzZStZejk4cUx2Vk5ncUxSM3Ar?= =?utf-8?B?Ui9GdmxoRFdQZnFzSmRnQTNnRjNVbDM1Zmp3WVR5SWdFSCthNEw4aXpHTUJV?= =?utf-8?B?OEFIcmkrckgxMU1oeTliK2Fxd1B0Kzk5Y3VaRVBka0tBVjBHbkJkR2dvT2ZP?= =?utf-8?B?NHZONThYSDF3Mk5GTVdHa2JYU1NzQ0pFMXdjQUh6MjJ1NTM2SXQxaDl3bFE2?= =?utf-8?B?bjJPU2F6T0hGcVZ0WUFJOFovRm93ZkdvNi9ZMzZvNVlCYTZPcDFjV2RpTllI?= =?utf-8?B?ZTJZVVlwNTRzTUg0TkVnOFg3dG8veWZRY2piSTEvampST1o3RU9ETHl6ODdr?= =?utf-8?B?cGZpcUhoQ0ptRmp3OWVvdWRYc2FzdGg3bU9rbFMvNUFMZGRqK3Y3ZU5nVm1q?= =?utf-8?B?QWlsWlJGa0g4UGo4QkdrYldzSVdob0J4WUp5L1lUY08xZ1U1NGQ0UGRpWDBl?= =?utf-8?B?dTZXbFlWT3FmUXBqdUVrNzNZNEZWd2JmY3RPemtnNERyN1IzWjhSSlkxMnRa?= =?utf-8?B?K2RXQjhyM0lzc25hWlJSdGRCODgzTU5xcm5GOWpLaXhmei9xd3pWQWRJUUVK?= =?utf-8?B?L25DNitrLzFXTU9ib05hci9EMzI1MStKd0RPK0xvYWIrVzJadWdTRUQ0d2JR?= =?utf-8?B?MzJITlJSbmtheUJ5K2ZPOUNvQ2NHNDIvU2xzVTJMcXFxSXluSmZuY1pLa0lt?= =?utf-8?Q?82Gg=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS0PR12MB6486.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(7416014)(376014)(366016)(13003099007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZFJFbTlmL0hGYkNLV3dRUGhHUVVjclZubWRwck9LMUUwSmRVanhSYUdDLzV1?= =?utf-8?B?L0VtVHVqMytQV201Zll4WWpiRzFzN1hqS1NXVWJsOUUraXhIZ3k1S0NaQ0Fs?= =?utf-8?B?VXlnQ2g2QVovVUJ5Z3U3Q3pWODMzRUxJVXdvcWZOZzJsV0ZUMzE5ejdOSFFK?= =?utf-8?B?S1QvTXF5US9PRFowbnpZVlhyNGtzRW9aWHBDdzkxdzVPQnExanBxTXc3T0Qw?= =?utf-8?B?bThqQlhLRHIwN2gvQzhVeGFYSzhaOE0wZW53Zld6NHlUb3lQTkd3clRqOU1r?= =?utf-8?B?VGkxdGkyQnVtNDZIU21UclNZZjdNM2QzbVl5N0NERVB6VHNiUVVMZHZzM2wr?= =?utf-8?B?b3hDMEF1VDRFQjhLZGdzd2thcEdPaHB4d1UwMWpOd2QrUDJTOGxHSTVreG1q?= =?utf-8?B?QWp6ODFNVWdyYlZLejkreFhkVDBwcTZzWVdGVmo0Y0ZURzcreFE2MFhEVzJB?= =?utf-8?B?YVFyNmx4M1hmbUJEQkpsS0JnU1Q3dVI1Y3ZnRUpTMXgwZGtqM255dG9ZRkZn?= =?utf-8?B?bkJxdlRqM05sVStwYmlOMFlNNmJibTZXdTBCanhGYWEzaktEc2d5R2RudUhs?= =?utf-8?B?RWExZ3VaV1RSQ1piZGF2M3UzQWc2KzFXT2NBOHB6VGxyZFRsOHpvUDRlSUd0?= =?utf-8?B?dm1Db3JlSjVlYWtLZ1ovK0lBa0xMdUxIZjBjYkprK2xsUEwyaVpnRlhQV2Zq?= =?utf-8?B?Y1ZOT0hpM0dDd2lQcG0xbGUyTE9HeWgzZVJnd3hCMS9OTkpOVUpwNzJPTkhT?= =?utf-8?B?cmVIVUkzOCt6UnhHeVhRZHBOcHNvR2VxTmhiUkV4clNrdWhtNTVnN05YUW5o?= =?utf-8?B?RHNhMkNMZENIcXV2VFJrLzdOOThRbm9LdFBMcVZSZ21oekltdmVKbFQrNVZ2?= =?utf-8?B?a2RyNjdvanNhTnNaWXRnSXRDVitoVXRhTkc1cmRvTmQzSUZYbkJJdGxGQi94?= =?utf-8?B?V0lJZmNVOWNqUVdmK3JTaVBxcHBTakJRalcvZnJqY1dHcWR1NlA3c2VqeFl4?= =?utf-8?B?T2tYaWtWTXQrZEJCUjFHUS8zMHpFWkdOVUlqM1JwL1FEUnVaUlI2VTdQVVND?= =?utf-8?B?Y3pIWHYrOXBySmU3UFMwZ3U0L053TVZYK296L014SEVxbHdvNXVrMEhyd0pH?= =?utf-8?B?c1RMalBhbDRMcXg3ZDZQWVNieHgzckZGTC8vUkM4cytDUklSaW9CeVh4OW0w?= =?utf-8?B?RnprUW5zcTUzb29HTS9kRzRVcWRGK2I5eDZOS1BrWGZmTzBWODNoNGJTTmdD?= =?utf-8?B?V0YvbFhFNmR4QU84VithejUva1NJL2EwZTBwOGxoMGJQYjhPN0lRZGlidlNv?= =?utf-8?B?cEdHeDA1R20yNFV3RFR3enhXb0Zxcy9jVXRFdFQxNWM2c3EyL2lVenV2VkpO?= =?utf-8?B?WmsxQllOYjhWeWVJY21xa3dPZkRaalNXdjBLWUdlRW1WT1JUWTFLclNIVkh2?= =?utf-8?B?THR4MEprd1FkZmFCZlFSeWI2MVhCdzRlc2JLYy9jMzFUbDFQOFp1TEJkZDdI?= =?utf-8?B?TW9VQ2RTM0kvczB5UjhaMzBoZmc4U0JPNmJJVDJDeFY5MXBFZTVuTENSUFcv?= =?utf-8?B?dmo2SU1GOHg3bVVHS3JUVVZxNEJ5bDVBaWhYS2JFck9MQ0ExQWNtbExQNENS?= =?utf-8?B?dklpU01nc28vT0FEMmlmNGkyNTIvY3lIdURLZ24rKzAwejEzZjBlcEJRNVkz?= =?utf-8?B?RFRKU3BrRjZxTCtIdSthS0VwWWs0WjJ2aHFaU2pBZDhxMzJTREF5bGlabnZF?= =?utf-8?B?bVR1RFZxZ09VOU83em56SEdVa2dyUXMxLytVVGJUbmYxS0pVMFNaQVdPSVdm?= =?utf-8?B?SGxKTXdHb0REblRKeE1Lb3lidUJ0RHdhUW0zZWliQVdEYUp3eGtDNE1PTWJC?= =?utf-8?B?SndOY0xhMkRYLzRXNWsxbzdUZ1o0cStYbjZ6ZW9UWmp5RFdqVU1BOGIrQVQ5?= =?utf-8?B?cWt0cFBNNG9STGhZSXpMV0V3OVhtd0dIQnNWNFpBajg5OVl1cHRxUEpHTHRK?= =?utf-8?B?Q3JSdFRwdmdkTFZNTmhEZDg4Yk51STU3QUJSODQvS1dDY29aL3lIcDlwWGFV?= =?utf-8?B?ZmJhSGJOd2RCa1FtVDVON0NrZExBWXF1cXhPZTZxVDc2eUVmeGF0cy8yOHlZ?= =?utf-8?B?QUNOT2FuQnYyV21SWHYvR0JyeFdFUUkvaEh3aW1SNFNGenhVV1UzS2lYWjh5?= =?utf-8?B?VHZpaVgzeTh6Ky9LMkZEZjhUOElyblk2UldnQ01MOUFEYytBc3FQaXNKNnpS?= =?utf-8?B?N3VRUEJheC96aWFVZmpUcmJrRURHNUswZ1lWSW1HTzJrZWYxZnI4ZU02ODdS?= =?utf-8?B?N3JnNko5N2Z1YXdXbE1PY2l0NHVLbjMwSlB1ZWxMMklrT0tycWMyUT09?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8943b040-dd16-4249-b50f-08de73f5ada2 X-MS-Exchange-CrossTenant-AuthSource: DS0PR12MB6486.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Feb 2026 22:40:15.3292 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: A9Gj8ZgvCZ6E8HgFuB3Quf/p6n/NolSzsfHut/yozx6Bj5/dTLUZI/dmAfyUoC2KEn/NhsC7HYbeQ3OhK5EmPQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB7816 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" TW92ZSB0aGUgRFJNIGJ1ZGR5IGFsbG9jYXRvciBvbmUgbGV2ZWwgdXAgc28gdGhhdCBpdCBjYW4g YmUgdXNlZCBieSBHUFUKZHJpdmVycyAoZXhhbXBsZSwgbm92YS1jb3JlKSB0aGF0IGhhdmUgdXNl Y2FzZXMgb3RoZXIgdGhhbiBEUk0gKHN1Y2ggYXMKVkZJTyB2R1BVIHN1cHBvcnQpLiBNb2RpZnkg dGhlIEFQSSwgc3RydWN0dXJlcyBhbmQgS2NvbmZpZ3MgdG8gdXNlCiJncHVfYnVkZHkiIHRlcm1p bm9sb2d5LiBBZGFwdCB0aGUgZHJpdmVycyBhbmQgdGVzdHMgdG8gdXNlIHRoZSBuZXcgQVBJLgoK VGhlIGNvbW1pdCBjYW5ub3QgYmUgc3BsaXQgZHVlIHRvIGJpc2VjdGFiaWxpdHksIGhvd2V2ZXIg bm8gZnVuY3Rpb25hbApjaGFuZ2UgaXMgaW50ZW5kZWQuIFZlcmlmaWVkIGJ5IHJ1bm5pbmcgSy1V TklUIHRlc3RzIGFuZCBidWlsZCB0ZXN0ZWQKdmFyaW91cyBjb25maWd1cmF0aW9ucy4KClNpZ25l ZC1vZmYtYnk6IEpvZWwgRmVybmFuZGVzIDxqb2VsYWduZWxmQG52aWRpYS5jb20+ClJldmlld2Vk LWJ5OiBEYXZlIEFpcmxpZSA8YWlybGllZEByZWRoYXQuY29tPgpbYWlybGllZDogSSd2ZSBzcGxp dCB0aGlzIGludG8gdHdvIHNvIGdpdCBjYW4gZmluZCBjb3BpZXMgZWFzaWVyLgpJJ3ZlIGFsc28g anVzdCBudWtlZCBkcm1fcmFuZG9tIGxpYnJhcnksIHRoYXQgc3R1ZmYgbmVlZHMgdG8gYmUgZG9u ZQplbHNld2hlcmUgYW5kIG9ubHkgdGhlIGJ1ZGR5IHRlc3RzIHNlZW0gdG8gYmUgdXNpbmcgaXRd LgpTaWduZWQtb2ZmLWJ5OiBEYXZlIEFpcmxpZSA8YWlybGllZEByZWRoYXQuY29tPgotLS0KIERv Y3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QgICAgICAgICAgICAgICAgICB8ICAgNiArCiBNQUlO VEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIGRyaXZl cnMvZ3B1L0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMyArCiBkcml2ZXJz L2dwdS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9n cHUvYnVkZHkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNTU2ICsrKysrKysrKy0tLS0t LS0tLQogZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICB8ICAgMiAr LQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jICAgICAgIHwgICAyICst CiAuLi4vZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNfY3Vyc29yLmggICAgfCAgMTIgKy0K IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFtX21nci5jICB8ICA3OSArLS0K IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFtX21nci5oICB8ICAxOCArLQog ZHJpdmVycy9ncHUvZHJtL2RybV9idWRkeS5jICAgICAgICAgICAgICAgICAgIHwgIDc3ICsrKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2F0dGVybGlzdC5jICAgICAgIHwgICA4ICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3R0bV9idWRkeV9tYW5hZ2VyLmMgfCAgNTUgKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHRtX2J1ZGR5X21hbmFnZXIuaCB8ICAgNCArLQogLi4u L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgIHwgIDIwICstCiAuLi4v Z3B1L2RybS90dG0vdGVzdHMvdHRtX2JvX3ZhbGlkYXRlX3Rlc3QuYyAgfCAgIDQgKy0KIGRyaXZl cnMvZ3B1L2RybS90dG0vdGVzdHMvdHRtX21vY2tfbWFuYWdlci5jICB8ICAxOCArLQogZHJpdmVy cy9ncHUvZHJtL3R0bS90ZXN0cy90dG1fbW9ja19tYW5hZ2VyLmggIHwgICAyICstCiBkcml2ZXJz L2dwdS9kcm0veGUveGVfcmVzX2N1cnNvci5oICAgICAgICAgICAgfCAgMzQgKy0KIGRyaXZlcnMv Z3B1L2RybS94ZS94ZV9zdm0uYyAgICAgICAgICAgICAgICAgICB8ICAxMiArLQogZHJpdmVycy9n cHUvZHJtL3hlL3hlX3R0bV92cmFtX21nci5jICAgICAgICAgIHwgIDcxICstLQogZHJpdmVycy9n cHUvZHJtL3hlL3hlX3R0bV92cmFtX21ncl90eXBlcy5oICAgIHwgICAyICstCiBkcml2ZXJzL2dw dS90ZXN0cy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1 L3Rlc3RzL2dwdV9idWRkeV90ZXN0LmMgICAgICAgICAgICB8IDQxMiArKysrKystLS0tLS0tCiBk cml2ZXJzL2dwdS90ZXN0cy9ncHVfcmFuZG9tLmMgICAgICAgICAgICAgICAgfCAgMTYgKy0KIGRy aXZlcnMvZ3B1L3Rlc3RzL2dwdV9yYW5kb20uaCAgICAgICAgICAgICAgICB8ICAxOCArLQogZHJp dmVycy92aWRlby9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGluY2x1 ZGUvZHJtL2RybV9idWRkeS5oICAgICAgICAgICAgICAgICAgICAgICB8ICAxOCArCiBpbmNsdWRl L2xpbnV4L2dwdV9idWRkeS5oICAgICAgICAgICAgICAgICAgICAgfCAxMjAgKystLQogMzAgZmls ZXMgY2hhbmdlZCwgODUzIGluc2VydGlvbnMoKyksIDczOSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2RybV9idWRkeS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vZHJt X2J1ZGR5LmgKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tbW0ucnN0IGIvRG9j dW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdAppbmRleCBjZWVlMGU2NjMyMzcuLjMyZmI1MDZkYjA1 YiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdAorKysgYi9Eb2N1bWVu dGF0aW9uL2dwdS9kcm0tbW0ucnN0CkBAIC01MzIsNiArNTMyLDEyIEBAIEJ1ZGR5IEFsbG9jYXRv ciBGdW5jdGlvbiBSZWZlcmVuY2VzIChHUFUgYnVkZHkpCiAuLiBrZXJuZWwtZG9jOjogZHJpdmVy cy9ncHUvYnVkZHkuYwogICAgOmV4cG9ydDoKIAorRFJNIEJ1ZGR5IFNwZWNpZmljIExvZ2dpbmcg RnVuY3Rpb24gUmVmZXJlbmNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorCisuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9idWRkeS5j CisgICA6ZXhwb3J0OgorCiBEUk0gQ2FjaGUgSGFuZGxpbmcgYW5kIEZhc3QgV0MgbWVtY3B5KCkK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCmRpZmYgLS1naXQgYS9N QUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IDBkYzMxOGM5NGM5OS4uZjFlNWE4MDExZDJm IDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtODkwNSwxNSAr ODkwNSwxNyBAQCBUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNj L2tlcm5lbC5naXQKIEY6CWRyaXZlcnMvZ3B1L2RybS90dG0vCiBGOglpbmNsdWRlL2RybS90dG0v CiAKLURSTSBCVUREWSBBTExPQ0FUT1IKK0dQVSBCVUREWSBBTExPQ0FUT1IKIE06CU1hdHRoZXcg QXVsZCA8bWF0dGhldy5hdWxkQGludGVsLmNvbT4KIE06CUFydW4gUHJhdmluIDxhcnVucHJhdmlu LnBhbmVlcnNlbHZhbUBhbWQuY29tPgogUjoJQ2hyaXN0aWFuIEtvZW5pZyA8Y2hyaXN0aWFuLmtv ZW5pZ0BhbWQuY29tPgogTDoJZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwogUzoJTWFp bnRhaW5lZAogVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9r ZXJuZWwuZ2l0Ci1GOglkcml2ZXJzL2dwdS9kcm0vZHJtX2J1ZGR5LmMKLUY6CWRyaXZlcnMvZ3B1 L2RybS90ZXN0cy9kcm1fYnVkZHlfdGVzdC5jCitGOglkcml2ZXJzL2dwdS9kcm1fYnVkZHkuYwor RjoJZHJpdmVycy9ncHUvYnVkZHkuYworRjoJZHJpdmVycy9ncHUvdGVzdHMvZ3B1X2J1ZGR5X3Rl c3QuYworRjoJaW5jbHVkZS9saW51eC9ncHVfYnVkZHkuaAogRjoJaW5jbHVkZS9kcm0vZHJtX2J1 ZGR5LmgKIAogRFJNIEFVVE9NQVRFRCBURVNUSU5HCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9L Y29uZmlnIGIvZHJpdmVycy9ncHUvS2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLmViYjJhZDRiN2VhMAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1 L0tjb25maWcKQEAgLTAsMCArMSwxMyBAQAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMAorCitjb25maWcgR1BVX0JVRERZCisgICAgICAgYm9vbAorICAgICAgIGhlbHAKKyAgICAg ICAgIEEgcGFnZSBiYXNlZCBidWRkeSBhbGxvY2F0b3IgZm9yIEdQVSBtZW1vcnkuCisKK2NvbmZp ZyBHUFVfQlVERFlfS1VOSVRfVEVTVAorICAgICAgIHRyaXN0YXRlICJLVW5pdCB0ZXN0cyBmb3Ig R1BVIGJ1ZGR5IGFsbG9jYXRvciIgaWYgIUtVTklUX0FMTF9URVNUUworICAgICAgIGRlcGVuZHMg b24gR1BVX0JVRERZICYmIEtVTklUCisgICAgICAgZGVmYXVsdCBLVU5JVF9BTExfVEVTVFMKKyAg ICAgICBoZWxwCisgICAgICAgICBLVW5pdCB0ZXN0cyBmb3IgdGhlIEdQVSBidWRkeSBhbGxvY2F0 b3IuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L01ha2Vm aWxlCmluZGV4IGM1MjkyZWUyYzg1Mi4uNWNkNTRkMDZlMjYyIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9NYWtlZmlsZQpAQCAtNiwzICs2LDQgQEAg b2JqLXkJCQkrPSBob3N0MXgvIGRybS8gdmdhLyB0ZXN0cy8KIG9iai0kKENPTkZJR19JTVhfSVBV VjNfQ09SRSkJKz0gaXB1LXYzLwogb2JqLSQoQ09ORklHX1RSQUNFX0dQVV9NRU0pCQkrPSB0cmFj ZS8KIG9iai0kKENPTkZJR19OT1ZBX0NPUkUpCQkrPSBub3ZhLWNvcmUvCitvYmotJChDT05GSUdf R1BVX0JVRERZKQkJKz0gYnVkZHkubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvYnVkZHkuYyBi L2RyaXZlcnMvZ3B1L2J1ZGR5LmMKaW5kZXggNGNjNjNkOTYxZDI2Li42MDNjNTlhMjAxM2EgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2J1ZGR5LmMKKysrIGIvZHJpdmVycy9ncHUvYnVkZHkuYwpA QCAtMTEsMjcgKzExLDE3IEBACiAjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4KIAogI2luY2x1ZGUg PGxpbnV4L2dwdV9idWRkeS5oPgotI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KLQotZW51bSBk cm1fYnVkZHlfZnJlZV90cmVlIHsKLQlEUk1fQlVERFlfQ0xFQVJfVFJFRSA9IDAsCi0JRFJNX0JV RERZX0RJUlRZX1RSRUUsCi0JRFJNX0JVRERZX01BWF9GUkVFX1RSRUVTLAotfTsKIAogc3RhdGlj IHN0cnVjdCBrbWVtX2NhY2hlICpzbGFiX2Jsb2NrczsKIAotI2RlZmluZSBmb3JfZWFjaF9mcmVl X3RyZWUodHJlZSkgXAotCWZvciAoKHRyZWUpID0gMDsgKHRyZWUpIDwgRFJNX0JVRERZX01BWF9G UkVFX1RSRUVTOyAodHJlZSkrKykKLQotc3RhdGljIHN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmRy bV9ibG9ja19hbGxvYyhzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwKLQkJCQkJICAgICAgIHN0cnVjdCBk cm1fYnVkZHlfYmxvY2sgKnBhcmVudCwKK3N0YXRpYyBzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpn cHVfYmxvY2tfYWxsb2Moc3RydWN0IGdwdV9idWRkeSAqbW0sCisJCQkJCSAgICAgICBzdHJ1Y3Qg Z3B1X2J1ZGR5X2Jsb2NrICpwYXJlbnQsCiAJCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgb3JkZXIs CiAJCQkJCSAgICAgICB1NjQgb2Zmc2V0KQogewotCXN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJs b2NrOworCXN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJsb2NrOwogCi0JQlVHX09OKG9yZGVyID4g RFJNX0JVRERZX01BWF9PUkRFUik7CisJQlVHX09OKG9yZGVyID4gR1BVX0JVRERZX01BWF9PUkRF Uik7CiAKIAlibG9jayA9IGttZW1fY2FjaGVfemFsbG9jKHNsYWJfYmxvY2tzLCBHRlBfS0VSTkVM KTsKIAlpZiAoIWJsb2NrKQpAQCAtNDMsMzAgKzMzLDMwIEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2J1 ZGR5X2Jsb2NrICpkcm1fYmxvY2tfYWxsb2Moc3RydWN0IGRybV9idWRkeSAqbW0sCiAKIAlSQl9D TEVBUl9OT0RFKCZibG9jay0+cmIpOwogCi0JQlVHX09OKGJsb2NrLT5oZWFkZXIgJiBEUk1fQlVE RFlfSEVBREVSX1VOVVNFRCk7CisJQlVHX09OKGJsb2NrLT5oZWFkZXIgJiBHUFVfQlVERFlfSEVB REVSX1VOVVNFRCk7CiAJcmV0dXJuIGJsb2NrOwogfQogCi1zdGF0aWMgdm9pZCBkcm1fYmxvY2tf ZnJlZShzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwKLQkJCSAgIHN0cnVjdCBkcm1fYnVkZHlfYmxvY2sg KmJsb2NrKQorc3RhdGljIHZvaWQgZ3B1X2Jsb2NrX2ZyZWUoc3RydWN0IGdwdV9idWRkeSAqbW0s CisJCQkgICBzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jaykKIHsKIAlrbWVtX2NhY2hlX2Zy ZWUoc2xhYl9ibG9ja3MsIGJsb2NrKTsKIH0KIAotc3RhdGljIGVudW0gZHJtX2J1ZGR5X2ZyZWVf dHJlZQotZ2V0X2Jsb2NrX3RyZWUoc3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2spCitzdGF0 aWMgZW51bSBncHVfYnVkZHlfZnJlZV90cmVlCitnZXRfYmxvY2tfdHJlZShzdHJ1Y3QgZ3B1X2J1 ZGR5X2Jsb2NrICpibG9jaykKIHsKLQlyZXR1cm4gZHJtX2J1ZGR5X2Jsb2NrX2lzX2NsZWFyKGJs b2NrKSA/Ci0JICAgICAgIERSTV9CVUREWV9DTEVBUl9UUkVFIDogRFJNX0JVRERZX0RJUlRZX1RS RUU7CisJcmV0dXJuIGdwdV9idWRkeV9ibG9ja19pc19jbGVhcihibG9jaykgPworCSAgICAgICBH UFVfQlVERFlfQ0xFQVJfVFJFRSA6IEdQVV9CVUREWV9ESVJUWV9UUkVFOwogfQogCi1zdGF0aWMg c3RydWN0IGRybV9idWRkeV9ibG9jayAqCitzdGF0aWMgc3RydWN0IGdwdV9idWRkeV9ibG9jayAq CiByYnRyZWVfZ2V0X2ZyZWVfYmxvY2soY29uc3Qgc3RydWN0IHJiX25vZGUgKm5vZGUpCiB7Ci0J cmV0dXJuIG5vZGUgPyByYl9lbnRyeShub2RlLCBzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrLCByYikg OiBOVUxMOworCXJldHVybiBub2RlID8gcmJfZW50cnkobm9kZSwgc3RydWN0IGdwdV9idWRkeV9i bG9jaywgcmIpIDogTlVMTDsKIH0KIAotc3RhdGljIHN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKgor c3RhdGljIHN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKgogcmJ0cmVlX2xhc3RfZnJlZV9ibG9jayhz dHJ1Y3QgcmJfcm9vdCAqcm9vdCkKIHsKIAlyZXR1cm4gcmJ0cmVlX2dldF9mcmVlX2Jsb2NrKHJi X2xhc3Qocm9vdCkpOwpAQCAtNzcsMzMgKzY3LDMzIEBAIHN0YXRpYyBib29sIHJidHJlZV9pc19l bXB0eShzdHJ1Y3QgcmJfcm9vdCAqcm9vdCkKIAlyZXR1cm4gUkJfRU1QVFlfUk9PVChyb290KTsK IH0KIAotc3RhdGljIGJvb2wgZHJtX2J1ZGR5X2Jsb2NrX29mZnNldF9sZXNzKGNvbnN0IHN0cnVj dCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrLAotCQkJCQljb25zdCBzdHJ1Y3QgZHJtX2J1ZGR5X2Js b2NrICpub2RlKQorc3RhdGljIGJvb2wgZ3B1X2J1ZGR5X2Jsb2NrX29mZnNldF9sZXNzKGNvbnN0 IHN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJsb2NrLAorCQkJCQljb25zdCBzdHJ1Y3QgZ3B1X2J1 ZGR5X2Jsb2NrICpub2RlKQogewotCXJldHVybiBkcm1fYnVkZHlfYmxvY2tfb2Zmc2V0KGJsb2Nr KSA8IGRybV9idWRkeV9ibG9ja19vZmZzZXQobm9kZSk7CisJcmV0dXJuIGdwdV9idWRkeV9ibG9j a19vZmZzZXQoYmxvY2spIDwgZ3B1X2J1ZGR5X2Jsb2NrX29mZnNldChub2RlKTsKIH0KIAogc3Rh dGljIGJvb2wgcmJ0cmVlX2Jsb2NrX29mZnNldF9sZXNzKHN0cnVjdCByYl9ub2RlICpibG9jaywK IAkJCQkgICAgIGNvbnN0IHN0cnVjdCByYl9ub2RlICpub2RlKQogewotCXJldHVybiBkcm1fYnVk ZHlfYmxvY2tfb2Zmc2V0X2xlc3MocmJ0cmVlX2dldF9mcmVlX2Jsb2NrKGJsb2NrKSwKKwlyZXR1 cm4gZ3B1X2J1ZGR5X2Jsb2NrX29mZnNldF9sZXNzKHJidHJlZV9nZXRfZnJlZV9ibG9jayhibG9j ayksCiAJCQkJCSAgIHJidHJlZV9nZXRfZnJlZV9ibG9jayhub2RlKSk7CiB9CiAKLXN0YXRpYyB2 b2lkIHJidHJlZV9pbnNlcnQoc3RydWN0IGRybV9idWRkeSAqbW0sCi0JCQkgIHN0cnVjdCBkcm1f YnVkZHlfYmxvY2sgKmJsb2NrLAotCQkJICBlbnVtIGRybV9idWRkeV9mcmVlX3RyZWUgdHJlZSkK K3N0YXRpYyB2b2lkIHJidHJlZV9pbnNlcnQoc3RydWN0IGdwdV9idWRkeSAqbW0sCisJCQkgIHN0 cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJsb2NrLAorCQkJICBlbnVtIGdwdV9idWRkeV9mcmVlX3Ry ZWUgdHJlZSkKIHsKIAlyYl9hZGQoJmJsb2NrLT5yYiwKLQkgICAgICAgJm1tLT5mcmVlX3RyZWVz W3RyZWVdW2RybV9idWRkeV9ibG9ja19vcmRlcihibG9jayldLAorCSAgICAgICAmbW0tPmZyZWVf dHJlZXNbdHJlZV1bZ3B1X2J1ZGR5X2Jsb2NrX29yZGVyKGJsb2NrKV0sCiAJICAgICAgIHJidHJl ZV9ibG9ja19vZmZzZXRfbGVzcyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJidHJlZV9yZW1vdmUoc3Ry dWN0IGRybV9idWRkeSAqbW0sCi0JCQkgIHN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrKQor c3RhdGljIHZvaWQgcmJ0cmVlX3JlbW92ZShzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSwKKwkJCSAgc3Ry dWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2spCiB7Ci0JdW5zaWduZWQgaW50IG9yZGVyID0gZHJt X2J1ZGR5X2Jsb2NrX29yZGVyKGJsb2NrKTsKLQllbnVtIGRybV9idWRkeV9mcmVlX3RyZWUgdHJl ZTsKKwl1bnNpZ25lZCBpbnQgb3JkZXIgPSBncHVfYnVkZHlfYmxvY2tfb3JkZXIoYmxvY2spOwor CWVudW0gZ3B1X2J1ZGR5X2ZyZWVfdHJlZSB0cmVlOwogCXN0cnVjdCByYl9yb290ICpyb290Owog CiAJdHJlZSA9IGdldF9ibG9ja190cmVlKGJsb2NrKTsKQEAgLTExMyw0MiArMTAzLDQyIEBAIHN0 YXRpYyB2b2lkIHJidHJlZV9yZW1vdmUoc3RydWN0IGRybV9idWRkeSAqbW0sCiAJUkJfQ0xFQVJf Tk9ERSgmYmxvY2stPnJiKTsKIH0KIAotc3RhdGljIHZvaWQgY2xlYXJfcmVzZXQoc3RydWN0IGRy bV9idWRkeV9ibG9jayAqYmxvY2spCitzdGF0aWMgdm9pZCBjbGVhcl9yZXNldChzdHJ1Y3QgZ3B1 X2J1ZGR5X2Jsb2NrICpibG9jaykKIHsKLQlibG9jay0+aGVhZGVyICY9IH5EUk1fQlVERFlfSEVB REVSX0NMRUFSOworCWJsb2NrLT5oZWFkZXIgJj0gfkdQVV9CVUREWV9IRUFERVJfQ0xFQVI7CiB9 CiAKLXN0YXRpYyB2b2lkIG1hcmtfY2xlYXJlZChzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpibG9j aykKK3N0YXRpYyB2b2lkIG1hcmtfY2xlYXJlZChzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9j aykKIHsKLQlibG9jay0+aGVhZGVyIHw9IERSTV9CVUREWV9IRUFERVJfQ0xFQVI7CisJYmxvY2st PmhlYWRlciB8PSBHUFVfQlVERFlfSEVBREVSX0NMRUFSOwogfQogCi1zdGF0aWMgdm9pZCBtYXJr X2FsbG9jYXRlZChzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwKLQkJCSAgIHN0cnVjdCBkcm1fYnVkZHlf YmxvY2sgKmJsb2NrKQorc3RhdGljIHZvaWQgbWFya19hbGxvY2F0ZWQoc3RydWN0IGdwdV9idWRk eSAqbW0sCisJCQkgICBzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jaykKIHsKLQlibG9jay0+ aGVhZGVyICY9IH5EUk1fQlVERFlfSEVBREVSX1NUQVRFOwotCWJsb2NrLT5oZWFkZXIgfD0gRFJN X0JVRERZX0FMTE9DQVRFRDsKKwlibG9jay0+aGVhZGVyICY9IH5HUFVfQlVERFlfSEVBREVSX1NU QVRFOworCWJsb2NrLT5oZWFkZXIgfD0gR1BVX0JVRERZX0FMTE9DQVRFRDsKIAogCXJidHJlZV9y ZW1vdmUobW0sIGJsb2NrKTsKIH0KIAotc3RhdGljIHZvaWQgbWFya19mcmVlKHN0cnVjdCBkcm1f YnVkZHkgKm1tLAotCQkgICAgICBzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpibG9jaykKK3N0YXRp YyB2b2lkIG1hcmtfZnJlZShzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSwKKwkJICAgICAgc3RydWN0IGdw dV9idWRkeV9ibG9jayAqYmxvY2spCiB7Ci0JZW51bSBkcm1fYnVkZHlfZnJlZV90cmVlIHRyZWU7 CisJZW51bSBncHVfYnVkZHlfZnJlZV90cmVlIHRyZWU7CiAKLQlibG9jay0+aGVhZGVyICY9IH5E Uk1fQlVERFlfSEVBREVSX1NUQVRFOwotCWJsb2NrLT5oZWFkZXIgfD0gRFJNX0JVRERZX0ZSRUU7 CisJYmxvY2stPmhlYWRlciAmPSB+R1BVX0JVRERZX0hFQURFUl9TVEFURTsKKwlibG9jay0+aGVh ZGVyIHw9IEdQVV9CVUREWV9GUkVFOwogCiAJdHJlZSA9IGdldF9ibG9ja190cmVlKGJsb2NrKTsK IAlyYnRyZWVfaW5zZXJ0KG1tLCBibG9jaywgdHJlZSk7CiB9CiAKLXN0YXRpYyB2b2lkIG1hcmtf c3BsaXQoc3RydWN0IGRybV9idWRkeSAqbW0sCi0JCSAgICAgICBzdHJ1Y3QgZHJtX2J1ZGR5X2Js b2NrICpibG9jaykKK3N0YXRpYyB2b2lkIG1hcmtfc3BsaXQoc3RydWN0IGdwdV9idWRkeSAqbW0s CisJCSAgICAgICBzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jaykKIHsKLQlibG9jay0+aGVh ZGVyICY9IH5EUk1fQlVERFlfSEVBREVSX1NUQVRFOwotCWJsb2NrLT5oZWFkZXIgfD0gRFJNX0JV RERZX1NQTElUOworCWJsb2NrLT5oZWFkZXIgJj0gfkdQVV9CVUREWV9IRUFERVJfU1RBVEU7CisJ YmxvY2stPmhlYWRlciB8PSBHUFVfQlVERFlfU1BMSVQ7CiAKIAlyYnRyZWVfcmVtb3ZlKG1tLCBi bG9jayk7CiB9CkBAIC0xNjMsMTAgKzE1MywxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY29udGFp bnModTY0IHMxLCB1NjQgZTEsIHU2NCBzMiwgdTY0IGUyKQogCXJldHVybiBzMSA8PSBzMiAmJiBl MSA+PSBlMjsKIH0KIAotc3RhdGljIHN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKgotX19nZXRfYnVk ZHkoc3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2spCitzdGF0aWMgc3RydWN0IGdwdV9idWRk eV9ibG9jayAqCitfX2dldF9idWRkeShzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jaykKIHsK LQlzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpwYXJlbnQ7CisJc3RydWN0IGdwdV9idWRkeV9ibG9j ayAqcGFyZW50OwogCiAJcGFyZW50ID0gYmxvY2stPnBhcmVudDsKIAlpZiAoIXBhcmVudCkKQEAg LTE3OCwxOSArMTY4LDE5IEBAIF9fZ2V0X2J1ZGR5KHN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJs b2NrKQogCXJldHVybiBwYXJlbnQtPmxlZnQ7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgX19k cm1fYnVkZHlfZnJlZShzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwKLQkJCQkgICAgIHN0cnVjdCBkcm1f YnVkZHlfYmxvY2sgKmJsb2NrLAorc3RhdGljIHVuc2lnbmVkIGludCBfX2dwdV9idWRkeV9mcmVl KHN0cnVjdCBncHVfYnVkZHkgKm1tLAorCQkJCSAgICAgc3RydWN0IGdwdV9idWRkeV9ibG9jayAq YmxvY2ssCiAJCQkJICAgICBib29sIGZvcmNlX21lcmdlKQogewotCXN0cnVjdCBkcm1fYnVkZHlf YmxvY2sgKnBhcmVudDsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpwYXJlbnQ7CiAJdW5zaWdu ZWQgaW50IG9yZGVyOwogCiAJd2hpbGUgKChwYXJlbnQgPSBibG9jay0+cGFyZW50KSkgewotCQlz dHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpidWRkeTsKKwkJc3RydWN0IGdwdV9idWRkeV9ibG9jayAq YnVkZHk7CiAKIAkJYnVkZHkgPSBfX2dldF9idWRkeShibG9jayk7CiAKLQkJaWYgKCFkcm1fYnVk ZHlfYmxvY2tfaXNfZnJlZShidWRkeSkpCisJCWlmICghZ3B1X2J1ZGR5X2Jsb2NrX2lzX2ZyZWUo YnVkZHkpKQogCQkJYnJlYWs7CiAKIAkJaWYgKCFmb3JjZV9tZXJnZSkgewpAQCAtMTk4LDMxICsx ODgsMzEgQEAgc3RhdGljIHVuc2lnbmVkIGludCBfX2RybV9idWRkeV9mcmVlKHN0cnVjdCBkcm1f YnVkZHkgKm1tLAogCQkJICogQ2hlY2sgdGhlIGJsb2NrIGFuZCBpdHMgYnVkZHkgY2xlYXIgc3Rh dGUgYW5kIGV4aXQKIAkJCSAqIHRoZSBsb29wIGlmIHRoZXkgYm90aCBoYXZlIHRoZSBkaXNzaW1p bGFyIHN0YXRlLgogCQkJICovCi0JCQlpZiAoZHJtX2J1ZGR5X2Jsb2NrX2lzX2NsZWFyKGJsb2Nr KSAhPQotCQkJICAgIGRybV9idWRkeV9ibG9ja19pc19jbGVhcihidWRkeSkpCisJCQlpZiAoZ3B1 X2J1ZGR5X2Jsb2NrX2lzX2NsZWFyKGJsb2NrKSAhPQorCQkJICAgIGdwdV9idWRkeV9ibG9ja19p c19jbGVhcihidWRkeSkpCiAJCQkJYnJlYWs7CiAKLQkJCWlmIChkcm1fYnVkZHlfYmxvY2tfaXNf Y2xlYXIoYmxvY2spKQorCQkJaWYgKGdwdV9idWRkeV9ibG9ja19pc19jbGVhcihibG9jaykpCiAJ CQkJbWFya19jbGVhcmVkKHBhcmVudCk7CiAJCX0KIAogCQlyYnRyZWVfcmVtb3ZlKG1tLCBidWRk eSk7Ci0JCWlmIChmb3JjZV9tZXJnZSAmJiBkcm1fYnVkZHlfYmxvY2tfaXNfY2xlYXIoYnVkZHkp KQotCQkJbW0tPmNsZWFyX2F2YWlsIC09IGRybV9idWRkeV9ibG9ja19zaXplKG1tLCBidWRkeSk7 CisJCWlmIChmb3JjZV9tZXJnZSAmJiBncHVfYnVkZHlfYmxvY2tfaXNfY2xlYXIoYnVkZHkpKQor CQkJbW0tPmNsZWFyX2F2YWlsIC09IGdwdV9idWRkeV9ibG9ja19zaXplKG1tLCBidWRkeSk7CiAK LQkJZHJtX2Jsb2NrX2ZyZWUobW0sIGJsb2NrKTsKLQkJZHJtX2Jsb2NrX2ZyZWUobW0sIGJ1ZGR5 KTsKKwkJZ3B1X2Jsb2NrX2ZyZWUobW0sIGJsb2NrKTsKKwkJZ3B1X2Jsb2NrX2ZyZWUobW0sIGJ1 ZGR5KTsKIAogCQlibG9jayA9IHBhcmVudDsKIAl9CiAKLQlvcmRlciA9IGRybV9idWRkeV9ibG9j a19vcmRlcihibG9jayk7CisJb3JkZXIgPSBncHVfYnVkZHlfYmxvY2tfb3JkZXIoYmxvY2spOwog CW1hcmtfZnJlZShtbSwgYmxvY2spOwogCiAJcmV0dXJuIG9yZGVyOwogfQogCi1zdGF0aWMgaW50 IF9fZm9yY2VfbWVyZ2Uoc3RydWN0IGRybV9idWRkeSAqbW0sCitzdGF0aWMgaW50IF9fZm9yY2Vf bWVyZ2Uoc3RydWN0IGdwdV9idWRkeSAqbW0sCiAJCQkgdTY0IHN0YXJ0LAogCQkJIHU2NCBlbmQs CiAJCQkgdW5zaWduZWQgaW50IG1pbl9vcmRlcikKQEAgLTI0MSw3ICsyMzEsNyBAQCBzdGF0aWMg aW50IF9fZm9yY2VfbWVyZ2Uoc3RydWN0IGRybV9idWRkeSAqbW0sCiAJCQlzdHJ1Y3QgcmJfbm9k ZSAqaXRlciA9IHJiX2xhc3QoJm1tLT5mcmVlX3RyZWVzW3RyZWVdW2ldKTsKIAogCQkJd2hpbGUg KGl0ZXIpIHsKLQkJCQlzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpibG9jaywgKmJ1ZGR5OworCQkJ CXN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJsb2NrLCAqYnVkZHk7CiAJCQkJdTY0IGJsb2NrX3N0 YXJ0LCBibG9ja19lbmQ7CiAKIAkJCQlibG9jayA9IHJidHJlZV9nZXRfZnJlZV9ibG9jayhpdGVy KTsKQEAgLTI1MCwxOCArMjQwLDE4IEBAIHN0YXRpYyBpbnQgX19mb3JjZV9tZXJnZShzdHJ1Y3Qg ZHJtX2J1ZGR5ICptbSwKIAkJCQlpZiAoIWJsb2NrIHx8ICFibG9jay0+cGFyZW50KQogCQkJCQlj b250aW51ZTsKIAotCQkJCWJsb2NrX3N0YXJ0ID0gZHJtX2J1ZGR5X2Jsb2NrX29mZnNldChibG9j ayk7Ci0JCQkJYmxvY2tfZW5kID0gYmxvY2tfc3RhcnQgKyBkcm1fYnVkZHlfYmxvY2tfc2l6ZSht bSwgYmxvY2spIC0gMTsKKwkJCQlibG9ja19zdGFydCA9IGdwdV9idWRkeV9ibG9ja19vZmZzZXQo YmxvY2spOworCQkJCWJsb2NrX2VuZCA9IGJsb2NrX3N0YXJ0ICsgZ3B1X2J1ZGR5X2Jsb2NrX3Np emUobW0sIGJsb2NrKSAtIDE7CiAKIAkJCQlpZiAoIWNvbnRhaW5zKHN0YXJ0LCBlbmQsIGJsb2Nr X3N0YXJ0LCBibG9ja19lbmQpKQogCQkJCQljb250aW51ZTsKIAogCQkJCWJ1ZGR5ID0gX19nZXRf YnVkZHkoYmxvY2spOwotCQkJCWlmICghZHJtX2J1ZGR5X2Jsb2NrX2lzX2ZyZWUoYnVkZHkpKQor CQkJCWlmICghZ3B1X2J1ZGR5X2Jsb2NrX2lzX2ZyZWUoYnVkZHkpKQogCQkJCQljb250aW51ZTsK IAotCQkJCVdBUk5fT04oZHJtX2J1ZGR5X2Jsb2NrX2lzX2NsZWFyKGJsb2NrKSA9PQotCQkJCQlk cm1fYnVkZHlfYmxvY2tfaXNfY2xlYXIoYnVkZHkpKTsKKwkJCQlXQVJOX09OKGdwdV9idWRkeV9i bG9ja19pc19jbGVhcihibG9jaykgPT0KKwkJCQkJZ3B1X2J1ZGR5X2Jsb2NrX2lzX2NsZWFyKGJ1 ZGR5KSk7CiAKIAkJCQkvKgogCQkJCSAqIEFkdmFuY2UgdG8gdGhlIG5leHQgbm9kZSB3aGVuIHRo ZSBjdXJyZW50IG5vZGUgaXMgdGhlIGJ1ZGR5LApAQCAtMjcxLDEwICsyNjEsMTAgQEAgc3RhdGlj IGludCBfX2ZvcmNlX21lcmdlKHN0cnVjdCBkcm1fYnVkZHkgKm1tLAogCQkJCQlpdGVyID0gcmJf cHJldihpdGVyKTsKIAogCQkJCXJidHJlZV9yZW1vdmUobW0sIGJsb2NrKTsKLQkJCQlpZiAoZHJt X2J1ZGR5X2Jsb2NrX2lzX2NsZWFyKGJsb2NrKSkKLQkJCQkJbW0tPmNsZWFyX2F2YWlsIC09IGRy bV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9jayk7CisJCQkJaWYgKGdwdV9idWRkeV9ibG9ja19p c19jbGVhcihibG9jaykpCisJCQkJCW1tLT5jbGVhcl9hdmFpbCAtPSBncHVfYnVkZHlfYmxvY2tf c2l6ZShtbSwgYmxvY2spOwogCi0JCQkJb3JkZXIgPSBfX2RybV9idWRkeV9mcmVlKG1tLCBibG9j aywgdHJ1ZSk7CisJCQkJb3JkZXIgPSBfX2dwdV9idWRkeV9mcmVlKG1tLCBibG9jaywgdHJ1ZSk7 CiAJCQkJaWYgKG9yZGVyID49IG1pbl9vcmRlcikKIAkJCQkJcmV0dXJuIDA7CiAJCQl9CkBAIC0y ODUsOSArMjc1LDkgQEAgc3RhdGljIGludCBfX2ZvcmNlX21lcmdlKHN0cnVjdCBkcm1fYnVkZHkg Km1tLAogfQogCiAvKioKLSAqIGRybV9idWRkeV9pbml0IC0gaW5pdCBtZW1vcnkgbWFuYWdlcgor ICogZ3B1X2J1ZGR5X2luaXQgLSBpbml0IG1lbW9yeSBtYW5hZ2VyCiAgKgotICogQG1tOiBEUk0g YnVkZHkgbWFuYWdlciB0byBpbml0aWFsaXplCisgKiBAbW06IEdQVSBidWRkeSBtYW5hZ2VyIHRv IGluaXRpYWxpemUKICAqIEBzaXplOiBzaXplIGluIGJ5dGVzIHRvIG1hbmFnZQogICogQGNodW5r X3NpemU6IG1pbmltdW0gcGFnZSBzaXplIGluIGJ5dGVzIGZvciBvdXIgYWxsb2NhdGlvbnMKICAq CkBAIC0yOTYsNyArMjg2LDcgQEAgc3RhdGljIGludCBfX2ZvcmNlX21lcmdlKHN0cnVjdCBkcm1f YnVkZHkgKm1tLAogICogUmV0dXJuczoKICAqIDAgb24gc3VjY2VzcywgZXJyb3IgY29kZSBvbiBm YWlsdXJlLgogICovCi1pbnQgZHJtX2J1ZGR5X2luaXQoc3RydWN0IGRybV9idWRkeSAqbW0sIHU2 NCBzaXplLCB1NjQgY2h1bmtfc2l6ZSkKK2ludCBncHVfYnVkZHlfaW5pdChzdHJ1Y3QgZ3B1X2J1 ZGR5ICptbSwgdTY0IHNpemUsIHU2NCBjaHVua19zaXplKQogewogCXVuc2lnbmVkIGludCBpLCBq LCByb290X2NvdW50ID0gMDsKIAl1NjQgb2Zmc2V0ID0gMDsKQEAgLTMxOCw5ICszMDgsOSBAQCBp bnQgZHJtX2J1ZGR5X2luaXQoc3RydWN0IGRybV9idWRkeSAqbW0sIHU2NCBzaXplLCB1NjQgY2h1 bmtfc2l6ZSkKIAltbS0+Y2h1bmtfc2l6ZSA9IGNodW5rX3NpemU7CiAJbW0tPm1heF9vcmRlciA9 IGlsb2cyKHNpemUpIC0gaWxvZzIoY2h1bmtfc2l6ZSk7CiAKLQlCVUdfT04obW0tPm1heF9vcmRl ciA+IERSTV9CVUREWV9NQVhfT1JERVIpOworCUJVR19PTihtbS0+bWF4X29yZGVyID4gR1BVX0JV RERZX01BWF9PUkRFUik7CiAKLQltbS0+ZnJlZV90cmVlcyA9IGttYWxsb2NfYXJyYXkoRFJNX0JV RERZX01BWF9GUkVFX1RSRUVTLAorCW1tLT5mcmVlX3RyZWVzID0ga21hbGxvY19hcnJheShHUFVf QlVERFlfTUFYX0ZSRUVfVFJFRVMsCiAJCQkJICAgICAgIHNpemVvZigqbW0tPmZyZWVfdHJlZXMp LAogCQkJCSAgICAgICBHRlBfS0VSTkVMKTsKIAlpZiAoIW1tLT5mcmVlX3RyZWVzKQpAQCAtMzQw LDcgKzMzMCw3IEBAIGludCBkcm1fYnVkZHlfaW5pdChzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwgdTY0 IHNpemUsIHU2NCBjaHVua19zaXplKQogCW1tLT5uX3Jvb3RzID0gaHdlaWdodDY0KHNpemUpOwog CiAJbW0tPnJvb3RzID0ga21hbGxvY19hcnJheShtbS0+bl9yb290cywKLQkJCQkgIHNpemVvZihz dHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICopLAorCQkJCSAgc2l6ZW9mKHN0cnVjdCBncHVfYnVkZHlf YmxvY2sgKiksCiAJCQkJICBHRlBfS0VSTkVMKTsKIAlpZiAoIW1tLT5yb290cykKIAkJZ290byBv dXRfZnJlZV90cmVlOwpAQCAtMzUwLDIxICszNDAsMjEgQEAgaW50IGRybV9idWRkeV9pbml0KHN0 cnVjdCBkcm1fYnVkZHkgKm1tLCB1NjQgc2l6ZSwgdTY0IGNodW5rX3NpemUpCiAJICogbm90IGl0 c2VsZiBhIHBvd2VyLW9mLXR3by4KIAkgKi8KIAlkbyB7Ci0JCXN0cnVjdCBkcm1fYnVkZHlfYmxv Y2sgKnJvb3Q7CisJCXN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKnJvb3Q7CiAJCXVuc2lnbmVkIGlu dCBvcmRlcjsKIAkJdTY0IHJvb3Rfc2l6ZTsKIAogCQlvcmRlciA9IGlsb2cyKHNpemUpIC0gaWxv ZzIoY2h1bmtfc2l6ZSk7CiAJCXJvb3Rfc2l6ZSA9IGNodW5rX3NpemUgPDwgb3JkZXI7CiAKLQkJ cm9vdCA9IGRybV9ibG9ja19hbGxvYyhtbSwgTlVMTCwgb3JkZXIsIG9mZnNldCk7CisJCXJvb3Qg PSBncHVfYmxvY2tfYWxsb2MobW0sIE5VTEwsIG9yZGVyLCBvZmZzZXQpOwogCQlpZiAoIXJvb3Qp CiAJCQlnb3RvIG91dF9mcmVlX3Jvb3RzOwogCiAJCW1hcmtfZnJlZShtbSwgcm9vdCk7CiAKIAkJ QlVHX09OKHJvb3RfY291bnQgPiBtbS0+bWF4X29yZGVyKTsKLQkJQlVHX09OKGRybV9idWRkeV9i bG9ja19zaXplKG1tLCByb290KSA8IGNodW5rX3NpemUpOworCQlCVUdfT04oZ3B1X2J1ZGR5X2Js b2NrX3NpemUobW0sIHJvb3QpIDwgY2h1bmtfc2l6ZSk7CiAKIAkJbW0tPnJvb3RzW3Jvb3RfY291 bnRdID0gcm9vdDsKIApAQCAtMzc3LDcgKzM2Nyw3IEBAIGludCBkcm1fYnVkZHlfaW5pdChzdHJ1 Y3QgZHJtX2J1ZGR5ICptbSwgdTY0IHNpemUsIHU2NCBjaHVua19zaXplKQogCiBvdXRfZnJlZV9y b290czoKIAl3aGlsZSAocm9vdF9jb3VudC0tKQotCQlkcm1fYmxvY2tfZnJlZShtbSwgbW0tPnJv b3RzW3Jvb3RfY291bnRdKTsKKwkJZ3B1X2Jsb2NrX2ZyZWUobW0sIG1tLT5yb290c1tyb290X2Nv dW50XSk7CiAJa2ZyZWUobW0tPnJvb3RzKTsKIG91dF9mcmVlX3RyZWU6CiAJd2hpbGUgKGktLSkK QEAgLTM4NSwxNiArMzc1LDE2IEBAIGludCBkcm1fYnVkZHlfaW5pdChzdHJ1Y3QgZHJtX2J1ZGR5 ICptbSwgdTY0IHNpemUsIHU2NCBjaHVua19zaXplKQogCWtmcmVlKG1tLT5mcmVlX3RyZWVzKTsK IAlyZXR1cm4gLUVOT01FTTsKIH0KLUVYUE9SVF9TWU1CT0woZHJtX2J1ZGR5X2luaXQpOworRVhQ T1JUX1NZTUJPTChncHVfYnVkZHlfaW5pdCk7CiAKIC8qKgotICogZHJtX2J1ZGR5X2ZpbmkgLSB0 ZWFyIGRvd24gdGhlIG1lbW9yeSBtYW5hZ2VyCisgKiBncHVfYnVkZHlfZmluaSAtIHRlYXIgZG93 biB0aGUgbWVtb3J5IG1hbmFnZXIKICAqCi0gKiBAbW06IERSTSBidWRkeSBtYW5hZ2VyIHRvIGZy ZWUKKyAqIEBtbTogR1BVIGJ1ZGR5IG1hbmFnZXIgdG8gZnJlZQogICoKICAqIENsZWFudXAgbWVt b3J5IG1hbmFnZXIgcmVzb3VyY2VzIGFuZCB0aGUgZnJlZXRyZWUKICAqLwotdm9pZCBkcm1fYnVk ZHlfZmluaShzdHJ1Y3QgZHJtX2J1ZGR5ICptbSkKK3ZvaWQgZ3B1X2J1ZGR5X2Zpbmkoc3RydWN0 IGdwdV9idWRkeSAqbW0pCiB7CiAJdTY0IHJvb3Rfc2l6ZSwgc2l6ZSwgc3RhcnQ7CiAJdW5zaWdu ZWQgaW50IG9yZGVyOwpAQCAtNDA0LDEzICszOTQsMTMgQEAgdm9pZCBkcm1fYnVkZHlfZmluaShz dHJ1Y3QgZHJtX2J1ZGR5ICptbSkKIAogCWZvciAoaSA9IDA7IGkgPCBtbS0+bl9yb290czsgKytp KSB7CiAJCW9yZGVyID0gaWxvZzIoc2l6ZSkgLSBpbG9nMihtbS0+Y2h1bmtfc2l6ZSk7Ci0JCXN0 YXJ0ID0gZHJtX2J1ZGR5X2Jsb2NrX29mZnNldChtbS0+cm9vdHNbaV0pOworCQlzdGFydCA9IGdw dV9idWRkeV9ibG9ja19vZmZzZXQobW0tPnJvb3RzW2ldKTsKIAkJX19mb3JjZV9tZXJnZShtbSwg c3RhcnQsIHN0YXJ0ICsgc2l6ZSwgb3JkZXIpOwogCi0JCWlmIChXQVJOX09OKCFkcm1fYnVkZHlf YmxvY2tfaXNfZnJlZShtbS0+cm9vdHNbaV0pKSkKKwkJaWYgKFdBUk5fT04oIWdwdV9idWRkeV9i bG9ja19pc19mcmVlKG1tLT5yb290c1tpXSkpKQogCQkJa3VuaXRfZmFpbF9jdXJyZW50X3Rlc3Qo ImJ1ZGR5X2ZpbmkoKSByb290Iik7CiAKLQkJZHJtX2Jsb2NrX2ZyZWUobW0sIG1tLT5yb290c1tp XSk7CisJCWdwdV9ibG9ja19mcmVlKG1tLCBtbS0+cm9vdHNbaV0pOwogCiAJCXJvb3Rfc2l6ZSA9 IG1tLT5jaHVua19zaXplIDw8IG9yZGVyOwogCQlzaXplIC09IHJvb3Rfc2l6ZTsKQEAgLTQyMywz MSArNDEzLDMxIEBAIHZvaWQgZHJtX2J1ZGR5X2Zpbmkoc3RydWN0IGRybV9idWRkeSAqbW0pCiAJ a2ZyZWUobW0tPmZyZWVfdHJlZXMpOwogCWtmcmVlKG1tLT5yb290cyk7CiB9Ci1FWFBPUlRfU1lN Qk9MKGRybV9idWRkeV9maW5pKTsKK0VYUE9SVF9TWU1CT0woZ3B1X2J1ZGR5X2ZpbmkpOwogCi1z dGF0aWMgaW50IHNwbGl0X2Jsb2NrKHN0cnVjdCBkcm1fYnVkZHkgKm1tLAotCQkgICAgICAgc3Ry dWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2spCitzdGF0aWMgaW50IHNwbGl0X2Jsb2NrKHN0cnVj dCBncHVfYnVkZHkgKm1tLAorCQkgICAgICAgc3RydWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2sp CiB7Ci0JdW5zaWduZWQgaW50IGJsb2NrX29yZGVyID0gZHJtX2J1ZGR5X2Jsb2NrX29yZGVyKGJs b2NrKSAtIDE7Ci0JdTY0IG9mZnNldCA9IGRybV9idWRkeV9ibG9ja19vZmZzZXQoYmxvY2spOwor CXVuc2lnbmVkIGludCBibG9ja19vcmRlciA9IGdwdV9idWRkeV9ibG9ja19vcmRlcihibG9jaykg LSAxOworCXU2NCBvZmZzZXQgPSBncHVfYnVkZHlfYmxvY2tfb2Zmc2V0KGJsb2NrKTsKIAotCUJV R19PTighZHJtX2J1ZGR5X2Jsb2NrX2lzX2ZyZWUoYmxvY2spKTsKLQlCVUdfT04oIWRybV9idWRk eV9ibG9ja19vcmRlcihibG9jaykpOworCUJVR19PTighZ3B1X2J1ZGR5X2Jsb2NrX2lzX2ZyZWUo YmxvY2spKTsKKwlCVUdfT04oIWdwdV9idWRkeV9ibG9ja19vcmRlcihibG9jaykpOwogCi0JYmxv Y2stPmxlZnQgPSBkcm1fYmxvY2tfYWxsb2MobW0sIGJsb2NrLCBibG9ja19vcmRlciwgb2Zmc2V0 KTsKKwlibG9jay0+bGVmdCA9IGdwdV9ibG9ja19hbGxvYyhtbSwgYmxvY2ssIGJsb2NrX29yZGVy LCBvZmZzZXQpOwogCWlmICghYmxvY2stPmxlZnQpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JYmxv Y2stPnJpZ2h0ID0gZHJtX2Jsb2NrX2FsbG9jKG1tLCBibG9jaywgYmxvY2tfb3JkZXIsCisJYmxv Y2stPnJpZ2h0ID0gZ3B1X2Jsb2NrX2FsbG9jKG1tLCBibG9jaywgYmxvY2tfb3JkZXIsCiAJCQkJ ICAgICAgIG9mZnNldCArIChtbS0+Y2h1bmtfc2l6ZSA8PCBibG9ja19vcmRlcikpOwogCWlmICgh YmxvY2stPnJpZ2h0KSB7Ci0JCWRybV9ibG9ja19mcmVlKG1tLCBibG9jay0+bGVmdCk7CisJCWdw dV9ibG9ja19mcmVlKG1tLCBibG9jay0+bGVmdCk7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KIAog CW1hcmtfc3BsaXQobW0sIGJsb2NrKTsKIAotCWlmIChkcm1fYnVkZHlfYmxvY2tfaXNfY2xlYXIo YmxvY2spKSB7CisJaWYgKGdwdV9idWRkeV9ibG9ja19pc19jbGVhcihibG9jaykpIHsKIAkJbWFy a19jbGVhcmVkKGJsb2NrLT5sZWZ0KTsKIAkJbWFya19jbGVhcmVkKGJsb2NrLT5yaWdodCk7CiAJ CWNsZWFyX3Jlc2V0KGJsb2NrKTsKQEAgLTQ2MCwzNCArNDUwLDM0IEBAIHN0YXRpYyBpbnQgc3Bs aXRfYmxvY2soc3RydWN0IGRybV9idWRkeSAqbW0sCiB9CiAKIC8qKgotICogZHJtX2dldF9idWRk eSAtIGdldCBidWRkeSBhZGRyZXNzCisgKiBncHVfZ2V0X2J1ZGR5IC0gZ2V0IGJ1ZGR5IGFkZHJl c3MKICAqCi0gKiBAYmxvY2s6IERSTSBidWRkeSBibG9jaworICogQGJsb2NrOiBHUFUgYnVkZHkg YmxvY2sKICAqCiAgKiBSZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIGJ1ZGR5IGJsb2NrIGZvciBA YmxvY2ssIG9yIE5VTEwKICAqIGlmIHRoaXMgaXMgYSByb290IGJsb2NrIGFuZCBjYW4ndCBiZSBt ZXJnZWQgZnVydGhlci4KICAqIFJlcXVpcmVzIHNvbWUga2luZCBvZiBsb2NraW5nIHRvIHByb3Rl Y3QgYWdhaW5zdAogICogYW55IGNvbmN1cnJlbnQgYWxsb2NhdGUgYW5kIGZyZWUgb3BlcmF0aW9u cy4KICAqLwotc3RydWN0IGRybV9idWRkeV9ibG9jayAqCi1kcm1fZ2V0X2J1ZGR5KHN0cnVjdCBk cm1fYnVkZHlfYmxvY2sgKmJsb2NrKQorc3RydWN0IGdwdV9idWRkeV9ibG9jayAqCitncHVfZ2V0 X2J1ZGR5KHN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJsb2NrKQogewogCXJldHVybiBfX2dldF9i dWRkeShibG9jayk7CiB9Ci1FWFBPUlRfU1lNQk9MKGRybV9nZXRfYnVkZHkpOworRVhQT1JUX1NZ TUJPTChncHVfZ2V0X2J1ZGR5KTsKIAogLyoqCi0gKiBkcm1fYnVkZHlfcmVzZXRfY2xlYXIgLSBy ZXNldCBibG9ja3MgY2xlYXIgc3RhdGUKKyAqIGdwdV9idWRkeV9yZXNldF9jbGVhciAtIHJlc2V0 IGJsb2NrcyBjbGVhciBzdGF0ZQogICoKLSAqIEBtbTogRFJNIGJ1ZGR5IG1hbmFnZXIKKyAqIEBt bTogR1BVIGJ1ZGR5IG1hbmFnZXIKICAqIEBpc19jbGVhcjogYmxvY2tzIGNsZWFyIHN0YXRlCiAg KgogICogUmVzZXQgdGhlIGNsZWFyIHN0YXRlIGJhc2VkIG9uIEBpc19jbGVhciB2YWx1ZSBmb3Ig ZWFjaCBibG9jawogICogaW4gdGhlIGZyZWV0cmVlLgogICovCi12b2lkIGRybV9idWRkeV9yZXNl dF9jbGVhcihzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwgYm9vbCBpc19jbGVhcikKK3ZvaWQgZ3B1X2J1 ZGR5X3Jlc2V0X2NsZWFyKHN0cnVjdCBncHVfYnVkZHkgKm1tLCBib29sIGlzX2NsZWFyKQogewot CWVudW0gZHJtX2J1ZGR5X2ZyZWVfdHJlZSBzcmNfdHJlZSwgZHN0X3RyZWU7CisJZW51bSBncHVf YnVkZHlfZnJlZV90cmVlIHNyY190cmVlLCBkc3RfdHJlZTsKIAl1NjQgcm9vdF9zaXplLCBzaXpl LCBzdGFydDsKIAl1bnNpZ25lZCBpbnQgb3JkZXI7CiAJaW50IGk7CkBAIC00OTUsNjAgKzQ4NSw2 MCBAQCB2b2lkIGRybV9idWRkeV9yZXNldF9jbGVhcihzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwgYm9v bCBpc19jbGVhcikKIAlzaXplID0gbW0tPnNpemU7CiAJZm9yIChpID0gMDsgaSA8IG1tLT5uX3Jv b3RzOyArK2kpIHsKIAkJb3JkZXIgPSBpbG9nMihzaXplKSAtIGlsb2cyKG1tLT5jaHVua19zaXpl KTsKLQkJc3RhcnQgPSBkcm1fYnVkZHlfYmxvY2tfb2Zmc2V0KG1tLT5yb290c1tpXSk7CisJCXN0 YXJ0ID0gZ3B1X2J1ZGR5X2Jsb2NrX29mZnNldChtbS0+cm9vdHNbaV0pOwogCQlfX2ZvcmNlX21l cmdlKG1tLCBzdGFydCwgc3RhcnQgKyBzaXplLCBvcmRlcik7CiAKIAkJcm9vdF9zaXplID0gbW0t PmNodW5rX3NpemUgPDwgb3JkZXI7CiAJCXNpemUgLT0gcm9vdF9zaXplOwogCX0KIAotCXNyY190 cmVlID0gaXNfY2xlYXIgPyBEUk1fQlVERFlfRElSVFlfVFJFRSA6IERSTV9CVUREWV9DTEVBUl9U UkVFOwotCWRzdF90cmVlID0gaXNfY2xlYXIgPyBEUk1fQlVERFlfQ0xFQVJfVFJFRSA6IERSTV9C VUREWV9ESVJUWV9UUkVFOworCXNyY190cmVlID0gaXNfY2xlYXIgPyBHUFVfQlVERFlfRElSVFlf VFJFRSA6IEdQVV9CVUREWV9DTEVBUl9UUkVFOworCWRzdF90cmVlID0gaXNfY2xlYXIgPyBHUFVf QlVERFlfQ0xFQVJfVFJFRSA6IEdQVV9CVUREWV9ESVJUWV9UUkVFOwogCiAJZm9yIChpID0gMDsg aSA8PSBtbS0+bWF4X29yZGVyOyArK2kpIHsKIAkJc3RydWN0IHJiX3Jvb3QgKnJvb3QgPSAmbW0t PmZyZWVfdHJlZXNbc3JjX3RyZWVdW2ldOwotCQlzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpibG9j aywgKnRtcDsKKwkJc3RydWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2ssICp0bXA7CiAKIAkJcmJ0 cmVlX3Bvc3RvcmRlcl9mb3JfZWFjaF9lbnRyeV9zYWZlKGJsb2NrLCB0bXAsIHJvb3QsIHJiKSB7 CiAJCQlyYnRyZWVfcmVtb3ZlKG1tLCBibG9jayk7CiAJCQlpZiAoaXNfY2xlYXIpIHsKIAkJCQlt YXJrX2NsZWFyZWQoYmxvY2spOwotCQkJCW1tLT5jbGVhcl9hdmFpbCArPSBkcm1fYnVkZHlfYmxv Y2tfc2l6ZShtbSwgYmxvY2spOworCQkJCW1tLT5jbGVhcl9hdmFpbCArPSBncHVfYnVkZHlfYmxv Y2tfc2l6ZShtbSwgYmxvY2spOwogCQkJfSBlbHNlIHsKIAkJCQljbGVhcl9yZXNldChibG9jayk7 Ci0JCQkJbW0tPmNsZWFyX2F2YWlsIC09IGRybV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9jayk7 CisJCQkJbW0tPmNsZWFyX2F2YWlsIC09IGdwdV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9jayk7 CiAJCQl9CiAKIAkJCXJidHJlZV9pbnNlcnQobW0sIGJsb2NrLCBkc3RfdHJlZSk7CiAJCX0KIAl9 CiB9Ci1FWFBPUlRfU1lNQk9MKGRybV9idWRkeV9yZXNldF9jbGVhcik7CitFWFBPUlRfU1lNQk9M KGdwdV9idWRkeV9yZXNldF9jbGVhcik7CiAKIC8qKgotICogZHJtX2J1ZGR5X2ZyZWVfYmxvY2sg LSBmcmVlIGEgYmxvY2sKKyAqIGdwdV9idWRkeV9mcmVlX2Jsb2NrIC0gZnJlZSBhIGJsb2NrCiAg KgotICogQG1tOiBEUk0gYnVkZHkgbWFuYWdlcgorICogQG1tOiBHUFUgYnVkZHkgbWFuYWdlcgog ICogQGJsb2NrOiBibG9jayB0byBiZSBmcmVlZAogICovCi12b2lkIGRybV9idWRkeV9mcmVlX2Js b2NrKHN0cnVjdCBkcm1fYnVkZHkgKm1tLAotCQkJICBzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpi bG9jaykKK3ZvaWQgZ3B1X2J1ZGR5X2ZyZWVfYmxvY2soc3RydWN0IGdwdV9idWRkeSAqbW0sCisJ CQkgIHN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJsb2NrKQogewotCUJVR19PTighZHJtX2J1ZGR5 X2Jsb2NrX2lzX2FsbG9jYXRlZChibG9jaykpOwotCW1tLT5hdmFpbCArPSBkcm1fYnVkZHlfYmxv Y2tfc2l6ZShtbSwgYmxvY2spOwotCWlmIChkcm1fYnVkZHlfYmxvY2tfaXNfY2xlYXIoYmxvY2sp KQotCQltbS0+Y2xlYXJfYXZhaWwgKz0gZHJtX2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2NrKTsK KwlCVUdfT04oIWdwdV9idWRkeV9ibG9ja19pc19hbGxvY2F0ZWQoYmxvY2spKTsKKwltbS0+YXZh aWwgKz0gZ3B1X2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2NrKTsKKwlpZiAoZ3B1X2J1ZGR5X2Js b2NrX2lzX2NsZWFyKGJsb2NrKSkKKwkJbW0tPmNsZWFyX2F2YWlsICs9IGdwdV9idWRkeV9ibG9j a19zaXplKG1tLCBibG9jayk7CiAKLQlfX2RybV9idWRkeV9mcmVlKG1tLCBibG9jaywgZmFsc2Up OworCV9fZ3B1X2J1ZGR5X2ZyZWUobW0sIGJsb2NrLCBmYWxzZSk7CiB9Ci1FWFBPUlRfU1lNQk9M KGRybV9idWRkeV9mcmVlX2Jsb2NrKTsKK0VYUE9SVF9TWU1CT0woZ3B1X2J1ZGR5X2ZyZWVfYmxv Y2spOwogCi1zdGF0aWMgdm9pZCBfX2RybV9idWRkeV9mcmVlX2xpc3Qoc3RydWN0IGRybV9idWRk eSAqbW0sCitzdGF0aWMgdm9pZCBfX2dwdV9idWRkeV9mcmVlX2xpc3Qoc3RydWN0IGdwdV9idWRk eSAqbW0sCiAJCQkJICBzdHJ1Y3QgbGlzdF9oZWFkICpvYmplY3RzLAogCQkJCSAgYm9vbCBtYXJr X2NsZWFyLAogCQkJCSAgYm9vbCBtYXJrX2RpcnR5KQogewotCXN0cnVjdCBkcm1fYnVkZHlfYmxv Y2sgKmJsb2NrLCAqb247CisJc3RydWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2ssICpvbjsKIAog CVdBUk5fT04obWFya19kaXJ0eSAmJiBtYXJrX2NsZWFyKTsKIApAQCAtNTU3LDEzICs1NDcsMTMg QEAgc3RhdGljIHZvaWQgX19kcm1fYnVkZHlfZnJlZV9saXN0KHN0cnVjdCBkcm1fYnVkZHkgKm1t LAogCQkJbWFya19jbGVhcmVkKGJsb2NrKTsKIAkJZWxzZSBpZiAobWFya19kaXJ0eSkKIAkJCWNs ZWFyX3Jlc2V0KGJsb2NrKTsKLQkJZHJtX2J1ZGR5X2ZyZWVfYmxvY2sobW0sIGJsb2NrKTsKKwkJ Z3B1X2J1ZGR5X2ZyZWVfYmxvY2sobW0sIGJsb2NrKTsKIAkJY29uZF9yZXNjaGVkKCk7CiAJfQog CUlOSVRfTElTVF9IRUFEKG9iamVjdHMpOwogfQogCi1zdGF0aWMgdm9pZCBkcm1fYnVkZHlfZnJl ZV9saXN0X2ludGVybmFsKHN0cnVjdCBkcm1fYnVkZHkgKm1tLAorc3RhdGljIHZvaWQgZ3B1X2J1 ZGR5X2ZyZWVfbGlzdF9pbnRlcm5hbChzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSwKIAkJCQkJIHN0cnVj dCBsaXN0X2hlYWQgKm9iamVjdHMpCiB7CiAJLyoKQEAgLTU3MSw0MyArNTYxLDQzIEBAIHN0YXRp YyB2b2lkIGRybV9idWRkeV9mcmVlX2xpc3RfaW50ZXJuYWwoc3RydWN0IGRybV9idWRkeSAqbW0s CiAJICogYXQgdGhpcyBwb2ludC4gRm9yIGV4YW1wbGUgd2UgbWlnaHQgaGF2ZSBqdXN0IGZhaWxl ZCBwYXJ0IG9mIHRoZQogCSAqIGFsbG9jYXRpb24uCiAJICovCi0JX19kcm1fYnVkZHlfZnJlZV9s aXN0KG1tLCBvYmplY3RzLCBmYWxzZSwgZmFsc2UpOworCV9fZ3B1X2J1ZGR5X2ZyZWVfbGlzdCht bSwgb2JqZWN0cywgZmFsc2UsIGZhbHNlKTsKIH0KIAogLyoqCi0gKiBkcm1fYnVkZHlfZnJlZV9s aXN0IC0gZnJlZSBibG9ja3MKKyAqIGdwdV9idWRkeV9mcmVlX2xpc3QgLSBmcmVlIGJsb2Nrcwog ICoKLSAqIEBtbTogRFJNIGJ1ZGR5IG1hbmFnZXIKKyAqIEBtbTogR1BVIGJ1ZGR5IG1hbmFnZXIK ICAqIEBvYmplY3RzOiBpbnB1dCBsaXN0IGhlYWQgdG8gZnJlZSBibG9ja3MKLSAqIEBmbGFnczog b3B0aW9uYWwgZmxhZ3MgbGlrZSBEUk1fQlVERFlfQ0xFQVJFRAorICogQGZsYWdzOiBvcHRpb25h bCBmbGFncyBsaWtlIEdQVV9CVUREWV9DTEVBUkVECiAgKi8KLXZvaWQgZHJtX2J1ZGR5X2ZyZWVf bGlzdChzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwKK3ZvaWQgZ3B1X2J1ZGR5X2ZyZWVfbGlzdChzdHJ1 Y3QgZ3B1X2J1ZGR5ICptbSwKIAkJCSBzdHJ1Y3QgbGlzdF9oZWFkICpvYmplY3RzLAogCQkJIHVu c2lnbmVkIGludCBmbGFncykKIHsKLQlib29sIG1hcmtfY2xlYXIgPSBmbGFncyAmIERSTV9CVURE WV9DTEVBUkVEOworCWJvb2wgbWFya19jbGVhciA9IGZsYWdzICYgR1BVX0JVRERZX0NMRUFSRUQ7 CiAKLQlfX2RybV9idWRkeV9mcmVlX2xpc3QobW0sIG9iamVjdHMsIG1hcmtfY2xlYXIsICFtYXJr X2NsZWFyKTsKKwlfX2dwdV9idWRkeV9mcmVlX2xpc3QobW0sIG9iamVjdHMsIG1hcmtfY2xlYXIs ICFtYXJrX2NsZWFyKTsKIH0KLUVYUE9SVF9TWU1CT0woZHJtX2J1ZGR5X2ZyZWVfbGlzdCk7CitF WFBPUlRfU1lNQk9MKGdwdV9idWRkeV9mcmVlX2xpc3QpOwogCi1zdGF0aWMgYm9vbCBibG9ja19p bmNvbXBhdGlibGUoc3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2ssIHVuc2lnbmVkIGludCBm bGFncykKK3N0YXRpYyBib29sIGJsb2NrX2luY29tcGF0aWJsZShzdHJ1Y3QgZ3B1X2J1ZGR5X2Js b2NrICpibG9jaywgdW5zaWduZWQgaW50IGZsYWdzKQogewotCWJvb2wgbmVlZHNfY2xlYXIgPSBm bGFncyAmIERSTV9CVUREWV9DTEVBUl9BTExPQ0FUSU9OOworCWJvb2wgbmVlZHNfY2xlYXIgPSBm bGFncyAmIEdQVV9CVUREWV9DTEVBUl9BTExPQ0FUSU9OOwogCi0JcmV0dXJuIG5lZWRzX2NsZWFy ICE9IGRybV9idWRkeV9ibG9ja19pc19jbGVhcihibG9jayk7CisJcmV0dXJuIG5lZWRzX2NsZWFy ICE9IGdwdV9idWRkeV9ibG9ja19pc19jbGVhcihibG9jayk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qg ZHJtX2J1ZGR5X2Jsb2NrICoKLV9fYWxsb2NfcmFuZ2VfYmlhcyhzdHJ1Y3QgZHJtX2J1ZGR5ICpt bSwKK3N0YXRpYyBzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICoKK19fYWxsb2NfcmFuZ2VfYmlhcyhz dHJ1Y3QgZ3B1X2J1ZGR5ICptbSwKIAkJICAgdTY0IHN0YXJ0LCB1NjQgZW5kLAogCQkgICB1bnNp Z25lZCBpbnQgb3JkZXIsCiAJCSAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCiAJCSAgIGJvb2wgZmFs bGJhY2spCiB7CiAJdTY0IHJlcV9zaXplID0gbW0tPmNodW5rX3NpemUgPDwgb3JkZXI7Ci0Jc3Ry dWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2s7Ci0Jc3RydWN0IGRybV9idWRkeV9ibG9jayAqYnVk ZHk7CisJc3RydWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2s7CisJc3RydWN0IGdwdV9idWRkeV9i bG9jayAqYnVkZHk7CiAJTElTVF9IRUFEKGRmcyk7CiAJaW50IGVycjsKIAlpbnQgaTsKQEAgLTYy MiwyMyArNjEyLDIzIEBAIF9fYWxsb2NfcmFuZ2VfYmlhcyhzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwK IAkJdTY0IGJsb2NrX2VuZDsKIAogCQlibG9jayA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgm ZGZzLAotCQkJCQkJIHN0cnVjdCBkcm1fYnVkZHlfYmxvY2ssCisJCQkJCQkgc3RydWN0IGdwdV9i dWRkeV9ibG9jaywKIAkJCQkJCSB0bXBfbGluayk7CiAJCWlmICghYmxvY2spCiAJCQlicmVhazsK IAogCQlsaXN0X2RlbCgmYmxvY2stPnRtcF9saW5rKTsKIAotCQlpZiAoZHJtX2J1ZGR5X2Jsb2Nr X29yZGVyKGJsb2NrKSA8IG9yZGVyKQorCQlpZiAoZ3B1X2J1ZGR5X2Jsb2NrX29yZGVyKGJsb2Nr KSA8IG9yZGVyKQogCQkJY29udGludWU7CiAKLQkJYmxvY2tfc3RhcnQgPSBkcm1fYnVkZHlfYmxv Y2tfb2Zmc2V0KGJsb2NrKTsKLQkJYmxvY2tfZW5kID0gYmxvY2tfc3RhcnQgKyBkcm1fYnVkZHlf YmxvY2tfc2l6ZShtbSwgYmxvY2spIC0gMTsKKwkJYmxvY2tfc3RhcnQgPSBncHVfYnVkZHlfYmxv Y2tfb2Zmc2V0KGJsb2NrKTsKKwkJYmxvY2tfZW5kID0gYmxvY2tfc3RhcnQgKyBncHVfYnVkZHlf YmxvY2tfc2l6ZShtbSwgYmxvY2spIC0gMTsKIAogCQlpZiAoIW92ZXJsYXBzKHN0YXJ0LCBlbmQs IGJsb2NrX3N0YXJ0LCBibG9ja19lbmQpKQogCQkJY29udGludWU7CiAKLQkJaWYgKGRybV9idWRk eV9ibG9ja19pc19hbGxvY2F0ZWQoYmxvY2spKQorCQlpZiAoZ3B1X2J1ZGR5X2Jsb2NrX2lzX2Fs bG9jYXRlZChibG9jaykpCiAJCQljb250aW51ZTsKIAogCQlpZiAoYmxvY2tfc3RhcnQgPCBzdGFy dCB8fCBibG9ja19lbmQgPiBlbmQpIHsKQEAgLTY1NCwxNyArNjQ0LDE3IEBAIF9fYWxsb2NfcmFu Z2VfYmlhcyhzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChjb250 YWlucyhzdGFydCwgZW5kLCBibG9ja19zdGFydCwgYmxvY2tfZW5kKSAmJgotCQkgICAgb3JkZXIg PT0gZHJtX2J1ZGR5X2Jsb2NrX29yZGVyKGJsb2NrKSkgeworCQkgICAgb3JkZXIgPT0gZ3B1X2J1 ZGR5X2Jsb2NrX29yZGVyKGJsb2NrKSkgewogCQkJLyoKIAkJCSAqIEZpbmQgdGhlIGZyZWUgYmxv Y2sgd2l0aGluIHRoZSByYW5nZS4KIAkJCSAqLwotCQkJaWYgKGRybV9idWRkeV9ibG9ja19pc19m cmVlKGJsb2NrKSkKKwkJCWlmIChncHVfYnVkZHlfYmxvY2tfaXNfZnJlZShibG9jaykpCiAJCQkJ cmV0dXJuIGJsb2NrOwogCiAJCQljb250aW51ZTsKIAkJfQogCi0JCWlmICghZHJtX2J1ZGR5X2Js b2NrX2lzX3NwbGl0KGJsb2NrKSkgeworCQlpZiAoIWdwdV9idWRkeV9ibG9ja19pc19zcGxpdChi bG9jaykpIHsKIAkJCWVyciA9IHNwbGl0X2Jsb2NrKG1tLCBibG9jayk7CiAJCQlpZiAodW5saWtl bHkoZXJyKSkKIAkJCQlnb3RvIGVycl91bmRvOwpAQCAtNjg0LDE5ICs2NzQsMTkgQEAgX19hbGxv Y19yYW5nZV9iaWFzKHN0cnVjdCBkcm1fYnVkZHkgKm1tLAogCSAqLwogCWJ1ZGR5ID0gX19nZXRf YnVkZHkoYmxvY2spOwogCWlmIChidWRkeSAmJgotCSAgICAoZHJtX2J1ZGR5X2Jsb2NrX2lzX2Zy ZWUoYmxvY2spICYmCi0JICAgICBkcm1fYnVkZHlfYmxvY2tfaXNfZnJlZShidWRkeSkpKQotCQlf X2RybV9idWRkeV9mcmVlKG1tLCBibG9jaywgZmFsc2UpOworCSAgICAoZ3B1X2J1ZGR5X2Jsb2Nr X2lzX2ZyZWUoYmxvY2spICYmCisJICAgICBncHVfYnVkZHlfYmxvY2tfaXNfZnJlZShidWRkeSkp KQorCQlfX2dwdV9idWRkeV9mcmVlKG1tLCBibG9jaywgZmFsc2UpOwogCXJldHVybiBFUlJfUFRS KGVycik7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICoKLV9fZHJtX2J1ZGR5 X2FsbG9jX3JhbmdlX2JpYXMoc3RydWN0IGRybV9idWRkeSAqbW0sCitzdGF0aWMgc3RydWN0IGdw dV9idWRkeV9ibG9jayAqCitfX2dwdV9idWRkeV9hbGxvY19yYW5nZV9iaWFzKHN0cnVjdCBncHVf YnVkZHkgKm1tLAogCQkJICAgICB1NjQgc3RhcnQsIHU2NCBlbmQsCiAJCQkgICAgIHVuc2lnbmVk IGludCBvcmRlciwKIAkJCSAgICAgdW5zaWduZWQgbG9uZyBmbGFncykKIHsKLQlzdHJ1Y3QgZHJt X2J1ZGR5X2Jsb2NrICpibG9jazsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jazsKIAli b29sIGZhbGxiYWNrID0gZmFsc2U7CiAKIAlibG9jayA9IF9fYWxsb2NfcmFuZ2VfYmlhcyhtbSwg c3RhcnQsIGVuZCwgb3JkZXIsCkBAIC03MDgsMTIgKzY5OCwxMiBAQCBfX2RybV9idWRkeV9hbGxv Y19yYW5nZV9iaWFzKHN0cnVjdCBkcm1fYnVkZHkgKm1tLAogCXJldHVybiBibG9jazsKIH0KIAot c3RhdGljIHN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKgotZ2V0X21heGJsb2NrKHN0cnVjdCBkcm1f YnVkZHkgKm1tLAorc3RhdGljIHN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKgorZ2V0X21heGJsb2Nr KHN0cnVjdCBncHVfYnVkZHkgKm1tLAogCSAgICAgdW5zaWduZWQgaW50IG9yZGVyLAotCSAgICAg ZW51bSBkcm1fYnVkZHlfZnJlZV90cmVlIHRyZWUpCisJICAgICBlbnVtIGdwdV9idWRkeV9mcmVl X3RyZWUgdHJlZSkKIHsKLQlzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICptYXhfYmxvY2sgPSBOVUxM LCAqYmxvY2sgPSBOVUxMOworCXN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKm1heF9ibG9jayA9IE5V TEwsICpibG9jayA9IE5VTEw7CiAJc3RydWN0IHJiX3Jvb3QgKnJvb3Q7CiAJdW5zaWduZWQgaW50 IGk7CiAKQEAgLTcyOCw4ICs3MTgsOCBAQCBnZXRfbWF4YmxvY2soc3RydWN0IGRybV9idWRkeSAq bW0sCiAJCQljb250aW51ZTsKIAkJfQogCi0JCWlmIChkcm1fYnVkZHlfYmxvY2tfb2Zmc2V0KGJs b2NrKSA+Ci0JCSAgICBkcm1fYnVkZHlfYmxvY2tfb2Zmc2V0KG1heF9ibG9jaykpIHsKKwkJaWYg KGdwdV9idWRkeV9ibG9ja19vZmZzZXQoYmxvY2spID4KKwkJICAgIGdwdV9idWRkeV9ibG9ja19v ZmZzZXQobWF4X2Jsb2NrKSkgewogCQkJbWF4X2Jsb2NrID0gYmxvY2s7CiAJCX0KIAl9CkBAIC03 MzcsMjUgKzcyNywyNSBAQCBnZXRfbWF4YmxvY2soc3RydWN0IGRybV9idWRkeSAqbW0sCiAJcmV0 dXJuIG1heF9ibG9jazsKIH0KIAotc3RhdGljIHN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKgotYWxs b2NfZnJvbV9mcmVldHJlZShzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwKK3N0YXRpYyBzdHJ1Y3QgZ3B1 X2J1ZGR5X2Jsb2NrICoKK2FsbG9jX2Zyb21fZnJlZXRyZWUoc3RydWN0IGdwdV9idWRkeSAqbW0s CiAJCSAgICB1bnNpZ25lZCBpbnQgb3JkZXIsCiAJCSAgICB1bnNpZ25lZCBsb25nIGZsYWdzKQog ewotCXN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrID0gTlVMTDsKKwlzdHJ1Y3QgZ3B1X2J1 ZGR5X2Jsb2NrICpibG9jayA9IE5VTEw7CiAJc3RydWN0IHJiX3Jvb3QgKnJvb3Q7Ci0JZW51bSBk cm1fYnVkZHlfZnJlZV90cmVlIHRyZWU7CisJZW51bSBncHVfYnVkZHlfZnJlZV90cmVlIHRyZWU7 CiAJdW5zaWduZWQgaW50IHRtcDsKIAlpbnQgZXJyOwogCi0JdHJlZSA9IChmbGFncyAmIERSTV9C VUREWV9DTEVBUl9BTExPQ0FUSU9OKSA/Ci0JCURSTV9CVUREWV9DTEVBUl9UUkVFIDogRFJNX0JV RERZX0RJUlRZX1RSRUU7CisJdHJlZSA9IChmbGFncyAmIEdQVV9CVUREWV9DTEVBUl9BTExPQ0FU SU9OKSA/CisJCUdQVV9CVUREWV9DTEVBUl9UUkVFIDogR1BVX0JVRERZX0RJUlRZX1RSRUU7CiAK LQlpZiAoZmxhZ3MgJiBEUk1fQlVERFlfVE9QRE9XTl9BTExPQ0FUSU9OKSB7CisJaWYgKGZsYWdz ICYgR1BVX0JVRERZX1RPUERPV05fQUxMT0NBVElPTikgewogCQlibG9jayA9IGdldF9tYXhibG9j ayhtbSwgb3JkZXIsIHRyZWUpOwogCQlpZiAoYmxvY2spCiAJCQkvKiBTdG9yZSB0aGUgb2J0YWlu ZWQgYmxvY2sgb3JkZXIgKi8KLQkJCXRtcCA9IGRybV9idWRkeV9ibG9ja19vcmRlcihibG9jayk7 CisJCQl0bXAgPSBncHVfYnVkZHlfYmxvY2tfb3JkZXIoYmxvY2spOwogCX0gZWxzZSB7CiAJCWZv ciAodG1wID0gb3JkZXI7IHRtcCA8PSBtbS0+bWF4X29yZGVyOyArK3RtcCkgewogCQkJLyogR2V0 IFJCIHRyZWUgcm9vdCBmb3IgdGhpcyBvcmRlciBhbmQgdHJlZSAqLwpAQCAtNzY4LDggKzc1OCw4 IEBAIGFsbG9jX2Zyb21fZnJlZXRyZWUoc3RydWN0IGRybV9idWRkeSAqbW0sCiAKIAlpZiAoIWJs b2NrKSB7CiAJCS8qIFRyeSBhbGxvY2F0aW5nIGZyb20gdGhlIG90aGVyIHRyZWUgKi8KLQkJdHJl ZSA9ICh0cmVlID09IERSTV9CVUREWV9DTEVBUl9UUkVFKSA/Ci0JCQlEUk1fQlVERFlfRElSVFlf VFJFRSA6IERSTV9CVUREWV9DTEVBUl9UUkVFOworCQl0cmVlID0gKHRyZWUgPT0gR1BVX0JVRERZ X0NMRUFSX1RSRUUpID8KKwkJCUdQVV9CVUREWV9ESVJUWV9UUkVFIDogR1BVX0JVRERZX0NMRUFS X1RSRUU7CiAKIAkJZm9yICh0bXAgPSBvcmRlcjsgdG1wIDw9IG1tLT5tYXhfb3JkZXI7ICsrdG1w KSB7CiAJCQlyb290ID0gJm1tLT5mcmVlX3RyZWVzW3RyZWVdW3RtcF07CkBAIC03ODIsNyArNzcy LDcgQEAgYWxsb2NfZnJvbV9mcmVldHJlZShzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwKIAkJCXJldHVy biBFUlJfUFRSKC1FTk9TUEMpOwogCX0KIAotCUJVR19PTighZHJtX2J1ZGR5X2Jsb2NrX2lzX2Zy ZWUoYmxvY2spKTsKKwlCVUdfT04oIWdwdV9idWRkeV9ibG9ja19pc19mcmVlKGJsb2NrKSk7CiAK IAl3aGlsZSAodG1wICE9IG9yZGVyKSB7CiAJCWVyciA9IHNwbGl0X2Jsb2NrKG1tLCBibG9jayk7 CkBAIC03OTYsMTggKzc4NiwxOCBAQCBhbGxvY19mcm9tX2ZyZWV0cmVlKHN0cnVjdCBkcm1fYnVk ZHkgKm1tLAogCiBlcnJfdW5kbzoKIAlpZiAodG1wICE9IG9yZGVyKQotCQlfX2RybV9idWRkeV9m cmVlKG1tLCBibG9jaywgZmFsc2UpOworCQlfX2dwdV9idWRkeV9mcmVlKG1tLCBibG9jaywgZmFs c2UpOwogCXJldHVybiBFUlJfUFRSKGVycik7CiB9CiAKLXN0YXRpYyBpbnQgX19hbGxvY19yYW5n ZShzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwKK3N0YXRpYyBpbnQgX19hbGxvY19yYW5nZShzdHJ1Y3Qg Z3B1X2J1ZGR5ICptbSwKIAkJCSBzdHJ1Y3QgbGlzdF9oZWFkICpkZnMsCiAJCQkgdTY0IHN0YXJ0 LCB1NjQgc2l6ZSwKIAkJCSBzdHJ1Y3QgbGlzdF9oZWFkICpibG9ja3MsCiAJCQkgdTY0ICp0b3Rh bF9hbGxvY2F0ZWRfb25fZXJyKQogewotCXN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrOwot CXN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJ1ZGR5OworCXN0cnVjdCBncHVfYnVkZHlfYmxvY2sg KmJsb2NrOworCXN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJ1ZGR5OwogCXU2NCB0b3RhbF9hbGxv Y2F0ZWQgPSAwOwogCUxJU1RfSEVBRChhbGxvY2F0ZWQpOwogCXU2NCBlbmQ7CkBAIC04MjAsMzEg KzgxMCwzMSBAQCBzdGF0aWMgaW50IF9fYWxsb2NfcmFuZ2Uoc3RydWN0IGRybV9idWRkeSAqbW0s CiAJCXU2NCBibG9ja19lbmQ7CiAKIAkJYmxvY2sgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwo ZGZzLAotCQkJCQkJIHN0cnVjdCBkcm1fYnVkZHlfYmxvY2ssCisJCQkJCQkgc3RydWN0IGdwdV9i dWRkeV9ibG9jaywKIAkJCQkJCSB0bXBfbGluayk7CiAJCWlmICghYmxvY2spCiAJCQlicmVhazsK IAogCQlsaXN0X2RlbCgmYmxvY2stPnRtcF9saW5rKTsKIAotCQlibG9ja19zdGFydCA9IGRybV9i dWRkeV9ibG9ja19vZmZzZXQoYmxvY2spOwotCQlibG9ja19lbmQgPSBibG9ja19zdGFydCArIGRy bV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9jaykgLSAxOworCQlibG9ja19zdGFydCA9IGdwdV9i dWRkeV9ibG9ja19vZmZzZXQoYmxvY2spOworCQlibG9ja19lbmQgPSBibG9ja19zdGFydCArIGdw dV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9jaykgLSAxOwogCiAJCWlmICghb3ZlcmxhcHMoc3Rh cnQsIGVuZCwgYmxvY2tfc3RhcnQsIGJsb2NrX2VuZCkpCiAJCQljb250aW51ZTsKIAotCQlpZiAo ZHJtX2J1ZGR5X2Jsb2NrX2lzX2FsbG9jYXRlZChibG9jaykpIHsKKwkJaWYgKGdwdV9idWRkeV9i bG9ja19pc19hbGxvY2F0ZWQoYmxvY2spKSB7CiAJCQllcnIgPSAtRU5PU1BDOwogCQkJZ290byBl cnJfZnJlZTsKIAkJfQogCiAJCWlmIChjb250YWlucyhzdGFydCwgZW5kLCBibG9ja19zdGFydCwg YmxvY2tfZW5kKSkgewotCQkJaWYgKGRybV9idWRkeV9ibG9ja19pc19mcmVlKGJsb2NrKSkgewor CQkJaWYgKGdwdV9idWRkeV9ibG9ja19pc19mcmVlKGJsb2NrKSkgewogCQkJCW1hcmtfYWxsb2Nh dGVkKG1tLCBibG9jayk7Ci0JCQkJdG90YWxfYWxsb2NhdGVkICs9IGRybV9idWRkeV9ibG9ja19z aXplKG1tLCBibG9jayk7Ci0JCQkJbW0tPmF2YWlsIC09IGRybV9idWRkeV9ibG9ja19zaXplKG1t LCBibG9jayk7Ci0JCQkJaWYgKGRybV9idWRkeV9ibG9ja19pc19jbGVhcihibG9jaykpCi0JCQkJ CW1tLT5jbGVhcl9hdmFpbCAtPSBkcm1fYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2spOworCQkJ CXRvdGFsX2FsbG9jYXRlZCArPSBncHVfYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2spOworCQkJ CW1tLT5hdmFpbCAtPSBncHVfYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2spOworCQkJCWlmIChn cHVfYnVkZHlfYmxvY2tfaXNfY2xlYXIoYmxvY2spKQorCQkJCQltbS0+Y2xlYXJfYXZhaWwgLT0g Z3B1X2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2NrKTsKIAkJCQlsaXN0X2FkZF90YWlsKCZibG9j ay0+bGluaywgJmFsbG9jYXRlZCk7CiAJCQkJY29udGludWU7CiAJCQl9IGVsc2UgaWYgKCFtbS0+ Y2xlYXJfYXZhaWwpIHsKQEAgLTg1Myw3ICs4NDMsNyBAQCBzdGF0aWMgaW50IF9fYWxsb2NfcmFu Z2Uoc3RydWN0IGRybV9idWRkeSAqbW0sCiAJCQl9CiAJCX0KIAotCQlpZiAoIWRybV9idWRkeV9i bG9ja19pc19zcGxpdChibG9jaykpIHsKKwkJaWYgKCFncHVfYnVkZHlfYmxvY2tfaXNfc3BsaXQo YmxvY2spKSB7CiAJCQllcnIgPSBzcGxpdF9ibG9jayhtbSwgYmxvY2spOwogCQkJaWYgKHVubGlr ZWx5KGVycikpCiAJCQkJZ290byBlcnJfdW5kbzsKQEAgLTg4MCwyMiArODcwLDIyIEBAIHN0YXRp YyBpbnQgX19hbGxvY19yYW5nZShzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwKIAkgKi8KIAlidWRkeSA9 IF9fZ2V0X2J1ZGR5KGJsb2NrKTsKIAlpZiAoYnVkZHkgJiYKLQkgICAgKGRybV9idWRkeV9ibG9j a19pc19mcmVlKGJsb2NrKSAmJgotCSAgICAgZHJtX2J1ZGR5X2Jsb2NrX2lzX2ZyZWUoYnVkZHkp KSkKLQkJX19kcm1fYnVkZHlfZnJlZShtbSwgYmxvY2ssIGZhbHNlKTsKKwkgICAgKGdwdV9idWRk eV9ibG9ja19pc19mcmVlKGJsb2NrKSAmJgorCSAgICAgZ3B1X2J1ZGR5X2Jsb2NrX2lzX2ZyZWUo YnVkZHkpKSkKKwkJX19ncHVfYnVkZHlfZnJlZShtbSwgYmxvY2ssIGZhbHNlKTsKIAogZXJyX2Zy ZWU6CiAJaWYgKGVyciA9PSAtRU5PU1BDICYmIHRvdGFsX2FsbG9jYXRlZF9vbl9lcnIpIHsKIAkJ bGlzdF9zcGxpY2VfdGFpbCgmYWxsb2NhdGVkLCBibG9ja3MpOwogCQkqdG90YWxfYWxsb2NhdGVk X29uX2VyciA9IHRvdGFsX2FsbG9jYXRlZDsKIAl9IGVsc2UgewotCQlkcm1fYnVkZHlfZnJlZV9s aXN0X2ludGVybmFsKG1tLCAmYWxsb2NhdGVkKTsKKwkJZ3B1X2J1ZGR5X2ZyZWVfbGlzdF9pbnRl cm5hbChtbSwgJmFsbG9jYXRlZCk7CiAJfQogCiAJcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGlu dCBfX2RybV9idWRkeV9hbGxvY19yYW5nZShzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwKK3N0YXRpYyBp bnQgX19ncHVfYnVkZHlfYWxsb2NfcmFuZ2Uoc3RydWN0IGdwdV9idWRkeSAqbW0sCiAJCQkJICAg dTY0IHN0YXJ0LAogCQkJCSAgIHU2NCBzaXplLAogCQkJCSAgIHU2NCAqdG90YWxfYWxsb2NhdGVk X29uX2VyciwKQEAgLTkxMSwxMyArOTAxLDEzIEBAIHN0YXRpYyBpbnQgX19kcm1fYnVkZHlfYWxs b2NfcmFuZ2Uoc3RydWN0IGRybV9idWRkeSAqbW0sCiAJCQkgICAgIGJsb2NrcywgdG90YWxfYWxs b2NhdGVkX29uX2Vycik7CiB9CiAKLXN0YXRpYyBpbnQgX19hbGxvY19jb250aWdfdHJ5X2hhcmRl cihzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwKK3N0YXRpYyBpbnQgX19hbGxvY19jb250aWdfdHJ5X2hh cmRlcihzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSwKIAkJCQkgICAgIHU2NCBzaXplLAogCQkJCSAgICAg dTY0IG1pbl9ibG9ja19zaXplLAogCQkJCSAgICAgc3RydWN0IGxpc3RfaGVhZCAqYmxvY2tzKQog ewogCXU2NCByaHNfb2Zmc2V0LCBsaHNfb2Zmc2V0LCBsaHNfc2l6ZSwgZmlsbGVkOwotCXN0cnVj dCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrOworCXN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJsb2Nr OwogCXVuc2lnbmVkIGludCB0cmVlLCBvcmRlcjsKIAlMSVNUX0hFQUQoYmxvY2tzX2xocyk7CiAJ dW5zaWduZWQgbG9uZyBwYWdlczsKQEAgLTk0Myw4ICs5MzMsOCBAQCBzdGF0aWMgaW50IF9fYWxs b2NfY29udGlnX3RyeV9oYXJkZXIoc3RydWN0IGRybV9idWRkeSAqbW0sCiAJCQlibG9jayA9IHJi dHJlZV9nZXRfZnJlZV9ibG9jayhpdGVyKTsKIAogCQkJLyogQWxsb2NhdGUgYmxvY2tzIHRyYXZl cnNpbmcgUkhTICovCi0JCQlyaHNfb2Zmc2V0ID0gZHJtX2J1ZGR5X2Jsb2NrX29mZnNldChibG9j ayk7Ci0JCQllcnIgPSAgX19kcm1fYnVkZHlfYWxsb2NfcmFuZ2UobW0sIHJoc19vZmZzZXQsIHNp emUsCisJCQlyaHNfb2Zmc2V0ID0gZ3B1X2J1ZGR5X2Jsb2NrX29mZnNldChibG9jayk7CisJCQll cnIgPSAgX19ncHVfYnVkZHlfYWxsb2NfcmFuZ2UobW0sIHJoc19vZmZzZXQsIHNpemUsCiAJCQkJ CQkgICAgICAgJmZpbGxlZCwgYmxvY2tzKTsKIAkJCWlmICghZXJyIHx8IGVyciAhPSAtRU5PU1BD KQogCQkJCXJldHVybiBlcnI7CkBAIC05NTQsMTggKzk0NCwxOCBAQCBzdGF0aWMgaW50IF9fYWxs b2NfY29udGlnX3RyeV9oYXJkZXIoc3RydWN0IGRybV9idWRkeSAqbW0sCiAJCQkJbGhzX3NpemUg PSByb3VuZF91cChsaHNfc2l6ZSwgbWluX2Jsb2NrX3NpemUpOwogCiAJCQkvKiBBbGxvY2F0ZSBi bG9ja3MgdHJhdmVyc2luZyBMSFMgKi8KLQkJCWxoc19vZmZzZXQgPSBkcm1fYnVkZHlfYmxvY2tf b2Zmc2V0KGJsb2NrKSAtIGxoc19zaXplOwotCQkJZXJyID0gIF9fZHJtX2J1ZGR5X2FsbG9jX3Jh bmdlKG1tLCBsaHNfb2Zmc2V0LCBsaHNfc2l6ZSwKKwkJCWxoc19vZmZzZXQgPSBncHVfYnVkZHlf YmxvY2tfb2Zmc2V0KGJsb2NrKSAtIGxoc19zaXplOworCQkJZXJyID0gIF9fZ3B1X2J1ZGR5X2Fs bG9jX3JhbmdlKG1tLCBsaHNfb2Zmc2V0LCBsaHNfc2l6ZSwKIAkJCQkJCSAgICAgICBOVUxMLCAm YmxvY2tzX2xocyk7CiAJCQlpZiAoIWVycikgewogCQkJCWxpc3Rfc3BsaWNlKCZibG9ja3NfbGhz LCBibG9ja3MpOwogCQkJCXJldHVybiAwOwogCQkJfSBlbHNlIGlmIChlcnIgIT0gLUVOT1NQQykg ewotCQkJCWRybV9idWRkeV9mcmVlX2xpc3RfaW50ZXJuYWwobW0sIGJsb2Nrcyk7CisJCQkJZ3B1 X2J1ZGR5X2ZyZWVfbGlzdF9pbnRlcm5hbChtbSwgYmxvY2tzKTsKIAkJCQlyZXR1cm4gZXJyOwog CQkJfQogCQkJLyogRnJlZSBibG9ja3MgZm9yIHRoZSBuZXh0IGl0ZXJhdGlvbiAqLwotCQkJZHJt X2J1ZGR5X2ZyZWVfbGlzdF9pbnRlcm5hbChtbSwgYmxvY2tzKTsKKwkJCWdwdV9idWRkeV9mcmVl X2xpc3RfaW50ZXJuYWwobW0sIGJsb2Nrcyk7CiAKIAkJCWl0ZXIgPSByYl9wcmV2KGl0ZXIpOwog CQl9CkBAIC05NzUsOSArOTY1LDkgQEAgc3RhdGljIGludCBfX2FsbG9jX2NvbnRpZ190cnlfaGFy ZGVyKHN0cnVjdCBkcm1fYnVkZHkgKm1tLAogfQogCiAvKioKLSAqIGRybV9idWRkeV9ibG9ja190 cmltIC0gZnJlZSB1bnVzZWQgcGFnZXMKKyAqIGdwdV9idWRkeV9ibG9ja190cmltIC0gZnJlZSB1 bnVzZWQgcGFnZXMKICAqCi0gKiBAbW06IERSTSBidWRkeSBtYW5hZ2VyCisgKiBAbW06IEdQVSBi dWRkeSBtYW5hZ2VyCiAgKiBAc3RhcnQ6IHN0YXJ0IGFkZHJlc3MgdG8gYmVnaW4gdGhlIHRyaW1t aW5nLgogICogQG5ld19zaXplOiBvcmlnaW5hbCBzaXplIHJlcXVlc3RlZAogICogQGJsb2Nrczog SW5wdXQgYW5kIG91dHB1dCBsaXN0IG9mIGFsbG9jYXRlZCBibG9ja3MuCkBAIC05OTMsMTMgKzk4 MywxMyBAQCBzdGF0aWMgaW50IF9fYWxsb2NfY29udGlnX3RyeV9oYXJkZXIoc3RydWN0IGRybV9i dWRkeSAqbW0sCiAgKiBSZXR1cm5zOgogICogMCBvbiBzdWNjZXNzLCBlcnJvciBjb2RlIG9uIGZh aWx1cmUuCiAgKi8KLWludCBkcm1fYnVkZHlfYmxvY2tfdHJpbShzdHJ1Y3QgZHJtX2J1ZGR5ICpt bSwKK2ludCBncHVfYnVkZHlfYmxvY2tfdHJpbShzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSwKIAkJCSB1 NjQgKnN0YXJ0LAogCQkJIHU2NCBuZXdfc2l6ZSwKIAkJCSBzdHJ1Y3QgbGlzdF9oZWFkICpibG9j a3MpCiB7Ci0Jc3RydWN0IGRybV9idWRkeV9ibG9jayAqcGFyZW50OwotCXN0cnVjdCBkcm1fYnVk ZHlfYmxvY2sgKmJsb2NrOworCXN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKnBhcmVudDsKKwlzdHJ1 Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jazsKIAl1NjQgYmxvY2tfc3RhcnQsIGJsb2NrX2VuZDsK IAlMSVNUX0hFQUQoZGZzKTsKIAl1NjQgbmV3X3N0YXJ0OwpAQCAtMTAwOSwyMiArOTk5LDIyIEBA IGludCBkcm1fYnVkZHlfYmxvY2tfdHJpbShzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwKIAkJcmV0dXJu IC1FSU5WQUw7CiAKIAlibG9jayA9IGxpc3RfZmlyc3RfZW50cnkoYmxvY2tzLAotCQkJCSBzdHJ1 Y3QgZHJtX2J1ZGR5X2Jsb2NrLAorCQkJCSBzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrLAogCQkJCSBs aW5rKTsKIAotCWJsb2NrX3N0YXJ0ID0gZHJtX2J1ZGR5X2Jsb2NrX29mZnNldChibG9jayk7Ci0J YmxvY2tfZW5kID0gYmxvY2tfc3RhcnQgKyBkcm1fYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2sp OworCWJsb2NrX3N0YXJ0ID0gZ3B1X2J1ZGR5X2Jsb2NrX29mZnNldChibG9jayk7CisJYmxvY2tf ZW5kID0gYmxvY2tfc3RhcnQgKyBncHVfYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2spOwogCi0J aWYgKFdBUk5fT04oIWRybV9idWRkeV9ibG9ja19pc19hbGxvY2F0ZWQoYmxvY2spKSkKKwlpZiAo V0FSTl9PTighZ3B1X2J1ZGR5X2Jsb2NrX2lzX2FsbG9jYXRlZChibG9jaykpKQogCQlyZXR1cm4g LUVJTlZBTDsKIAotCWlmIChuZXdfc2l6ZSA+IGRybV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9j aykpCisJaWYgKG5ld19zaXplID4gZ3B1X2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2NrKSkKIAkJ cmV0dXJuIC1FSU5WQUw7CiAKIAlpZiAoIW5ld19zaXplIHx8ICFJU19BTElHTkVEKG5ld19zaXpl LCBtbS0+Y2h1bmtfc2l6ZSkpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JaWYgKG5ld19zaXplID09 IGRybV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9jaykpCisJaWYgKG5ld19zaXplID09IGdwdV9i dWRkeV9ibG9ja19zaXplKG1tLCBibG9jaykpCiAJCXJldHVybiAwOwogCiAJbmV3X3N0YXJ0ID0g YmxvY2tfc3RhcnQ7CkBAIC0xMDQzLDkgKzEwMzMsOSBAQCBpbnQgZHJtX2J1ZGR5X2Jsb2NrX3Ry aW0oc3RydWN0IGRybV9idWRkeSAqbW0sCiAKIAlsaXN0X2RlbCgmYmxvY2stPmxpbmspOwogCW1h cmtfZnJlZShtbSwgYmxvY2spOwotCW1tLT5hdmFpbCArPSBkcm1fYnVkZHlfYmxvY2tfc2l6ZSht bSwgYmxvY2spOwotCWlmIChkcm1fYnVkZHlfYmxvY2tfaXNfY2xlYXIoYmxvY2spKQotCQltbS0+ Y2xlYXJfYXZhaWwgKz0gZHJtX2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2NrKTsKKwltbS0+YXZh aWwgKz0gZ3B1X2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2NrKTsKKwlpZiAoZ3B1X2J1ZGR5X2Js b2NrX2lzX2NsZWFyKGJsb2NrKSkKKwkJbW0tPmNsZWFyX2F2YWlsICs9IGdwdV9idWRkeV9ibG9j a19zaXplKG1tLCBibG9jayk7CiAKIAkvKiBQcmV2ZW50IHJlY3Vyc2l2ZWx5IGZyZWVpbmcgdGhp cyBub2RlICovCiAJcGFyZW50ID0gYmxvY2stPnBhcmVudDsKQEAgLTEwNTUsMjYgKzEwNDUsMjYg QEAgaW50IGRybV9idWRkeV9ibG9ja190cmltKHN0cnVjdCBkcm1fYnVkZHkgKm1tLAogCWVyciA9 ICBfX2FsbG9jX3JhbmdlKG1tLCAmZGZzLCBuZXdfc3RhcnQsIG5ld19zaXplLCBibG9ja3MsIE5V TEwpOwogCWlmIChlcnIpIHsKIAkJbWFya19hbGxvY2F0ZWQobW0sIGJsb2NrKTsKLQkJbW0tPmF2 YWlsIC09IGRybV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9jayk7Ci0JCWlmIChkcm1fYnVkZHlf YmxvY2tfaXNfY2xlYXIoYmxvY2spKQotCQkJbW0tPmNsZWFyX2F2YWlsIC09IGRybV9idWRkeV9i bG9ja19zaXplKG1tLCBibG9jayk7CisJCW1tLT5hdmFpbCAtPSBncHVfYnVkZHlfYmxvY2tfc2l6 ZShtbSwgYmxvY2spOworCQlpZiAoZ3B1X2J1ZGR5X2Jsb2NrX2lzX2NsZWFyKGJsb2NrKSkKKwkJ CW1tLT5jbGVhcl9hdmFpbCAtPSBncHVfYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2spOwogCQls aXN0X2FkZCgmYmxvY2stPmxpbmssIGJsb2Nrcyk7CiAJfQogCiAJYmxvY2stPnBhcmVudCA9IHBh cmVudDsKIAlyZXR1cm4gZXJyOwogfQotRVhQT1JUX1NZTUJPTChkcm1fYnVkZHlfYmxvY2tfdHJp bSk7CitFWFBPUlRfU1lNQk9MKGdwdV9idWRkeV9ibG9ja190cmltKTsKIAotc3RhdGljIHN0cnVj dCBkcm1fYnVkZHlfYmxvY2sgKgotX19kcm1fYnVkZHlfYWxsb2NfYmxvY2tzKHN0cnVjdCBkcm1f YnVkZHkgKm1tLAorc3RhdGljIHN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKgorX19ncHVfYnVkZHlf YWxsb2NfYmxvY2tzKHN0cnVjdCBncHVfYnVkZHkgKm1tLAogCQkJIHU2NCBzdGFydCwgdTY0IGVu ZCwKIAkJCSB1bnNpZ25lZCBpbnQgb3JkZXIsCiAJCQkgdW5zaWduZWQgbG9uZyBmbGFncykKIHsK LQlpZiAoZmxhZ3MgJiBEUk1fQlVERFlfUkFOR0VfQUxMT0NBVElPTikKKwlpZiAoZmxhZ3MgJiBH UFVfQlVERFlfUkFOR0VfQUxMT0NBVElPTikKIAkJLyogQWxsb2NhdGUgdHJhdmVyc2luZyB3aXRo aW4gdGhlIHJhbmdlICovCi0JCXJldHVybiAgX19kcm1fYnVkZHlfYWxsb2NfcmFuZ2VfYmlhcyht bSwgc3RhcnQsIGVuZCwKKwkJcmV0dXJuICBfX2dwdV9idWRkeV9hbGxvY19yYW5nZV9iaWFzKG1t LCBzdGFydCwgZW5kLAogCQkJCQkJICAgICBvcmRlciwgZmxhZ3MpOwogCWVsc2UKIAkJLyogQWxs b2NhdGUgZnJvbSBmcmVldHJlZSAqLwpAQCAtMTA4MiwxNSArMTA3MiwxNSBAQCBfX2RybV9idWRk eV9hbGxvY19ibG9ja3Moc3RydWN0IGRybV9idWRkeSAqbW0sCiB9CiAKIC8qKgotICogZHJtX2J1 ZGR5X2FsbG9jX2Jsb2NrcyAtIGFsbG9jYXRlIHBvd2VyLW9mLXR3byBibG9ja3MKKyAqIGdwdV9i dWRkeV9hbGxvY19ibG9ja3MgLSBhbGxvY2F0ZSBwb3dlci1vZi10d28gYmxvY2tzCiAgKgotICog QG1tOiBEUk0gYnVkZHkgbWFuYWdlciB0byBhbGxvY2F0ZSBmcm9tCisgKiBAbW06IEdQVSBidWRk eSBtYW5hZ2VyIHRvIGFsbG9jYXRlIGZyb20KICAqIEBzdGFydDogc3RhcnQgb2YgdGhlIGFsbG93 ZWQgcmFuZ2UgZm9yIHRoaXMgYmxvY2sKICAqIEBlbmQ6IGVuZCBvZiB0aGUgYWxsb3dlZCByYW5n ZSBmb3IgdGhpcyBibG9jawogICogQHNpemU6IHNpemUgb2YgdGhlIGFsbG9jYXRpb24gaW4gYnl0 ZXMKICAqIEBtaW5fYmxvY2tfc2l6ZTogYWxpZ25tZW50IG9mIHRoZSBhbGxvY2F0aW9uCiAgKiBA YmxvY2tzOiBvdXRwdXQgbGlzdCBoZWFkIHRvIGFkZCBhbGxvY2F0ZWQgYmxvY2tzCi0gKiBAZmxh Z3M6IERSTV9CVUREWV8qX0FMTE9DQVRJT04gZmxhZ3MKKyAqIEBmbGFnczogR1BVX0JVRERZXypf QUxMT0NBVElPTiBmbGFncwogICoKICAqIGFsbG9jX3JhbmdlX2JpYXMoKSBjYWxsZWQgb24gcmFu Z2UgbGltaXRhdGlvbnMsIHdoaWNoIHRyYXZlcnNlcwogICogdGhlIHRyZWUgYW5kIHJldHVybnMg dGhlIGRlc2lyZWQgYmxvY2suCkBAIC0xMTAxLDEzICsxMDkxLDEzIEBAIF9fZHJtX2J1ZGR5X2Fs bG9jX2Jsb2NrcyhzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwKICAqIFJldHVybnM6CiAgKiAwIG9uIHN1 Y2Nlc3MsIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KICAqLwotaW50IGRybV9idWRkeV9hbGxvY19i bG9ja3Moc3RydWN0IGRybV9idWRkeSAqbW0sCitpbnQgZ3B1X2J1ZGR5X2FsbG9jX2Jsb2Nrcyhz dHJ1Y3QgZ3B1X2J1ZGR5ICptbSwKIAkJCSAgIHU2NCBzdGFydCwgdTY0IGVuZCwgdTY0IHNpemUs CiAJCQkgICB1NjQgbWluX2Jsb2NrX3NpemUsCiAJCQkgICBzdHJ1Y3QgbGlzdF9oZWFkICpibG9j a3MsCiAJCQkgICB1bnNpZ25lZCBsb25nIGZsYWdzKQogewotCXN0cnVjdCBkcm1fYnVkZHlfYmxv Y2sgKmJsb2NrID0gTlVMTDsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jayA9IE5VTEw7 CiAJdTY0IG9yaWdpbmFsX3NpemUsIG9yaWdpbmFsX21pbl9zaXplOwogCXVuc2lnbmVkIGludCBt aW5fb3JkZXIsIG9yZGVyOwogCUxJU1RfSEVBRChhbGxvY2F0ZWQpOwpAQCAtMTEzNywxNCArMTEy NywxNCBAQCBpbnQgZHJtX2J1ZGR5X2FsbG9jX2Jsb2NrcyhzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwK IAkJaWYgKCFJU19BTElHTkVEKHN0YXJ0IHwgZW5kLCBtaW5fYmxvY2tfc2l6ZSkpCiAJCQlyZXR1 cm4gLUVJTlZBTDsKIAotCQlyZXR1cm4gX19kcm1fYnVkZHlfYWxsb2NfcmFuZ2UobW0sIHN0YXJ0 LCBzaXplLCBOVUxMLCBibG9ja3MpOworCQlyZXR1cm4gX19ncHVfYnVkZHlfYWxsb2NfcmFuZ2Uo bW0sIHN0YXJ0LCBzaXplLCBOVUxMLCBibG9ja3MpOwogCX0KIAogCW9yaWdpbmFsX3NpemUgPSBz aXplOwogCW9yaWdpbmFsX21pbl9zaXplID0gbWluX2Jsb2NrX3NpemU7CiAKIAkvKiBSb3VuZHVw IHRoZSBzaXplIHRvIHBvd2VyIG9mIDIgKi8KLQlpZiAoZmxhZ3MgJiBEUk1fQlVERFlfQ09OVElH VU9VU19BTExPQ0FUSU9OKSB7CisJaWYgKGZsYWdzICYgR1BVX0JVRERZX0NPTlRJR1VPVVNfQUxM T0NBVElPTikgewogCQlzaXplID0gcm91bmR1cF9wb3dfb2ZfdHdvKHNpemUpOwogCQltaW5fYmxv Y2tfc2l6ZSA9IHNpemU7CiAJLyogQWxpZ24gc2l6ZSB2YWx1ZSB0byBtaW5fYmxvY2tfc2l6ZSAq LwpAQCAtMTE1Nyw4ICsxMTQ3LDggQEAgaW50IGRybV9idWRkeV9hbGxvY19ibG9ja3Moc3RydWN0 IGRybV9idWRkeSAqbW0sCiAJbWluX29yZGVyID0gaWxvZzIobWluX2Jsb2NrX3NpemUpIC0gaWxv ZzIobW0tPmNodW5rX3NpemUpOwogCiAJaWYgKG9yZGVyID4gbW0tPm1heF9vcmRlciB8fCBzaXpl ID4gbW0tPnNpemUpIHsKLQkJaWYgKChmbGFncyAmIERSTV9CVUREWV9DT05USUdVT1VTX0FMTE9D QVRJT04pICYmCi0JCSAgICAhKGZsYWdzICYgRFJNX0JVRERZX1JBTkdFX0FMTE9DQVRJT04pKQor CQlpZiAoKGZsYWdzICYgR1BVX0JVRERZX0NPTlRJR1VPVVNfQUxMT0NBVElPTikgJiYKKwkJICAg ICEoZmxhZ3MgJiBHUFVfQlVERFlfUkFOR0VfQUxMT0NBVElPTikpCiAJCQlyZXR1cm4gX19hbGxv Y19jb250aWdfdHJ5X2hhcmRlcihtbSwgb3JpZ2luYWxfc2l6ZSwKIAkJCQkJCQkgb3JpZ2luYWxf bWluX3NpemUsIGJsb2Nrcyk7CiAKQEAgLTExNzEsNyArMTE2MSw3IEBAIGludCBkcm1fYnVkZHlf YWxsb2NfYmxvY2tzKHN0cnVjdCBkcm1fYnVkZHkgKm1tLAogCQlCVUdfT04ob3JkZXIgPCBtaW5f b3JkZXIpOwogCiAJCWRvIHsKLQkJCWJsb2NrID0gX19kcm1fYnVkZHlfYWxsb2NfYmxvY2tzKG1t LCBzdGFydCwKKwkJCWJsb2NrID0gX19ncHVfYnVkZHlfYWxsb2NfYmxvY2tzKG1tLCBzdGFydCwK IAkJCQkJCQkgZW5kLAogCQkJCQkJCSBvcmRlciwKIAkJCQkJCQkgZmxhZ3MpOwpAQCAtMTE4Miw3 ICsxMTcyLDcgQEAgaW50IGRybV9idWRkeV9hbGxvY19ibG9ja3Moc3RydWN0IGRybV9idWRkeSAq bW0sCiAJCQkJLyogVHJ5IGFsbG9jYXRpb24gdGhyb3VnaCBmb3JjZSBtZXJnZSBtZXRob2QgKi8K IAkJCQlpZiAobW0tPmNsZWFyX2F2YWlsICYmCiAJCQkJICAgICFfX2ZvcmNlX21lcmdlKG1tLCBz dGFydCwgZW5kLCBtaW5fb3JkZXIpKSB7Ci0JCQkJCWJsb2NrID0gX19kcm1fYnVkZHlfYWxsb2Nf YmxvY2tzKG1tLCBzdGFydCwKKwkJCQkJYmxvY2sgPSBfX2dwdV9idWRkeV9hbGxvY19ibG9ja3Mo bW0sIHN0YXJ0LAogCQkJCQkJCQkJIGVuZCwKIAkJCQkJCQkJCSBtaW5fb3JkZXIsCiAJCQkJCQkJ CQkgZmxhZ3MpOwpAQCAtMTE5Niw4ICsxMTg2LDggQEAgaW50IGRybV9idWRkeV9hbGxvY19ibG9j a3Moc3RydWN0IGRybV9idWRkeSAqbW0sCiAJCQkJICogVHJ5IGNvbnRpZ3VvdXMgYmxvY2sgYWxs b2NhdGlvbiB0aHJvdWdoCiAJCQkJICogdHJ5IGhhcmRlciBtZXRob2QuCiAJCQkJICovCi0JCQkJ aWYgKGZsYWdzICYgRFJNX0JVRERZX0NPTlRJR1VPVVNfQUxMT0NBVElPTiAmJgotCQkJCSAgICAh KGZsYWdzICYgRFJNX0JVRERZX1JBTkdFX0FMTE9DQVRJT04pKQorCQkJCWlmIChmbGFncyAmIEdQ VV9CVUREWV9DT05USUdVT1VTX0FMTE9DQVRJT04gJiYKKwkJCQkgICAgIShmbGFncyAmIEdQVV9C VUREWV9SQU5HRV9BTExPQ0FUSU9OKSkKIAkJCQkJcmV0dXJuIF9fYWxsb2NfY29udGlnX3RyeV9o YXJkZXIobW0sCiAJCQkJCQkJCQkgb3JpZ2luYWxfc2l6ZSwKIAkJCQkJCQkJCSBvcmlnaW5hbF9t aW5fc2l6ZSwKQEAgLTEyMDgsOSArMTE5OCw5IEBAIGludCBkcm1fYnVkZHlfYWxsb2NfYmxvY2tz KHN0cnVjdCBkcm1fYnVkZHkgKm1tLAogCQl9IHdoaWxlICgxKTsKIAogCQltYXJrX2FsbG9jYXRl ZChtbSwgYmxvY2spOwotCQltbS0+YXZhaWwgLT0gZHJtX2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJs b2NrKTsKLQkJaWYgKGRybV9idWRkeV9ibG9ja19pc19jbGVhcihibG9jaykpCi0JCQltbS0+Y2xl YXJfYXZhaWwgLT0gZHJtX2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2NrKTsKKwkJbW0tPmF2YWls IC09IGdwdV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9jayk7CisJCWlmIChncHVfYnVkZHlfYmxv Y2tfaXNfY2xlYXIoYmxvY2spKQorCQkJbW0tPmNsZWFyX2F2YWlsIC09IGdwdV9idWRkeV9ibG9j a19zaXplKG1tLCBibG9jayk7CiAJCWttZW1sZWFrX3VwZGF0ZV90cmFjZShibG9jayk7CiAJCWxp c3RfYWRkX3RhaWwoJmJsb2NrLT5saW5rLCAmYWxsb2NhdGVkKTsKIApAQCAtMTIyMSw3ICsxMjEx LDcgQEAgaW50IGRybV9idWRkeV9hbGxvY19ibG9ja3Moc3RydWN0IGRybV9idWRkeSAqbW0sCiAJ fSB3aGlsZSAoMSk7CiAKIAkvKiBUcmltIHRoZSBhbGxvY2F0ZWQgYmxvY2sgdG8gdGhlIHJlcXVp cmVkIHNpemUgKi8KLQlpZiAoIShmbGFncyAmIERSTV9CVUREWV9UUklNX0RJU0FCTEUpICYmCisJ aWYgKCEoZmxhZ3MgJiBHUFVfQlVERFlfVFJJTV9ESVNBQkxFKSAmJgogCSAgICBvcmlnaW5hbF9z aXplICE9IHNpemUpIHsKIAkJc3RydWN0IGxpc3RfaGVhZCAqdHJpbV9saXN0OwogCQlMSVNUX0hF QUQodGVtcCk7CkBAIC0xMjM0LDExICsxMjI0LDExIEBAIGludCBkcm1fYnVkZHlfYWxsb2NfYmxv Y2tzKHN0cnVjdCBkcm1fYnVkZHkgKm1tLAogCQkJYmxvY2sgPSBsaXN0X2xhc3RfZW50cnkoJmFs bG9jYXRlZCwgdHlwZW9mKCpibG9jayksIGxpbmspOwogCQkJbGlzdF9tb3ZlKCZibG9jay0+bGlu aywgJnRlbXApOwogCQkJdHJpbV9saXN0ID0gJnRlbXA7Ci0JCQl0cmltX3NpemUgPSBkcm1fYnVk ZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2spIC0KKwkJCXRyaW1fc2l6ZSA9IGdwdV9idWRkeV9ibG9j a19zaXplKG1tLCBibG9jaykgLQogCQkJCShzaXplIC0gb3JpZ2luYWxfc2l6ZSk7CiAJCX0KIAot CQlkcm1fYnVkZHlfYmxvY2tfdHJpbShtbSwKKwkJZ3B1X2J1ZGR5X2Jsb2NrX3RyaW0obW0sCiAJ CQkJICAgICBOVUxMLAogCQkJCSAgICAgdHJpbV9zaXplLAogCQkJCSAgICAgdHJpbV9saXN0KTsK QEAgLTEyNTEsNDQgKzEyNDEsNDIgQEAgaW50IGRybV9idWRkeV9hbGxvY19ibG9ja3Moc3RydWN0 IGRybV9idWRkeSAqbW0sCiAJcmV0dXJuIDA7CiAKIGVycl9mcmVlOgotCWRybV9idWRkeV9mcmVl X2xpc3RfaW50ZXJuYWwobW0sICZhbGxvY2F0ZWQpOworCWdwdV9idWRkeV9mcmVlX2xpc3RfaW50 ZXJuYWwobW0sICZhbGxvY2F0ZWQpOwogCXJldHVybiBlcnI7CiB9Ci1FWFBPUlRfU1lNQk9MKGRy bV9idWRkeV9hbGxvY19ibG9ja3MpOworRVhQT1JUX1NZTUJPTChncHVfYnVkZHlfYWxsb2NfYmxv Y2tzKTsKIAogLyoqCi0gKiBkcm1fYnVkZHlfYmxvY2tfcHJpbnQgLSBwcmludCBibG9jayBpbmZv cm1hdGlvbgorICogZ3B1X2J1ZGR5X2Jsb2NrX3ByaW50IC0gcHJpbnQgYmxvY2sgaW5mb3JtYXRp b24KICAqCi0gKiBAbW06IERSTSBidWRkeSBtYW5hZ2VyCi0gKiBAYmxvY2s6IERSTSBidWRkeSBi bG9jawotICogQHA6IERSTSBwcmludGVyIHRvIHVzZQorICogQG1tOiBHUFUgYnVkZHkgbWFuYWdl cgorICogQGJsb2NrOiBHUFUgYnVkZHkgYmxvY2sKICAqLwotdm9pZCBkcm1fYnVkZHlfYmxvY2tf cHJpbnQoc3RydWN0IGRybV9idWRkeSAqbW0sCi0JCQkgICBzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2Nr ICpibG9jaywKLQkJCSAgIHN0cnVjdCBkcm1fcHJpbnRlciAqcCkKK3ZvaWQgZ3B1X2J1ZGR5X2Js b2NrX3ByaW50KHN0cnVjdCBncHVfYnVkZHkgKm1tLAorCQkJICAgc3RydWN0IGdwdV9idWRkeV9i bG9jayAqYmxvY2spCiB7Ci0JdTY0IHN0YXJ0ID0gZHJtX2J1ZGR5X2Jsb2NrX29mZnNldChibG9j ayk7Ci0JdTY0IHNpemUgPSBkcm1fYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2spOworCXU2NCBz dGFydCA9IGdwdV9idWRkeV9ibG9ja19vZmZzZXQoYmxvY2spOworCXU2NCBzaXplID0gZ3B1X2J1 ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2NrKTsKIAotCWRybV9wcmludGYocCwgIiUjMDE4bGx4LSUj MDE4bGx4OiAlbGx1XG4iLCBzdGFydCwgc3RhcnQgKyBzaXplLCBzaXplKTsKKwlwcl9pbmZvKCIl IzAxOGxseC0lIzAxOGxseDogJWxsdVxuIiwgc3RhcnQsIHN0YXJ0ICsgc2l6ZSwgc2l6ZSk7CiB9 Ci1FWFBPUlRfU1lNQk9MKGRybV9idWRkeV9ibG9ja19wcmludCk7CitFWFBPUlRfU1lNQk9MKGdw dV9idWRkeV9ibG9ja19wcmludCk7CiAKIC8qKgotICogZHJtX2J1ZGR5X3ByaW50IC0gcHJpbnQg YWxsb2NhdG9yIHN0YXRlCisgKiBncHVfYnVkZHlfcHJpbnQgLSBwcmludCBhbGxvY2F0b3Igc3Rh dGUKICAqCi0gKiBAbW06IERSTSBidWRkeSBtYW5hZ2VyCi0gKiBAcDogRFJNIHByaW50ZXIgdG8g dXNlCisgKiBAbW06IEdQVSBidWRkeSBtYW5hZ2VyCisgKiBAcDogR1BVIHByaW50ZXIgdG8gdXNl CiAgKi8KLXZvaWQgZHJtX2J1ZGR5X3ByaW50KHN0cnVjdCBkcm1fYnVkZHkgKm1tLCBzdHJ1Y3Qg ZHJtX3ByaW50ZXIgKnApCit2b2lkIGdwdV9idWRkeV9wcmludChzdHJ1Y3QgZ3B1X2J1ZGR5ICpt bSkKIHsKIAlpbnQgb3JkZXI7CiAKLQlkcm1fcHJpbnRmKHAsICJjaHVua19zaXplOiAlbGx1S2lC LCB0b3RhbDogJWxsdU1pQiwgZnJlZTogJWxsdU1pQiwgY2xlYXJfZnJlZTogJWxsdU1pQlxuIiwK LQkJICAgbW0tPmNodW5rX3NpemUgPj4gMTAsIG1tLT5zaXplID4+IDIwLCBtbS0+YXZhaWwgPj4g MjAsIG1tLT5jbGVhcl9hdmFpbCA+PiAyMCk7CisJcHJfaW5mbygiY2h1bmtfc2l6ZTogJWxsdUtp QiwgdG90YWw6ICVsbHVNaUIsIGZyZWU6ICVsbHVNaUIsIGNsZWFyX2ZyZWU6ICVsbHVNaUJcbiIs CisJCW1tLT5jaHVua19zaXplID4+IDEwLCBtbS0+c2l6ZSA+PiAyMCwgbW0tPmF2YWlsID4+IDIw LCBtbS0+Y2xlYXJfYXZhaWwgPj4gMjApOwogCiAJZm9yIChvcmRlciA9IG1tLT5tYXhfb3JkZXI7 IG9yZGVyID49IDA7IG9yZGVyLS0pIHsKLQkJc3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2ss ICp0bXA7CisJCXN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJsb2NrLCAqdG1wOwogCQlzdHJ1Y3Qg cmJfcm9vdCAqcm9vdDsKIAkJdTY0IGNvdW50ID0gMCwgZnJlZTsKIAkJdW5zaWduZWQgaW50IHRy ZWU7CkBAIC0xMjk3LDQwICsxMjg1LDM4IEBAIHZvaWQgZHJtX2J1ZGR5X3ByaW50KHN0cnVjdCBk cm1fYnVkZHkgKm1tLCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApCiAJCQlyb290ID0gJm1tLT5mcmVl X3RyZWVzW3RyZWVdW29yZGVyXTsKIAogCQkJcmJ0cmVlX3Bvc3RvcmRlcl9mb3JfZWFjaF9lbnRy eV9zYWZlKGJsb2NrLCB0bXAsIHJvb3QsIHJiKSB7Ci0JCQkJQlVHX09OKCFkcm1fYnVkZHlfYmxv Y2tfaXNfZnJlZShibG9jaykpOworCQkJCUJVR19PTighZ3B1X2J1ZGR5X2Jsb2NrX2lzX2ZyZWUo YmxvY2spKTsKIAkJCQljb3VudCsrOwogCQkJfQogCQl9CiAKLQkJZHJtX3ByaW50ZihwLCAib3Jk ZXItJTJkICIsIG9yZGVyKTsKLQogCQlmcmVlID0gY291bnQgKiAobW0tPmNodW5rX3NpemUgPDwg b3JkZXIpOwogCQlpZiAoZnJlZSA8IFNaXzFNKQotCQkJZHJtX3ByaW50ZihwLCAiZnJlZTogJThs bHUgS2lCIiwgZnJlZSA+PiAxMCk7CisJCQlwcl9pbmZvKCJvcmRlci0lMmQgZnJlZTogJThsbHUg S2lCLCBibG9ja3M6ICVsbHVcbiIsCisJCQkJb3JkZXIsIGZyZWUgPj4gMTAsIGNvdW50KTsKIAkJ ZWxzZQotCQkJZHJtX3ByaW50ZihwLCAiZnJlZTogJThsbHUgTWlCIiwgZnJlZSA+PiAyMCk7Ci0K LQkJZHJtX3ByaW50ZihwLCAiLCBibG9ja3M6ICVsbHVcbiIsIGNvdW50KTsKKwkJCXByX2luZm8o Im9yZGVyLSUyZCBmcmVlOiAlOGxsdSBNaUIsIGJsb2NrczogJWxsdVxuIiwKKwkJCQlvcmRlciwg ZnJlZSA+PiAyMCwgY291bnQpOwogCX0KIH0KLUVYUE9SVF9TWU1CT0woZHJtX2J1ZGR5X3ByaW50 KTsKK0VYUE9SVF9TWU1CT0woZ3B1X2J1ZGR5X3ByaW50KTsKIAotc3RhdGljIHZvaWQgZHJtX2J1 ZGR5X21vZHVsZV9leGl0KHZvaWQpCitzdGF0aWMgdm9pZCBncHVfYnVkZHlfbW9kdWxlX2V4aXQo dm9pZCkKIHsKIAlrbWVtX2NhY2hlX2Rlc3Ryb3koc2xhYl9ibG9ja3MpOwogfQogCi1zdGF0aWMg aW50IF9faW5pdCBkcm1fYnVkZHlfbW9kdWxlX2luaXQodm9pZCkKK3N0YXRpYyBpbnQgX19pbml0 IGdwdV9idWRkeV9tb2R1bGVfaW5pdCh2b2lkKQogewotCXNsYWJfYmxvY2tzID0gS01FTV9DQUNI RShkcm1fYnVkZHlfYmxvY2ssIDApOworCXNsYWJfYmxvY2tzID0gS01FTV9DQUNIRShncHVfYnVk ZHlfYmxvY2ssIDApOwogCWlmICghc2xhYl9ibG9ja3MpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJ cmV0dXJuIDA7CiB9CiAKLW1vZHVsZV9pbml0KGRybV9idWRkeV9tb2R1bGVfaW5pdCk7Ci1tb2R1 bGVfZXhpdChkcm1fYnVkZHlfbW9kdWxlX2V4aXQpOworbW9kdWxlX2luaXQoZ3B1X2J1ZGR5X21v ZHVsZV9pbml0KTsKK21vZHVsZV9leGl0KGdwdV9idWRkeV9tb2R1bGVfZXhpdCk7CiAKLU1PRFVM RV9ERVNDUklQVElPTigiRFJNIEJ1ZGR5IEFsbG9jYXRvciIpOworTU9EVUxFX0RFU0NSSVBUSU9O KCJHUFUgQnVkZHkgQWxsb2NhdG9yIik7CiBNT0RVTEVfTElDRU5TRSgiRHVhbCBNSVQvR1BMIik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9L Y29uZmlnCmluZGV4IGNhMmEyODAxZTc3Zi4uZjQ4ZDAwZmUyOGNjIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwpAQCAtMjIw LDYgKzIyMCw3IEBAIGNvbmZpZyBEUk1fR1BVU1ZNCiBjb25maWcgRFJNX0JVRERZCiAJdHJpc3Rh dGUKIAlkZXBlbmRzIG9uIERSTQorCXNlbGVjdCBHUFVfQlVERFkKIAloZWxwCiAJICBBIHBhZ2Ug YmFzZWQgYnVkZHkgYWxsb2NhdG9yCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtl ZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQppbmRleCA1Yzg2YmM5MDg5NTUuLjZmZjBm NmYxMGI1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9NYWtlZmlsZQpAQCAtMTEzLDcgKzExMyw3IEBAIGRybV9ncHVzdm1faGVscGVy LSQoQ09ORklHX1pPTkVfREVWSUNFKSArPSBcCiAKIG9iai0kKENPTkZJR19EUk1fR1BVU1ZNKSAr PSBkcm1fZ3B1c3ZtX2hlbHBlci5vCiAKLW9iai0kKENPTkZJR19EUk1fQlVERFkpICs9IC4uL2J1 ZGR5Lm8KK29iai0kKENPTkZJR19EUk1fQlVERFkpICs9IGRybV9idWRkeS5vCiAKIGRybV9kbWFf aGVscGVyLXkgOj0gZHJtX2dlbV9kbWFfaGVscGVyLm8KIGRybV9kbWFfaGVscGVyLSQoQ09ORklH X0RSTV9GQkRFVl9FTVVMQVRJT04pICs9IGRybV9mYmRldl9kbWEubwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3Jhcy5jCmluZGV4IGY1ODIxMTNkNzhiNy4uMTQ5ZjhmOTQyZWFlIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jCkBAIC01NjYzLDcgKzU2NjMs NyBAQCBpbnQgYW1kZ3B1X3Jhc19hZGRfY3JpdGljYWxfcmVnaW9uKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LAogCXN0cnVjdCBhbWRncHVfcmFzICpjb24gPSBhbWRncHVfcmFzX2dldF9jb250 ZXh0KGFkZXYpOwogCXN0cnVjdCBhbWRncHVfdnJhbV9tZ3JfcmVzb3VyY2UgKnZyZXM7CiAJc3Ry dWN0IHJhc19jcml0aWNhbF9yZWdpb24gKnJlZ2lvbjsKLQlzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2Nr ICpibG9jazsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jazsKIAlpbnQgcmV0ID0gMDsK IAogCWlmICghYm8gfHwgIWJvLT50Ym8ucmVzb3VyY2UpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzX2N1cnNvci5oIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3Jlc19jdXJzb3IuaAppbmRleCBiZTJlNTZjZTEzNTUuLjg5MDhkOWUw OGEzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc19j dXJzb3IuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzX2N1cnNv ci5oCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhbWRncHVfcmVzX2ZpcnN0 KHN0cnVjdCB0dG1fcmVzb3VyY2UgKnJlcywKIAkJCQkgICAgdWludDY0X3Qgc3RhcnQsIHVpbnQ2 NF90IHNpemUsCiAJCQkJICAgIHN0cnVjdCBhbWRncHVfcmVzX2N1cnNvciAqY3VyKQogewotCXN0 cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrOworCXN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJs b2NrOwogCXN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsICpuZXh0OwogCXN0cnVjdCBkcm1fbW1fbm9k ZSAqbm9kZTsKIApAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYW1kZ3B1X3Jl c19maXJzdChzdHJ1Y3QgdHRtX3Jlc291cmNlICpyZXMsCiAJCWhlYWQgPSAmdG9fYW1kZ3B1X3Zy YW1fbWdyX3Jlc291cmNlKHJlcyktPmJsb2NrczsKIAogCQlibG9jayA9IGxpc3RfZmlyc3RfZW50 cnlfb3JfbnVsbChoZWFkLAotCQkJCQkJIHN0cnVjdCBkcm1fYnVkZHlfYmxvY2ssCisJCQkJCQkg c3RydWN0IGdwdV9idWRkeV9ibG9jaywKIAkJCQkJCSBsaW5rKTsKIAkJaWYgKCFibG9jaykKIAkJ CWdvdG8gZmFsbGJhY2s7CkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhbWRn cHVfcmVzX2ZpcnN0KHN0cnVjdCB0dG1fcmVzb3VyY2UgKnJlcywKIAogCQkJbmV4dCA9IGJsb2Nr LT5saW5rLm5leHQ7CiAJCQlpZiAobmV4dCAhPSBoZWFkKQotCQkJCWJsb2NrID0gbGlzdF9lbnRy eShuZXh0LCBzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrLCBsaW5rKTsKKwkJCQlibG9jayA9IGxpc3Rf ZW50cnkobmV4dCwgc3RydWN0IGdwdV9idWRkeV9ibG9jaywgbGluayk7CiAJCX0KIAogCQljdXIt PnN0YXJ0ID0gYW1kZ3B1X3ZyYW1fbWdyX2Jsb2NrX3N0YXJ0KGJsb2NrKSArIHN0YXJ0OwpAQCAt MTI1LDcgKzEyNSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhbWRncHVfcmVzX2ZpcnN0KHN0cnVj dCB0dG1fcmVzb3VyY2UgKnJlcywKICAqLwogc3RhdGljIGlubGluZSB2b2lkIGFtZGdwdV9yZXNf bmV4dChzdHJ1Y3QgYW1kZ3B1X3Jlc19jdXJzb3IgKmN1ciwgdWludDY0X3Qgc2l6ZSkKIHsKLQlz dHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpibG9jazsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpi bG9jazsKIAlzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGU7CiAJc3RydWN0IGxpc3RfaGVhZCAqbmV4 dDsKIApAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhbWRncHVfcmVzX25l eHQoc3RydWN0IGFtZGdwdV9yZXNfY3Vyc29yICpjdXIsIHVpbnQ2NF90IHNpemUpCiAJCWJsb2Nr ID0gY3VyLT5ub2RlOwogCiAJCW5leHQgPSBibG9jay0+bGluay5uZXh0OwotCQlibG9jayA9IGxp c3RfZW50cnkobmV4dCwgc3RydWN0IGRybV9idWRkeV9ibG9jaywgbGluayk7CisJCWJsb2NrID0g bGlzdF9lbnRyeShuZXh0LCBzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrLCBsaW5rKTsKIAogCQljdXIt Pm5vZGUgPSBibG9jazsKIAkJY3VyLT5zdGFydCA9IGFtZGdwdV92cmFtX21ncl9ibG9ja19zdGFy dChibG9jayk7CkBAIC0xNzUsNyArMTc1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFtZGdwdV9y ZXNfbmV4dChzdHJ1Y3QgYW1kZ3B1X3Jlc19jdXJzb3IgKmN1ciwgdWludDY0X3Qgc2l6ZSkKICAq Lwogc3RhdGljIGlubGluZSBib29sIGFtZGdwdV9yZXNfY2xlYXJlZChzdHJ1Y3QgYW1kZ3B1X3Jl c19jdXJzb3IgKmN1cikKIHsKLQlzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpibG9jazsKKwlzdHJ1 Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jazsKIAogCXN3aXRjaCAoY3VyLT5tZW1fdHlwZSkgewog CWNhc2UgVFRNX1BMX1ZSQU06CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfdnJhbV9tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92 cmFtX21nci5jCmluZGV4IDlkOTM0YzA3ZmE2Yi4uY2Q5NGY2ZWZiN2NiIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuYwpAQCAtMjUsNiArMjUsNyBAQAog I2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+CiAjaW5jbHVkZSA8ZHJtL3R0bS90dG1fcmFu Z2VfbWFuYWdlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+CisjaW5jbHVkZSA8ZHJtL2Ry bV9idWRkeS5oPgogCiAjaW5jbHVkZSAiYW1kZ3B1LmgiCiAjaW5jbHVkZSAiYW1kZ3B1X3ZtLmgi CkBAIC01MiwxNSArNTMsMTUgQEAgdG9fYW1kZ3B1X2RldmljZShzdHJ1Y3QgYW1kZ3B1X3ZyYW1f bWdyICptZ3IpCiAJcmV0dXJuIGNvbnRhaW5lcl9vZihtZ3IsIHN0cnVjdCBhbWRncHVfZGV2aWNl LCBtbWFuLnZyYW1fbWdyKTsKIH0KIAotc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX2J1ZGR5X2Js b2NrICoKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGdwdV9idWRkeV9ibG9jayAqCiBhbWRncHVfdnJh bV9tZ3JfZmlyc3RfYmxvY2soc3RydWN0IGxpc3RfaGVhZCAqbGlzdCkKIHsKLQlyZXR1cm4gbGlz dF9maXJzdF9lbnRyeV9vcl9udWxsKGxpc3QsIHN0cnVjdCBkcm1fYnVkZHlfYmxvY2ssIGxpbmsp OworCXJldHVybiBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwobGlzdCwgc3RydWN0IGdwdV9idWRk eV9ibG9jaywgbGluayk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBhbWRncHVfaXNfdnJhbV9t Z3JfYmxvY2tzX2NvbnRpZ3VvdXMoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKIHsKLQlzdHJ1Y3Qg ZHJtX2J1ZGR5X2Jsb2NrICpibG9jazsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jazsK IAl1NjQgc3RhcnQsIHNpemU7CiAKIAlibG9jayA9IGFtZGdwdV92cmFtX21ncl9maXJzdF9ibG9j ayhoZWFkKTsKQEAgLTcxLDcgKzcyLDcgQEAgc3RhdGljIGlubGluZSBib29sIGFtZGdwdV9pc192 cmFtX21ncl9ibG9ja3NfY29udGlndW91cyhzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQogCQlzdGFy dCA9IGFtZGdwdV92cmFtX21ncl9ibG9ja19zdGFydChibG9jayk7CiAJCXNpemUgPSBhbWRncHVf dnJhbV9tZ3JfYmxvY2tfc2l6ZShibG9jayk7CiAKLQkJYmxvY2sgPSBsaXN0X2VudHJ5KGJsb2Nr LT5saW5rLm5leHQsIHN0cnVjdCBkcm1fYnVkZHlfYmxvY2ssIGxpbmspOworCQlibG9jayA9IGxp c3RfZW50cnkoYmxvY2stPmxpbmsubmV4dCwgc3RydWN0IGdwdV9idWRkeV9ibG9jaywgbGluayk7 CiAJCWlmIChzdGFydCArIHNpemUgIT0gYW1kZ3B1X3ZyYW1fbWdyX2Jsb2NrX3N0YXJ0KGJsb2Nr KSkKIAkJCXJldHVybiBmYWxzZTsKIAl9CkBAIC04MSw3ICs4Miw3IEBAIHN0YXRpYyBpbmxpbmUg Ym9vbCBhbWRncHVfaXNfdnJhbV9tZ3JfYmxvY2tzX2NvbnRpZ3VvdXMoc3RydWN0IGxpc3RfaGVh ZCAqaGVhZCkKIAogc3RhdGljIGlubGluZSB1NjQgYW1kZ3B1X3ZyYW1fbWdyX2Jsb2Nrc19zaXpl KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCiB7Ci0Jc3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxv Y2s7CisJc3RydWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2s7CiAJdTY0IHNpemUgPSAwOwogCiAJ bGlzdF9mb3JfZWFjaF9lbnRyeShibG9jaywgaGVhZCwgbGluaykKQEAgLTI1NCw3ICsyNTUsNyBA QCBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGFtZGdwdV92cmFtX21ncl9hdHRyX2dyb3Vw ID0gewogICogQ2FsY3VsYXRlIGhvdyBtYW55IGJ5dGVzIG9mIHRoZSBEUk0gQlVERFkgYmxvY2sg YXJlIGluc2lkZSB2aXNpYmxlIFZSQU0KICAqLwogc3RhdGljIHU2NCBhbWRncHVfdnJhbV9tZ3Jf dmlzX3NpemUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCi0JCQkJICAgIHN0cnVjdCBkcm1f YnVkZHlfYmxvY2sgKmJsb2NrKQorCQkJCSAgICBzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9j aykKIHsKIAl1NjQgc3RhcnQgPSBhbWRncHVfdnJhbV9tZ3JfYmxvY2tfc3RhcnQoYmxvY2spOwog CXU2NCBlbmQgPSBzdGFydCArIGFtZGdwdV92cmFtX21ncl9ibG9ja19zaXplKGJsb2NrKTsKQEAg LTI3OSw3ICsyODAsNyBAQCB1NjQgYW1kZ3B1X3ZyYW1fbWdyX2JvX3Zpc2libGVfc2l6ZShzdHJ1 Y3QgYW1kZ3B1X2JvICpibykKIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGFtZGdwdV90 dG1fYWRldihiby0+dGJvLmJkZXYpOwogCXN0cnVjdCB0dG1fcmVzb3VyY2UgKnJlcyA9IGJvLT50 Ym8ucmVzb3VyY2U7CiAJc3RydWN0IGFtZGdwdV92cmFtX21ncl9yZXNvdXJjZSAqdnJlcyA9IHRv X2FtZGdwdV92cmFtX21ncl9yZXNvdXJjZShyZXMpOwotCXN0cnVjdCBkcm1fYnVkZHlfYmxvY2sg KmJsb2NrOworCXN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJsb2NrOwogCXU2NCB1c2FnZSA9IDA7 CiAKIAlpZiAoYW1kZ3B1X2dtY192cmFtX2Z1bGxfdmlzaWJsZSgmYWRldi0+Z21jKSkKQEAgLTI5 OSwxNSArMzAwLDE1IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV92cmFtX21ncl9kb19yZXNlcnZlKHN0 cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuKQogewogCXN0cnVjdCBhbWRncHVfdnJhbV9t Z3IgKm1nciA9IHRvX3ZyYW1fbWdyKG1hbik7CiAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYg PSB0b19hbWRncHVfZGV2aWNlKG1ncik7Ci0Jc3RydWN0IGRybV9idWRkeSAqbW0gPSAmbWdyLT5t bTsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSA9ICZtZ3ItPm1tOwogCXN0cnVjdCBhbWRncHVfdnJh bV9yZXNlcnZhdGlvbiAqcnN2LCAqdGVtcDsKLQlzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpibG9j azsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jazsKIAl1aW50NjRfdCB2aXNfdXNhZ2U7 CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocnN2LCB0ZW1wLCAmbWdyLT5yZXNlcnZhdGlv bnNfcGVuZGluZywgYmxvY2tzKSB7Ci0JCWlmIChkcm1fYnVkZHlfYWxsb2NfYmxvY2tzKG1tLCBy c3YtPnN0YXJ0LCByc3YtPnN0YXJ0ICsgcnN2LT5zaXplLAorCQlpZiAoZ3B1X2J1ZGR5X2FsbG9j X2Jsb2NrcyhtbSwgcnN2LT5zdGFydCwgcnN2LT5zdGFydCArIHJzdi0+c2l6ZSwKIAkJCQkJICAg cnN2LT5zaXplLCBtbS0+Y2h1bmtfc2l6ZSwgJnJzdi0+YWxsb2NhdGVkLAotCQkJCQkgICBEUk1f QlVERFlfUkFOR0VfQUxMT0NBVElPTikpCisJCQkJCSAgIEdQVV9CVUREWV9SQU5HRV9BTExPQ0FU SU9OKSkKIAkJCWNvbnRpbnVlOwogCiAJCWJsb2NrID0gYW1kZ3B1X3ZyYW1fbWdyX2ZpcnN0X2Js b2NrKCZyc3YtPmFsbG9jYXRlZCk7CkBAIC00MDMsNyArNDA0LDcgQEAgaW50IGFtZGdwdV92cmFt X21ncl9xdWVyeV9hZGRyZXNzX2Jsb2NrX2luZm8oc3RydWN0IGFtZGdwdV92cmFtX21nciAqbWdy LAogCQkJdWludDY0X3QgYWRkcmVzcywgc3RydWN0IGFtZGdwdV92cmFtX2Jsb2NrX2luZm8gKmlu Zm8pCiB7CiAJc3RydWN0IGFtZGdwdV92cmFtX21ncl9yZXNvdXJjZSAqdnJlczsKLQlzdHJ1Y3Qg ZHJtX2J1ZGR5X2Jsb2NrICpibG9jazsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jazsK IAl1NjQgc3RhcnQsIHNpemU7CiAJaW50IHJldCA9IC1FTk9FTlQ7CiAKQEAgLTQ1MCw4ICs0NTEs OCBAQCBzdGF0aWMgaW50IGFtZGdwdV92cmFtX21ncl9uZXcoc3RydWN0IHR0bV9yZXNvdXJjZV9t YW5hZ2VyICptYW4sCiAJc3RydWN0IGFtZGdwdV92cmFtX21ncl9yZXNvdXJjZSAqdnJlczsKIAl1 NjQgc2l6ZSwgcmVtYWluaW5nX3NpemUsIGxwZm4sIGZwZm47CiAJdW5zaWduZWQgaW50IGFkanVz dF9kY2Nfc2l6ZSA9IDA7Ci0Jc3RydWN0IGRybV9idWRkeSAqbW0gPSAmbWdyLT5tbTsKLQlzdHJ1 Y3QgZHJtX2J1ZGR5X2Jsb2NrICpibG9jazsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSA9ICZtZ3It Pm1tOworCXN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJsb2NrOwogCXVuc2lnbmVkIGxvbmcgcGFn ZXNfcGVyX2Jsb2NrOwogCWludCByOwogCkBAIC00OTMsMTcgKzQ5NCwxNyBAQCBzdGF0aWMgaW50 IGFtZGdwdV92cmFtX21ncl9uZXcoc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4sCiAJ SU5JVF9MSVNUX0hFQUQoJnZyZXMtPmJsb2Nrcyk7CiAKIAlpZiAocGxhY2UtPmZsYWdzICYgVFRN X1BMX0ZMQUdfVE9QRE9XTikKLQkJdnJlcy0+ZmxhZ3MgfD0gRFJNX0JVRERZX1RPUERPV05fQUxM T0NBVElPTjsKKwkJdnJlcy0+ZmxhZ3MgfD0gR1BVX0JVRERZX1RPUERPV05fQUxMT0NBVElPTjsK IAogCWlmIChiby0+ZmxhZ3MgJiBBTURHUFVfR0VNX0NSRUFURV9WUkFNX0NPTlRJR1VPVVMpCi0J CXZyZXMtPmZsYWdzIHw9IERSTV9CVUREWV9DT05USUdVT1VTX0FMTE9DQVRJT047CisJCXZyZXMt PmZsYWdzIHw9IEdQVV9CVUREWV9DT05USUdVT1VTX0FMTE9DQVRJT047CiAKIAlpZiAoYm8tPmZs YWdzICYgQU1ER1BVX0dFTV9DUkVBVEVfVlJBTV9DTEVBUkVEKQotCQl2cmVzLT5mbGFncyB8PSBE Uk1fQlVERFlfQ0xFQVJfQUxMT0NBVElPTjsKKwkJdnJlcy0+ZmxhZ3MgfD0gR1BVX0JVRERZX0NM RUFSX0FMTE9DQVRJT047CiAKIAlpZiAoZnBmbiB8fCBscGZuICE9IG1nci0+bW0uc2l6ZSkKIAkJ LyogQWxsb2NhdGUgYmxvY2tzIGluIGRlc2lyZWQgcmFuZ2UgKi8KLQkJdnJlcy0+ZmxhZ3MgfD0g RFJNX0JVRERZX1JBTkdFX0FMTE9DQVRJT047CisJCXZyZXMtPmZsYWdzIHw9IEdQVV9CVUREWV9S QU5HRV9BTExPQ0FUSU9OOwogCiAJaWYgKGJvLT5mbGFncyAmIEFNREdQVV9HRU1fQ1JFQVRFX0dG WDEyX0RDQyAmJgogCSAgICBhZGV2LT5nbWMuZ21jX2Z1bmNzLT5nZXRfZGNjX2FsaWdubWVudCkK QEAgLTUxNiw3ICs1MTcsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV92cmFtX21ncl9uZXcoc3RydWN0 IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4sCiAJCWRjY19zaXplID0gcm91bmR1cF9wb3dfb2Zf dHdvKHZyZXMtPmJhc2Uuc2l6ZSArIGFkanVzdF9kY2Nfc2l6ZSk7CiAJCXJlbWFpbmluZ19zaXpl ID0gKHU2NClkY2Nfc2l6ZTsKIAotCQl2cmVzLT5mbGFncyB8PSBEUk1fQlVERFlfVFJJTV9ESVNB QkxFOworCQl2cmVzLT5mbGFncyB8PSBHUFVfQlVERFlfVFJJTV9ESVNBQkxFOwogCX0KIAogCW11 dGV4X2xvY2soJm1nci0+bG9jayk7CkBAIC01MzYsNyArNTM3LDcgQEAgc3RhdGljIGludCBhbWRn cHVfdnJhbV9tZ3JfbmV3KHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuLAogCiAJCUJV R19PTihtaW5fYmxvY2tfc2l6ZSA8IG1tLT5jaHVua19zaXplKTsKIAotCQlyID0gZHJtX2J1ZGR5 X2FsbG9jX2Jsb2NrcyhtbSwgZnBmbiwKKwkJciA9IGdwdV9idWRkeV9hbGxvY19ibG9ja3MobW0s IGZwZm4sCiAJCQkJCSAgIGxwZm4sCiAJCQkJCSAgIHNpemUsCiAJCQkJCSAgIG1pbl9ibG9ja19z aXplLApAQCAtNTQ1LDcgKzU0Niw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZyYW1fbWdyX25ldyhz dHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiwKIAogCQlpZiAodW5saWtlbHkociA9PSAt RU5PU1BDKSAmJiBwYWdlc19wZXJfYmxvY2sgPT0gfjB1bCAmJgogCQkgICAgIShwbGFjZS0+Zmxh Z3MgJiBUVE1fUExfRkxBR19DT05USUdVT1VTKSkgewotCQkJdnJlcy0+ZmxhZ3MgJj0gfkRSTV9C VUREWV9DT05USUdVT1VTX0FMTE9DQVRJT047CisJCQl2cmVzLT5mbGFncyAmPSB+R1BVX0JVRERZ X0NPTlRJR1VPVVNfQUxMT0NBVElPTjsKIAkJCXBhZ2VzX3Blcl9ibG9jayA9IG1heF90KHUzMiwg MlVMIDw8ICgyMFVMIC0gUEFHRV9TSElGVCksCiAJCQkJCQl0Ym8tPnBhZ2VfYWxpZ25tZW50KTsK IApAQCAtNTY2LDcgKzU2Nyw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZyYW1fbWdyX25ldyhzdHJ1 Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiwKIAlsaXN0X2FkZF90YWlsKCZ2cmVzLT52cmVz X25vZGUsICZtZ3ItPmFsbG9jYXRlZF92cmVzX2xpc3QpOwogCiAJaWYgKGJvLT5mbGFncyAmIEFN REdQVV9HRU1fQ1JFQVRFX1ZSQU1fQ09OVElHVU9VUyAmJiBhZGp1c3RfZGNjX3NpemUpIHsKLQkJ c3RydWN0IGRybV9idWRkeV9ibG9jayAqZGNjX2Jsb2NrOworCQlzdHJ1Y3QgZ3B1X2J1ZGR5X2Js b2NrICpkY2NfYmxvY2s7CiAJCXVuc2lnbmVkIGxvbmcgZGNjX3N0YXJ0OwogCQl1NjQgdHJpbV9z dGFydDsKIApAQCAtNTc2LDcgKzU3Nyw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZyYW1fbWdyX25l dyhzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiwKIAkJCXJvdW5kdXAoKHVuc2lnbmVk IGxvbmcpYW1kZ3B1X3ZyYW1fbWdyX2Jsb2NrX3N0YXJ0KGRjY19ibG9jayksCiAJCQkJYWRqdXN0 X2RjY19zaXplKTsKIAkJdHJpbV9zdGFydCA9ICh1NjQpZGNjX3N0YXJ0OwotCQlkcm1fYnVkZHlf YmxvY2tfdHJpbShtbSwgJnRyaW1fc3RhcnQsCisJCWdwdV9idWRkeV9ibG9ja190cmltKG1tLCAm dHJpbV9zdGFydCwKIAkJCQkgICAgICh1NjQpdnJlcy0+YmFzZS5zaXplLAogCQkJCSAgICAgJnZy ZXMtPmJsb2Nrcyk7CiAJfQpAQCAtNjE0LDcgKzYxNSw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3Zy YW1fbWdyX25ldyhzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiwKIAlyZXR1cm4gMDsK IAogZXJyb3JfZnJlZV9ibG9ja3M6Ci0JZHJtX2J1ZGR5X2ZyZWVfbGlzdChtbSwgJnZyZXMtPmJs b2NrcywgMCk7CisJZ3B1X2J1ZGR5X2ZyZWVfbGlzdChtbSwgJnZyZXMtPmJsb2NrcywgMCk7CiAJ bXV0ZXhfdW5sb2NrKCZtZ3ItPmxvY2spOwogZXJyb3JfZmluaToKIAl0dG1fcmVzb3VyY2VfZmlu aShtYW4sICZ2cmVzLT5iYXNlKTsKQEAgLTYzNyw4ICs2MzgsOCBAQCBzdGF0aWMgdm9pZCBhbWRn cHVfdnJhbV9tZ3JfZGVsKHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuLAogCXN0cnVj dCBhbWRncHVfdnJhbV9tZ3JfcmVzb3VyY2UgKnZyZXMgPSB0b19hbWRncHVfdnJhbV9tZ3JfcmVz b3VyY2UocmVzKTsKIAlzdHJ1Y3QgYW1kZ3B1X3ZyYW1fbWdyICptZ3IgPSB0b192cmFtX21nciht YW4pOwogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gdG9fYW1kZ3B1X2RldmljZShtZ3Ip OwotCXN0cnVjdCBkcm1fYnVkZHkgKm1tID0gJm1nci0+bW07Ci0Jc3RydWN0IGRybV9idWRkeV9i bG9jayAqYmxvY2s7CisJc3RydWN0IGdwdV9idWRkeSAqbW0gPSAmbWdyLT5tbTsKKwlzdHJ1Y3Qg Z3B1X2J1ZGR5X2Jsb2NrICpibG9jazsKIAl1aW50NjRfdCB2aXNfdXNhZ2UgPSAwOwogCiAJbXV0 ZXhfbG9jaygmbWdyLT5sb2NrKTsKQEAgLTY0OSw3ICs2NTAsNyBAQCBzdGF0aWMgdm9pZCBhbWRn cHVfdnJhbV9tZ3JfZGVsKHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuLAogCWxpc3Rf Zm9yX2VhY2hfZW50cnkoYmxvY2ssICZ2cmVzLT5ibG9ja3MsIGxpbmspCiAJCXZpc191c2FnZSAr PSBhbWRncHVfdnJhbV9tZ3JfdmlzX3NpemUoYWRldiwgYmxvY2spOwogCi0JZHJtX2J1ZGR5X2Zy ZWVfbGlzdChtbSwgJnZyZXMtPmJsb2NrcywgdnJlcy0+ZmxhZ3MpOworCWdwdV9idWRkeV9mcmVl X2xpc3QobW0sICZ2cmVzLT5ibG9ja3MsIHZyZXMtPmZsYWdzKTsKIAlhbWRncHVfdnJhbV9tZ3Jf ZG9fcmVzZXJ2ZShtYW4pOwogCW11dGV4X3VubG9jaygmbWdyLT5sb2NrKTsKIApAQCAtNjg4LDcg KzY4OSw3IEBAIGludCBhbWRncHVfdnJhbV9tZ3JfYWxsb2Nfc2d0KHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LAogCWlmICghKnNndCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQkvKiBEZXRlcm1p bmUgdGhlIG51bWJlciBvZiBEUk1fQlVERFkgYmxvY2tzIHRvIGV4cG9ydCAqLworCS8qIERldGVy bWluZSB0aGUgbnVtYmVyIG9mIEdQVV9CVUREWSBibG9ja3MgdG8gZXhwb3J0ICovCiAJYW1kZ3B1 X3Jlc19maXJzdChyZXMsIG9mZnNldCwgbGVuZ3RoLCAmY3Vyc29yKTsKIAl3aGlsZSAoY3Vyc29y LnJlbWFpbmluZykgewogCQludW1fZW50cmllcysrOwpAQCAtNzA0LDEwICs3MDUsMTAgQEAgaW50 IGFtZGdwdV92cmFtX21ncl9hbGxvY19zZ3Qoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJ CXNnLT5sZW5ndGggPSAwOwogCiAJLyoKLQkgKiBXYWxrIGRvd24gRFJNX0JVRERZIGJsb2NrcyB0 byBwb3B1bGF0ZSBzY2F0dGVybGlzdCBub2RlcwotCSAqIEBub3RlOiBVc2UgaXRlcmF0b3IgYXBp IHRvIGdldCBmaXJzdCB0aGUgRFJNX0JVRERZIGJsb2NrCisJICogV2FsayBkb3duIEdQVV9CVURE WSBibG9ja3MgdG8gcG9wdWxhdGUgc2NhdHRlcmxpc3Qgbm9kZXMKKwkgKiBAbm90ZTogVXNlIGl0 ZXJhdG9yIGFwaSB0byBnZXQgZmlyc3QgdGhlIEdQVV9CVUREWSBibG9jawogCSAqIGFuZCB0aGUg bnVtYmVyIG9mIGJ5dGVzIGZyb20gaXQuIEFjY2VzcyB0aGUgZm9sbG93aW5nCi0JICogRFJNX0JV RERZIGJsb2NrKHMpIGlmIG1vcmUgYnVmZmVyIG5lZWRzIHRvIGV4cG9ydGVkCisJICogR1BVX0JV RERZIGJsb2NrKHMpIGlmIG1vcmUgYnVmZmVyIG5lZWRzIHRvIGV4cG9ydGVkCiAJICovCiAJYW1k Z3B1X3Jlc19maXJzdChyZXMsIG9mZnNldCwgbGVuZ3RoLCAmY3Vyc29yKTsKIAlmb3JfZWFjaF9z Z3RhYmxlX3NnKCgqc2d0KSwgc2csIGkpIHsKQEAgLTc5MiwxMCArNzkzLDEwIEBAIHVpbnQ2NF90 IGFtZGdwdV92cmFtX21ncl92aXNfdXNhZ2Uoc3RydWN0IGFtZGdwdV92cmFtX21nciAqbWdyKQog dm9pZCBhbWRncHVfdnJhbV9tZ3JfY2xlYXJfcmVzZXRfYmxvY2tzKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KQogewogCXN0cnVjdCBhbWRncHVfdnJhbV9tZ3IgKm1nciA9ICZhZGV2LT5tbWFu LnZyYW1fbWdyOwotCXN0cnVjdCBkcm1fYnVkZHkgKm1tID0gJm1nci0+bW07CisJc3RydWN0IGdw dV9idWRkeSAqbW0gPSAmbWdyLT5tbTsKIAogCW11dGV4X2xvY2soJm1nci0+bG9jayk7Ci0JZHJt X2J1ZGR5X3Jlc2V0X2NsZWFyKG1tLCBmYWxzZSk7CisJZ3B1X2J1ZGR5X3Jlc2V0X2NsZWFyKG1t LCBmYWxzZSk7CiAJbXV0ZXhfdW5sb2NrKCZtZ3ItPmxvY2spOwogfQogCkBAIC04MTUsNyArODE2 LDcgQEAgc3RhdGljIGJvb2wgYW1kZ3B1X3ZyYW1fbWdyX2ludGVyc2VjdHMoc3RydWN0IHR0bV9y ZXNvdXJjZV9tYW5hZ2VyICptYW4sCiAJCQkJICAgICAgIHNpemVfdCBzaXplKQogewogCXN0cnVj dCBhbWRncHVfdnJhbV9tZ3JfcmVzb3VyY2UgKm1nciA9IHRvX2FtZGdwdV92cmFtX21ncl9yZXNv dXJjZShyZXMpOwotCXN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrOworCXN0cnVjdCBncHVf YnVkZHlfYmxvY2sgKmJsb2NrOwogCiAJLyogQ2hlY2sgZWFjaCBkcm0gYnVkZHkgYmxvY2sgaW5k aXZpZHVhbGx5ICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShibG9jaywgJm1nci0+YmxvY2tzLCBs aW5rKSB7CkBAIC04NDgsNyArODQ5LDcgQEAgc3RhdGljIGJvb2wgYW1kZ3B1X3ZyYW1fbWdyX2Nv bXBhdGlibGUoc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4sCiAJCQkJICAgICAgIHNp emVfdCBzaXplKQogewogCXN0cnVjdCBhbWRncHVfdnJhbV9tZ3JfcmVzb3VyY2UgKm1nciA9IHRv X2FtZGdwdV92cmFtX21ncl9yZXNvdXJjZShyZXMpOwotCXN0cnVjdCBkcm1fYnVkZHlfYmxvY2sg KmJsb2NrOworCXN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJsb2NrOwogCiAJLyogQ2hlY2sgZWFj aCBkcm0gYnVkZHkgYmxvY2sgaW5kaXZpZHVhbGx5ICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShi bG9jaywgJm1nci0+YmxvY2tzLCBsaW5rKSB7CkBAIC04NzcsNyArODc4LDcgQEAgc3RhdGljIHZv aWQgYW1kZ3B1X3ZyYW1fbWdyX2RlYnVnKHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFu LAogCQkJCSAgc3RydWN0IGRybV9wcmludGVyICpwcmludGVyKQogewogCXN0cnVjdCBhbWRncHVf dnJhbV9tZ3IgKm1nciA9IHRvX3ZyYW1fbWdyKG1hbik7Ci0Jc3RydWN0IGRybV9idWRkeSAqbW0g PSAmbWdyLT5tbTsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSA9ICZtZ3ItPm1tOwogCXN0cnVjdCBh bWRncHVfdnJhbV9yZXNlcnZhdGlvbiAqcnN2OwogCiAJZHJtX3ByaW50ZihwcmludGVyLCAiICB2 aXMgdXNhZ2U6JWxsdVxuIiwKQEAgLTkzMCw3ICs5MzEsNyBAQCBpbnQgYW1kZ3B1X3ZyYW1fbWdy X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJbWdyLT5kZWZhdWx0X3BhZ2Vfc2l6 ZSA9IFBBR0VfU0laRTsKIAogCW1hbi0+ZnVuYyA9ICZhbWRncHVfdnJhbV9tZ3JfZnVuYzsKLQll cnIgPSBkcm1fYnVkZHlfaW5pdCgmbWdyLT5tbSwgbWFuLT5zaXplLCBQQUdFX1NJWkUpOworCWVy ciA9IGdwdV9idWRkeV9pbml0KCZtZ3ItPm1tLCBtYW4tPnNpemUsIFBBR0VfU0laRSk7CiAJaWYg KGVycikKIAkJcmV0dXJuIGVycjsKIApAQCAtOTY1LDExICs5NjYsMTEgQEAgdm9pZCBhbWRncHVf dnJhbV9tZ3JfZmluaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJa2ZyZWUocnN2KTsK IAogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyc3YsIHRlbXAsICZtZ3ItPnJlc2VydmVkX3Bh Z2VzLCBibG9ja3MpIHsKLQkJZHJtX2J1ZGR5X2ZyZWVfbGlzdCgmbWdyLT5tbSwgJnJzdi0+YWxs b2NhdGVkLCAwKTsKKwkJZ3B1X2J1ZGR5X2ZyZWVfbGlzdCgmbWdyLT5tbSwgJnJzdi0+YWxsb2Nh dGVkLCAwKTsKIAkJa2ZyZWUocnN2KTsKIAl9CiAJaWYgKCFhZGV2LT5nbWMuaXNfYXBwX2FwdSkK LQkJZHJtX2J1ZGR5X2ZpbmkoJm1nci0+bW0pOworCQlncHVfYnVkZHlfZmluaSgmbWdyLT5tbSk7 CiAJbXV0ZXhfdW5sb2NrKCZtZ3ItPmxvY2spOwogCiAJdHRtX3Jlc291cmNlX21hbmFnZXJfY2xl YW51cChtYW4pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3ZyYW1fbWdyLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3Iu aAppbmRleCA4NzQ3Nzk2MTgwNTYuLjQyOWEyMWEyZTliMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZyYW1fbWdyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3ZyYW1fbWdyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogc3RydWN0 IGFtZGdwdV92cmFtX21nciB7CiAJc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyIG1hbmFnZXI7 Ci0Jc3RydWN0IGRybV9idWRkeSBtbTsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5IG1tOwogCS8qIHByb3Rl Y3RzIGFjY2VzcyB0byBidWZmZXIgb2JqZWN0cyAqLwogCXN0cnVjdCBtdXRleCBsb2NrOwogCXN0 cnVjdCBsaXN0X2hlYWQgcmVzZXJ2YXRpb25zX3BlbmRpbmc7CkBAIC01NywxOSArNTcsMTkgQEAg c3RydWN0IGFtZGdwdV92cmFtX21ncl9yZXNvdXJjZSB7CiAJc3RydWN0IGFtZGdwdV92cmVzX3Rh c2sgdGFzazsKIH07CiAKLXN0YXRpYyBpbmxpbmUgdTY0IGFtZGdwdV92cmFtX21ncl9ibG9ja19z dGFydChzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpibG9jaykKK3N0YXRpYyBpbmxpbmUgdTY0IGFt ZGdwdV92cmFtX21ncl9ibG9ja19zdGFydChzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jaykK IHsKLQlyZXR1cm4gZHJtX2J1ZGR5X2Jsb2NrX29mZnNldChibG9jayk7CisJcmV0dXJuIGdwdV9i dWRkeV9ibG9ja19vZmZzZXQoYmxvY2spOwogfQogCi1zdGF0aWMgaW5saW5lIHU2NCBhbWRncHVf dnJhbV9tZ3JfYmxvY2tfc2l6ZShzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpibG9jaykKK3N0YXRp YyBpbmxpbmUgdTY0IGFtZGdwdV92cmFtX21ncl9ibG9ja19zaXplKHN0cnVjdCBncHVfYnVkZHlf YmxvY2sgKmJsb2NrKQogewotCXJldHVybiAodTY0KVBBR0VfU0laRSA8PCBkcm1fYnVkZHlfYmxv Y2tfb3JkZXIoYmxvY2spOworCXJldHVybiAodTY0KVBBR0VfU0laRSA8PCBncHVfYnVkZHlfYmxv Y2tfb3JkZXIoYmxvY2spOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgYW1kZ3B1X3ZyYW1fbWdy X2lzX2NsZWFyZWQoc3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2spCitzdGF0aWMgaW5saW5l IGJvb2wgYW1kZ3B1X3ZyYW1fbWdyX2lzX2NsZWFyZWQoc3RydWN0IGdwdV9idWRkeV9ibG9jayAq YmxvY2spCiB7Ci0JcmV0dXJuIGRybV9idWRkeV9ibG9ja19pc19jbGVhcihibG9jayk7CisJcmV0 dXJuIGdwdV9idWRkeV9ibG9ja19pc19jbGVhcihibG9jayk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg c3RydWN0IGFtZGdwdV92cmFtX21ncl9yZXNvdXJjZSAqCkBAIC04Miw4ICs4Miw4IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBhbWRncHVfdnJhbV9tZ3Jfc2V0X2NsZWFyZWQoc3RydWN0IHR0bV9yZXNv dXJjZSAqcmVzKQogewogCXN0cnVjdCBhbWRncHVfdnJhbV9tZ3JfcmVzb3VyY2UgKmFyZXMgPSB0 b19hbWRncHVfdnJhbV9tZ3JfcmVzb3VyY2UocmVzKTsKIAotCVdBUk5fT04oYXJlcy0+ZmxhZ3Mg JiBEUk1fQlVERFlfQ0xFQVJFRCk7Ci0JYXJlcy0+ZmxhZ3MgfD0gRFJNX0JVRERZX0NMRUFSRUQ7 CisJV0FSTl9PTihhcmVzLT5mbGFncyAmIEdQVV9CVUREWV9DTEVBUkVEKTsKKwlhcmVzLT5mbGFn cyB8PSBHUFVfQlVERFlfQ0xFQVJFRDsKIH0KIAogaW50IGFtZGdwdV92cmFtX21ncl9xdWVyeV9h ZGRyZXNzX2Jsb2NrX2luZm8oc3RydWN0IGFtZGdwdV92cmFtX21nciAqbWdyLApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9idWRkeS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9idWRk eS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODQxZjNkZTVmMzA3 Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9idWRkeS5jCkBAIC0wLDAg KzEsNzcgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKy8qCisgKiBDb3B5cmln aHQgwqkgMjAyMSBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpbmNsdWRlIDxrdW5pdC90ZXN0 LWJ1Zy5oPgorCisjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+CisjaW5jbHVkZSA8bGludXgva21l bWxlYWsuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9zaXpl cy5oPgorCisjaW5jbHVkZSA8bGludXgvZ3B1X2J1ZGR5Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9i dWRkeS5oPgorI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KKworLyoqCisgKiBkcm1fYnVkZHlf YmxvY2tfcHJpbnQgLSBwcmludCBibG9jayBpbmZvcm1hdGlvbgorICoKKyAqIEBtbTogRFJNIGJ1 ZGR5IG1hbmFnZXIKKyAqIEBibG9jazogRFJNIGJ1ZGR5IGJsb2NrCisgKiBAcDogRFJNIHByaW50 ZXIgdG8gdXNlCisgKi8KK3ZvaWQgZHJtX2J1ZGR5X2Jsb2NrX3ByaW50KHN0cnVjdCBncHVfYnVk ZHkgKm1tLAorCQkJICAgc3RydWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2ssCisJCQkgICBzdHJ1 Y3QgZHJtX3ByaW50ZXIgKnApCit7CisJdTY0IHN0YXJ0ID0gZ3B1X2J1ZGR5X2Jsb2NrX29mZnNl dChibG9jayk7CisJdTY0IHNpemUgPSBncHVfYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2spOwor CisJZHJtX3ByaW50ZihwLCAiJSMwMThsbHgtJSMwMThsbHg6ICVsbHVcbiIsIHN0YXJ0LCBzdGFy dCArIHNpemUsIHNpemUpOworfQorRVhQT1JUX1NZTUJPTChkcm1fYnVkZHlfYmxvY2tfcHJpbnQp OworCisvKioKKyAqIGRybV9idWRkeV9wcmludCAtIHByaW50IGFsbG9jYXRvciBzdGF0ZQorICoK KyAqIEBtbTogRFJNIGJ1ZGR5IG1hbmFnZXIKKyAqIEBwOiBEUk0gcHJpbnRlciB0byB1c2UKKyAq Lwordm9pZCBkcm1fYnVkZHlfcHJpbnQoc3RydWN0IGdwdV9idWRkeSAqbW0sIHN0cnVjdCBkcm1f cHJpbnRlciAqcCkKK3sKKwlpbnQgb3JkZXI7CisKKwlkcm1fcHJpbnRmKHAsICJjaHVua19zaXpl OiAlbGx1S2lCLCB0b3RhbDogJWxsdU1pQiwgZnJlZTogJWxsdU1pQiwgY2xlYXJfZnJlZTogJWxs dU1pQlxuIiwKKwkJICAgbW0tPmNodW5rX3NpemUgPj4gMTAsIG1tLT5zaXplID4+IDIwLCBtbS0+ YXZhaWwgPj4gMjAsIG1tLT5jbGVhcl9hdmFpbCA+PiAyMCk7CisKKwlmb3IgKG9yZGVyID0gbW0t Pm1heF9vcmRlcjsgb3JkZXIgPj0gMDsgb3JkZXItLSkgeworCQlzdHJ1Y3QgZ3B1X2J1ZGR5X2Js b2NrICpibG9jaywgKnRtcDsKKwkJc3RydWN0IHJiX3Jvb3QgKnJvb3Q7CisJCXU2NCBjb3VudCA9 IDAsIGZyZWU7CisJCXVuc2lnbmVkIGludCB0cmVlOworCisJCWZvcl9lYWNoX2ZyZWVfdHJlZSh0 cmVlKSB7CisJCQlyb290ID0gJm1tLT5mcmVlX3RyZWVzW3RyZWVdW29yZGVyXTsKKworCQkJcmJ0 cmVlX3Bvc3RvcmRlcl9mb3JfZWFjaF9lbnRyeV9zYWZlKGJsb2NrLCB0bXAsIHJvb3QsIHJiKSB7 CisJCQkJQlVHX09OKCFncHVfYnVkZHlfYmxvY2tfaXNfZnJlZShibG9jaykpOworCQkJCWNvdW50 Kys7CisJCQl9CisJCX0KKworCQlkcm1fcHJpbnRmKHAsICJvcmRlci0lMmQgIiwgb3JkZXIpOwor CisJCWZyZWUgPSBjb3VudCAqIChtbS0+Y2h1bmtfc2l6ZSA8PCBvcmRlcik7CisJCWlmIChmcmVl IDwgU1pfMU0pCisJCQlkcm1fcHJpbnRmKHAsICJmcmVlOiAlOGxsdSBLaUIiLCBmcmVlID4+IDEw KTsKKwkJZWxzZQorCQkJZHJtX3ByaW50ZihwLCAiZnJlZTogJThsbHUgTWlCIiwgZnJlZSA+PiAy MCk7CisKKwkJZHJtX3ByaW50ZihwLCAiLCBibG9ja3M6ICVsbHVcbiIsIGNvdW50KTsKKwl9Cit9 CitFWFBPUlRfU1lNQk9MKGRybV9idWRkeV9wcmludCk7CisKK01PRFVMRV9ERVNDUklQVElPTigi RFJNLXNwZWNpZmljIEdQVSBCdWRkeSBBbGxvY2F0b3IgUHJpbnQgSGVscGVycyIpOworTU9EVUxF X0xJQ0VOU0UoIkR1YWwgTUlUL0dQTCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zY2F0dGVybGlzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2F0dGVy bGlzdC5jCmluZGV4IDMwMjQ2ZjAyYmNmZS4uNmEzNGRhZTEzNzY5IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjYXR0ZXJsaXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9zY2F0dGVybGlzdC5jCkBAIC0xNjcsOSArMTY3LDkgQEAgc3RydWN0IGk5MTVf cmVmY3Rfc2d0ICppOTE1X3JzZ3RfZnJvbV9idWRkeV9yZXNvdXJjZShzdHJ1Y3QgdHRtX3Jlc291 cmNlICpyZXMsCiAJc3RydWN0IGk5MTVfdHRtX2J1ZGR5X3Jlc291cmNlICpibWFuX3JlcyA9IHRv X3R0bV9idWRkeV9yZXNvdXJjZShyZXMpOwogCWNvbnN0IHU2NCBzaXplID0gcmVzLT5zaXplOwog CWNvbnN0IHUzMiBtYXhfc2VnbWVudCA9IHJvdW5kX2Rvd24oVUlOVF9NQVgsIHBhZ2VfYWxpZ25t ZW50KTsKLQlzdHJ1Y3QgZHJtX2J1ZGR5ICptbSA9IGJtYW5fcmVzLT5tbTsKKwlzdHJ1Y3QgZ3B1 X2J1ZGR5ICptbSA9IGJtYW5fcmVzLT5tbTsKIAlzdHJ1Y3QgbGlzdF9oZWFkICpibG9ja3MgPSAm Ym1hbl9yZXMtPmJsb2NrczsKLQlzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpibG9jazsKKwlzdHJ1 Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jazsKIAlzdHJ1Y3QgaTkxNV9yZWZjdF9zZ3QgKnJzZ3Q7 CiAJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKIAlzdHJ1Y3Qgc2dfdGFibGUgKnN0OwpAQCAtMjAy LDggKzIwMiw4IEBAIHN0cnVjdCBpOTE1X3JlZmN0X3NndCAqaTkxNV9yc2d0X2Zyb21fYnVkZHlf cmVzb3VyY2Uoc3RydWN0IHR0bV9yZXNvdXJjZSAqcmVzLAogCWxpc3RfZm9yX2VhY2hfZW50cnko YmxvY2ssIGJsb2NrcywgbGluaykgewogCQl1NjQgYmxvY2tfc2l6ZSwgb2Zmc2V0OwogCi0JCWJs b2NrX3NpemUgPSBtaW5fdCh1NjQsIHNpemUsIGRybV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9j aykpOwotCQlvZmZzZXQgPSBkcm1fYnVkZHlfYmxvY2tfb2Zmc2V0KGJsb2NrKTsKKwkJYmxvY2tf c2l6ZSA9IG1pbl90KHU2NCwgc2l6ZSwgZ3B1X2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2NrKSk7 CisJCW9mZnNldCA9IGdwdV9idWRkeV9ibG9ja19vZmZzZXQoYmxvY2spOwogCiAJCXdoaWxlIChi bG9ja19zaXplKSB7CiAJCQl1NjQgbGVuOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV90dG1fYnVkZHlfbWFuYWdlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90 dG1fYnVkZHlfbWFuYWdlci5jCmluZGV4IDZiMjU2ZDk1YmFkZC4uYzVjYTkwMDg4NzA1IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3R0bV9idWRkeV9tYW5hZ2VyLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90dG1fYnVkZHlfbWFuYWdlci5jCkBAIC02LDYg KzYsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KIAogI2luY2x1ZGUgPGxpbnV4L2dwdV9i dWRkeS5oPgorI2luY2x1ZGUgPGRybS9kcm1fYnVkZHkuaD4KICNpbmNsdWRlIDxkcm0vZHJtX3By aW50Lmg+CiAjaW5jbHVkZSA8ZHJtL3R0bS90dG1fcGxhY2VtZW50Lmg+CiAjaW5jbHVkZSA8ZHJt L3R0bS90dG1fYm8uaD4KQEAgLTE2LDcgKzE3LDcgQEAKIAogc3RydWN0IGk5MTVfdHRtX2J1ZGR5 X21hbmFnZXIgewogCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciBtYW5hZ2VyOwotCXN0cnVj dCBkcm1fYnVkZHkgbW07CisJc3RydWN0IGdwdV9idWRkeSBtbTsKIAlzdHJ1Y3QgbGlzdF9oZWFk IHJlc2VydmVkOwogCXN0cnVjdCBtdXRleCBsb2NrOwogCXVuc2lnbmVkIGxvbmcgdmlzaWJsZV9z aXplOwpAQCAtMzgsNyArMzksNyBAQCBzdGF0aWMgaW50IGk5MTVfdHRtX2J1ZGR5X21hbl9hbGxv YyhzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiwKIHsKIAlzdHJ1Y3QgaTkxNV90dG1f YnVkZHlfbWFuYWdlciAqYm1hbiA9IHRvX2J1ZGR5X21hbmFnZXIobWFuKTsKIAlzdHJ1Y3QgaTkx NV90dG1fYnVkZHlfcmVzb3VyY2UgKmJtYW5fcmVzOwotCXN0cnVjdCBkcm1fYnVkZHkgKm1tID0g JmJtYW4tPm1tOworCXN0cnVjdCBncHVfYnVkZHkgKm1tID0gJmJtYW4tPm1tOwogCXVuc2lnbmVk IGxvbmcgbl9wYWdlcywgbHBmbjsKIAl1NjQgbWluX3BhZ2Vfc2l6ZTsKIAl1NjQgc2l6ZTsKQEAg LTU3LDEzICs1OCwxMyBAQCBzdGF0aWMgaW50IGk5MTVfdHRtX2J1ZGR5X21hbl9hbGxvYyhzdHJ1 Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiwKIAlibWFuX3Jlcy0+bW0gPSBtbTsKIAogCWlm IChwbGFjZS0+ZmxhZ3MgJiBUVE1fUExfRkxBR19UT1BET1dOKQotCQlibWFuX3Jlcy0+ZmxhZ3Mg fD0gRFJNX0JVRERZX1RPUERPV05fQUxMT0NBVElPTjsKKwkJYm1hbl9yZXMtPmZsYWdzIHw9IEdQ VV9CVUREWV9UT1BET1dOX0FMTE9DQVRJT047CiAKIAlpZiAocGxhY2UtPmZsYWdzICYgVFRNX1BM X0ZMQUdfQ09OVElHVU9VUykKLQkJYm1hbl9yZXMtPmZsYWdzIHw9IERSTV9CVUREWV9DT05USUdV T1VTX0FMTE9DQVRJT047CisJCWJtYW5fcmVzLT5mbGFncyB8PSBHUFVfQlVERFlfQ09OVElHVU9V U19BTExPQ0FUSU9OOwogCiAJaWYgKHBsYWNlLT5mcGZuIHx8IGxwZm4gIT0gbWFuLT5zaXplKQot CQlibWFuX3Jlcy0+ZmxhZ3MgfD0gRFJNX0JVRERZX1JBTkdFX0FMTE9DQVRJT047CisJCWJtYW5f cmVzLT5mbGFncyB8PSBHUFVfQlVERFlfUkFOR0VfQUxMT0NBVElPTjsKIAogCUdFTV9CVUdfT04o IWJtYW5fcmVzLT5iYXNlLnNpemUpOwogCXNpemUgPSBibWFuX3Jlcy0+YmFzZS5zaXplOwpAQCAt ODksNyArOTAsNyBAQCBzdGF0aWMgaW50IGk5MTVfdHRtX2J1ZGR5X21hbl9hbGxvYyhzdHJ1Y3Qg dHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiwKIAkJZ290byBlcnJfZnJlZV9yZXM7CiAJfQogCi0J ZXJyID0gZHJtX2J1ZGR5X2FsbG9jX2Jsb2NrcyhtbSwgKHU2NClwbGFjZS0+ZnBmbiA8PCBQQUdF X1NISUZULAorCWVyciA9IGdwdV9idWRkeV9hbGxvY19ibG9ja3MobW0sICh1NjQpcGxhY2UtPmZw Zm4gPDwgUEFHRV9TSElGVCwKIAkJCQkgICAgICh1NjQpbHBmbiA8PCBQQUdFX1NISUZULAogCQkJ CSAgICAgKHU2NCluX3BhZ2VzIDw8IFBBR0VfU0hJRlQsCiAJCQkJICAgICBtaW5fcGFnZV9zaXpl LApAQCAtMTAxLDE1ICsxMDIsMTUgQEAgc3RhdGljIGludCBpOTE1X3R0bV9idWRkeV9tYW5fYWxs b2Moc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4sCiAJaWYgKGxwZm4gPD0gYm1hbi0+ dmlzaWJsZV9zaXplKSB7CiAJCWJtYW5fcmVzLT51c2VkX3Zpc2libGVfc2l6ZSA9IFBGTl9VUChi bWFuX3Jlcy0+YmFzZS5zaXplKTsKIAl9IGVsc2UgewotCQlzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2Nr ICpibG9jazsKKwkJc3RydWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2s7CiAKIAkJbGlzdF9mb3Jf ZWFjaF9lbnRyeShibG9jaywgJmJtYW5fcmVzLT5ibG9ja3MsIGxpbmspIHsKIAkJCXVuc2lnbmVk IGxvbmcgc3RhcnQgPQotCQkJCWRybV9idWRkeV9ibG9ja19vZmZzZXQoYmxvY2spID4+IFBBR0Vf U0hJRlQ7CisJCQkJZ3B1X2J1ZGR5X2Jsb2NrX29mZnNldChibG9jaykgPj4gUEFHRV9TSElGVDsK IAogCQkJaWYgKHN0YXJ0IDwgYm1hbi0+dmlzaWJsZV9zaXplKSB7CiAJCQkJdW5zaWduZWQgbG9u ZyBlbmQgPSBzdGFydCArCi0JCQkJCShkcm1fYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2spID4+ IFBBR0VfU0hJRlQpOworCQkJCQkoZ3B1X2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2NrKSA+PiBQ QUdFX1NISUZUKTsKIAogCQkJCWJtYW5fcmVzLT51c2VkX3Zpc2libGVfc2l6ZSArPQogCQkJCQlt aW4oZW5kLCBibWFuLT52aXNpYmxlX3NpemUpIC0gc3RhcnQ7CkBAIC0xMjYsNyArMTI3LDcgQEAg c3RhdGljIGludCBpOTE1X3R0bV9idWRkeV9tYW5fYWxsb2Moc3RydWN0IHR0bV9yZXNvdXJjZV9t YW5hZ2VyICptYW4sCiAJcmV0dXJuIDA7CiAKIGVycl9mcmVlX2Jsb2NrczoKLQlkcm1fYnVkZHlf ZnJlZV9saXN0KG1tLCAmYm1hbl9yZXMtPmJsb2NrcywgMCk7CisJZ3B1X2J1ZGR5X2ZyZWVfbGlz dChtbSwgJmJtYW5fcmVzLT5ibG9ja3MsIDApOwogCW11dGV4X3VubG9jaygmYm1hbi0+bG9jayk7 CiBlcnJfZnJlZV9yZXM6CiAJdHRtX3Jlc291cmNlX2ZpbmkobWFuLCAmYm1hbl9yZXMtPmJhc2Up OwpAQCAtMTQxLDcgKzE0Miw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfdHRtX2J1ZGR5X21hbl9mcmVl KHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuLAogCXN0cnVjdCBpOTE1X3R0bV9idWRk eV9tYW5hZ2VyICpibWFuID0gdG9fYnVkZHlfbWFuYWdlcihtYW4pOwogCiAJbXV0ZXhfbG9jaygm Ym1hbi0+bG9jayk7Ci0JZHJtX2J1ZGR5X2ZyZWVfbGlzdCgmYm1hbi0+bW0sICZibWFuX3Jlcy0+ YmxvY2tzLCAwKTsKKwlncHVfYnVkZHlfZnJlZV9saXN0KCZibWFuLT5tbSwgJmJtYW5fcmVzLT5i bG9ja3MsIDApOwogCWJtYW4tPnZpc2libGVfYXZhaWwgKz0gYm1hbl9yZXMtPnVzZWRfdmlzaWJs ZV9zaXplOwogCW11dGV4X3VubG9jaygmYm1hbi0+bG9jayk7CiAKQEAgLTE1Niw4ICsxNTcsOCBA QCBzdGF0aWMgYm9vbCBpOTE1X3R0bV9idWRkeV9tYW5faW50ZXJzZWN0cyhzdHJ1Y3QgdHRtX3Jl c291cmNlX21hbmFnZXIgKm1hbiwKIHsKIAlzdHJ1Y3QgaTkxNV90dG1fYnVkZHlfcmVzb3VyY2Ug KmJtYW5fcmVzID0gdG9fdHRtX2J1ZGR5X3Jlc291cmNlKHJlcyk7CiAJc3RydWN0IGk5MTVfdHRt X2J1ZGR5X21hbmFnZXIgKmJtYW4gPSB0b19idWRkeV9tYW5hZ2VyKG1hbik7Ci0Jc3RydWN0IGRy bV9idWRkeSAqbW0gPSAmYm1hbi0+bW07Ci0Jc3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2s7 CisJc3RydWN0IGdwdV9idWRkeSAqbW0gPSAmYm1hbi0+bW07CisJc3RydWN0IGdwdV9idWRkeV9i bG9jayAqYmxvY2s7CiAKIAlpZiAoIXBsYWNlLT5mcGZuICYmICFwbGFjZS0+bHBmbikKIAkJcmV0 dXJuIHRydWU7CkBAIC0xNzYsOSArMTc3LDkgQEAgc3RhdGljIGJvb2wgaTkxNV90dG1fYnVkZHlf bWFuX2ludGVyc2VjdHMoc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4sCiAJLyogQ2hl Y2sgZWFjaCBkcm0gYnVkZHkgYmxvY2sgaW5kaXZpZHVhbGx5ICovCiAJbGlzdF9mb3JfZWFjaF9l bnRyeShibG9jaywgJmJtYW5fcmVzLT5ibG9ja3MsIGxpbmspIHsKIAkJdW5zaWduZWQgbG9uZyBm cGZuID0KLQkJCWRybV9idWRkeV9ibG9ja19vZmZzZXQoYmxvY2spID4+IFBBR0VfU0hJRlQ7CisJ CQlncHVfYnVkZHlfYmxvY2tfb2Zmc2V0KGJsb2NrKSA+PiBQQUdFX1NISUZUOwogCQl1bnNpZ25l ZCBsb25nIGxwZm4gPSBmcGZuICsKLQkJCShkcm1fYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2sp ID4+IFBBR0VfU0hJRlQpOworCQkJKGdwdV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9jaykgPj4g UEFHRV9TSElGVCk7CiAKIAkJaWYgKHBsYWNlLT5mcGZuIDwgbHBmbiAmJiBwbGFjZS0+bHBmbiA+ IGZwZm4pCiAJCQlyZXR1cm4gdHJ1ZTsKQEAgLTE5NCw4ICsxOTUsOCBAQCBzdGF0aWMgYm9vbCBp OTE1X3R0bV9idWRkeV9tYW5fY29tcGF0aWJsZShzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIg Km1hbiwKIHsKIAlzdHJ1Y3QgaTkxNV90dG1fYnVkZHlfcmVzb3VyY2UgKmJtYW5fcmVzID0gdG9f dHRtX2J1ZGR5X3Jlc291cmNlKHJlcyk7CiAJc3RydWN0IGk5MTVfdHRtX2J1ZGR5X21hbmFnZXIg KmJtYW4gPSB0b19idWRkeV9tYW5hZ2VyKG1hbik7Ci0Jc3RydWN0IGRybV9idWRkeSAqbW0gPSAm Ym1hbi0+bW07Ci0Jc3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2s7CisJc3RydWN0IGdwdV9i dWRkeSAqbW0gPSAmYm1hbi0+bW07CisJc3RydWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2s7CiAK IAlpZiAoIXBsYWNlLT5mcGZuICYmICFwbGFjZS0+bHBmbikKIAkJcmV0dXJuIHRydWU7CkBAIC0y MDksOSArMjEwLDkgQEAgc3RhdGljIGJvb2wgaTkxNV90dG1fYnVkZHlfbWFuX2NvbXBhdGlibGUo c3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4sCiAJLyogQ2hlY2sgZWFjaCBkcm0gYnVk ZHkgYmxvY2sgaW5kaXZpZHVhbGx5ICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShibG9jaywgJmJt YW5fcmVzLT5ibG9ja3MsIGxpbmspIHsKIAkJdW5zaWduZWQgbG9uZyBmcGZuID0KLQkJCWRybV9i dWRkeV9ibG9ja19vZmZzZXQoYmxvY2spID4+IFBBR0VfU0hJRlQ7CisJCQlncHVfYnVkZHlfYmxv Y2tfb2Zmc2V0KGJsb2NrKSA+PiBQQUdFX1NISUZUOwogCQl1bnNpZ25lZCBsb25nIGxwZm4gPSBm cGZuICsKLQkJCShkcm1fYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2spID4+IFBBR0VfU0hJRlQp OworCQkJKGdwdV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9jaykgPj4gUEFHRV9TSElGVCk7CiAK IAkJaWYgKGZwZm4gPCBwbGFjZS0+ZnBmbiB8fCBscGZuID4gcGxhY2UtPmxwZm4pCiAJCQlyZXR1 cm4gZmFsc2U7CkBAIC0yMjQsNyArMjI1LDcgQEAgc3RhdGljIHZvaWQgaTkxNV90dG1fYnVkZHlf bWFuX2RlYnVnKHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuLAogCQkJCSAgICAgc3Ry dWN0IGRybV9wcmludGVyICpwcmludGVyKQogewogCXN0cnVjdCBpOTE1X3R0bV9idWRkeV9tYW5h Z2VyICpibWFuID0gdG9fYnVkZHlfbWFuYWdlcihtYW4pOwotCXN0cnVjdCBkcm1fYnVkZHlfYmxv Y2sgKmJsb2NrOworCXN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJsb2NrOwogCiAJbXV0ZXhfbG9j aygmYm1hbi0+bG9jayk7CiAJZHJtX3ByaW50ZihwcmludGVyLCAiZGVmYXVsdF9wYWdlX3NpemU6 ICVsbHVLaUJcbiIsCkBAIC0yOTMsNyArMjk0LDcgQEAgaW50IGk5MTVfdHRtX2J1ZGR5X21hbl9p bml0KHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LAogCWlmICghYm1hbikKIAkJcmV0dXJuIC1FTk9N RU07CiAKLQllcnIgPSBkcm1fYnVkZHlfaW5pdCgmYm1hbi0+bW0sIHNpemUsIGNodW5rX3NpemUp OworCWVyciA9IGdwdV9idWRkeV9pbml0KCZibWFuLT5tbSwgc2l6ZSwgY2h1bmtfc2l6ZSk7CiAJ aWYgKGVycikKIAkJZ290byBlcnJfZnJlZV9ibWFuOwogCkBAIC0zMzMsNyArMzM0LDcgQEAgaW50 IGk5MTVfdHRtX2J1ZGR5X21hbl9maW5pKHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LCB1bnNpZ25l ZCBpbnQgdHlwZSkKIHsKIAlzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiA9IHR0bV9t YW5hZ2VyX3R5cGUoYmRldiwgdHlwZSk7CiAJc3RydWN0IGk5MTVfdHRtX2J1ZGR5X21hbmFnZXIg KmJtYW4gPSB0b19idWRkeV9tYW5hZ2VyKG1hbik7Ci0Jc3RydWN0IGRybV9idWRkeSAqbW0gPSAm Ym1hbi0+bW07CisJc3RydWN0IGdwdV9idWRkeSAqbW0gPSAmYm1hbi0+bW07CiAJaW50IHJldDsK IAogCXR0bV9yZXNvdXJjZV9tYW5hZ2VyX3NldF91c2VkKG1hbiwgZmFsc2UpOwpAQCAtMzQ1LDgg KzM0Niw4IEBAIGludCBpOTE1X3R0bV9idWRkeV9tYW5fZmluaShzdHJ1Y3QgdHRtX2RldmljZSAq YmRldiwgdW5zaWduZWQgaW50IHR5cGUpCiAJdHRtX3NldF9kcml2ZXJfbWFuYWdlcihiZGV2LCB0 eXBlLCBOVUxMKTsKIAogCW11dGV4X2xvY2soJmJtYW4tPmxvY2spOwotCWRybV9idWRkeV9mcmVl X2xpc3QobW0sICZibWFuLT5yZXNlcnZlZCwgMCk7Ci0JZHJtX2J1ZGR5X2ZpbmkobW0pOworCWdw dV9idWRkeV9mcmVlX2xpc3QobW0sICZibWFuLT5yZXNlcnZlZCwgMCk7CisJZ3B1X2J1ZGR5X2Zp bmkobW0pOwogCWJtYW4tPnZpc2libGVfYXZhaWwgKz0gYm1hbi0+dmlzaWJsZV9yZXNlcnZlZDsK IAlXQVJOX09OX09OQ0UoYm1hbi0+dmlzaWJsZV9hdmFpbCAhPSBibWFuLT52aXNpYmxlX3NpemUp OwogCW11dGV4X3VubG9jaygmYm1hbi0+bG9jayk7CkBAIC0zNzEsMTUgKzM3MiwxNSBAQCBpbnQg aTkxNV90dG1fYnVkZHlfbWFuX3Jlc2VydmUoc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICpt YW4sCiAJCQkgICAgICAgdTY0IHN0YXJ0LCB1NjQgc2l6ZSkKIHsKIAlzdHJ1Y3QgaTkxNV90dG1f YnVkZHlfbWFuYWdlciAqYm1hbiA9IHRvX2J1ZGR5X21hbmFnZXIobWFuKTsKLQlzdHJ1Y3QgZHJt X2J1ZGR5ICptbSA9ICZibWFuLT5tbTsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSA9ICZibWFuLT5t bTsKIAl1bnNpZ25lZCBsb25nIGZwZm4gPSBzdGFydCA+PiBQQUdFX1NISUZUOwogCXVuc2lnbmVk IGxvbmcgZmxhZ3MgPSAwOwogCWludCByZXQ7CiAKLQlmbGFncyB8PSBEUk1fQlVERFlfUkFOR0Vf QUxMT0NBVElPTjsKKwlmbGFncyB8PSBHUFVfQlVERFlfUkFOR0VfQUxMT0NBVElPTjsKIAogCW11 dGV4X2xvY2soJmJtYW4tPmxvY2spOwotCXJldCA9IGRybV9idWRkeV9hbGxvY19ibG9ja3MobW0s IHN0YXJ0LAorCXJldCA9IGdwdV9idWRkeV9hbGxvY19ibG9ja3MobW0sIHN0YXJ0LAogCQkJCSAg ICAgc3RhcnQgKyBzaXplLAogCQkJCSAgICAgc2l6ZSwgbW0tPmNodW5rX3NpemUsCiAJCQkJICAg ICAmYm1hbi0+cmVzZXJ2ZWQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3R0bV9idWRkeV9tYW5hZ2VyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3R0bV9idWRk eV9tYW5hZ2VyLmgKaW5kZXggZDY0NjIwNzEyODMwLi4xY2ZmMDE4YzE2ODkgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHRtX2J1ZGR5X21hbmFnZXIuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3R0bV9idWRkeV9tYW5hZ2VyLmgKQEAgLTEzLDcgKzEzLDcg QEAKIAogc3RydWN0IHR0bV9kZXZpY2U7CiBzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXI7Ci1z dHJ1Y3QgZHJtX2J1ZGR5Oworc3RydWN0IGdwdV9idWRkeTsKIAogLyoqCiAgKiBzdHJ1Y3QgaTkx NV90dG1fYnVkZHlfcmVzb3VyY2UKQEAgLTMzLDcgKzMzLDcgQEAgc3RydWN0IGk5MTVfdHRtX2J1 ZGR5X3Jlc291cmNlIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGJsb2NrczsKIAl1bnNpZ25lZCBsb25n IGZsYWdzOwogCXVuc2lnbmVkIGxvbmcgdXNlZF92aXNpYmxlX3NpemU7Ci0Jc3RydWN0IGRybV9i dWRkeSAqbW07CisJc3RydWN0IGdwdV9idWRkeSAqbW07CiB9OwogCiAvKioKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jCmluZGV4 IDdiODU2YjUwOTBmOS4uODMwNzM5MDk0M2EyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMKQEAgLTYsNyArNiw3IEBACiAj aW5jbHVkZSA8bGludXgvcHJpbWVfbnVtYmVycy5oPgogI2luY2x1ZGUgPGxpbnV4L3NvcnQuaD4K IAotI2luY2x1ZGUgPGRybS9kcm1fYnVkZHkuaD4KKyNpbmNsdWRlIDxsaW51eC9ncHVfYnVkZHku aD4KIAogI2luY2x1ZGUgIi4uL2k5MTVfc2VsZnRlc3QuaCIKIApAQCAtMzcxLDcgKzM3MSw3IEBA IHN0YXRpYyBpbnQgaWd0X21vY2tfc3BsaW50ZXJlZF9yZWdpb24odm9pZCAqYXJnKQogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gbWVtLT5pOTE1OwogCXN0cnVjdCBpOTE1X3R0bV9i dWRkeV9yZXNvdXJjZSAqcmVzOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Ci0J c3RydWN0IGRybV9idWRkeSAqbW07CisJc3RydWN0IGdwdV9idWRkeSAqbW07CiAJdW5zaWduZWQg aW50IGV4cGVjdGVkX29yZGVyOwogCUxJU1RfSEVBRChvYmplY3RzKTsKIAl1NjQgc2l6ZTsKQEAg LTQ0Nyw4ICs0NDcsOCBAQCBzdGF0aWMgaW50IGlndF9tb2NrX21heF9zZWdtZW50KHZvaWQgKmFy ZykKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IG1lbS0+aTkxNTsKIAlzdHJ1Y3Qg aTkxNV90dG1fYnVkZHlfcmVzb3VyY2UgKnJlczsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqOwotCXN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrOwotCXN0cnVjdCBkcm1fYnVk ZHkgKm1tOworCXN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJsb2NrOworCXN0cnVjdCBncHVfYnVk ZHkgKm1tOwogCXN0cnVjdCBsaXN0X2hlYWQgKmJsb2NrczsKIAlzdHJ1Y3Qgc2NhdHRlcmxpc3Qg KnNnOwogCUk5MTVfUk5EX1NUQVRFKHBybmcpOwpAQCAtNDg3LDggKzQ4Nyw4IEBAIHN0YXRpYyBp bnQgaWd0X21vY2tfbWF4X3NlZ21lbnQodm9pZCAqYXJnKQogCW1tID0gcmVzLT5tbTsKIAlzaXpl ID0gMDsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJsb2NrLCBibG9ja3MsIGxpbmspIHsKLQkJaWYg KGRybV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9jaykgPiBzaXplKQotCQkJc2l6ZSA9IGRybV9i dWRkeV9ibG9ja19zaXplKG1tLCBibG9jayk7CisJCWlmIChncHVfYnVkZHlfYmxvY2tfc2l6ZSht bSwgYmxvY2spID4gc2l6ZSkKKwkJCXNpemUgPSBncHVfYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxv Y2spOwogCX0KIAlpZiAoc2l6ZSA8IG1heF9zZWdtZW50KSB7CiAJCXByX2VycigiJXM6IEZhaWxl ZCB0byBjcmVhdGUgYSBodWdlIGNvbnRpZ3VvdXMgYmxvY2sgWz4gJXVdLCBsYXJnZXN0IGJsb2Nr ICVsbGRcbiIsCkBAIC01MjcsMTQgKzUyNywxNCBAQCBzdGF0aWMgdTY0IGlndF9vYmplY3RfbWFw cGFibGVfdG90YWwoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAlzdHJ1Y3QgaW50 ZWxfbWVtb3J5X3JlZ2lvbiAqbXIgPSBvYmotPm1tLnJlZ2lvbjsKIAlzdHJ1Y3QgaTkxNV90dG1f YnVkZHlfcmVzb3VyY2UgKmJtYW5fcmVzID0KIAkJdG9fdHRtX2J1ZGR5X3Jlc291cmNlKG9iai0+ bW0ucmVzKTsKLQlzdHJ1Y3QgZHJtX2J1ZGR5ICptbSA9IGJtYW5fcmVzLT5tbTsKLQlzdHJ1Y3Qg ZHJtX2J1ZGR5X2Jsb2NrICpibG9jazsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSA9IGJtYW5fcmVz LT5tbTsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jazsKIAl1NjQgdG90YWw7CiAKIAl0 b3RhbCA9IDA7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShibG9jaywgJmJtYW5fcmVzLT5ibG9ja3Ms IGxpbmspIHsKLQkJdTY0IHN0YXJ0ID0gZHJtX2J1ZGR5X2Jsb2NrX29mZnNldChibG9jayk7Ci0J CXU2NCBlbmQgPSBzdGFydCArIGRybV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9jayk7CisJCXU2 NCBzdGFydCA9IGdwdV9idWRkeV9ibG9ja19vZmZzZXQoYmxvY2spOworCQl1NjQgZW5kID0gc3Rh cnQgKyBncHVfYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2spOwogCiAJCWlmIChzdGFydCA8IHJl c291cmNlX3NpemUoJm1yLT5pbykpCiAJCQl0b3RhbCArPSBtaW5fdCh1NjQsIGVuZCwgcmVzb3Vy Y2Vfc2l6ZSgmbXItPmlvKSkgLSBzdGFydDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90 dG0vdGVzdHMvdHRtX2JvX3ZhbGlkYXRlX3Rlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdGVz dHMvdHRtX2JvX3ZhbGlkYXRlX3Rlc3QuYwppbmRleCA2ZDk1NDQ3YTk4OWQuLmUzMmYzYzhkN2I4 NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3R0bS90ZXN0cy90dG1fYm9fdmFsaWRhdGVf dGVzdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdGVzdHMvdHRtX2JvX3ZhbGlkYXRlX3Rl c3QuYwpAQCAtMjUxLDcgKzI1MSw3IEBAIHN0YXRpYyB2b2lkIHR0bV9ib192YWxpZGF0ZV9iYXNp YyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJCQkJICAgTlVMTCwgJmR1bW15X3R0bV9ib19kZXN0cm95 KTsKIAlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZXJyLCAwKTsKIAotCXNuZF9wbGFjZSA9IHR0bV9w bGFjZV9rdW5pdF9pbml0KHRlc3QsIHNuZF9tZW0sIERSTV9CVUREWV9UT1BET1dOX0FMTE9DQVRJ T04pOworCXNuZF9wbGFjZSA9IHR0bV9wbGFjZV9rdW5pdF9pbml0KHRlc3QsIHNuZF9tZW0sIEdQ VV9CVUREWV9UT1BET1dOX0FMTE9DQVRJT04pOwogCXNuZF9wbGFjZW1lbnQgPSB0dG1fcGxhY2Vt ZW50X2t1bml0X2luaXQodGVzdCwgc25kX3BsYWNlLCAxKTsKIAogCWVyciA9IHR0bV9ib192YWxp ZGF0ZShibywgc25kX3BsYWNlbWVudCwgJmN0eF92YWwpOwpAQCAtMjYzLDcgKzI2Myw3IEBAIHN0 YXRpYyB2b2lkIHR0bV9ib192YWxpZGF0ZV9iYXNpYyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJS1VO SVRfRVhQRUNUX1RSVUUodGVzdCwgdHRtX3R0X2lzX3BvcHVsYXRlZChiby0+dHRtKSk7CiAJS1VO SVRfRVhQRUNUX0VRKHRlc3QsIGJvLT5yZXNvdXJjZS0+bWVtX3R5cGUsIHNuZF9tZW0pOwogCUtV TklUX0VYUEVDVF9FUSh0ZXN0LCBiby0+cmVzb3VyY2UtPnBsYWNlbWVudCwKLQkJCURSTV9CVURE WV9UT1BET1dOX0FMTE9DQVRJT04pOworCQkJR1BVX0JVRERZX1RPUERPV05fQUxMT0NBVElPTik7 CiAKIAl0dG1fYm9fZmluaShibyk7CiAJdHRtX21vY2tfbWFuYWdlcl9maW5pKHByaXYtPnR0bV9k ZXYsIHNuZF9tZW0pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90ZXN0cy90dG1f bW9ja19tYW5hZ2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3Rlc3RzL3R0bV9tb2NrX21hbmFn ZXIuYwppbmRleCBkZDM5NTIyOWUzODguLjI5NGQ1NmQ5MDY3ZSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3R0bS90ZXN0cy90dG1fbW9ja19tYW5hZ2VyLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3R0bS90ZXN0cy90dG1fbW9ja19tYW5hZ2VyLmMKQEAgLTMxLDcgKzMxLDcgQEAgc3RhdGlj IGludCB0dG1fbW9ja19tYW5hZ2VyX2FsbG9jKHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAq bWFuLAogewogCXN0cnVjdCB0dG1fbW9ja19tYW5hZ2VyICptYW5hZ2VyID0gdG9fbW9ja19tZ3Io bWFuKTsKIAlzdHJ1Y3QgdHRtX21vY2tfcmVzb3VyY2UgKm1vY2tfcmVzOwotCXN0cnVjdCBkcm1f YnVkZHkgKm1tID0gJm1hbmFnZXItPm1tOworCXN0cnVjdCBncHVfYnVkZHkgKm1tID0gJm1hbmFn ZXItPm1tOwogCXU2NCBscGZuLCBmcGZuLCBhbGxvY19zaXplOwogCWludCBlcnI7CiAKQEAgLTQ3 LDE0ICs0NywxNCBAQCBzdGF0aWMgaW50IHR0bV9tb2NrX21hbmFnZXJfYWxsb2Moc3RydWN0IHR0 bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4sCiAJSU5JVF9MSVNUX0hFQUQoJm1vY2tfcmVzLT5ibG9j a3MpOwogCiAJaWYgKHBsYWNlLT5mbGFncyAmIFRUTV9QTF9GTEFHX1RPUERPV04pCi0JCW1vY2tf cmVzLT5mbGFncyB8PSBEUk1fQlVERFlfVE9QRE9XTl9BTExPQ0FUSU9OOworCQltb2NrX3Jlcy0+ ZmxhZ3MgfD0gR1BVX0JVRERZX1RPUERPV05fQUxMT0NBVElPTjsKIAogCWlmIChwbGFjZS0+Zmxh Z3MgJiBUVE1fUExfRkxBR19DT05USUdVT1VTKQotCQltb2NrX3Jlcy0+ZmxhZ3MgfD0gRFJNX0JV RERZX0NPTlRJR1VPVVNfQUxMT0NBVElPTjsKKwkJbW9ja19yZXMtPmZsYWdzIHw9IEdQVV9CVURE WV9DT05USUdVT1VTX0FMTE9DQVRJT047CiAKIAlhbGxvY19zaXplID0gKHVpbnQ2NF90KW1vY2tf cmVzLT5iYXNlLnNpemU7CiAJbXV0ZXhfbG9jaygmbWFuYWdlci0+bG9jayk7Ci0JZXJyID0gZHJt X2J1ZGR5X2FsbG9jX2Jsb2NrcyhtbSwgZnBmbiwgbHBmbiwgYWxsb2Nfc2l6ZSwKKwllcnIgPSBn cHVfYnVkZHlfYWxsb2NfYmxvY2tzKG1tLCBmcGZuLCBscGZuLCBhbGxvY19zaXplLAogCQkJCSAg ICAgbWFuYWdlci0+ZGVmYXVsdF9wYWdlX3NpemUsCiAJCQkJICAgICAmbW9ja19yZXMtPmJsb2Nr cywKIAkJCQkgICAgIG1vY2tfcmVzLT5mbGFncyk7CkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBp bnQgdHRtX21vY2tfbWFuYWdlcl9hbGxvYyhzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1h biwKIAlyZXR1cm4gMDsKIAogZXJyb3JfZnJlZV9ibG9ja3M6Ci0JZHJtX2J1ZGR5X2ZyZWVfbGlz dChtbSwgJm1vY2tfcmVzLT5ibG9ja3MsIDApOworCWdwdV9idWRkeV9mcmVlX2xpc3QobW0sICZt b2NrX3Jlcy0+YmxvY2tzLCAwKTsKIAl0dG1fcmVzb3VyY2VfZmluaShtYW4sICZtb2NrX3Jlcy0+ YmFzZSk7CiAJbXV0ZXhfdW5sb2NrKCZtYW5hZ2VyLT5sb2NrKTsKIApAQCAtNzksMTAgKzc5LDEw IEBAIHN0YXRpYyB2b2lkIHR0bV9tb2NrX21hbmFnZXJfZnJlZShzdHJ1Y3QgdHRtX3Jlc291cmNl X21hbmFnZXIgKm1hbiwKIHsKIAlzdHJ1Y3QgdHRtX21vY2tfbWFuYWdlciAqbWFuYWdlciA9IHRv X21vY2tfbWdyKG1hbik7CiAJc3RydWN0IHR0bV9tb2NrX3Jlc291cmNlICptb2NrX3JlcyA9IHRv X21vY2tfbWdyX3Jlc291cmNlKHJlcyk7Ci0Jc3RydWN0IGRybV9idWRkeSAqbW0gPSAmbWFuYWdl ci0+bW07CisJc3RydWN0IGdwdV9idWRkeSAqbW0gPSAmbWFuYWdlci0+bW07CiAKIAltdXRleF9s b2NrKCZtYW5hZ2VyLT5sb2NrKTsKLQlkcm1fYnVkZHlfZnJlZV9saXN0KG1tLCAmbW9ja19yZXMt PmJsb2NrcywgMCk7CisJZ3B1X2J1ZGR5X2ZyZWVfbGlzdChtbSwgJm1vY2tfcmVzLT5ibG9ja3Ms IDApOwogCW11dGV4X3VubG9jaygmbWFuYWdlci0+bG9jayk7CiAKIAl0dG1fcmVzb3VyY2VfZmlu aShtYW4sIHJlcyk7CkBAIC0xMDYsNyArMTA2LDcgQEAgaW50IHR0bV9tb2NrX21hbmFnZXJfaW5p dChzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwgdTMyIG1lbV90eXBlLCB1MzIgc2l6ZSkKIAogCW11 dGV4X2luaXQoJm1hbmFnZXItPmxvY2spOwogCi0JZXJyID0gZHJtX2J1ZGR5X2luaXQoJm1hbmFn ZXItPm1tLCBzaXplLCBQQUdFX1NJWkUpOworCWVyciA9IGdwdV9idWRkeV9pbml0KCZtYW5hZ2Vy LT5tbSwgc2l6ZSwgUEFHRV9TSVpFKTsKIAogCWlmIChlcnIpIHsKIAkJa2ZyZWUobWFuYWdlcik7 CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCB0dG1fbW9ja19tYW5hZ2VyX2Zpbmkoc3RydWN0IHR0 bV9kZXZpY2UgKmJkZXYsIHUzMiBtZW1fdHlwZSkKIAl0dG1fcmVzb3VyY2VfbWFuYWdlcl9zZXRf dXNlZChtYW4sIGZhbHNlKTsKIAogCW11dGV4X2xvY2soJm1vY2tfbWFuLT5sb2NrKTsKLQlkcm1f YnVkZHlfZmluaSgmbW9ja19tYW4tPm1tKTsKKwlncHVfYnVkZHlfZmluaSgmbW9ja19tYW4tPm1t KTsKIAltdXRleF91bmxvY2soJm1vY2tfbWFuLT5sb2NrKTsKIAogCXR0bV9zZXRfZHJpdmVyX21h bmFnZXIoYmRldiwgbWVtX3R5cGUsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3R0bS90ZXN0cy90dG1fbW9ja19tYW5hZ2VyLmggYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3Rlc3Rz L3R0bV9tb2NrX21hbmFnZXIuaAppbmRleCA5NmVhOGM5YWFlMzQuLjA4NzEwNzU2ZmQ4ZSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3R0bS90ZXN0cy90dG1fbW9ja19tYW5hZ2VyLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL3R0bS90ZXN0cy90dG1fbW9ja19tYW5hZ2VyLmgKQEAgLTksNyAr OSw3IEBACiAKIHN0cnVjdCB0dG1fbW9ja19tYW5hZ2VyIHsKIAlzdHJ1Y3QgdHRtX3Jlc291cmNl X21hbmFnZXIgbWFuOwotCXN0cnVjdCBkcm1fYnVkZHkgbW07CisJc3RydWN0IGdwdV9idWRkeSBt bTsKIAl1NjQgZGVmYXVsdF9wYWdlX3NpemU7CiAJLyogcHJvdGVjdHMgYWxsb2NhdGlvbnMgb2Yg bW9jayBidWZmZXIgb2JqZWN0cyAqLwogCXN0cnVjdCBtdXRleCBsb2NrOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3hlL3hlX3Jlc19jdXJzb3IuaCBiL2RyaXZlcnMvZ3B1L2RybS94ZS94 ZV9yZXNfY3Vyc29yLmgKaW5kZXggNGUwMDAwOGI3MDgxLi41ZjRhYjA4YzA2ODYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9yZXNfY3Vyc29yLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3hlL3hlX3Jlc19jdXJzb3IuaApAQCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3QgeGVfcmVzX2N1 cnNvciB7CiAJLyoqIEBkbWFfYWRkcjogQ3VycmVudCBlbGVtZW50IGluIGEgc3RydWN0IGRybV9w YWdlbWFwX2FkZHIgYXJyYXkgKi8KIAljb25zdCBzdHJ1Y3QgZHJtX3BhZ2VtYXBfYWRkciAqZG1h X2FkZHI7CiAJLyoqIEBtbTogQnVkZHkgYWxsb2NhdG9yIGZvciBWUkFNIGN1cnNvciAqLwotCXN0 cnVjdCBkcm1fYnVkZHkgKm1tOworCXN0cnVjdCBncHVfYnVkZHkgKm1tOwogCS8qKgogCSAqIEBk bWFfc3RhcnQ6IERNQSBzdGFydCBhZGRyZXNzIGZvciB0aGUgY3VycmVudCBzZWdtZW50LgogCSAq IFRoaXMgbWF5IGJlIGRpZmZlcmVudCB0byBAZG1hX2FkZHIuYWRkciBzaW5jZSBlbGVtZW50cyBp bgpAQCAtNjksNyArNjksNyBAQCBzdHJ1Y3QgeGVfcmVzX2N1cnNvciB7CiAJdTY0IGRtYV9zZWdf c2l6ZTsKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgZHJtX2J1ZGR5ICp4ZV9yZXNfZ2V0X2J1ZGR5KHN0 cnVjdCB0dG1fcmVzb3VyY2UgKnJlcykKK3N0YXRpYyBzdHJ1Y3QgZ3B1X2J1ZGR5ICp4ZV9yZXNf Z2V0X2J1ZGR5KHN0cnVjdCB0dG1fcmVzb3VyY2UgKnJlcykKIHsKIAlzdHJ1Y3QgdHRtX3Jlc291 cmNlX21hbmFnZXIgKm1ncjsKIApAQCAtMTA0LDMwICsxMDQsMzAgQEAgc3RhdGljIGlubGluZSB2 b2lkIHhlX3Jlc19maXJzdChzdHJ1Y3QgdHRtX3Jlc291cmNlICpyZXMsCiAJY2FzZSBYRV9QTF9T VE9MRU46CiAJY2FzZSBYRV9QTF9WUkFNMDoKIAljYXNlIFhFX1BMX1ZSQU0xOiB7Ci0JCXN0cnVj dCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrOworCQlzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9j azsKIAkJc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwgKm5leHQ7Ci0JCXN0cnVjdCBkcm1fYnVkZHkg Km1tID0geGVfcmVzX2dldF9idWRkeShyZXMpOworCQlzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSA9IHhl X3Jlc19nZXRfYnVkZHkocmVzKTsKIAogCQloZWFkID0gJnRvX3hlX3R0bV92cmFtX21ncl9yZXNv dXJjZShyZXMpLT5ibG9ja3M7CiAKIAkJYmxvY2sgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwo aGVhZCwKLQkJCQkJCSBzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrLAorCQkJCQkJIHN0cnVjdCBncHVf YnVkZHlfYmxvY2ssCiAJCQkJCQkgbGluayk7CiAJCWlmICghYmxvY2spCiAJCQlnb3RvIGZhbGxi YWNrOwogCi0JCXdoaWxlIChzdGFydCA+PSBkcm1fYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2sp KSB7Ci0JCQlzdGFydCAtPSBkcm1fYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2spOworCQl3aGls ZSAoc3RhcnQgPj0gZ3B1X2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2NrKSkgeworCQkJc3RhcnQg LT0gZ3B1X2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2NrKTsKIAogCQkJbmV4dCA9IGJsb2NrLT5s aW5rLm5leHQ7CiAJCQlpZiAobmV4dCAhPSBoZWFkKQotCQkJCWJsb2NrID0gbGlzdF9lbnRyeShu ZXh0LCBzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrLAorCQkJCWJsb2NrID0gbGlzdF9lbnRyeShuZXh0 LCBzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrLAogCQkJCQkJICAgbGluayk7CiAJCX0KIAogCQljdXIt Pm1tID0gbW07Ci0JCWN1ci0+c3RhcnQgPSBkcm1fYnVkZHlfYmxvY2tfb2Zmc2V0KGJsb2NrKSAr IHN0YXJ0OwotCQljdXItPnNpemUgPSBtaW4oZHJtX2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2Nr KSAtIHN0YXJ0LAorCQljdXItPnN0YXJ0ID0gZ3B1X2J1ZGR5X2Jsb2NrX29mZnNldChibG9jaykg KyBzdGFydDsKKwkJY3VyLT5zaXplID0gbWluKGdwdV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9j aykgLSBzdGFydCwKIAkJCQlzaXplKTsKIAkJY3VyLT5yZW1haW5pbmcgPSBzaXplOwogCQljdXIt Pm5vZGUgPSBibG9jazsKQEAgLTI1OSw3ICsyNTksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgeGVf cmVzX2ZpcnN0X2RtYShjb25zdCBzdHJ1Y3QgZHJtX3BhZ2VtYXBfYWRkciAqZG1hX2FkZHIsCiAg Ki8KIHN0YXRpYyBpbmxpbmUgdm9pZCB4ZV9yZXNfbmV4dChzdHJ1Y3QgeGVfcmVzX2N1cnNvciAq Y3VyLCB1NjQgc2l6ZSkKIHsKLQlzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpibG9jazsKKwlzdHJ1 Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jazsKIAlzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0OwogCXU2 NCBzdGFydDsKIApAQCAtMjk1LDE4ICsyOTUsMTggQEAgc3RhdGljIGlubGluZSB2b2lkIHhlX3Jl c19uZXh0KHN0cnVjdCB4ZV9yZXNfY3Vyc29yICpjdXIsIHU2NCBzaXplKQogCQlibG9jayA9IGN1 ci0+bm9kZTsKIAogCQluZXh0ID0gYmxvY2stPmxpbmsubmV4dDsKLQkJYmxvY2sgPSBsaXN0X2Vu dHJ5KG5leHQsIHN0cnVjdCBkcm1fYnVkZHlfYmxvY2ssIGxpbmspOworCQlibG9jayA9IGxpc3Rf ZW50cnkobmV4dCwgc3RydWN0IGdwdV9idWRkeV9ibG9jaywgbGluayk7CiAKIAotCQl3aGlsZSAo c3RhcnQgPj0gZHJtX2J1ZGR5X2Jsb2NrX3NpemUoY3VyLT5tbSwgYmxvY2spKSB7Ci0JCQlzdGFy dCAtPSBkcm1fYnVkZHlfYmxvY2tfc2l6ZShjdXItPm1tLCBibG9jayk7CisJCXdoaWxlIChzdGFy dCA+PSBncHVfYnVkZHlfYmxvY2tfc2l6ZShjdXItPm1tLCBibG9jaykpIHsKKwkJCXN0YXJ0IC09 IGdwdV9idWRkeV9ibG9ja19zaXplKGN1ci0+bW0sIGJsb2NrKTsKIAogCQkJbmV4dCA9IGJsb2Nr LT5saW5rLm5leHQ7Ci0JCQlibG9jayA9IGxpc3RfZW50cnkobmV4dCwgc3RydWN0IGRybV9idWRk eV9ibG9jaywgbGluayk7CisJCQlibG9jayA9IGxpc3RfZW50cnkobmV4dCwgc3RydWN0IGdwdV9i dWRkeV9ibG9jaywgbGluayk7CiAJCX0KIAotCQljdXItPnN0YXJ0ID0gZHJtX2J1ZGR5X2Jsb2Nr X29mZnNldChibG9jaykgKyBzdGFydDsKLQkJY3VyLT5zaXplID0gbWluKGRybV9idWRkeV9ibG9j a19zaXplKGN1ci0+bW0sIGJsb2NrKSAtIHN0YXJ0LAorCQljdXItPnN0YXJ0ID0gZ3B1X2J1ZGR5 X2Jsb2NrX29mZnNldChibG9jaykgKyBzdGFydDsKKwkJY3VyLT5zaXplID0gbWluKGdwdV9idWRk eV9ibG9ja19zaXplKGN1ci0+bW0sIGJsb2NrKSAtIHN0YXJ0LAogCQkJCWN1ci0+cmVtYWluaW5n KTsKIAkJY3VyLT5ub2RlID0gYmxvY2s7CiAJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3hlL3hlX3N2bS5jIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N2bS5jCmluZGV4IDIx M2YwMzM0NTE4YS4uY2RhM2JmN2UyNDE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUv eGVfc3ZtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N2bS5jCkBAIC03NDcsNyArNzQ3 LDcgQEAgc3RhdGljIHU2NCBibG9ja19vZmZzZXRfdG9fcGZuKHN0cnVjdCBkcm1fcGFnZW1hcCAq ZHBhZ2VtYXAsIHU2NCBvZmZzZXQpCiAJcmV0dXJuIFBIWVNfUEZOKG9mZnNldCArIHhwYWdlbWFw LT5ocGFfYmFzZSk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgZHJtX2J1ZGR5ICp2cmFtX3RvX2J1ZGR5 KHN0cnVjdCB4ZV92cmFtX3JlZ2lvbiAqdnJhbSkKK3N0YXRpYyBzdHJ1Y3QgZ3B1X2J1ZGR5ICp2 cmFtX3RvX2J1ZGR5KHN0cnVjdCB4ZV92cmFtX3JlZ2lvbiAqdnJhbSkKIHsKIAlyZXR1cm4gJnZy YW0tPnR0bS5tbTsKIH0KQEAgLTc1OCwxNyArNzU4LDE3IEBAIHN0YXRpYyBpbnQgeGVfc3ZtX3Bv cHVsYXRlX2Rldm1lbV9wZm4oc3RydWN0IGRybV9wYWdlbWFwX2Rldm1lbSAqZGV2bWVtX2FsbG9j YXRpCiAJc3RydWN0IHhlX2JvICpibyA9IHRvX3hlX2JvKGRldm1lbV9hbGxvY2F0aW9uKTsKIAlz dHJ1Y3QgdHRtX3Jlc291cmNlICpyZXMgPSBiby0+dHRtLnJlc291cmNlOwogCXN0cnVjdCBsaXN0 X2hlYWQgKmJsb2NrcyA9ICZ0b194ZV90dG1fdnJhbV9tZ3JfcmVzb3VyY2UocmVzKS0+YmxvY2tz OwotCXN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrOworCXN0cnVjdCBncHVfYnVkZHlfYmxv Y2sgKmJsb2NrOwogCWludCBqID0gMDsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkoYmxvY2ssIGJs b2NrcywgbGluaykgewogCQlzdHJ1Y3QgeGVfdnJhbV9yZWdpb24gKnZyID0gYmxvY2stPnByaXZh dGU7Ci0JCXN0cnVjdCBkcm1fYnVkZHkgKmJ1ZGR5ID0gdnJhbV90b19idWRkeSh2cik7CisJCXN0 cnVjdCBncHVfYnVkZHkgKmJ1ZGR5ID0gdnJhbV90b19idWRkeSh2cik7CiAJCXU2NCBibG9ja19w Zm4gPSBibG9ja19vZmZzZXRfdG9fcGZuKGRldm1lbV9hbGxvY2F0aW9uLT5kcGFnZW1hcCwKLQkJ CQkJCSAgICBkcm1fYnVkZHlfYmxvY2tfb2Zmc2V0KGJsb2NrKSk7CisJCQkJCQkgICAgZ3B1X2J1 ZGR5X2Jsb2NrX29mZnNldChibG9jaykpOwogCQlpbnQgaTsKIAotCQlmb3IgKGkgPSAwOyBpIDwg ZHJtX2J1ZGR5X2Jsb2NrX3NpemUoYnVkZHksIGJsb2NrKSA+PiBQQUdFX1NISUZUOyArK2kpCisJ CWZvciAoaSA9IDA7IGkgPCBncHVfYnVkZHlfYmxvY2tfc2l6ZShidWRkeSwgYmxvY2spID4+IFBB R0VfU0hJRlQ7ICsraSkKIAkJCXBmbltqKytdID0gYmxvY2tfcGZuICsgaTsKIAl9CiAKQEAgLTEw MzMsNyArMTAzMyw3IEBAIHN0YXRpYyBpbnQgeGVfZHJtX3BhZ2VtYXBfcG9wdWxhdGVfbW0oc3Ry dWN0IGRybV9wYWdlbWFwICpkcGFnZW1hcCwKIAlzdHJ1Y3QgZG1hX2ZlbmNlICpwcmVfbWlncmF0 ZV9mZW5jZSA9IE5VTEw7CiAJc3RydWN0IHhlX2RldmljZSAqeGUgPSB2ci0+eGU7CiAJc3RydWN0 IGRldmljZSAqZGV2ID0geGUtPmRybS5kZXY7Ci0Jc3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxv Y2s7CisJc3RydWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2s7CiAJc3RydWN0IHhlX3ZhbGlkYXRp b25fY3R4IHZjdHg7CiAJc3RydWN0IGxpc3RfaGVhZCAqYmxvY2tzOwogCXN0cnVjdCBkcm1fZXhl YyBleGVjOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3R0bV92cmFtX21nci5j IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3R0bV92cmFtX21nci5jCmluZGV4IDY1NTNhMTlmN2Nm Mi4uZDExOTIxN2Q1NjZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfdHRtX3Zy YW1fbWdyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3R0bV92cmFtX21nci5jCkBAIC02 LDYgKzYsNyBAQAogCiAjaW5jbHVkZSA8ZHJtL2RybV9tYW5hZ2VkLmg+CiAjaW5jbHVkZSA8ZHJt L2RybV9kcnYuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2J1ZGR5Lmg+CiAKICNpbmNsdWRlIDxkcm0v dHRtL3R0bV9wbGFjZW1lbnQuaD4KICNpbmNsdWRlIDxkcm0vdHRtL3R0bV9yYW5nZV9tYW5hZ2Vy Lmg+CkBAIC0xNiwxNiArMTcsMTYgQEAKICNpbmNsdWRlICJ4ZV90dG1fdnJhbV9tZ3IuaCIKICNp bmNsdWRlICJ4ZV92cmFtX3R5cGVzLmgiCiAKLXN0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9idWRk eV9ibG9jayAqCitzdGF0aWMgaW5saW5lIHN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKgogeGVfdHRt X3ZyYW1fbWdyX2ZpcnN0X2Jsb2NrKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpCiB7Ci0JcmV0dXJu IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChsaXN0LCBzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrLCBs aW5rKTsKKwlyZXR1cm4gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKGxpc3QsIHN0cnVjdCBncHVf YnVkZHlfYmxvY2ssIGxpbmspOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgeGVfaXNfdnJhbV9t Z3JfYmxvY2tzX2NvbnRpZ3VvdXMoc3RydWN0IGRybV9idWRkeSAqbW0sCitzdGF0aWMgaW5saW5l IGJvb2wgeGVfaXNfdnJhbV9tZ3JfYmxvY2tzX2NvbnRpZ3VvdXMoc3RydWN0IGdwdV9idWRkeSAq bW0sCiAJCQkJCQkgICAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKIHsKLQlzdHJ1Y3QgZHJtX2J1 ZGR5X2Jsb2NrICpibG9jazsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jazsKIAl1NjQg c3RhcnQsIHNpemU7CiAKIAlibG9jayA9IHhlX3R0bV92cmFtX21ncl9maXJzdF9ibG9jayhoZWFk KTsKQEAgLTMzLDEyICszNCwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgeGVfaXNfdnJhbV9tZ3Jf YmxvY2tzX2NvbnRpZ3VvdXMoc3RydWN0IGRybV9idWRkeSAqbW0sCiAJCXJldHVybiBmYWxzZTsK IAogCXdoaWxlIChoZWFkICE9IGJsb2NrLT5saW5rLm5leHQpIHsKLQkJc3RhcnQgPSBkcm1fYnVk ZHlfYmxvY2tfb2Zmc2V0KGJsb2NrKTsKLQkJc2l6ZSA9IGRybV9idWRkeV9ibG9ja19zaXplKG1t LCBibG9jayk7CisJCXN0YXJ0ID0gZ3B1X2J1ZGR5X2Jsb2NrX29mZnNldChibG9jayk7CisJCXNp emUgPSBncHVfYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2spOwogCi0JCWJsb2NrID0gbGlzdF9l bnRyeShibG9jay0+bGluay5uZXh0LCBzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrLAorCQlibG9jayA9 IGxpc3RfZW50cnkoYmxvY2stPmxpbmsubmV4dCwgc3RydWN0IGdwdV9idWRkeV9ibG9jaywKIAkJ CQkgICBsaW5rKTsKLQkJaWYgKHN0YXJ0ICsgc2l6ZSAhPSBkcm1fYnVkZHlfYmxvY2tfb2Zmc2V0 KGJsb2NrKSkKKwkJaWYgKHN0YXJ0ICsgc2l6ZSAhPSBncHVfYnVkZHlfYmxvY2tfb2Zmc2V0KGJs b2NrKSkKIAkJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTUyLDcgKzUzLDcgQEAgc3RhdGljIGlu dCB4ZV90dG1fdnJhbV9tZ3JfbmV3KHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuLAog ewogCXN0cnVjdCB4ZV90dG1fdnJhbV9tZ3IgKm1nciA9IHRvX3hlX3R0bV92cmFtX21ncihtYW4p OwogCXN0cnVjdCB4ZV90dG1fdnJhbV9tZ3JfcmVzb3VyY2UgKnZyZXM7Ci0Jc3RydWN0IGRybV9i dWRkeSAqbW0gPSAmbWdyLT5tbTsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSA9ICZtZ3ItPm1tOwog CXU2NCBzaXplLCBtaW5fcGFnZV9zaXplOwogCXVuc2lnbmVkIGxvbmcgbHBmbjsKIAlpbnQgZXJy OwpAQCAtNzksMTAgKzgwLDEwIEBAIHN0YXRpYyBpbnQgeGVfdHRtX3ZyYW1fbWdyX25ldyhzdHJ1 Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiwKIAlJTklUX0xJU1RfSEVBRCgmdnJlcy0+Ymxv Y2tzKTsKIAogCWlmIChwbGFjZS0+ZmxhZ3MgJiBUVE1fUExfRkxBR19UT1BET1dOKQotCQl2cmVz LT5mbGFncyB8PSBEUk1fQlVERFlfVE9QRE9XTl9BTExPQ0FUSU9OOworCQl2cmVzLT5mbGFncyB8 PSBHUFVfQlVERFlfVE9QRE9XTl9BTExPQ0FUSU9OOwogCiAJaWYgKHBsYWNlLT5mcGZuIHx8IGxw Zm4gIT0gbWFuLT5zaXplID4+IFBBR0VfU0hJRlQpCi0JCXZyZXMtPmZsYWdzIHw9IERSTV9CVURE WV9SQU5HRV9BTExPQ0FUSU9OOworCQl2cmVzLT5mbGFncyB8PSBHUFVfQlVERFlfUkFOR0VfQUxM T0NBVElPTjsKIAogCWlmIChXQVJOX09OKCF2cmVzLT5iYXNlLnNpemUpKSB7CiAJCWVyciA9IC1F SU5WQUw7CkBAIC0xMTgsMjcgKzExOSwyNyBAQCBzdGF0aWMgaW50IHhlX3R0bV92cmFtX21ncl9u ZXcoc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4sCiAJCWxwZm4gPSBtYXhfdCh1bnNp Z25lZCBsb25nLCBwbGFjZS0+ZnBmbiArIChzaXplID4+IFBBR0VfU0hJRlQpLCBscGZuKTsKIAl9 CiAKLQllcnIgPSBkcm1fYnVkZHlfYWxsb2NfYmxvY2tzKG1tLCAodTY0KXBsYWNlLT5mcGZuIDw8 IFBBR0VfU0hJRlQsCisJZXJyID0gZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcyhtbSwgKHU2NClwbGFj ZS0+ZnBmbiA8PCBQQUdFX1NISUZULAogCQkJCSAgICAgKHU2NClscGZuIDw8IFBBR0VfU0hJRlQs IHNpemUsCiAJCQkJICAgICBtaW5fcGFnZV9zaXplLCAmdnJlcy0+YmxvY2tzLCB2cmVzLT5mbGFn cyk7CiAJaWYgKGVycikKIAkJZ290byBlcnJvcl91bmxvY2s7CiAKIAlpZiAocGxhY2UtPmZsYWdz ICYgVFRNX1BMX0ZMQUdfQ09OVElHVU9VUykgewotCQlpZiAoIWRybV9idWRkeV9ibG9ja190cmlt KG1tLCBOVUxMLCB2cmVzLT5iYXNlLnNpemUsICZ2cmVzLT5ibG9ja3MpKQorCQlpZiAoIWdwdV9i dWRkeV9ibG9ja190cmltKG1tLCBOVUxMLCB2cmVzLT5iYXNlLnNpemUsICZ2cmVzLT5ibG9ja3Mp KQogCQkJc2l6ZSA9IHZyZXMtPmJhc2Uuc2l6ZTsKIAl9CiAKIAlpZiAobHBmbiA8PSBtZ3ItPnZp c2libGVfc2l6ZSA+PiBQQUdFX1NISUZUKSB7CiAJCXZyZXMtPnVzZWRfdmlzaWJsZV9zaXplID0g c2l6ZTsKIAl9IGVsc2UgewotCQlzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpibG9jazsKKwkJc3Ry dWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2s7CiAKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShibG9j aywgJnZyZXMtPmJsb2NrcywgbGluaykgewotCQkJdTY0IHN0YXJ0ID0gZHJtX2J1ZGR5X2Jsb2Nr X29mZnNldChibG9jayk7CisJCQl1NjQgc3RhcnQgPSBncHVfYnVkZHlfYmxvY2tfb2Zmc2V0KGJs b2NrKTsKIAogCQkJaWYgKHN0YXJ0IDwgbWdyLT52aXNpYmxlX3NpemUpIHsKLQkJCQl1NjQgZW5k ID0gc3RhcnQgKyBkcm1fYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2spOworCQkJCXU2NCBlbmQg PSBzdGFydCArIGdwdV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9jayk7CiAKIAkJCQl2cmVzLT51 c2VkX3Zpc2libGVfc2l6ZSArPQogCQkJCQltaW4oZW5kLCBtZ3ItPnZpc2libGVfc2l6ZSkgLSBz dGFydDsKQEAgLTE1OCwxMSArMTU5LDExIEBAIHN0YXRpYyBpbnQgeGVfdHRtX3ZyYW1fbWdyX25l dyhzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiwKIAkgKiB0aGUgb2JqZWN0LgogCSAq LwogCWlmICh2cmVzLT5iYXNlLnBsYWNlbWVudCAmIFRUTV9QTF9GTEFHX0NPTlRJR1VPVVMpIHsK LQkJc3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2sgPSBsaXN0X2ZpcnN0X2VudHJ5KCZ2cmVz LT5ibG9ja3MsCisJCXN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJsb2NrID0gbGlzdF9maXJzdF9l bnRyeSgmdnJlcy0+YmxvY2tzLAogCQkJCQkJCQkgdHlwZW9mKCpibG9jayksCiAJCQkJCQkJCSBs aW5rKTsKIAotCQl2cmVzLT5iYXNlLnN0YXJ0ID0gZHJtX2J1ZGR5X2Jsb2NrX29mZnNldChibG9j aykgPj4gUEFHRV9TSElGVDsKKwkJdnJlcy0+YmFzZS5zdGFydCA9IGdwdV9idWRkeV9ibG9ja19v ZmZzZXQoYmxvY2spID4+IFBBR0VfU0hJRlQ7CiAJfSBlbHNlIHsKIAkJdnJlcy0+YmFzZS5zdGFy dCA9IFhFX0JPX0lOVkFMSURfT0ZGU0VUOwogCX0KQEAgLTE4NCwxMCArMTg1LDEwIEBAIHN0YXRp YyB2b2lkIHhlX3R0bV92cmFtX21ncl9kZWwoc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICpt YW4sCiAJc3RydWN0IHhlX3R0bV92cmFtX21ncl9yZXNvdXJjZSAqdnJlcyA9CiAJCXRvX3hlX3R0 bV92cmFtX21ncl9yZXNvdXJjZShyZXMpOwogCXN0cnVjdCB4ZV90dG1fdnJhbV9tZ3IgKm1nciA9 IHRvX3hlX3R0bV92cmFtX21ncihtYW4pOwotCXN0cnVjdCBkcm1fYnVkZHkgKm1tID0gJm1nci0+ bW07CisJc3RydWN0IGdwdV9idWRkeSAqbW0gPSAmbWdyLT5tbTsKIAogCW11dGV4X2xvY2soJm1n ci0+bG9jayk7Ci0JZHJtX2J1ZGR5X2ZyZWVfbGlzdChtbSwgJnZyZXMtPmJsb2NrcywgMCk7CisJ Z3B1X2J1ZGR5X2ZyZWVfbGlzdChtbSwgJnZyZXMtPmJsb2NrcywgMCk7CiAJbWdyLT52aXNpYmxl X2F2YWlsICs9IHZyZXMtPnVzZWRfdmlzaWJsZV9zaXplOwogCW11dGV4X3VubG9jaygmbWdyLT5s b2NrKTsKIApAQCAtMjAwLDcgKzIwMSw3IEBAIHN0YXRpYyB2b2lkIHhlX3R0bV92cmFtX21ncl9k ZWJ1ZyhzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiwKIAkJCQkgIHN0cnVjdCBkcm1f cHJpbnRlciAqcHJpbnRlcikKIHsKIAlzdHJ1Y3QgeGVfdHRtX3ZyYW1fbWdyICptZ3IgPSB0b194 ZV90dG1fdnJhbV9tZ3IobWFuKTsKLQlzdHJ1Y3QgZHJtX2J1ZGR5ICptbSA9ICZtZ3ItPm1tOwor CXN0cnVjdCBncHVfYnVkZHkgKm1tID0gJm1nci0+bW07CiAKIAltdXRleF9sb2NrKCZtZ3ItPmxv Y2spOwogCWRybV9wcmludGYocHJpbnRlciwgImRlZmF1bHRfcGFnZV9zaXplOiAlbGx1S2lCXG4i LApAQCAtMjIzLDggKzIyNCw4IEBAIHN0YXRpYyBib29sIHhlX3R0bV92cmFtX21ncl9pbnRlcnNl Y3RzKHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuLAogCXN0cnVjdCB4ZV90dG1fdnJh bV9tZ3IgKm1nciA9IHRvX3hlX3R0bV92cmFtX21ncihtYW4pOwogCXN0cnVjdCB4ZV90dG1fdnJh bV9tZ3JfcmVzb3VyY2UgKnZyZXMgPQogCQl0b194ZV90dG1fdnJhbV9tZ3JfcmVzb3VyY2UocmVz KTsKLQlzdHJ1Y3QgZHJtX2J1ZGR5ICptbSA9ICZtZ3ItPm1tOwotCXN0cnVjdCBkcm1fYnVkZHlf YmxvY2sgKmJsb2NrOworCXN0cnVjdCBncHVfYnVkZHkgKm1tID0gJm1nci0+bW07CisJc3RydWN0 IGdwdV9idWRkeV9ibG9jayAqYmxvY2s7CiAKIAlpZiAoIXBsYWNlLT5mcGZuICYmICFwbGFjZS0+ bHBmbikKIAkJcmV0dXJuIHRydWU7CkBAIC0yMzQsOSArMjM1LDkgQEAgc3RhdGljIGJvb2wgeGVf dHRtX3ZyYW1fbWdyX2ludGVyc2VjdHMoc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4s CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJsb2NrLCAmdnJlcy0+YmxvY2tzLCBsaW5rKSB7CiAJ CXVuc2lnbmVkIGxvbmcgZnBmbiA9Ci0JCQlkcm1fYnVkZHlfYmxvY2tfb2Zmc2V0KGJsb2NrKSA+ PiBQQUdFX1NISUZUOworCQkJZ3B1X2J1ZGR5X2Jsb2NrX29mZnNldChibG9jaykgPj4gUEFHRV9T SElGVDsKIAkJdW5zaWduZWQgbG9uZyBscGZuID0gZnBmbiArCi0JCQkoZHJtX2J1ZGR5X2Jsb2Nr X3NpemUobW0sIGJsb2NrKSA+PiBQQUdFX1NISUZUKTsKKwkJCShncHVfYnVkZHlfYmxvY2tfc2l6 ZShtbSwgYmxvY2spID4+IFBBR0VfU0hJRlQpOwogCiAJCWlmIChwbGFjZS0+ZnBmbiA8IGxwZm4g JiYgcGxhY2UtPmxwZm4gPiBmcGZuKQogCQkJcmV0dXJuIHRydWU7CkBAIC0yNTMsOCArMjU0LDgg QEAgc3RhdGljIGJvb2wgeGVfdHRtX3ZyYW1fbWdyX2NvbXBhdGlibGUoc3RydWN0IHR0bV9yZXNv dXJjZV9tYW5hZ2VyICptYW4sCiAJc3RydWN0IHhlX3R0bV92cmFtX21nciAqbWdyID0gdG9feGVf dHRtX3ZyYW1fbWdyKG1hbik7CiAJc3RydWN0IHhlX3R0bV92cmFtX21ncl9yZXNvdXJjZSAqdnJl cyA9CiAJCXRvX3hlX3R0bV92cmFtX21ncl9yZXNvdXJjZShyZXMpOwotCXN0cnVjdCBkcm1fYnVk ZHkgKm1tID0gJm1nci0+bW07Ci0Jc3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2s7CisJc3Ry dWN0IGdwdV9idWRkeSAqbW0gPSAmbWdyLT5tbTsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpi bG9jazsKIAogCWlmICghcGxhY2UtPmZwZm4gJiYgIXBsYWNlLT5scGZuKQogCQlyZXR1cm4gdHJ1 ZTsKQEAgLTI2NCw5ICsyNjUsOSBAQCBzdGF0aWMgYm9vbCB4ZV90dG1fdnJhbV9tZ3JfY29tcGF0 aWJsZShzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiwKIAogCWxpc3RfZm9yX2VhY2hf ZW50cnkoYmxvY2ssICZ2cmVzLT5ibG9ja3MsIGxpbmspIHsKIAkJdW5zaWduZWQgbG9uZyBmcGZu ID0KLQkJCWRybV9idWRkeV9ibG9ja19vZmZzZXQoYmxvY2spID4+IFBBR0VfU0hJRlQ7CisJCQln cHVfYnVkZHlfYmxvY2tfb2Zmc2V0KGJsb2NrKSA+PiBQQUdFX1NISUZUOwogCQl1bnNpZ25lZCBs b25nIGxwZm4gPSBmcGZuICsKLQkJCShkcm1fYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2spID4+ IFBBR0VfU0hJRlQpOworCQkJKGdwdV9idWRkeV9ibG9ja19zaXplKG1tLCBibG9jaykgPj4gUEFH RV9TSElGVCk7CiAKIAkJaWYgKGZwZm4gPCBwbGFjZS0+ZnBmbiB8fCBscGZuID4gcGxhY2UtPmxw Zm4pCiAJCQlyZXR1cm4gZmFsc2U7CkBAIC0yOTYsNyArMjk3LDcgQEAgc3RhdGljIHZvaWQgeGVf dHRtX3ZyYW1fbWdyX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqYXJnKQogCiAJ V0FSTl9PTl9PTkNFKG1nci0+dmlzaWJsZV9hdmFpbCAhPSBtZ3ItPnZpc2libGVfc2l6ZSk7CiAK LQlkcm1fYnVkZHlfZmluaSgmbWdyLT5tbSk7CisJZ3B1X2J1ZGR5X2ZpbmkoJm1nci0+bW0pOwog CiAJdHRtX3Jlc291cmNlX21hbmFnZXJfY2xlYW51cCgmbWdyLT5tYW5hZ2VyKTsKIApAQCAtMzI3 LDcgKzMyOCw3IEBAIGludCBfX3hlX3R0bV92cmFtX21ncl9pbml0KHN0cnVjdCB4ZV9kZXZpY2Ug KnhlLCBzdHJ1Y3QgeGVfdHRtX3ZyYW1fbWdyICptZ3IsCiAJbWdyLT52aXNpYmxlX2F2YWlsID0g aW9fc2l6ZTsKIAogCXR0bV9yZXNvdXJjZV9tYW5hZ2VyX2luaXQobWFuLCAmeGUtPnR0bSwgc2l6 ZSk7Ci0JZXJyID0gZHJtX2J1ZGR5X2luaXQoJm1nci0+bW0sIG1hbi0+c2l6ZSwgZGVmYXVsdF9w YWdlX3NpemUpOworCWVyciA9IGdwdV9idWRkeV9pbml0KCZtZ3ItPm1tLCBtYW4tPnNpemUsIGRl ZmF1bHRfcGFnZV9zaXplKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCkBAIC0zNzUsNyAr Mzc2LDcgQEAgaW50IHhlX3R0bV92cmFtX21ncl9hbGxvY19zZ3Qoc3RydWN0IHhlX2RldmljZSAq eGUsCiAJaWYgKCEqc2d0KQogCQlyZXR1cm4gLUVOT01FTTsKIAotCS8qIERldGVybWluZSB0aGUg bnVtYmVyIG9mIERSTV9CVUREWSBibG9ja3MgdG8gZXhwb3J0ICovCisJLyogRGV0ZXJtaW5lIHRo ZSBudW1iZXIgb2YgR1BVX0JVRERZIGJsb2NrcyB0byBleHBvcnQgKi8KIAl4ZV9yZXNfZmlyc3Qo cmVzLCBvZmZzZXQsIGxlbmd0aCwgJmN1cnNvcik7CiAJd2hpbGUgKGN1cnNvci5yZW1haW5pbmcp IHsKIAkJbnVtX2VudHJpZXMrKzsKQEAgLTM5MiwxMCArMzkzLDEwIEBAIGludCB4ZV90dG1fdnJh bV9tZ3JfYWxsb2Nfc2d0KHN0cnVjdCB4ZV9kZXZpY2UgKnhlLAogCQlzZy0+bGVuZ3RoID0gMDsK IAogCS8qCi0JICogV2FsayBkb3duIERSTV9CVUREWSBibG9ja3MgdG8gcG9wdWxhdGUgc2NhdHRl cmxpc3Qgbm9kZXMKLQkgKiBAbm90ZTogVXNlIGl0ZXJhdG9yIGFwaSB0byBnZXQgZmlyc3QgdGhl IERSTV9CVUREWSBibG9jaworCSAqIFdhbGsgZG93biBHUFVfQlVERFkgYmxvY2tzIHRvIHBvcHVs YXRlIHNjYXR0ZXJsaXN0IG5vZGVzCisJICogQG5vdGU6IFVzZSBpdGVyYXRvciBhcGkgdG8gZ2V0 IGZpcnN0IHRoZSBHUFVfQlVERFkgYmxvY2sKIAkgKiBhbmQgdGhlIG51bWJlciBvZiBieXRlcyBm cm9tIGl0LiBBY2Nlc3MgdGhlIGZvbGxvd2luZwotCSAqIERSTV9CVUREWSBibG9jayhzKSBpZiBt b3JlIGJ1ZmZlciBuZWVkcyB0byBleHBvcnRlZAorCSAqIEdQVV9CVUREWSBibG9jayhzKSBpZiBt b3JlIGJ1ZmZlciBuZWVkcyB0byBleHBvcnRlZAogCSAqLwogCXhlX3Jlc19maXJzdChyZXMsIG9m ZnNldCwgbGVuZ3RoLCAmY3Vyc29yKTsKIAlmb3JfZWFjaF9zZ3RhYmxlX3NnKCgqc2d0KSwgc2cs IGkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV90dG1fdnJhbV9tZ3JfdHlw ZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV90dG1fdnJhbV9tZ3JfdHlwZXMuaAppbmRleCBi YWJlZWM1NTExZDkuLjkxMDZkYTA1NmI0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hl L3hlX3R0bV92cmFtX21ncl90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV90dG1f dnJhbV9tZ3JfdHlwZXMuaApAQCAtMTgsNyArMTgsNyBAQCBzdHJ1Y3QgeGVfdHRtX3ZyYW1fbWdy IHsKIAkvKiogQG1hbmFnZXI6IEJhc2UgVFRNIHJlc291cmNlIG1hbmFnZXIgKi8KIAlzdHJ1Y3Qg dHRtX3Jlc291cmNlX21hbmFnZXIgbWFuYWdlcjsKIAkvKiogQG1tOiBEUk0gYnVkZHkgYWxsb2Nh dG9yIHdoaWNoIG1hbmFnZXMgdGhlIFZSQU0gKi8KLQlzdHJ1Y3QgZHJtX2J1ZGR5IG1tOworCXN0 cnVjdCBncHVfYnVkZHkgbW07CiAJLyoqIEB2aXNpYmxlX3NpemU6IFByb3BlZCBzaXplIG9mIHRo ZSBDUFUgdmlzaWJsZSBwb3J0aW9uICovCiAJdTY0IHZpc2libGVfc2l6ZTsKIAkvKiogQHZpc2li bGVfYXZhaWw6IENQVSB2aXNpYmxlIHBvcnRpb24gc3RpbGwgdW5hbGxvY2F0ZWQgKi8KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L3Rlc3RzL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvdGVzdHMvTWFr ZWZpbGUKaW5kZXggOGU3NjU0ZTg3ZDgyLi40MTgzZTZlMmRlNDUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L3Rlc3RzL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L3Rlc3RzL01ha2VmaWxlCkBA IC0xLDQgKzEsNCBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAogCiBncHVf YnVkZHlfdGVzdHMteSA9IGdwdV9idWRkeV90ZXN0Lm8gZ3B1X3JhbmRvbS5vCi1vYmotJChDT05G SUdfRFJNX0tVTklUX1RFU1QpICs9IGdwdV9idWRkeV90ZXN0cy5vCitvYmotJChDT05GSUdfR1BV X0JVRERZX0tVTklUX1RFU1QpICs9IGdwdV9idWRkeV90ZXN0cy5vCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS90ZXN0cy9ncHVfYnVkZHlfdGVzdC5jIGIvZHJpdmVycy9ncHUvdGVzdHMvZ3B1X2J1 ZGR5X3Rlc3QuYwppbmRleCBiOTA1OTMyZGE5OTAuLjQ1MGU3MWRlZWQ5MCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvdGVzdHMvZ3B1X2J1ZGR5X3Rlc3QuYworKysgYi9kcml2ZXJzL2dwdS90ZXN0 cy9ncHVfYnVkZHlfdGVzdC5jCkBAIC0yMSw5ICsyMSw5IEBAIHN0YXRpYyBpbmxpbmUgdTY0IGdl dF9zaXplKGludCBvcmRlciwgdTY0IGNodW5rX3NpemUpCiAJcmV0dXJuICgxIDw8IG9yZGVyKSAq IGNodW5rX3NpemU7CiB9CiAKLXN0YXRpYyB2b2lkIGRybV90ZXN0X2J1ZGR5X2ZyYWdtZW50YXRp b25fcGVyZm9ybWFuY2Uoc3RydWN0IGt1bml0ICp0ZXN0KQorc3RhdGljIHZvaWQgZ3B1X3Rlc3Rf YnVkZHlfZnJhZ21lbnRhdGlvbl9wZXJmb3JtYW5jZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCiB7Ci0J c3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2ssICp0bXA7CisJc3RydWN0IGdwdV9idWRkeV9i bG9jayAqYmxvY2ssICp0bXA7CiAJaW50IG51bV9ibG9ja3MsIGksIHJldCwgY291bnQgPSAwOwog CUxJU1RfSEVBRChhbGxvY2F0ZWRfYmxvY2tzKTsKIAl1bnNpZ25lZCBsb25nIGVsYXBzZWRfbXM7 CkBAIC0zMiw3ICszMiw3IEBAIHN0YXRpYyB2b2lkIGRybV90ZXN0X2J1ZGR5X2ZyYWdtZW50YXRp b25fcGVyZm9ybWFuY2Uoc3RydWN0IGt1bml0ICp0ZXN0KQogCUxJU1RfSEVBRChjbGVhcl9saXN0 KTsKIAlMSVNUX0hFQUQoZGlydHlfbGlzdCk7CiAJTElTVF9IRUFEKGZyZWVfbGlzdCk7Ci0Jc3Ry dWN0IGRybV9idWRkeSBtbTsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5IG1tOwogCXU2NCBtbV9zaXplID0g U1pfNEc7CiAJa3RpbWVfdCBzdGFydCwgZW5kOwogCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyB2 b2lkIGRybV90ZXN0X2J1ZGR5X2ZyYWdtZW50YXRpb25fcGVyZm9ybWFuY2Uoc3RydWN0IGt1bml0 ICp0ZXN0KQogCSAqIHF1aWNrbHkgdGhlIGFsbG9jYXRvciBjYW4gc2F0aXNmeSBsYXJnZXIsIGFs aWduZWQgcmVxdWVzdHMgZnJvbSBhIHBvb2wgb2YKIAkgKiBoaWdobHkgZnJhZ21lbnRlZCBzcGFj ZS4KIAkgKi8KLQlLVU5JVF9BU1NFUlRfRkFMU0VfTVNHKHRlc3QsIGRybV9idWRkeV9pbml0KCZt bSwgbW1fc2l6ZSwgU1pfNEspLAorCUtVTklUX0FTU0VSVF9GQUxTRV9NU0codGVzdCwgZ3B1X2J1 ZGR5X2luaXQoJm1tLCBtbV9zaXplLCBTWl80SyksCiAJCQkgICAgICAgImJ1ZGR5X2luaXQgZmFp bGVkXG4iKTsKIAogCW51bV9ibG9ja3MgPSBtbV9zaXplIC8gU1pfNjRLOwpAQCAtNTUsNyArNTUs NyBAQCBzdGF0aWMgdm9pZCBkcm1fdGVzdF9idWRkeV9mcmFnbWVudGF0aW9uX3BlcmZvcm1hbmNl KHN0cnVjdCBrdW5pdCAqdGVzdCkKIAlzdGFydCA9IGt0aW1lX2dldCgpOwogCS8qIEFsbG9jYXRl IHdpdGggbWF4aW11bSBmcmFnbWVudGF0aW9uIC0gOEsgYmxvY2tzIHdpdGggNjRLIGFsaWdubWVu dCAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1fYmxvY2tzOyBpKyspCi0JCUtVTklUX0FTU0VSVF9G QUxTRV9NU0codGVzdCwgZHJtX2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIDAsIG1tX3NpemUsIFNa XzhLLCBTWl82NEssCisJCUtVTklUX0FTU0VSVF9GQUxTRV9NU0codGVzdCwgZ3B1X2J1ZGR5X2Fs bG9jX2Jsb2NrcygmbW0sIDAsIG1tX3NpemUsIFNaXzhLLCBTWl82NEssCiAJCQkJCQkJCSAgICAm YWxsb2NhdGVkX2Jsb2NrcywgMCksCiAJCQkJCSJidWRkeV9hbGxvYyBoaXQgYW4gZXJyb3Igc2l6 ZT0ldVxuIiwgU1pfOEspOwogCkBAIC02OCwyMSArNjgsMjEgQEAgc3RhdGljIHZvaWQgZHJtX3Rl c3RfYnVkZHlfZnJhZ21lbnRhdGlvbl9wZXJmb3JtYW5jZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJ fQogCiAJLyogRnJlZSB3aXRoIGRpZmZlcmVudCBmbGFncyB0byBlbnN1cmUgbm8gY29hbGVzY2lu ZyAqLwotCWRybV9idWRkeV9mcmVlX2xpc3QoJm1tLCAmY2xlYXJfbGlzdCwgRFJNX0JVRERZX0NM RUFSRUQpOwotCWRybV9idWRkeV9mcmVlX2xpc3QoJm1tLCAmZGlydHlfbGlzdCwgMCk7CisJZ3B1 X2J1ZGR5X2ZyZWVfbGlzdCgmbW0sICZjbGVhcl9saXN0LCBHUFVfQlVERFlfQ0xFQVJFRCk7CisJ Z3B1X2J1ZGR5X2ZyZWVfbGlzdCgmbW0sICZkaXJ0eV9saXN0LCAwKTsKIAogCWZvciAoaSA9IDA7 IGkgPCBudW1fYmxvY2tzOyBpKyspCi0JCUtVTklUX0FTU0VSVF9GQUxTRV9NU0codGVzdCwgZHJt X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIDAsIG1tX3NpemUsIFNaXzY0SywgU1pfNjRLLAorCQlL VU5JVF9BU1NFUlRfRkFMU0VfTVNHKHRlc3QsIGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCAw LCBtbV9zaXplLCBTWl82NEssIFNaXzY0SywKIAkJCQkJCQkJICAgICZ0ZXN0X2Jsb2NrcywgMCks CiAJCQkJCSJidWRkeV9hbGxvYyBoaXQgYW4gZXJyb3Igc2l6ZT0ldVxuIiwgU1pfNjRLKTsKLQlk cm1fYnVkZHlfZnJlZV9saXN0KCZtbSwgJnRlc3RfYmxvY2tzLCAwKTsKKwlncHVfYnVkZHlfZnJl ZV9saXN0KCZtbSwgJnRlc3RfYmxvY2tzLCAwKTsKIAogCWVuZCA9IGt0aW1lX2dldCgpOwogCWVs YXBzZWRfbXMgPSBrdGltZV90b19tcyhrdGltZV9zdWIoZW5kLCBzdGFydCkpOwogCiAJa3VuaXRf aW5mbyh0ZXN0LCAiRnJhZ21lbnRlZCBhbGxvY2F0aW9uIHRvb2sgJWx1IG1zXG4iLCBlbGFwc2Vk X21zKTsKIAotCWRybV9idWRkeV9maW5pKCZtbSk7CisJZ3B1X2J1ZGR5X2ZpbmkoJm1tKTsKIAog CS8qCiAJICogUmV2ZXJzZSBmcmVlIG9yZGVyIHVuZGVyIGZyYWdtZW50YXRpb24KQEAgLTk2LDEz ICs5NiwxMyBAQCBzdGF0aWMgdm9pZCBkcm1fdGVzdF9idWRkeV9mcmFnbWVudGF0aW9uX3BlcmZv cm1hbmNlKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAkgKiBkZWFsbG9jYXRpb24gb2NjdXJzIGluIHRo ZSBvcHBvc2l0ZSBvcmRlciBvZiBhbGxvY2F0aW9uLCBleHBvc2luZyB0aGUKIAkgKiBjb3N0IGRp ZmZlcmVuY2UgYmV0d2VlbiBhIGxpbmVhciBmcmVlbGlzdCBzY2FuIGFuZCBhbiBvcmRlcmVkIHRy ZWUgbG9va3VwLgogCSAqLwotCXJldCA9IGRybV9idWRkeV9pbml0KCZtbSwgbW1fc2l6ZSwgU1pf NEspOworCXJldCA9IGdwdV9idWRkeV9pbml0KCZtbSwgbW1fc2l6ZSwgU1pfNEspOwogCUtVTklU X0FTU0VSVF9FUSh0ZXN0LCByZXQsIDApOwogCiAJc3RhcnQgPSBrdGltZV9nZXQoKTsKIAkvKiBB bGxvY2F0ZSBtYXhpbXVtIGZyYWdtZW50YXRpb24gKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2Js b2NrczsgaSsrKQotCQlLVU5JVF9BU1NFUlRfRkFMU0VfTVNHKHRlc3QsIGRybV9idWRkeV9hbGxv Y19ibG9ja3MoJm1tLCAwLCBtbV9zaXplLCBTWl84SywgU1pfNjRLLAorCQlLVU5JVF9BU1NFUlRf RkFMU0VfTVNHKHRlc3QsIGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCAwLCBtbV9zaXplLCBT Wl84SywgU1pfNjRLLAogCQkJCQkJCQkgICAgJmFsbG9jYXRlZF9ibG9ja3MsIDApLAogCQkJCQki YnVkZHlfYWxsb2MgaGl0IGFuIGVycm9yIHNpemU9JXVcbiIsIFNaXzhLKTsKIApAQCAtMTExLDI4 ICsxMTEsMjggQEAgc3RhdGljIHZvaWQgZHJtX3Rlc3RfYnVkZHlfZnJhZ21lbnRhdGlvbl9wZXJm b3JtYW5jZShzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJCQlsaXN0X21vdmVfdGFpbCgmYmxvY2stPmxp bmssICZmcmVlX2xpc3QpOwogCQljb3VudCsrOwogCX0KLQlkcm1fYnVkZHlfZnJlZV9saXN0KCZt bSwgJmZyZWVfbGlzdCwgRFJNX0JVRERZX0NMRUFSRUQpOworCWdwdV9idWRkeV9mcmVlX2xpc3Qo Jm1tLCAmZnJlZV9saXN0LCBHUFVfQlVERFlfQ0xFQVJFRCk7CiAKIAlsaXN0X2Zvcl9lYWNoX2Vu dHJ5X3NhZmVfcmV2ZXJzZShibG9jaywgdG1wLCAmYWxsb2NhdGVkX2Jsb2NrcywgbGluaykKIAkJ bGlzdF9tb3ZlKCZibG9jay0+bGluaywgJnJldmVyc2VfbGlzdCk7Ci0JZHJtX2J1ZGR5X2ZyZWVf bGlzdCgmbW0sICZyZXZlcnNlX2xpc3QsIERSTV9CVUREWV9DTEVBUkVEKTsKKwlncHVfYnVkZHlf ZnJlZV9saXN0KCZtbSwgJnJldmVyc2VfbGlzdCwgR1BVX0JVRERZX0NMRUFSRUQpOwogCiAJZW5k ID0ga3RpbWVfZ2V0KCk7CiAJZWxhcHNlZF9tcyA9IGt0aW1lX3RvX21zKGt0aW1lX3N1YihlbmQs IHN0YXJ0KSk7CiAKIAlrdW5pdF9pbmZvKHRlc3QsICJSZXZlcnNlLW9yZGVyZWQgZnJlZSB0b29r ICVsdSBtc1xuIiwgZWxhcHNlZF9tcyk7CiAKLQlkcm1fYnVkZHlfZmluaSgmbW0pOworCWdwdV9i dWRkeV9maW5pKCZtbSk7CiB9CiAKLXN0YXRpYyB2b2lkIGRybV90ZXN0X2J1ZGR5X2FsbG9jX3Jh bmdlX2JpYXMoc3RydWN0IGt1bml0ICp0ZXN0KQorc3RhdGljIHZvaWQgZ3B1X3Rlc3RfYnVkZHlf YWxsb2NfcmFuZ2VfYmlhcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiB7CiAJdTMyIG1tX3NpemUsIHNp emUsIHBzLCBiaWFzX3NpemUsIGJpYXNfc3RhcnQsIGJpYXNfZW5kLCBiaWFzX3JlbTsKLQlEUk1f Uk5EX1NUQVRFKHBybmcsIHJhbmRvbV9zZWVkKTsKKwlHUFVfUk5EX1NUQVRFKHBybmcsIHJhbmRv bV9zZWVkKTsKIAl1bnNpZ25lZCBpbnQgaSwgY291bnQsICpvcmRlcjsKLQlzdHJ1Y3QgZHJtX2J1 ZGR5X2Jsb2NrICpibG9jazsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jazsKIAl1bnNp Z25lZCBsb25nIGZsYWdzOwotCXN0cnVjdCBkcm1fYnVkZHkgbW07CisJc3RydWN0IGdwdV9idWRk eSBtbTsKIAlMSVNUX0hFQUQoYWxsb2NhdGVkKTsKIAogCWJpYXNfc2l6ZSA9IFNaXzFNOwpAQCAt MTQyLDExICsxNDIsMTEgQEAgc3RhdGljIHZvaWQgZHJtX3Rlc3RfYnVkZHlfYWxsb2NfcmFuZ2Vf YmlhcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAKIAlrdW5pdF9pbmZvKHRlc3QsICJtbV9zaXplPSV1 LCBwcz0ldVxuIiwgbW1fc2l6ZSwgcHMpOwogCi0JS1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0ZXN0 LCBkcm1fYnVkZHlfaW5pdCgmbW0sIG1tX3NpemUsIHBzKSwKKwlLVU5JVF9BU1NFUlRfRkFMU0Vf TVNHKHRlc3QsIGdwdV9idWRkeV9pbml0KCZtbSwgbW1fc2l6ZSwgcHMpLAogCQkJICAgICAgICJi dWRkeV9pbml0IGZhaWxlZFxuIik7CiAKIAljb3VudCA9IG1tX3NpemUgLyBiaWFzX3NpemU7Ci0J b3JkZXIgPSBkcm1fcmFuZG9tX29yZGVyKGNvdW50LCAmcHJuZyk7CisJb3JkZXIgPSBncHVfcmFu ZG9tX29yZGVyKGNvdW50LCAmcHJuZyk7CiAJS1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgb3JkZXIp OwogCiAJLyoKQEAgLTE2Niw3OSArMTY2LDc5IEBAIHN0YXRpYyB2b2lkIGRybV90ZXN0X2J1ZGR5 X2FsbG9jX3JhbmdlX2JpYXMoc3RydWN0IGt1bml0ICp0ZXN0KQogCiAJCS8qIGludGVybmFsIHJv dW5kX3VwIHRvbyBiaWcgKi8KIAkJS1VOSVRfQVNTRVJUX1RSVUVfTVNHKHRlc3QsCi0JCQkJICAg ICAgZHJtX2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIGJpYXNfc3RhcnQsCisJCQkJICAgICAgZ3B1 X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIGJpYXNfc3RhcnQsCiAJCQkJCQkJICAgICBiaWFzX2Vu ZCwgYmlhc19zaXplICsgcHMsIGJpYXNfc2l6ZSwKIAkJCQkJCQkgICAgICZhbGxvY2F0ZWQsCi0J CQkJCQkJICAgICBEUk1fQlVERFlfUkFOR0VfQUxMT0NBVElPTiksCisJCQkJCQkJICAgICBHUFVf QlVERFlfUkFOR0VfQUxMT0NBVElPTiksCiAJCQkJICAgICAgImJ1ZGR5X2FsbG9jIGZhaWxlZCB3 aXRoIGJpYXMoJXgtJXgpLCBzaXplPSV1LCBwcz0ldVxuIiwKIAkJCQkgICAgICBiaWFzX3N0YXJ0 LCBiaWFzX2VuZCwgYmlhc19zaXplLCBiaWFzX3NpemUpOwogCiAJCS8qIHNpemUgdG9vIGJpZyAq LwogCQlLVU5JVF9BU1NFUlRfVFJVRV9NU0codGVzdCwKLQkJCQkgICAgICBkcm1fYnVkZHlfYWxs b2NfYmxvY2tzKCZtbSwgYmlhc19zdGFydCwKKwkJCQkgICAgICBncHVfYnVkZHlfYWxsb2NfYmxv Y2tzKCZtbSwgYmlhc19zdGFydCwKIAkJCQkJCQkgICAgIGJpYXNfZW5kLCBiaWFzX3NpemUgKyBw cywgcHMsCiAJCQkJCQkJICAgICAmYWxsb2NhdGVkLAotCQkJCQkJCSAgICAgRFJNX0JVRERZX1JB TkdFX0FMTE9DQVRJT04pLAorCQkJCQkJCSAgICAgR1BVX0JVRERZX1JBTkdFX0FMTE9DQVRJT04p LAogCQkJCSAgICAgICJidWRkeV9hbGxvYyBkaWRuJ3QgZmFpbCB3aXRoIGJpYXMoJXgtJXgpLCBz aXplPSV1LCBwcz0ldVxuIiwKIAkJCQkgICAgICBiaWFzX3N0YXJ0LCBiaWFzX2VuZCwgYmlhc19z aXplICsgcHMsIHBzKTsKIAogCQkvKiBiaWFzIHJhbmdlIHRvbyBzbWFsbCBmb3Igc2l6ZSAqLwog CQlLVU5JVF9BU1NFUlRfVFJVRV9NU0codGVzdCwKLQkJCQkgICAgICBkcm1fYnVkZHlfYWxsb2Nf YmxvY2tzKCZtbSwgYmlhc19zdGFydCArIHBzLAorCQkJCSAgICAgIGdwdV9idWRkeV9hbGxvY19i bG9ja3MoJm1tLCBiaWFzX3N0YXJ0ICsgcHMsCiAJCQkJCQkJICAgICBiaWFzX2VuZCwgYmlhc19z aXplLCBwcywKIAkJCQkJCQkgICAgICZhbGxvY2F0ZWQsCi0JCQkJCQkJICAgICBEUk1fQlVERFlf UkFOR0VfQUxMT0NBVElPTiksCisJCQkJCQkJICAgICBHUFVfQlVERFlfUkFOR0VfQUxMT0NBVElP TiksCiAJCQkJICAgICAgImJ1ZGR5X2FsbG9jIGRpZG4ndCBmYWlsIHdpdGggYmlhcygleC0leCks IHNpemU9JXUsIHBzPSV1XG4iLAogCQkJCSAgICAgIGJpYXNfc3RhcnQgKyBwcywgYmlhc19lbmQs IGJpYXNfc2l6ZSwgcHMpOwogCiAJCS8qIGJpYXMgbWlzYWxpZ25lZCAqLwogCQlLVU5JVF9BU1NF UlRfVFJVRV9NU0codGVzdCwKLQkJCQkgICAgICBkcm1fYnVkZHlfYWxsb2NfYmxvY2tzKCZtbSwg Ymlhc19zdGFydCArIHBzLAorCQkJCSAgICAgIGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCBi aWFzX3N0YXJ0ICsgcHMsCiAJCQkJCQkJICAgICBiaWFzX2VuZCAtIHBzLAogCQkJCQkJCSAgICAg Ymlhc19zaXplID4+IDEsIGJpYXNfc2l6ZSA+PiAxLAogCQkJCQkJCSAgICAgJmFsbG9jYXRlZCwK LQkJCQkJCQkgICAgIERSTV9CVUREWV9SQU5HRV9BTExPQ0FUSU9OKSwKKwkJCQkJCQkgICAgIEdQ VV9CVUREWV9SQU5HRV9BTExPQ0FUSU9OKSwKIAkJCQkgICAgICAiYnVkZHlfYWxsb2MgaCBkaWRu J3QgZmFpbCB3aXRoIGJpYXMoJXgtJXgpLCBzaXplPSV1LCBwcz0ldVxuIiwKIAkJCQkgICAgICBi aWFzX3N0YXJ0ICsgcHMsIGJpYXNfZW5kIC0gcHMsIGJpYXNfc2l6ZSA+PiAxLCBiaWFzX3NpemUg Pj4gMSk7CiAKIAkJLyogc2luZ2xlIGJpZyBwYWdlICovCiAJCUtVTklUX0FTU0VSVF9GQUxTRV9N U0codGVzdCwKLQkJCQkgICAgICAgZHJtX2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIGJpYXNfc3Rh cnQsCisJCQkJICAgICAgIGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCBiaWFzX3N0YXJ0LAog CQkJCQkJCSAgICAgIGJpYXNfZW5kLCBiaWFzX3NpemUsIGJpYXNfc2l6ZSwKIAkJCQkJCQkgICAg ICAmdG1wLAotCQkJCQkJCSAgICAgIERSTV9CVUREWV9SQU5HRV9BTExPQ0FUSU9OKSwKKwkJCQkJ CQkgICAgICBHUFVfQlVERFlfUkFOR0VfQUxMT0NBVElPTiksCiAJCQkJICAgICAgICJidWRkeV9h bGxvYyBpIGZhaWxlZCB3aXRoIGJpYXMoJXgtJXgpLCBzaXplPSV1LCBwcz0ldVxuIiwKIAkJCQkg ICAgICAgYmlhc19zdGFydCwgYmlhc19lbmQsIGJpYXNfc2l6ZSwgYmlhc19zaXplKTsKLQkJZHJt X2J1ZGR5X2ZyZWVfbGlzdCgmbW0sICZ0bXAsIDApOworCQlncHVfYnVkZHlfZnJlZV9saXN0KCZt bSwgJnRtcCwgMCk7CiAKIAkJLyogc2luZ2xlIHBhZ2Ugd2l0aCBpbnRlcm5hbCByb3VuZF91cCAq LwogCQlLVU5JVF9BU1NFUlRfRkFMU0VfTVNHKHRlc3QsCi0JCQkJICAgICAgIGRybV9idWRkeV9h bGxvY19ibG9ja3MoJm1tLCBiaWFzX3N0YXJ0LAorCQkJCSAgICAgICBncHVfYnVkZHlfYWxsb2Nf YmxvY2tzKCZtbSwgYmlhc19zdGFydCwKIAkJCQkJCQkgICAgICBiaWFzX2VuZCwgcHMsIGJpYXNf c2l6ZSwKIAkJCQkJCQkgICAgICAmdG1wLAotCQkJCQkJCSAgICAgIERSTV9CVUREWV9SQU5HRV9B TExPQ0FUSU9OKSwKKwkJCQkJCQkgICAgICBHUFVfQlVERFlfUkFOR0VfQUxMT0NBVElPTiksCiAJ CQkJICAgICAgICJidWRkeV9hbGxvYyBmYWlsZWQgd2l0aCBiaWFzKCV4LSV4KSwgc2l6ZT0ldSwg cHM9JXVcbiIsCiAJCQkJICAgICAgIGJpYXNfc3RhcnQsIGJpYXNfZW5kLCBwcywgYmlhc19zaXpl KTsKLQkJZHJtX2J1ZGR5X2ZyZWVfbGlzdCgmbW0sICZ0bXAsIDApOworCQlncHVfYnVkZHlfZnJl ZV9saXN0KCZtbSwgJnRtcCwgMCk7CiAKIAkJLyogcmFuZG9tIHNpemUgd2l0aGluICovCiAJCXNp emUgPSBtYXgocm91bmRfdXAocHJhbmRvbV91MzJfc3RhdGUoJnBybmcpICUgYmlhc19yZW0sIHBz KSwgcHMpOwogCQlpZiAoc2l6ZSkKIAkJCUtVTklUX0FTU0VSVF9GQUxTRV9NU0codGVzdCwKLQkJ CQkJICAgICAgIGRybV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCBiaWFzX3N0YXJ0LAorCQkJCQkg ICAgICAgZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIGJpYXNfc3RhcnQsCiAJCQkJCQkJCSAg ICAgIGJpYXNfZW5kLCBzaXplLCBwcywKIAkJCQkJCQkJICAgICAgJnRtcCwKLQkJCQkJCQkJICAg ICAgRFJNX0JVRERZX1JBTkdFX0FMTE9DQVRJT04pLAorCQkJCQkJCQkgICAgICBHUFVfQlVERFlf UkFOR0VfQUxMT0NBVElPTiksCiAJCQkJCSAgICAgICAiYnVkZHlfYWxsb2MgZmFpbGVkIHdpdGgg YmlhcygleC0leCksIHNpemU9JXUsIHBzPSV1XG4iLAogCQkJCQkgICAgICAgYmlhc19zdGFydCwg Ymlhc19lbmQsIHNpemUsIHBzKTsKIAogCQliaWFzX3JlbSAtPSBzaXplOwogCQkvKiB0b28gYmln IGZvciBjdXJyZW50IGF2YWlsICovCiAJCUtVTklUX0FTU0VSVF9UUlVFX01TRyh0ZXN0LAotCQkJ CSAgICAgIGRybV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCBiaWFzX3N0YXJ0LAorCQkJCSAgICAg IGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCBiaWFzX3N0YXJ0LAogCQkJCQkJCSAgICAgYmlh c19lbmQsIGJpYXNfcmVtICsgcHMsIHBzLAogCQkJCQkJCSAgICAgJmFsbG9jYXRlZCwKLQkJCQkJ CQkgICAgIERSTV9CVUREWV9SQU5HRV9BTExPQ0FUSU9OKSwKKwkJCQkJCQkgICAgIEdQVV9CVURE WV9SQU5HRV9BTExPQ0FUSU9OKSwKIAkJCQkgICAgICAiYnVkZHlfYWxsb2MgZGlkbid0IGZhaWwg d2l0aCBiaWFzKCV4LSV4KSwgc2l6ZT0ldSwgcHM9JXVcbiIsCiAJCQkJICAgICAgYmlhc19zdGFy dCwgYmlhc19lbmQsIGJpYXNfcmVtICsgcHMsIHBzKTsKIApAQCAtMjQ4LDEwICsyNDgsMTAgQEAg c3RhdGljIHZvaWQgZHJtX3Rlc3RfYnVkZHlfYWxsb2NfcmFuZ2VfYmlhcyhzdHJ1Y3Qga3VuaXQg KnRlc3QpCiAJCQlzaXplID0gbWF4KHNpemUsIHBzKTsKIAogCQkJS1VOSVRfQVNTRVJUX0ZBTFNF X01TRyh0ZXN0LAotCQkJCQkgICAgICAgZHJtX2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIGJpYXNf c3RhcnQsCisJCQkJCSAgICAgICBncHVfYnVkZHlfYWxsb2NfYmxvY2tzKCZtbSwgYmlhc19zdGFy dCwKIAkJCQkJCQkJICAgICAgYmlhc19lbmQsIHNpemUsIHBzLAogCQkJCQkJCQkgICAgICAmYWxs b2NhdGVkLAotCQkJCQkJCQkgICAgICBEUk1fQlVERFlfUkFOR0VfQUxMT0NBVElPTiksCisJCQkJ CQkJCSAgICAgIEdQVV9CVUREWV9SQU5HRV9BTExPQ0FUSU9OKSwKIAkJCQkJICAgICAgICJidWRk eV9hbGxvYyBmYWlsZWQgd2l0aCBiaWFzKCV4LSV4KSwgc2l6ZT0ldSwgcHM9JXVcbiIsCiAJCQkJ CSAgICAgICBiaWFzX3N0YXJ0LCBiaWFzX2VuZCwgc2l6ZSwgcHMpOwogCQkJLyoKQEAgLTI1OSwx NSArMjU5LDE1IEBAIHN0YXRpYyB2b2lkIGRybV90ZXN0X2J1ZGR5X2FsbG9jX3JhbmdlX2JpYXMo c3RydWN0IGt1bml0ICp0ZXN0KQogCQkJICogdW5hbGxvY2F0ZWQsIGFuZCBpZGVhbGx5IG5vdCBh bHdheXMgb24gdGhlIGJpYXMKIAkJCSAqIGJvdW5kYXJpZXMuCiAJCQkgKi8KLQkJCWRybV9idWRk eV9mcmVlX2xpc3QoJm1tLCAmdG1wLCAwKTsKKwkJCWdwdV9idWRkeV9mcmVlX2xpc3QoJm1tLCAm dG1wLCAwKTsKIAkJfSBlbHNlIHsKIAkJCWxpc3Rfc3BsaWNlX3RhaWwoJnRtcCwgJmFsbG9jYXRl ZCk7CiAJCX0KIAl9CiAKIAlrZnJlZShvcmRlcik7Ci0JZHJtX2J1ZGR5X2ZyZWVfbGlzdCgmbW0s ICZhbGxvY2F0ZWQsIDApOwotCWRybV9idWRkeV9maW5pKCZtbSk7CisJZ3B1X2J1ZGR5X2ZyZWVf bGlzdCgmbW0sICZhbGxvY2F0ZWQsIDApOworCWdwdV9idWRkeV9maW5pKCZtbSk7CiAKIAkvKgog CSAqIFNvbWV0aGluZyBtb3JlIGZyZWUtZm9ybS4gSWRlYSBpcyB0byBwaWNrIGEgcmFuZG9tIHN0 YXJ0aW5nIGJpYXMKQEAgLTI3OCw3ICsyNzgsNyBAQCBzdGF0aWMgdm9pZCBkcm1fdGVzdF9idWRk eV9hbGxvY19yYW5nZV9iaWFzKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAkgKiBhbGxvY2F0ZWQgbm9k ZXMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgYWRkcmVzcyBzcGFjZS4KIAkgKi8KIAotCUtVTklUX0FT U0VSVF9GQUxTRV9NU0codGVzdCwgZHJtX2J1ZGR5X2luaXQoJm1tLCBtbV9zaXplLCBwcyksCisJ S1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0ZXN0LCBncHVfYnVkZHlfaW5pdCgmbW0sIG1tX3NpemUs IHBzKSwKIAkJCSAgICAgICAiYnVkZHlfaW5pdCBmYWlsZWRcbiIpOwogCiAJYmlhc19zdGFydCA9 IHJvdW5kX3VwKHByYW5kb21fdTMyX3N0YXRlKCZwcm5nKSAlIChtbV9zaXplIC0gcHMpLCBwcyk7 CkBAIC0yOTAsMTAgKzI5MCwxMCBAQCBzdGF0aWMgdm9pZCBkcm1fdGVzdF9idWRkeV9hbGxvY19y YW5nZV9iaWFzKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAkJdTMyIHNpemUgPSBtYXgocm91bmRfdXAo cHJhbmRvbV91MzJfc3RhdGUoJnBybmcpICUgYmlhc19yZW0sIHBzKSwgcHMpOwogCiAJCUtVTklU X0FTU0VSVF9GQUxTRV9NU0codGVzdCwKLQkJCQkgICAgICAgZHJtX2J1ZGR5X2FsbG9jX2Jsb2Nr cygmbW0sIGJpYXNfc3RhcnQsCisJCQkJICAgICAgIGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1t LCBiaWFzX3N0YXJ0LAogCQkJCQkJCSAgICAgIGJpYXNfZW5kLCBzaXplLCBwcywKIAkJCQkJCQkg ICAgICAmYWxsb2NhdGVkLAotCQkJCQkJCSAgICAgIERSTV9CVUREWV9SQU5HRV9BTExPQ0FUSU9O KSwKKwkJCQkJCQkgICAgICBHUFVfQlVERFlfUkFOR0VfQUxMT0NBVElPTiksCiAJCQkJICAgICAg ICJidWRkeV9hbGxvYyBmYWlsZWQgd2l0aCBiaWFzKCV4LSV4KSwgc2l6ZT0ldSwgcHM9JXVcbiIs CiAJCQkJICAgICAgIGJpYXNfc3RhcnQsIGJpYXNfZW5kLCBzaXplLCBwcyk7CiAJCWJpYXNfcmVt IC09IHNpemU7CkBAIC0zMTksMjQgKzMxOSwyNCBAQCBzdGF0aWMgdm9pZCBkcm1fdGVzdF9idWRk eV9hbGxvY19yYW5nZV9iaWFzKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAlLVU5JVF9BU1NFUlRfRVEo dGVzdCwgYmlhc19zdGFydCwgMCk7CiAJS1VOSVRfQVNTRVJUX0VRKHRlc3QsIGJpYXNfZW5kLCBt bV9zaXplKTsKIAlLVU5JVF9BU1NFUlRfVFJVRV9NU0codGVzdCwKLQkJCSAgICAgIGRybV9idWRk eV9hbGxvY19ibG9ja3MoJm1tLCBiaWFzX3N0YXJ0LCBiaWFzX2VuZCwKKwkJCSAgICAgIGdwdV9i dWRkeV9hbGxvY19ibG9ja3MoJm1tLCBiaWFzX3N0YXJ0LCBiaWFzX2VuZCwKIAkJCQkJCSAgICAg cHMsIHBzLAogCQkJCQkJICAgICAmYWxsb2NhdGVkLAotCQkJCQkJICAgICBEUk1fQlVERFlfUkFO R0VfQUxMT0NBVElPTiksCisJCQkJCQkgICAgIEdQVV9CVUREWV9SQU5HRV9BTExPQ0FUSU9OKSwK IAkJCSAgICAgICJidWRkeV9hbGxvYyBwYXNzZWQgd2l0aCBiaWFzKCV4LSV4KSwgc2l6ZT0ldVxu IiwKIAkJCSAgICAgIGJpYXNfc3RhcnQsIGJpYXNfZW5kLCBwcyk7CiAKLQlkcm1fYnVkZHlfZnJl ZV9saXN0KCZtbSwgJmFsbG9jYXRlZCwgMCk7Ci0JZHJtX2J1ZGR5X2ZpbmkoJm1tKTsKKwlncHVf YnVkZHlfZnJlZV9saXN0KCZtbSwgJmFsbG9jYXRlZCwgMCk7CisJZ3B1X2J1ZGR5X2ZpbmkoJm1t KTsKIAogCS8qCi0JICogQWxsb2NhdGUgY2xlYXJlZCBibG9ja3MgaW4gdGhlIGJpYXMgcmFuZ2Ug d2hlbiB0aGUgRFJNIGJ1ZGR5J3MgY2xlYXIgYXZhaWwgaXMKKwkgKiBBbGxvY2F0ZSBjbGVhcmVk IGJsb2NrcyBpbiB0aGUgYmlhcyByYW5nZSB3aGVuIHRoZSBHUFUgYnVkZHkncyBjbGVhciBhdmFp bCBpcwogCSAqIHplcm8uIFRoaXMgd2lsbCB2YWxpZGF0ZSB0aGUgYmlhcyByYW5nZSBhbGxvY2F0 aW9uIGluIHNjZW5hcmlvcyBsaWtlIHN5c3RlbSBib290CiAJICogd2hlbiBubyBjbGVhcmVkIGJs b2NrcyBhcmUgYXZhaWxhYmxlIGFuZCBleGVyY2lzZSB0aGUgZmFsbGJhY2sgcGF0aCB0b28uIFRo ZSByZXN1bHRpbmcKIAkgKiBibG9ja3Mgc2hvdWxkIGFsd2F5cyBiZSBkaXJ0eS4KIAkgKi8KIAot CUtVTklUX0FTU0VSVF9GQUxTRV9NU0codGVzdCwgZHJtX2J1ZGR5X2luaXQoJm1tLCBtbV9zaXpl LCBwcyksCisJS1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0ZXN0LCBncHVfYnVkZHlfaW5pdCgmbW0s IG1tX3NpemUsIHBzKSwKIAkJCSAgICAgICAiYnVkZHlfaW5pdCBmYWlsZWRcbiIpOwogCiAJYmlh c19zdGFydCA9IHJvdW5kX3VwKHByYW5kb21fdTMyX3N0YXRlKCZwcm5nKSAlIChtbV9zaXplIC0g cHMpLCBwcyk7CkBAIC0zNDQsMTEgKzM0NCwxMSBAQCBzdGF0aWMgdm9pZCBkcm1fdGVzdF9idWRk eV9hbGxvY19yYW5nZV9iaWFzKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAliaWFzX2VuZCA9IG1heChi aWFzX2VuZCwgYmlhc19zdGFydCArIHBzKTsKIAliaWFzX3JlbSA9IGJpYXNfZW5kIC0gYmlhc19z dGFydDsKIAotCWZsYWdzID0gRFJNX0JVRERZX0NMRUFSX0FMTE9DQVRJT04gfCBEUk1fQlVERFlf UkFOR0VfQUxMT0NBVElPTjsKKwlmbGFncyA9IEdQVV9CVUREWV9DTEVBUl9BTExPQ0FUSU9OIHwg R1BVX0JVRERZX1JBTkdFX0FMTE9DQVRJT047CiAJc2l6ZSA9IG1heChyb3VuZF91cChwcmFuZG9t X3UzMl9zdGF0ZSgmcHJuZykgJSBiaWFzX3JlbSwgcHMpLCBwcyk7CiAKIAlLVU5JVF9BU1NFUlRf RkFMU0VfTVNHKHRlc3QsCi0JCQkgICAgICAgZHJtX2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIGJp YXNfc3RhcnQsCisJCQkgICAgICAgZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIGJpYXNfc3Rh cnQsCiAJCQkJCQkgICAgICBiaWFzX2VuZCwgc2l6ZSwgcHMsCiAJCQkJCQkgICAgICAmYWxsb2Nh dGVkLAogCQkJCQkJICAgICAgZmxhZ3MpLApAQCAtMzU2LDI3ICszNTYsMjcgQEAgc3RhdGljIHZv aWQgZHJtX3Rlc3RfYnVkZHlfYWxsb2NfcmFuZ2VfYmlhcyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJ CQkgICAgICAgYmlhc19zdGFydCwgYmlhc19lbmQsIHNpemUsIHBzKTsKIAogCWxpc3RfZm9yX2Vh Y2hfZW50cnkoYmxvY2ssICZhbGxvY2F0ZWQsIGxpbmspCi0JCUtVTklUX0VYUEVDVF9FUSh0ZXN0 LCBkcm1fYnVkZHlfYmxvY2tfaXNfY2xlYXIoYmxvY2spLCBmYWxzZSk7CisJCUtVTklUX0VYUEVD VF9FUSh0ZXN0LCBncHVfYnVkZHlfYmxvY2tfaXNfY2xlYXIoYmxvY2spLCBmYWxzZSk7CiAKLQlk cm1fYnVkZHlfZnJlZV9saXN0KCZtbSwgJmFsbG9jYXRlZCwgMCk7Ci0JZHJtX2J1ZGR5X2Zpbmko Jm1tKTsKKwlncHVfYnVkZHlfZnJlZV9saXN0KCZtbSwgJmFsbG9jYXRlZCwgMCk7CisJZ3B1X2J1 ZGR5X2ZpbmkoJm1tKTsKIH0KIAotc3RhdGljIHZvaWQgZHJtX3Rlc3RfYnVkZHlfYWxsb2NfY2xl YXIoc3RydWN0IGt1bml0ICp0ZXN0KQorc3RhdGljIHZvaWQgZ3B1X3Rlc3RfYnVkZHlfYWxsb2Nf Y2xlYXIoc3RydWN0IGt1bml0ICp0ZXN0KQogewogCXVuc2lnbmVkIGxvbmcgbl9wYWdlcywgdG90 YWwsIGkgPSAwOwogCWNvbnN0IHVuc2lnbmVkIGxvbmcgcHMgPSBTWl80SzsKLQlzdHJ1Y3QgZHJt X2J1ZGR5X2Jsb2NrICpibG9jazsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jazsKIAlj b25zdCBpbnQgbWF4X29yZGVyID0gMTI7CiAJTElTVF9IRUFEKGFsbG9jYXRlZCk7Ci0Jc3RydWN0 IGRybV9idWRkeSBtbTsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5IG1tOwogCXVuc2lnbmVkIGludCBvcmRl cjsKIAl1MzIgbW1fc2l6ZSwgc2l6ZTsKIAlMSVNUX0hFQUQoZGlydHkpOwogCUxJU1RfSEVBRChj bGVhbik7CiAKIAltbV9zaXplID0gU1pfNEsgPDwgbWF4X29yZGVyOwotCUtVTklUX0VYUEVDVF9G QUxTRSh0ZXN0LCBkcm1fYnVkZHlfaW5pdCgmbW0sIG1tX3NpemUsIHBzKSk7CisJS1VOSVRfRVhQ RUNUX0ZBTFNFKHRlc3QsIGdwdV9idWRkeV9pbml0KCZtbSwgbW1fc2l6ZSwgcHMpKTsKIAogCUtV TklUX0VYUEVDVF9FUSh0ZXN0LCBtbS5tYXhfb3JkZXIsIG1heF9vcmRlcik7CiAKQEAgLTM4OSwx MSArMzg5LDExIEBAIHN0YXRpYyB2b2lkIGRybV90ZXN0X2J1ZGR5X2FsbG9jX2NsZWFyKHN0cnVj dCBrdW5pdCAqdGVzdCkKIAkgKiBpcyBpbmRlZWQgYWxsIGRpcnR5IHBhZ2VzIGFuZCB2aWNlIHZl cnNhLiBGcmVlIGl0IGFsbCBhZ2FpbiwKIAkgKiBrZWVwaW5nIHRoZSBkaXJ0eS9jbGVhciBzdGF0 dXMuCiAJICovCi0JS1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0ZXN0LCBkcm1fYnVkZHlfYWxsb2Nf YmxvY2tzKCZtbSwgMCwgbW1fc2l6ZSwKKwlLVU5JVF9BU1NFUlRfRkFMU0VfTVNHKHRlc3QsIGdw dV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCAwLCBtbV9zaXplLAogCQkJCQkJCSAgICA1ICogcHMs IHBzLCAmYWxsb2NhdGVkLAotCQkJCQkJCSAgICBEUk1fQlVERFlfVE9QRE9XTl9BTExPQ0FUSU9O KSwKKwkJCQkJCQkgICAgR1BVX0JVRERZX1RPUERPV05fQUxMT0NBVElPTiksCiAJCQkJImJ1ZGR5 X2FsbG9jIGhpdCBhbiBlcnJvciBzaXplPSVsdVxuIiwgNSAqIHBzKTsKLQlkcm1fYnVkZHlfZnJl ZV9saXN0KCZtbSwgJmFsbG9jYXRlZCwgRFJNX0JVRERZX0NMRUFSRUQpOworCWdwdV9idWRkeV9m cmVlX2xpc3QoJm1tLCAmYWxsb2NhdGVkLCBHUFVfQlVERFlfQ0xFQVJFRCk7CiAKIAluX3BhZ2Vz ID0gMTA7CiAJZG8gewpAQCAtNDA2LDM3ICs0MDYsMzcgQEAgc3RhdGljIHZvaWQgZHJtX3Rlc3Rf YnVkZHlfYWxsb2NfY2xlYXIoc3RydWN0IGt1bml0ICp0ZXN0KQogCQkJZmxhZ3MgPSAwOwogCQl9 IGVsc2UgewogCQkJbGlzdCA9ICZjbGVhbjsKLQkJCWZsYWdzID0gRFJNX0JVRERZX0NMRUFSX0FM TE9DQVRJT047CisJCQlmbGFncyA9IEdQVV9CVUREWV9DTEVBUl9BTExPQ0FUSU9OOwogCQl9CiAK LQkJS1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0ZXN0LCBkcm1fYnVkZHlfYWxsb2NfYmxvY2tzKCZt bSwgMCwgbW1fc2l6ZSwKKwkJS1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0ZXN0LCBncHVfYnVkZHlf YWxsb2NfYmxvY2tzKCZtbSwgMCwgbW1fc2l6ZSwKIAkJCQkJCQkJICAgIHBzLCBwcywgbGlzdCwK IAkJCQkJCQkJICAgIGZsYWdzKSwKIAkJCQkJImJ1ZGR5X2FsbG9jIGhpdCBhbiBlcnJvciBzaXpl PSVsdVxuIiwgcHMpOwogCX0gd2hpbGUgKCsraSA8IG5fcGFnZXMpOwogCiAJbGlzdF9mb3JfZWFj aF9lbnRyeShibG9jaywgJmNsZWFuLCBsaW5rKQotCQlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZHJt X2J1ZGR5X2Jsb2NrX2lzX2NsZWFyKGJsb2NrKSwgdHJ1ZSk7CisJCUtVTklUX0VYUEVDVF9FUSh0 ZXN0LCBncHVfYnVkZHlfYmxvY2tfaXNfY2xlYXIoYmxvY2spLCB0cnVlKTsKIAogCWxpc3RfZm9y X2VhY2hfZW50cnkoYmxvY2ssICZkaXJ0eSwgbGluaykKLQkJS1VOSVRfRVhQRUNUX0VRKHRlc3Qs IGRybV9idWRkeV9ibG9ja19pc19jbGVhcihibG9jayksIGZhbHNlKTsKKwkJS1VOSVRfRVhQRUNU X0VRKHRlc3QsIGdwdV9idWRkeV9ibG9ja19pc19jbGVhcihibG9jayksIGZhbHNlKTsKIAotCWRy bV9idWRkeV9mcmVlX2xpc3QoJm1tLCAmY2xlYW4sIERSTV9CVUREWV9DTEVBUkVEKTsKKwlncHVf YnVkZHlfZnJlZV9saXN0KCZtbSwgJmNsZWFuLCBHUFVfQlVERFlfQ0xFQVJFRCk7CiAKIAkvKgog CSAqIFRyeWluZyB0byBnbyBvdmVyIHRoZSBjbGVhciBsaW1pdCBmb3Igc29tZSBhbGxvY2F0aW9u LgogCSAqIFRoZSBhbGxvY2F0aW9uIHNob3VsZCBuZXZlciBmYWlsIHdpdGggcmVhc29uYWJsZSBw YWdlLXNpemUuCiAJICovCi0JS1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0ZXN0LCBkcm1fYnVkZHlf YWxsb2NfYmxvY2tzKCZtbSwgMCwgbW1fc2l6ZSwKKwlLVU5JVF9BU1NFUlRfRkFMU0VfTVNHKHRl c3QsIGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCAwLCBtbV9zaXplLAogCQkJCQkJCSAgICAx MCAqIHBzLCBwcywgJmNsZWFuLAotCQkJCQkJCSAgICBEUk1fQlVERFlfQ0xFQVJfQUxMT0NBVElP TiksCisJCQkJCQkJICAgIEdQVV9CVUREWV9DTEVBUl9BTExPQ0FUSU9OKSwKIAkJCQkiYnVkZHlf YWxsb2MgaGl0IGFuIGVycm9yIHNpemU9JWx1XG4iLCAxMCAqIHBzKTsKIAotCWRybV9idWRkeV9m cmVlX2xpc3QoJm1tLCAmY2xlYW4sIERSTV9CVUREWV9DTEVBUkVEKTsKLQlkcm1fYnVkZHlfZnJl ZV9saXN0KCZtbSwgJmRpcnR5LCAwKTsKLQlkcm1fYnVkZHlfZmluaSgmbW0pOworCWdwdV9idWRk eV9mcmVlX2xpc3QoJm1tLCAmY2xlYW4sIEdQVV9CVUREWV9DTEVBUkVEKTsKKwlncHVfYnVkZHlf ZnJlZV9saXN0KCZtbSwgJmRpcnR5LCAwKTsKKwlncHVfYnVkZHlfZmluaSgmbW0pOwogCi0JS1VO SVRfRVhQRUNUX0ZBTFNFKHRlc3QsIGRybV9idWRkeV9pbml0KCZtbSwgbW1fc2l6ZSwgcHMpKTsK KwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgZ3B1X2J1ZGR5X2luaXQoJm1tLCBtbV9zaXplLCBw cykpOwogCiAJLyoKIAkgKiBDcmVhdGUgYSBuZXcgbW0uIEludGVudGlvbmFsbHkgZnJhZ21lbnQg dGhlIGFkZHJlc3Mgc3BhY2UgYnkgY3JlYXRpbmcKQEAgLTQ1OCwzNCArNDU4LDM0IEBAIHN0YXRp YyB2b2lkIGRybV90ZXN0X2J1ZGR5X2FsbG9jX2NsZWFyKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAkJ ZWxzZQogCQkJbGlzdCA9ICZjbGVhbjsKIAotCQlLVU5JVF9BU1NFUlRfRkFMU0VfTVNHKHRlc3Qs IGRybV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCAwLCBtbV9zaXplLAorCQlLVU5JVF9BU1NFUlRf RkFMU0VfTVNHKHRlc3QsIGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCAwLCBtbV9zaXplLAog CQkJCQkJCQkgICAgcHMsIHBzLCBsaXN0LCAwKSwKIAkJCQkJImJ1ZGR5X2FsbG9jIGhpdCBhbiBl cnJvciBzaXplPSVsdVxuIiwgcHMpOwogCX0gd2hpbGUgKCsraSA8IG5fcGFnZXMpOwogCi0JZHJt X2J1ZGR5X2ZyZWVfbGlzdCgmbW0sICZjbGVhbiwgRFJNX0JVRERZX0NMRUFSRUQpOwotCWRybV9i dWRkeV9mcmVlX2xpc3QoJm1tLCAmZGlydHksIDApOworCWdwdV9idWRkeV9mcmVlX2xpc3QoJm1t LCAmY2xlYW4sIEdQVV9CVUREWV9DTEVBUkVEKTsKKwlncHVfYnVkZHlfZnJlZV9saXN0KCZtbSwg JmRpcnR5LCAwKTsKIAogCW9yZGVyID0gMTsKIAlkbyB7CiAJCXNpemUgPSBTWl80SyA8PCBvcmRl cjsKIAotCQlLVU5JVF9BU1NFUlRfRkFMU0VfTVNHKHRlc3QsIGRybV9idWRkeV9hbGxvY19ibG9j a3MoJm1tLCAwLCBtbV9zaXplLAorCQlLVU5JVF9BU1NFUlRfRkFMU0VfTVNHKHRlc3QsIGdwdV9i dWRkeV9hbGxvY19ibG9ja3MoJm1tLCAwLCBtbV9zaXplLAogCQkJCQkJCQkgICAgc2l6ZSwgc2l6 ZSwgJmFsbG9jYXRlZCwKLQkJCQkJCQkJICAgIERSTV9CVUREWV9DTEVBUl9BTExPQ0FUSU9OKSwK KwkJCQkJCQkJICAgIEdQVV9CVUREWV9DTEVBUl9BTExPQ0FUSU9OKSwKIAkJCQkJImJ1ZGR5X2Fs bG9jIGhpdCBhbiBlcnJvciBzaXplPSV1XG4iLCBzaXplKTsKIAkJdG90YWwgPSAwOwogCQlsaXN0 X2Zvcl9lYWNoX2VudHJ5KGJsb2NrLCAmYWxsb2NhdGVkLCBsaW5rKSB7CiAJCQlpZiAoc2l6ZSAh PSBtbV9zaXplKQotCQkJCUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBkcm1fYnVkZHlfYmxvY2tfaXNf Y2xlYXIoYmxvY2spLCBmYWxzZSk7Ci0JCQl0b3RhbCArPSBkcm1fYnVkZHlfYmxvY2tfc2l6ZSgm bW0sIGJsb2NrKTsKKwkJCQlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZ3B1X2J1ZGR5X2Jsb2NrX2lz X2NsZWFyKGJsb2NrKSwgZmFsc2UpOworCQkJdG90YWwgKz0gZ3B1X2J1ZGR5X2Jsb2NrX3NpemUo Jm1tLCBibG9jayk7CiAJCX0KIAkJS1VOSVRfRVhQRUNUX0VRKHRlc3QsIHRvdGFsLCBzaXplKTsK IAotCQlkcm1fYnVkZHlfZnJlZV9saXN0KCZtbSwgJmFsbG9jYXRlZCwgMCk7CisJCWdwdV9idWRk eV9mcmVlX2xpc3QoJm1tLCAmYWxsb2NhdGVkLCAwKTsKIAl9IHdoaWxlICgrK29yZGVyIDw9IG1h eF9vcmRlcik7CiAKLQlkcm1fYnVkZHlfZmluaSgmbW0pOworCWdwdV9idWRkeV9maW5pKCZtbSk7 CiAKIAkvKgogCSAqIENyZWF0ZSBhIG5ldyBtbSB3aXRoIGEgbm9uIHBvd2VyLW9mLXR3byBzaXpl LiBBbGxvY2F0ZSBhIHJhbmRvbSBzaXplIGZyb20gZWFjaApAQCAtNDk0LDQ0ICs0OTQsNDQgQEAg c3RhdGljIHZvaWQgZHJtX3Rlc3RfYnVkZHlfYWxsb2NfY2xlYXIoc3RydWN0IGt1bml0ICp0ZXN0 KQogCSAqLwogCW1tX3NpemUgPSAoU1pfNEsgPDwgbWF4X29yZGVyKSArIChTWl80SyA8PCAobWF4 X29yZGVyIC0gMikpOwogCi0JS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIGRybV9idWRkeV9pbml0 KCZtbSwgbW1fc2l6ZSwgcHMpKTsKKwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgZ3B1X2J1ZGR5 X2luaXQoJm1tLCBtbV9zaXplLCBwcykpOwogCUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBtbS5tYXhf b3JkZXIsIG1heF9vcmRlcik7Ci0JS1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0ZXN0LCBkcm1fYnVk ZHlfYWxsb2NfYmxvY2tzKCZtbSwgMCwgU1pfNEsgPDwgbWF4X29yZGVyLAorCUtVTklUX0FTU0VS VF9GQUxTRV9NU0codGVzdCwgZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIDAsIFNaXzRLIDw8 IG1heF9vcmRlciwKIAkJCQkJCQkgICAgNCAqIHBzLCBwcywgJmFsbG9jYXRlZCwKLQkJCQkJCQkg ICAgRFJNX0JVRERZX1JBTkdFX0FMTE9DQVRJT04pLAorCQkJCQkJCSAgICBHUFVfQlVERFlfUkFO R0VfQUxMT0NBVElPTiksCiAJCQkJImJ1ZGR5X2FsbG9jIGhpdCBhbiBlcnJvciBzaXplPSVsdVxu IiwgNCAqIHBzKTsKLQlkcm1fYnVkZHlfZnJlZV9saXN0KCZtbSwgJmFsbG9jYXRlZCwgRFJNX0JV RERZX0NMRUFSRUQpOwotCUtVTklUX0FTU0VSVF9GQUxTRV9NU0codGVzdCwgZHJtX2J1ZGR5X2Fs bG9jX2Jsb2NrcygmbW0sIDAsIFNaXzRLIDw8IG1heF9vcmRlciwKKwlncHVfYnVkZHlfZnJlZV9s aXN0KCZtbSwgJmFsbG9jYXRlZCwgR1BVX0JVRERZX0NMRUFSRUQpOworCUtVTklUX0FTU0VSVF9G QUxTRV9NU0codGVzdCwgZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIDAsIFNaXzRLIDw8IG1h eF9vcmRlciwKIAkJCQkJCQkgICAgMiAqIHBzLCBwcywgJmFsbG9jYXRlZCwKLQkJCQkJCQkgICAg RFJNX0JVRERZX0NMRUFSX0FMTE9DQVRJT04pLAorCQkJCQkJCSAgICBHUFVfQlVERFlfQ0xFQVJf QUxMT0NBVElPTiksCiAJCQkJImJ1ZGR5X2FsbG9jIGhpdCBhbiBlcnJvciBzaXplPSVsdVxuIiwg MiAqIHBzKTsKLQlkcm1fYnVkZHlfZnJlZV9saXN0KCZtbSwgJmFsbG9jYXRlZCwgRFJNX0JVRERZ X0NMRUFSRUQpOwotCUtVTklUX0FTU0VSVF9GQUxTRV9NU0codGVzdCwgZHJtX2J1ZGR5X2FsbG9j X2Jsb2NrcygmbW0sIFNaXzRLIDw8IG1heF9vcmRlciwgbW1fc2l6ZSwKKwlncHVfYnVkZHlfZnJl ZV9saXN0KCZtbSwgJmFsbG9jYXRlZCwgR1BVX0JVRERZX0NMRUFSRUQpOworCUtVTklUX0FTU0VS VF9GQUxTRV9NU0codGVzdCwgZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIFNaXzRLIDw8IG1h eF9vcmRlciwgbW1fc2l6ZSwKIAkJCQkJCQkgICAgcHMsIHBzLCAmYWxsb2NhdGVkLAotCQkJCQkJ CSAgICBEUk1fQlVERFlfUkFOR0VfQUxMT0NBVElPTiksCisJCQkJCQkJICAgIEdQVV9CVUREWV9S QU5HRV9BTExPQ0FUSU9OKSwKIAkJCQkiYnVkZHlfYWxsb2MgaGl0IGFuIGVycm9yIHNpemU9JWx1 XG4iLCBwcyk7Ci0JZHJtX2J1ZGR5X2ZyZWVfbGlzdCgmbW0sICZhbGxvY2F0ZWQsIERSTV9CVURE WV9DTEVBUkVEKTsKLQlkcm1fYnVkZHlfZmluaSgmbW0pOworCWdwdV9idWRkeV9mcmVlX2xpc3Qo Jm1tLCAmYWxsb2NhdGVkLCBHUFVfQlVERFlfQ0xFQVJFRCk7CisJZ3B1X2J1ZGR5X2ZpbmkoJm1t KTsKIH0KIAotc3RhdGljIHZvaWQgZHJtX3Rlc3RfYnVkZHlfYWxsb2NfY29udGlndW91cyhzdHJ1 Y3Qga3VuaXQgKnRlc3QpCitzdGF0aWMgdm9pZCBncHVfdGVzdF9idWRkeV9hbGxvY19jb250aWd1 b3VzKHN0cnVjdCBrdW5pdCAqdGVzdCkKIHsKIAljb25zdCB1bnNpZ25lZCBsb25nIHBzID0gU1pf NEssIG1tX3NpemUgPSAxNiAqIDMgKiBTWl80SzsKIAl1bnNpZ25lZCBsb25nIGksIG5fcGFnZXMs IHRvdGFsOwotCXN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrOwotCXN0cnVjdCBkcm1fYnVk ZHkgbW07CisJc3RydWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2s7CisJc3RydWN0IGdwdV9idWRk eSBtbTsKIAlMSVNUX0hFQUQobGVmdCk7CiAJTElTVF9IRUFEKG1pZGRsZSk7CiAJTElTVF9IRUFE KHJpZ2h0KTsKIAlMSVNUX0hFQUQoYWxsb2NhdGVkKTsKIAotCUtVTklUX0VYUEVDVF9GQUxTRSh0 ZXN0LCBkcm1fYnVkZHlfaW5pdCgmbW0sIG1tX3NpemUsIHBzKSk7CisJS1VOSVRfRVhQRUNUX0ZB TFNFKHRlc3QsIGdwdV9idWRkeV9pbml0KCZtbSwgbW1fc2l6ZSwgcHMpKTsKIAogCS8qCiAJICog SWRlYSBpcyB0byBmcmFnbWVudCB0aGUgYWRkcmVzcyBzcGFjZSBieSBhbHRlcm5hdGluZyBibG9j awogCSAqIGFsbG9jYXRpb25zIGJldHdlZW4gdGhyZWUgZGlmZmVyZW50IGxpc3RzOyBvbmUgZm9y IGxlZnQsIG1pZGRsZSBhbmQKIAkgKiByaWdodC4gV2UgY2FuIHRoZW4gZnJlZSBhIGxpc3QgdG8g c2ltdWxhdGUgZnJhZ21lbnRhdGlvbi4gSW4KLQkgKiBwYXJ0aWN1bGFyIHdlIHdhbnQgdG8gZXhl cmNpc2UgdGhlIERSTV9CVUREWV9DT05USUdVT1VTX0FMTE9DQVRJT04sCisJICogcGFydGljdWxh ciB3ZSB3YW50IHRvIGV4ZXJjaXNlIHRoZSBHUFVfQlVERFlfQ09OVElHVU9VU19BTExPQ0FUSU9O LAogCSAqIGluY2x1ZGluZyB0aGUgdHJ5X2hhcmRlciBwYXRoLgogCSAqLwogCkBAIC01NDgsNjYg KzU0OCw2NiBAQCBzdGF0aWMgdm9pZCBkcm1fdGVzdF9idWRkeV9hbGxvY19jb250aWd1b3VzKHN0 cnVjdCBrdW5pdCAqdGVzdCkKIAkJZWxzZQogCQkJbGlzdCA9ICZyaWdodDsKIAkJS1VOSVRfQVNT RVJUX0ZBTFNFX01TRyh0ZXN0LAotCQkJCSAgICAgICBkcm1fYnVkZHlfYWxsb2NfYmxvY2tzKCZt bSwgMCwgbW1fc2l6ZSwKKwkJCQkgICAgICAgZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIDAs IG1tX3NpemUsCiAJCQkJCQkJICAgICAgcHMsIHBzLCBsaXN0LCAwKSwKIAkJCQkgICAgICAgImJ1 ZGR5X2FsbG9jIGhpdCBhbiBlcnJvciBzaXplPSVsdVxuIiwKIAkJCQkgICAgICAgcHMpOwogCX0g d2hpbGUgKCsraSA8IG5fcGFnZXMpOwogCi0JS1VOSVRfQVNTRVJUX1RSVUVfTVNHKHRlc3QsIGRy bV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCAwLCBtbV9zaXplLAorCUtVTklUX0FTU0VSVF9UUlVF X01TRyh0ZXN0LCBncHVfYnVkZHlfYWxsb2NfYmxvY2tzKCZtbSwgMCwgbW1fc2l6ZSwKIAkJCQkJ CQkgICAzICogcHMsIHBzLCAmYWxsb2NhdGVkLAotCQkJCQkJCSAgIERSTV9CVUREWV9DT05USUdV T1VTX0FMTE9DQVRJT04pLAorCQkJCQkJCSAgIEdQVV9CVUREWV9DT05USUdVT1VTX0FMTE9DQVRJ T04pLAogCQkJICAgICAgICJidWRkeV9hbGxvYyBkaWRuJ3QgZXJyb3Igc2l6ZT0lbHVcbiIsIDMg KiBwcyk7CiAKLQlkcm1fYnVkZHlfZnJlZV9saXN0KCZtbSwgJm1pZGRsZSwgMCk7Ci0JS1VOSVRf QVNTRVJUX1RSVUVfTVNHKHRlc3QsIGRybV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCAwLCBtbV9z aXplLAorCWdwdV9idWRkeV9mcmVlX2xpc3QoJm1tLCAmbWlkZGxlLCAwKTsKKwlLVU5JVF9BU1NF UlRfVFJVRV9NU0codGVzdCwgZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIDAsIG1tX3NpemUs CiAJCQkJCQkJICAgMyAqIHBzLCBwcywgJmFsbG9jYXRlZCwKLQkJCQkJCQkgICBEUk1fQlVERFlf Q09OVElHVU9VU19BTExPQ0FUSU9OKSwKKwkJCQkJCQkgICBHUFVfQlVERFlfQ09OVElHVU9VU19B TExPQ0FUSU9OKSwKIAkJCSAgICAgICAiYnVkZHlfYWxsb2MgZGlkbid0IGVycm9yIHNpemU9JWx1 XG4iLCAzICogcHMpOwotCUtVTklUX0FTU0VSVF9UUlVFX01TRyh0ZXN0LCBkcm1fYnVkZHlfYWxs b2NfYmxvY2tzKCZtbSwgMCwgbW1fc2l6ZSwKKwlLVU5JVF9BU1NFUlRfVFJVRV9NU0codGVzdCwg Z3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIDAsIG1tX3NpemUsCiAJCQkJCQkJICAgMiAqIHBz LCBwcywgJmFsbG9jYXRlZCwKLQkJCQkJCQkgICBEUk1fQlVERFlfQ09OVElHVU9VU19BTExPQ0FU SU9OKSwKKwkJCQkJCQkgICBHUFVfQlVERFlfQ09OVElHVU9VU19BTExPQ0FUSU9OKSwKIAkJCSAg ICAgICAiYnVkZHlfYWxsb2MgZGlkbid0IGVycm9yIHNpemU9JWx1XG4iLCAyICogcHMpOwogCi0J ZHJtX2J1ZGR5X2ZyZWVfbGlzdCgmbW0sICZyaWdodCwgMCk7Ci0JS1VOSVRfQVNTRVJUX1RSVUVf TVNHKHRlc3QsIGRybV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCAwLCBtbV9zaXplLAorCWdwdV9i dWRkeV9mcmVlX2xpc3QoJm1tLCAmcmlnaHQsIDApOworCUtVTklUX0FTU0VSVF9UUlVFX01TRyh0 ZXN0LCBncHVfYnVkZHlfYWxsb2NfYmxvY2tzKCZtbSwgMCwgbW1fc2l6ZSwKIAkJCQkJCQkgICAz ICogcHMsIHBzLCAmYWxsb2NhdGVkLAotCQkJCQkJCSAgIERSTV9CVUREWV9DT05USUdVT1VTX0FM TE9DQVRJT04pLAorCQkJCQkJCSAgIEdQVV9CVUREWV9DT05USUdVT1VTX0FMTE9DQVRJT04pLAog CQkJICAgICAgICJidWRkeV9hbGxvYyBkaWRuJ3QgZXJyb3Igc2l6ZT0lbHVcbiIsIDMgKiBwcyk7 CiAJLyoKIAkgKiBBdCB0aGlzIHBvaW50IHdlIHNob3VsZCBoYXZlIGVub3VnaCBjb250aWd1b3Vz IHNwYWNlIGZvciAyIGJsb2NrcywKIAkgKiBob3dldmVyIHRoZXkgYXJlIG5ldmVyIGJ1ZGRpZXMg KHNpbmNlIHdlIGZyZWVkIG1pZGRsZSBhbmQgcmlnaHQpIHNvCiAJICogd2lsbCByZXF1aXJlIHRo ZSB0cnlfaGFyZGVyIGxvZ2ljIHRvIGZpbmQgdGhlbS4KIAkgKi8KLQlLVU5JVF9BU1NFUlRfRkFM U0VfTVNHKHRlc3QsIGRybV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCAwLCBtbV9zaXplLAorCUtV TklUX0FTU0VSVF9GQUxTRV9NU0codGVzdCwgZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIDAs IG1tX3NpemUsCiAJCQkJCQkJICAgIDIgKiBwcywgcHMsICZhbGxvY2F0ZWQsCi0JCQkJCQkJICAg IERSTV9CVUREWV9DT05USUdVT1VTX0FMTE9DQVRJT04pLAorCQkJCQkJCSAgICBHUFVfQlVERFlf Q09OVElHVU9VU19BTExPQ0FUSU9OKSwKIAkJCSAgICAgICAiYnVkZHlfYWxsb2MgaGl0IGFuIGVy cm9yIHNpemU9JWx1XG4iLCAyICogcHMpOwogCi0JZHJtX2J1ZGR5X2ZyZWVfbGlzdCgmbW0sICZs ZWZ0LCAwKTsKLQlLVU5JVF9BU1NFUlRfRkFMU0VfTVNHKHRlc3QsIGRybV9idWRkeV9hbGxvY19i bG9ja3MoJm1tLCAwLCBtbV9zaXplLAorCWdwdV9idWRkeV9mcmVlX2xpc3QoJm1tLCAmbGVmdCwg MCk7CisJS1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0ZXN0LCBncHVfYnVkZHlfYWxsb2NfYmxvY2tz KCZtbSwgMCwgbW1fc2l6ZSwKIAkJCQkJCQkgICAgMyAqIHBzLCBwcywgJmFsbG9jYXRlZCwKLQkJ CQkJCQkgICAgRFJNX0JVRERZX0NPTlRJR1VPVVNfQUxMT0NBVElPTiksCisJCQkJCQkJICAgIEdQ VV9CVUREWV9DT05USUdVT1VTX0FMTE9DQVRJT04pLAogCQkJICAgICAgICJidWRkeV9hbGxvYyBo aXQgYW4gZXJyb3Igc2l6ZT0lbHVcbiIsIDMgKiBwcyk7CiAKIAl0b3RhbCA9IDA7CiAJbGlzdF9m b3JfZWFjaF9lbnRyeShibG9jaywgJmFsbG9jYXRlZCwgbGluaykKLQkJdG90YWwgKz0gZHJtX2J1 ZGR5X2Jsb2NrX3NpemUoJm1tLCBibG9jayk7CisJCXRvdGFsICs9IGdwdV9idWRkeV9ibG9ja19z aXplKCZtbSwgYmxvY2spOwogCiAJS1VOSVRfQVNTRVJUX0VRKHRlc3QsIHRvdGFsLCBwcyAqIDIg KyBwcyAqIDMpOwogCi0JZHJtX2J1ZGR5X2ZyZWVfbGlzdCgmbW0sICZhbGxvY2F0ZWQsIDApOwot CWRybV9idWRkeV9maW5pKCZtbSk7CisJZ3B1X2J1ZGR5X2ZyZWVfbGlzdCgmbW0sICZhbGxvY2F0 ZWQsIDApOworCWdwdV9idWRkeV9maW5pKCZtbSk7CiB9CiAKLXN0YXRpYyB2b2lkIGRybV90ZXN0 X2J1ZGR5X2FsbG9jX3BhdGhvbG9naWNhbChzdHJ1Y3Qga3VuaXQgKnRlc3QpCitzdGF0aWMgdm9p ZCBncHVfdGVzdF9idWRkeV9hbGxvY19wYXRob2xvZ2ljYWwoc3RydWN0IGt1bml0ICp0ZXN0KQog ewogCXU2NCBtbV9zaXplLCBzaXplLCBzdGFydCA9IDA7Ci0Jc3RydWN0IGRybV9idWRkeV9ibG9j ayAqYmxvY2s7CisJc3RydWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2s7CiAJY29uc3QgaW50IG1h eF9vcmRlciA9IDM7CiAJdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7CiAJaW50IG9yZGVyLCB0b3A7 Ci0Jc3RydWN0IGRybV9idWRkeSBtbTsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5IG1tOwogCUxJU1RfSEVB RChibG9ja3MpOwogCUxJU1RfSEVBRChob2xlcyk7CiAJTElTVF9IRUFEKHRtcCk7CkBAIC02MjAs NyArNjIwLDcgQEAgc3RhdGljIHZvaWQgZHJtX3Rlc3RfYnVkZHlfYWxsb2NfcGF0aG9sb2dpY2Fs KHN0cnVjdCBrdW5pdCAqdGVzdCkKIAkgKi8KIAogCW1tX3NpemUgPSBTWl80SyA8PCBtYXhfb3Jk ZXI7Ci0JS1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0ZXN0LCBkcm1fYnVkZHlfaW5pdCgmbW0sIG1t X3NpemUsIFNaXzRLKSwKKwlLVU5JVF9BU1NFUlRfRkFMU0VfTVNHKHRlc3QsIGdwdV9idWRkeV9p bml0KCZtbSwgbW1fc2l6ZSwgU1pfNEspLAogCQkJICAgICAgICJidWRkeV9pbml0IGZhaWxlZFxu Iik7CiAKIAlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgbW0ubWF4X29yZGVyLCBtYXhfb3JkZXIpOwpA QCAtNjMwLDE4ICs2MzAsMTggQEAgc3RhdGljIHZvaWQgZHJtX3Rlc3RfYnVkZHlfYWxsb2NfcGF0 aG9sb2dpY2FsKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAkJYmxvY2sgPSBsaXN0X2ZpcnN0X2VudHJ5 X29yX251bGwoJmJsb2NrcywgdHlwZW9mKCpibG9jayksIGxpbmspOwogCQlpZiAoYmxvY2spIHsK IAkJCWxpc3RfZGVsKCZibG9jay0+bGluayk7Ci0JCQlkcm1fYnVkZHlfZnJlZV9ibG9jaygmbW0s IGJsb2NrKTsKKwkJCWdwdV9idWRkeV9mcmVlX2Jsb2NrKCZtbSwgYmxvY2spOwogCQl9CiAKIAkJ Zm9yIChvcmRlciA9IHRvcDsgb3JkZXItLTspIHsKIAkJCXNpemUgPSBnZXRfc2l6ZShvcmRlciwg bW0uY2h1bmtfc2l6ZSk7Ci0JCQlLVU5JVF9BU1NFUlRfRkFMU0VfTVNHKHRlc3QsIGRybV9idWRk eV9hbGxvY19ibG9ja3MoJm1tLCBzdGFydCwKKwkJCUtVTklUX0FTU0VSVF9GQUxTRV9NU0codGVz dCwgZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIHN0YXJ0LAogCQkJCQkJCQkJICAgIG1tX3Np emUsIHNpemUsIHNpemUsCiAJCQkJCQkJCQkJJnRtcCwgZmxhZ3MpLAogCQkJCQkiYnVkZHlfYWxs b2MgaGl0IC1FTk9NRU0gd2l0aCBvcmRlcj0lZCwgdG9wPSVkXG4iLAogCQkJCQlvcmRlciwgdG9w KTsKIAotCQkJYmxvY2sgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJnRtcCwgc3RydWN0IGRy bV9idWRkeV9ibG9jaywgbGluayk7CisJCQlibG9jayA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVs bCgmdG1wLCBzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrLCBsaW5rKTsKIAkJCUtVTklUX0FTU0VSVF9U UlVFX01TRyh0ZXN0LCBibG9jaywgImFsbG9jX2Jsb2NrcyBoYXMgbm8gYmxvY2tzXG4iKTsKIAog CQkJbGlzdF9tb3ZlX3RhaWwoJmJsb2NrLT5saW5rLCAmYmxvY2tzKTsKQEAgLTY0OSw0NSArNjQ5 LDQ1IEBAIHN0YXRpYyB2b2lkIGRybV90ZXN0X2J1ZGR5X2FsbG9jX3BhdGhvbG9naWNhbChzdHJ1 Y3Qga3VuaXQgKnRlc3QpCiAKIAkJLyogVGhlcmUgc2hvdWxkIGJlIG9uZSBmaW5hbCBwYWdlIGZv ciB0aGlzIHN1Yi1hbGxvY2F0aW9uICovCiAJCXNpemUgPSBnZXRfc2l6ZSgwLCBtbS5jaHVua19z aXplKTsKLQkJS1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0ZXN0LCBkcm1fYnVkZHlfYWxsb2NfYmxv Y2tzKCZtbSwgc3RhcnQsIG1tX3NpemUsCisJCUtVTklUX0FTU0VSVF9GQUxTRV9NU0codGVzdCwg Z3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIHN0YXJ0LCBtbV9zaXplLAogCQkJCQkJCQkgICAg c2l6ZSwgc2l6ZSwgJnRtcCwgZmxhZ3MpLAogCQkJCQkJCSAgICJidWRkeV9hbGxvYyBoaXQgLUVO T01FTSBmb3IgaG9sZVxuIik7CiAKLQkJYmxvY2sgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwo JnRtcCwgc3RydWN0IGRybV9idWRkeV9ibG9jaywgbGluayk7CisJCWJsb2NrID0gbGlzdF9maXJz dF9lbnRyeV9vcl9udWxsKCZ0bXAsIHN0cnVjdCBncHVfYnVkZHlfYmxvY2ssIGxpbmspOwogCQlL VU5JVF9BU1NFUlRfVFJVRV9NU0codGVzdCwgYmxvY2ssICJhbGxvY19ibG9ja3MgaGFzIG5vIGJs b2Nrc1xuIik7CiAKIAkJbGlzdF9tb3ZlX3RhaWwoJmJsb2NrLT5saW5rLCAmaG9sZXMpOwogCiAJ CXNpemUgPSBnZXRfc2l6ZSh0b3AsIG1tLmNodW5rX3NpemUpOwotCQlLVU5JVF9BU1NFUlRfVFJV RV9NU0codGVzdCwgZHJtX2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIHN0YXJ0LCBtbV9zaXplLAor CQlLVU5JVF9BU1NFUlRfVFJVRV9NU0codGVzdCwgZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0s IHN0YXJ0LCBtbV9zaXplLAogCQkJCQkJCQkgICBzaXplLCBzaXplLCAmdG1wLCBmbGFncyksCiAJ CQkJCQkJICAiYnVkZHlfYWxsb2MgdW5leHBlY3RlZGx5IHN1Y2NlZWRlZCBhdCB0b3Atb3JkZXIg JWQvJWQsIGl0IHNob3VsZCBiZSBmdWxsISIsCiAJCQkJCQkJICB0b3AsIG1heF9vcmRlcik7CiAJ fQogCi0JZHJtX2J1ZGR5X2ZyZWVfbGlzdCgmbW0sICZob2xlcywgMCk7CisJZ3B1X2J1ZGR5X2Zy ZWVfbGlzdCgmbW0sICZob2xlcywgMCk7CiAKIAkvKiBOb3RoaW5nIGxhcmdlciB0aGFuIGJsb2Nr cyBvZiBjaHVua19zaXplIG5vdyBhdmFpbGFibGUgKi8KIAlmb3IgKG9yZGVyID0gMTsgb3JkZXIg PD0gbWF4X29yZGVyOyBvcmRlcisrKSB7CiAJCXNpemUgPSBnZXRfc2l6ZShvcmRlciwgbW0uY2h1 bmtfc2l6ZSk7Ci0JCUtVTklUX0FTU0VSVF9UUlVFX01TRyh0ZXN0LCBkcm1fYnVkZHlfYWxsb2Nf YmxvY2tzKCZtbSwgc3RhcnQsIG1tX3NpemUsCisJCUtVTklUX0FTU0VSVF9UUlVFX01TRyh0ZXN0 LCBncHVfYnVkZHlfYWxsb2NfYmxvY2tzKCZtbSwgc3RhcnQsIG1tX3NpemUsCiAJCQkJCQkJCSAg IHNpemUsIHNpemUsICZ0bXAsIGZsYWdzKSwKIAkJCQkJCQkgICJidWRkeV9hbGxvYyB1bmV4cGVj dGVkbHkgc3VjY2VlZGVkIGF0IG9yZGVyICVkLCBpdCBzaG91bGQgYmUgZnVsbCEiLAogCQkJCQkJ CSAgb3JkZXIpOwogCX0KIAogCWxpc3Rfc3BsaWNlX3RhaWwoJmhvbGVzLCAmYmxvY2tzKTsKLQlk cm1fYnVkZHlfZnJlZV9saXN0KCZtbSwgJmJsb2NrcywgMCk7Ci0JZHJtX2J1ZGR5X2ZpbmkoJm1t KTsKKwlncHVfYnVkZHlfZnJlZV9saXN0KCZtbSwgJmJsb2NrcywgMCk7CisJZ3B1X2J1ZGR5X2Zp bmkoJm1tKTsKIH0KIAotc3RhdGljIHZvaWQgZHJtX3Rlc3RfYnVkZHlfYWxsb2NfcGVzc2ltaXN0 aWMoc3RydWN0IGt1bml0ICp0ZXN0KQorc3RhdGljIHZvaWQgZ3B1X3Rlc3RfYnVkZHlfYWxsb2Nf cGVzc2ltaXN0aWMoc3RydWN0IGt1bml0ICp0ZXN0KQogewogCXU2NCBtbV9zaXplLCBzaXplLCBz dGFydCA9IDA7Ci0Jc3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2ssICpibjsKKwlzdHJ1Y3Qg Z3B1X2J1ZGR5X2Jsb2NrICpibG9jaywgKmJuOwogCWNvbnN0IHVuc2lnbmVkIGludCBtYXhfb3Jk ZXIgPSAxNjsKIAl1bnNpZ25lZCBsb25nIGZsYWdzID0gMDsKLQlzdHJ1Y3QgZHJtX2J1ZGR5IG1t OworCXN0cnVjdCBncHVfYnVkZHkgbW07CiAJdW5zaWduZWQgaW50IG9yZGVyOwogCUxJU1RfSEVB RChibG9ja3MpOwogCUxJU1RfSEVBRCh0bXApOwpAQCAtNjk5LDE5ICs2OTksMTkgQEAgc3RhdGlj IHZvaWQgZHJtX3Rlc3RfYnVkZHlfYWxsb2NfcGVzc2ltaXN0aWMoc3RydWN0IGt1bml0ICp0ZXN0 KQogCSAqLwogCiAJbW1fc2l6ZSA9IFNaXzRLIDw8IG1heF9vcmRlcjsKLQlLVU5JVF9BU1NFUlRf RkFMU0VfTVNHKHRlc3QsIGRybV9idWRkeV9pbml0KCZtbSwgbW1fc2l6ZSwgU1pfNEspLAorCUtV TklUX0FTU0VSVF9GQUxTRV9NU0codGVzdCwgZ3B1X2J1ZGR5X2luaXQoJm1tLCBtbV9zaXplLCBT Wl80SyksCiAJCQkgICAgICAgImJ1ZGR5X2luaXQgZmFpbGVkXG4iKTsKIAogCUtVTklUX0VYUEVD VF9FUSh0ZXN0LCBtbS5tYXhfb3JkZXIsIG1heF9vcmRlcik7CiAKIAlmb3IgKG9yZGVyID0gMDsg b3JkZXIgPCBtYXhfb3JkZXI7IG9yZGVyKyspIHsKIAkJc2l6ZSA9IGdldF9zaXplKG9yZGVyLCBt bS5jaHVua19zaXplKTsKLQkJS1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0ZXN0LCBkcm1fYnVkZHlf YWxsb2NfYmxvY2tzKCZtbSwgc3RhcnQsIG1tX3NpemUsCisJCUtVTklUX0FTU0VSVF9GQUxTRV9N U0codGVzdCwgZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIHN0YXJ0LCBtbV9zaXplLAogCQkJ CQkJCQkgICAgc2l6ZSwgc2l6ZSwgJnRtcCwgZmxhZ3MpLAogCQkJCQkJCSAgICJidWRkeV9hbGxv YyBoaXQgLUVOT01FTSB3aXRoIG9yZGVyPSVkXG4iLAogCQkJCQkJCSAgIG9yZGVyKTsKIAotCQli bG9jayA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmdG1wLCBzdHJ1Y3QgZHJtX2J1ZGR5X2Js b2NrLCBsaW5rKTsKKwkJYmxvY2sgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJnRtcCwgc3Ry dWN0IGdwdV9idWRkeV9ibG9jaywgbGluayk7CiAJCUtVTklUX0FTU0VSVF9UUlVFX01TRyh0ZXN0 LCBibG9jaywgImFsbG9jX2Jsb2NrcyBoYXMgbm8gYmxvY2tzXG4iKTsKIAogCQlsaXN0X21vdmVf dGFpbCgmYmxvY2stPmxpbmssICZibG9ja3MpOwpAQCAtNzE5LDExICs3MTksMTEgQEAgc3RhdGlj IHZvaWQgZHJtX3Rlc3RfYnVkZHlfYWxsb2NfcGVzc2ltaXN0aWMoc3RydWN0IGt1bml0ICp0ZXN0 KQogCiAJLyogQW5kIG5vdyB0aGUgbGFzdCByZW1haW5pbmcgYmxvY2sgYXZhaWxhYmxlICovCiAJ c2l6ZSA9IGdldF9zaXplKDAsIG1tLmNodW5rX3NpemUpOwotCUtVTklUX0FTU0VSVF9GQUxTRV9N U0codGVzdCwgZHJtX2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIHN0YXJ0LCBtbV9zaXplLAorCUtV TklUX0FTU0VSVF9GQUxTRV9NU0codGVzdCwgZ3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIHN0 YXJ0LCBtbV9zaXplLAogCQkJCQkJCSAgICBzaXplLCBzaXplLCAmdG1wLCBmbGFncyksCiAJCQkJ CQkgICAiYnVkZHlfYWxsb2MgaGl0IC1FTk9NRU0gb24gZmluYWwgYWxsb2NcbiIpOwogCi0JYmxv Y2sgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJnRtcCwgc3RydWN0IGRybV9idWRkeV9ibG9j aywgbGluayk7CisJYmxvY2sgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJnRtcCwgc3RydWN0 IGdwdV9idWRkeV9ibG9jaywgbGluayk7CiAJS1VOSVRfQVNTRVJUX1RSVUVfTVNHKHRlc3QsIGJs b2NrLCAiYWxsb2NfYmxvY2tzIGhhcyBubyBibG9ja3NcbiIpOwogCiAJbGlzdF9tb3ZlX3RhaWwo JmJsb2NrLT5saW5rLCAmYmxvY2tzKTsKQEAgLTczMSw1OCArNzMxLDU4IEBAIHN0YXRpYyB2b2lk IGRybV90ZXN0X2J1ZGR5X2FsbG9jX3Blc3NpbWlzdGljKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAkv KiBTaG91bGQgYmUgY29tcGxldGVseSBmdWxsISAqLwogCWZvciAob3JkZXIgPSBtYXhfb3JkZXI7 IG9yZGVyLS07KSB7CiAJCXNpemUgPSBnZXRfc2l6ZShvcmRlciwgbW0uY2h1bmtfc2l6ZSk7Ci0J CUtVTklUX0FTU0VSVF9UUlVFX01TRyh0ZXN0LCBkcm1fYnVkZHlfYWxsb2NfYmxvY2tzKCZtbSwg c3RhcnQsIG1tX3NpemUsCisJCUtVTklUX0FTU0VSVF9UUlVFX01TRyh0ZXN0LCBncHVfYnVkZHlf YWxsb2NfYmxvY2tzKCZtbSwgc3RhcnQsIG1tX3NpemUsCiAJCQkJCQkJCSAgIHNpemUsIHNpemUs ICZ0bXAsIGZsYWdzKSwKIAkJCQkJCQkgICJidWRkeV9hbGxvYyB1bmV4cGVjdGVkbHkgc3VjY2Vl ZGVkLCBpdCBzaG91bGQgYmUgZnVsbCEiKTsKIAl9CiAKIAlibG9jayA9IGxpc3RfbGFzdF9lbnRy eSgmYmxvY2tzLCB0eXBlb2YoKmJsb2NrKSwgbGluayk7CiAJbGlzdF9kZWwoJmJsb2NrLT5saW5r KTsKLQlkcm1fYnVkZHlfZnJlZV9ibG9jaygmbW0sIGJsb2NrKTsKKwlncHVfYnVkZHlfZnJlZV9i bG9jaygmbW0sIGJsb2NrKTsKIAogCS8qIEFzIHdlIGZyZWUgaW4gaW5jcmVhc2luZyBzaXplLCB3 ZSBtYWtlIGF2YWlsYWJsZSBsYXJnZXIgYmxvY2tzICovCiAJb3JkZXIgPSAxOwogCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShibG9jaywgYm4sICZibG9ja3MsIGxpbmspIHsKIAkJbGlzdF9kZWwo JmJsb2NrLT5saW5rKTsKLQkJZHJtX2J1ZGR5X2ZyZWVfYmxvY2soJm1tLCBibG9jayk7CisJCWdw dV9idWRkeV9mcmVlX2Jsb2NrKCZtbSwgYmxvY2spOwogCiAJCXNpemUgPSBnZXRfc2l6ZShvcmRl ciwgbW0uY2h1bmtfc2l6ZSk7Ci0JCUtVTklUX0FTU0VSVF9GQUxTRV9NU0codGVzdCwgZHJtX2J1 ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIHN0YXJ0LCBtbV9zaXplLAorCQlLVU5JVF9BU1NFUlRfRkFM U0VfTVNHKHRlc3QsIGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCBzdGFydCwgbW1fc2l6ZSwK IAkJCQkJCQkJICAgIHNpemUsIHNpemUsICZ0bXAsIGZsYWdzKSwKIAkJCQkJCQkgICAiYnVkZHlf YWxsb2MgaGl0IC1FTk9NRU0gd2l0aCBvcmRlcj0lZFxuIiwKIAkJCQkJCQkgICBvcmRlcik7CiAK LQkJYmxvY2sgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJnRtcCwgc3RydWN0IGRybV9idWRk eV9ibG9jaywgbGluayk7CisJCWJsb2NrID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZ0bXAs IHN0cnVjdCBncHVfYnVkZHlfYmxvY2ssIGxpbmspOwogCQlLVU5JVF9BU1NFUlRfVFJVRV9NU0co dGVzdCwgYmxvY2ssICJhbGxvY19ibG9ja3MgaGFzIG5vIGJsb2Nrc1xuIik7CiAKIAkJbGlzdF9k ZWwoJmJsb2NrLT5saW5rKTsKLQkJZHJtX2J1ZGR5X2ZyZWVfYmxvY2soJm1tLCBibG9jayk7CisJ CWdwdV9idWRkeV9mcmVlX2Jsb2NrKCZtbSwgYmxvY2spOwogCQlvcmRlcisrOwogCX0KIAogCS8q IFRvIGNvbmZpcm0sIG5vdyB0aGUgd2hvbGUgbW0gc2hvdWxkIGJlIGF2YWlsYWJsZSAqLwogCXNp emUgPSBnZXRfc2l6ZShtYXhfb3JkZXIsIG1tLmNodW5rX3NpemUpOwotCUtVTklUX0FTU0VSVF9G QUxTRV9NU0codGVzdCwgZHJtX2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIHN0YXJ0LCBtbV9zaXpl LAorCUtVTklUX0FTU0VSVF9GQUxTRV9NU0codGVzdCwgZ3B1X2J1ZGR5X2FsbG9jX2Jsb2Nrcygm bW0sIHN0YXJ0LCBtbV9zaXplLAogCQkJCQkJCSAgICBzaXplLCBzaXplLCAmdG1wLCBmbGFncyks CiAJCQkJCQkgICAiYnVkZHlfYWxsb2MgKHJlYWxsb2MpIGhpdCAtRU5PTUVNIHdpdGggb3JkZXI9 JWRcbiIsCiAJCQkJCQkgICBtYXhfb3JkZXIpOwogCi0JYmxvY2sgPSBsaXN0X2ZpcnN0X2VudHJ5 X29yX251bGwoJnRtcCwgc3RydWN0IGRybV9idWRkeV9ibG9jaywgbGluayk7CisJYmxvY2sgPSBs aXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJnRtcCwgc3RydWN0IGdwdV9idWRkeV9ibG9jaywgbGlu ayk7CiAJS1VOSVRfQVNTRVJUX1RSVUVfTVNHKHRlc3QsIGJsb2NrLCAiYWxsb2NfYmxvY2tzIGhh cyBubyBibG9ja3NcbiIpOwogCiAJbGlzdF9kZWwoJmJsb2NrLT5saW5rKTsKLQlkcm1fYnVkZHlf ZnJlZV9ibG9jaygmbW0sIGJsb2NrKTsKLQlkcm1fYnVkZHlfZnJlZV9saXN0KCZtbSwgJmJsb2Nr cywgMCk7Ci0JZHJtX2J1ZGR5X2ZpbmkoJm1tKTsKKwlncHVfYnVkZHlfZnJlZV9ibG9jaygmbW0s IGJsb2NrKTsKKwlncHVfYnVkZHlfZnJlZV9saXN0KCZtbSwgJmJsb2NrcywgMCk7CisJZ3B1X2J1 ZGR5X2ZpbmkoJm1tKTsKIH0KIAotc3RhdGljIHZvaWQgZHJtX3Rlc3RfYnVkZHlfYWxsb2Nfb3B0 aW1pc3RpYyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCitzdGF0aWMgdm9pZCBncHVfdGVzdF9idWRkeV9h bGxvY19vcHRpbWlzdGljKHN0cnVjdCBrdW5pdCAqdGVzdCkKIHsKIAl1NjQgbW1fc2l6ZSwgc2l6 ZSwgc3RhcnQgPSAwOwotCXN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrOworCXN0cnVjdCBn cHVfYnVkZHlfYmxvY2sgKmJsb2NrOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwogCWNvbnN0 IGludCBtYXhfb3JkZXIgPSAxNjsKLQlzdHJ1Y3QgZHJtX2J1ZGR5IG1tOworCXN0cnVjdCBncHVf YnVkZHkgbW07CiAJTElTVF9IRUFEKGJsb2Nrcyk7CiAJTElTVF9IRUFEKHRtcCk7CiAJaW50IG9y ZGVyOwpAQCAtNzk0LDE5ICs3OTQsMTkgQEAgc3RhdGljIHZvaWQgZHJtX3Rlc3RfYnVkZHlfYWxs b2Nfb3B0aW1pc3RpYyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAKIAltbV9zaXplID0gU1pfNEsgKiAo KDEgPDwgKG1heF9vcmRlciArIDEpKSAtIDEpOwogCi0JS1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0 ZXN0LCBkcm1fYnVkZHlfaW5pdCgmbW0sIG1tX3NpemUsIFNaXzRLKSwKKwlLVU5JVF9BU1NFUlRf RkFMU0VfTVNHKHRlc3QsIGdwdV9idWRkeV9pbml0KCZtbSwgbW1fc2l6ZSwgU1pfNEspLAogCQkJ ICAgICAgICJidWRkeV9pbml0IGZhaWxlZFxuIik7CiAKIAlLVU5JVF9FWFBFQ1RfRVEodGVzdCwg bW0ubWF4X29yZGVyLCBtYXhfb3JkZXIpOwogCiAJZm9yIChvcmRlciA9IDA7IG9yZGVyIDw9IG1h eF9vcmRlcjsgb3JkZXIrKykgewogCQlzaXplID0gZ2V0X3NpemUob3JkZXIsIG1tLmNodW5rX3Np emUpOwotCQlLVU5JVF9BU1NFUlRfRkFMU0VfTVNHKHRlc3QsIGRybV9idWRkeV9hbGxvY19ibG9j a3MoJm1tLCBzdGFydCwgbW1fc2l6ZSwKKwkJS1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0ZXN0LCBn cHVfYnVkZHlfYWxsb2NfYmxvY2tzKCZtbSwgc3RhcnQsIG1tX3NpemUsCiAJCQkJCQkJCSAgICBz aXplLCBzaXplLCAmdG1wLCBmbGFncyksCiAJCQkJCQkJICAgImJ1ZGR5X2FsbG9jIGhpdCAtRU5P TUVNIHdpdGggb3JkZXI9JWRcbiIsCiAJCQkJCQkJICAgb3JkZXIpOwogCi0JCWJsb2NrID0gbGlz dF9maXJzdF9lbnRyeV9vcl9udWxsKCZ0bXAsIHN0cnVjdCBkcm1fYnVkZHlfYmxvY2ssIGxpbmsp OworCQlibG9jayA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmdG1wLCBzdHJ1Y3QgZ3B1X2J1 ZGR5X2Jsb2NrLCBsaW5rKTsKIAkJS1VOSVRfQVNTRVJUX1RSVUVfTVNHKHRlc3QsIGJsb2NrLCAi YWxsb2NfYmxvY2tzIGhhcyBubyBibG9ja3NcbiIpOwogCiAJCWxpc3RfbW92ZV90YWlsKCZibG9j ay0+bGluaywgJmJsb2Nrcyk7CkBAIC04MTQsMTE1ICs4MTQsMTE1IEBAIHN0YXRpYyB2b2lkIGRy bV90ZXN0X2J1ZGR5X2FsbG9jX29wdGltaXN0aWMoc3RydWN0IGt1bml0ICp0ZXN0KQogCiAJLyog U2hvdWxkIGJlIGNvbXBsZXRlbHkgZnVsbCEgKi8KIAlzaXplID0gZ2V0X3NpemUoMCwgbW0uY2h1 bmtfc2l6ZSk7Ci0JS1VOSVRfQVNTRVJUX1RSVUVfTVNHKHRlc3QsIGRybV9idWRkeV9hbGxvY19i bG9ja3MoJm1tLCBzdGFydCwgbW1fc2l6ZSwKKwlLVU5JVF9BU1NFUlRfVFJVRV9NU0codGVzdCwg Z3B1X2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIHN0YXJ0LCBtbV9zaXplLAogCQkJCQkJCSAgIHNp emUsIHNpemUsICZ0bXAsIGZsYWdzKSwKIAkJCQkJCSAgImJ1ZGR5X2FsbG9jIHVuZXhwZWN0ZWRs eSBzdWNjZWVkZWQsIGl0IHNob3VsZCBiZSBmdWxsISIpOwogCi0JZHJtX2J1ZGR5X2ZyZWVfbGlz dCgmbW0sICZibG9ja3MsIDApOwotCWRybV9idWRkeV9maW5pKCZtbSk7CisJZ3B1X2J1ZGR5X2Zy ZWVfbGlzdCgmbW0sICZibG9ja3MsIDApOworCWdwdV9idWRkeV9maW5pKCZtbSk7CiB9CiAKLXN0 YXRpYyB2b2lkIGRybV90ZXN0X2J1ZGR5X2FsbG9jX2xpbWl0KHN0cnVjdCBrdW5pdCAqdGVzdCkK K3N0YXRpYyB2b2lkIGdwdV90ZXN0X2J1ZGR5X2FsbG9jX2xpbWl0KHN0cnVjdCBrdW5pdCAqdGVz dCkKIHsKIAl1NjQgc2l6ZSA9IFU2NF9NQVgsIHN0YXJ0ID0gMDsKLQlzdHJ1Y3QgZHJtX2J1ZGR5 X2Jsb2NrICpibG9jazsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jazsKIAl1bnNpZ25l ZCBsb25nIGZsYWdzID0gMDsKIAlMSVNUX0hFQUQoYWxsb2NhdGVkKTsKLQlzdHJ1Y3QgZHJtX2J1 ZGR5IG1tOworCXN0cnVjdCBncHVfYnVkZHkgbW07CiAKLQlLVU5JVF9FWFBFQ1RfRkFMU0UodGVz dCwgZHJtX2J1ZGR5X2luaXQoJm1tLCBzaXplLCBTWl80SykpOworCUtVTklUX0VYUEVDVF9GQUxT RSh0ZXN0LCBncHVfYnVkZHlfaW5pdCgmbW0sIHNpemUsIFNaXzRLKSk7CiAKLQlLVU5JVF9FWFBF Q1RfRVFfTVNHKHRlc3QsIG1tLm1heF9vcmRlciwgRFJNX0JVRERZX01BWF9PUkRFUiwKKwlLVU5J VF9FWFBFQ1RfRVFfTVNHKHRlc3QsIG1tLm1heF9vcmRlciwgR1BVX0JVRERZX01BWF9PUkRFUiwK IAkJCSAgICAibW0ubWF4X29yZGVyKCVkKSAhPSAlZFxuIiwgbW0ubWF4X29yZGVyLAotCQkJCQkJ RFJNX0JVRERZX01BWF9PUkRFUik7CisJCQkJCQlHUFVfQlVERFlfTUFYX09SREVSKTsKIAogCXNp emUgPSBtbS5jaHVua19zaXplIDw8IG1tLm1heF9vcmRlcjsKLQlLVU5JVF9FWFBFQ1RfRkFMU0Uo dGVzdCwgZHJtX2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIHN0YXJ0LCBzaXplLCBzaXplLAorCUtV TklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBncHVfYnVkZHlfYWxsb2NfYmxvY2tzKCZtbSwgc3RhcnQs IHNpemUsIHNpemUsCiAJCQkJCQkJbW0uY2h1bmtfc2l6ZSwgJmFsbG9jYXRlZCwgZmxhZ3MpKTsK IAotCWJsb2NrID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZhbGxvY2F0ZWQsIHN0cnVjdCBk cm1fYnVkZHlfYmxvY2ssIGxpbmspOworCWJsb2NrID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxs KCZhbGxvY2F0ZWQsIHN0cnVjdCBncHVfYnVkZHlfYmxvY2ssIGxpbmspOwogCUtVTklUX0VYUEVD VF9UUlVFKHRlc3QsIGJsb2NrKTsKIAotCUtVTklUX0VYUEVDVF9FUV9NU0codGVzdCwgZHJtX2J1 ZGR5X2Jsb2NrX29yZGVyKGJsb2NrKSwgbW0ubWF4X29yZGVyLAorCUtVTklUX0VYUEVDVF9FUV9N U0codGVzdCwgZ3B1X2J1ZGR5X2Jsb2NrX29yZGVyKGJsb2NrKSwgbW0ubWF4X29yZGVyLAogCQkJ ICAgICJibG9jayBvcmRlciglZCkgIT0gJWRcbiIsCi0JCQkJCQlkcm1fYnVkZHlfYmxvY2tfb3Jk ZXIoYmxvY2spLCBtbS5tYXhfb3JkZXIpOworCQkJCQkJZ3B1X2J1ZGR5X2Jsb2NrX29yZGVyKGJs b2NrKSwgbW0ubWF4X29yZGVyKTsKIAotCUtVTklUX0VYUEVDVF9FUV9NU0codGVzdCwgZHJtX2J1 ZGR5X2Jsb2NrX3NpemUoJm1tLCBibG9jayksCisJS1VOSVRfRVhQRUNUX0VRX01TRyh0ZXN0LCBn cHVfYnVkZHlfYmxvY2tfc2l6ZSgmbW0sIGJsb2NrKSwKIAkJCSAgICBCSVRfVUxMKG1tLm1heF9v cmRlcikgKiBtbS5jaHVua19zaXplLAogCQkJCQkJImJsb2NrIHNpemUoJWxsdSkgIT0gJWxsdVxu IiwKLQkJCQkJCWRybV9idWRkeV9ibG9ja19zaXplKCZtbSwgYmxvY2spLAorCQkJCQkJZ3B1X2J1 ZGR5X2Jsb2NrX3NpemUoJm1tLCBibG9jayksCiAJCQkJCQlCSVRfVUxMKG1tLm1heF9vcmRlcikg KiBtbS5jaHVua19zaXplKTsKIAotCWRybV9idWRkeV9mcmVlX2xpc3QoJm1tLCAmYWxsb2NhdGVk LCAwKTsKLQlkcm1fYnVkZHlfZmluaSgmbW0pOworCWdwdV9idWRkeV9mcmVlX2xpc3QoJm1tLCAm YWxsb2NhdGVkLCAwKTsKKwlncHVfYnVkZHlfZmluaSgmbW0pOwogfQogCi1zdGF0aWMgdm9pZCBk cm1fdGVzdF9idWRkeV9hbGxvY19leGNlZWRzX21heF9vcmRlcihzdHJ1Y3Qga3VuaXQgKnRlc3Qp CitzdGF0aWMgdm9pZCBncHVfdGVzdF9idWRkeV9hbGxvY19leGNlZWRzX21heF9vcmRlcihzdHJ1 Y3Qga3VuaXQgKnRlc3QpCiB7CiAJdTY0IG1tX3NpemUgPSBTWl84RyArIFNaXzJHLCBzaXplID0g U1pfOEcgKyBTWl8xRywgbWluX2Jsb2NrX3NpemUgPSBTWl84RzsKLQlzdHJ1Y3QgZHJtX2J1ZGR5 IG1tOworCXN0cnVjdCBncHVfYnVkZHkgbW07CiAJTElTVF9IRUFEKGJsb2Nrcyk7CiAJaW50IGVy cjsKIAotCUtVTklUX0FTU0VSVF9GQUxTRV9NU0codGVzdCwgZHJtX2J1ZGR5X2luaXQoJm1tLCBt bV9zaXplLCBTWl80SyksCisJS1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0ZXN0LCBncHVfYnVkZHlf aW5pdCgmbW0sIG1tX3NpemUsIFNaXzRLKSwKIAkJCSAgICAgICAiYnVkZHlfaW5pdCBmYWlsZWRc biIpOwogCiAJLyogQ09OVElHVU9VUyBhbGxvY2F0aW9uIHNob3VsZCBzdWNjZWVkIHZpYSB0cnlf aGFyZGVyIGZhbGxiYWNrICovCi0JS1VOSVRfQVNTRVJUX0ZBTFNFX01TRyh0ZXN0LCBkcm1fYnVk ZHlfYWxsb2NfYmxvY2tzKCZtbSwgMCwgbW1fc2l6ZSwgc2l6ZSwKKwlLVU5JVF9BU1NFUlRfRkFM U0VfTVNHKHRlc3QsIGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCAwLCBtbV9zaXplLCBzaXpl LAogCQkJCQkJCSAgICBTWl80SywgJmJsb2NrcywKLQkJCQkJCQkgICAgRFJNX0JVRERZX0NPTlRJ R1VPVVNfQUxMT0NBVElPTiksCisJCQkJCQkJICAgIEdQVV9CVUREWV9DT05USUdVT1VTX0FMTE9D QVRJT04pLAogCQkJICAgICAgICJidWRkeV9hbGxvYyBoaXQgYW4gZXJyb3Igc2l6ZT0lbGx1XG4i LCBzaXplKTsKLQlkcm1fYnVkZHlfZnJlZV9saXN0KCZtbSwgJmJsb2NrcywgMCk7CisJZ3B1X2J1 ZGR5X2ZyZWVfbGlzdCgmbW0sICZibG9ja3MsIDApOwogCiAJLyogTm9uLUNPTlRJR1VPVVMgd2l0 aCBsYXJnZSBtaW5fYmxvY2tfc2l6ZSBzaG91bGQgcmV0dXJuIC1FSU5WQUwgKi8KLQllcnIgPSBk cm1fYnVkZHlfYWxsb2NfYmxvY2tzKCZtbSwgMCwgbW1fc2l6ZSwgc2l6ZSwgbWluX2Jsb2NrX3Np emUsICZibG9ja3MsIDApOworCWVyciA9IGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCAwLCBt bV9zaXplLCBzaXplLCBtaW5fYmxvY2tfc2l6ZSwgJmJsb2NrcywgMCk7CiAJS1VOSVRfRVhQRUNU X0VRKHRlc3QsIGVyciwgLUVJTlZBTCk7CiAKIAkvKiBOb24tQ09OVElHVU9VUyArIFJBTkdFIHdp dGggbGFyZ2UgbWluX2Jsb2NrX3NpemUgc2hvdWxkIHJldHVybiAtRUlOVkFMICovCi0JZXJyID0g ZHJtX2J1ZGR5X2FsbG9jX2Jsb2NrcygmbW0sIDAsIG1tX3NpemUsIHNpemUsIG1pbl9ibG9ja19z aXplLCAmYmxvY2tzLAotCQkJCSAgICAgRFJNX0JVRERZX1JBTkdFX0FMTE9DQVRJT04pOworCWVy ciA9IGdwdV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCAwLCBtbV9zaXplLCBzaXplLCBtaW5fYmxv Y2tfc2l6ZSwgJmJsb2NrcywKKwkJCQkgICAgIEdQVV9CVUREWV9SQU5HRV9BTExPQ0FUSU9OKTsK IAlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZXJyLCAtRUlOVkFMKTsKIAogCS8qIENPTlRJR1VPVVMg KyBSQU5HRSBzaG91bGQgcmV0dXJuIC1FSU5WQUwgKG5vIHRyeV9oYXJkZXIgZm9yIFJBTkdFKSAq LwotCWVyciA9IGRybV9idWRkeV9hbGxvY19ibG9ja3MoJm1tLCAwLCBtbV9zaXplLCBzaXplLCBT Wl80SywgJmJsb2NrcywKLQkJCQkgICAgIERSTV9CVUREWV9DT05USUdVT1VTX0FMTE9DQVRJT04g fCBEUk1fQlVERFlfUkFOR0VfQUxMT0NBVElPTik7CisJZXJyID0gZ3B1X2J1ZGR5X2FsbG9jX2Js b2NrcygmbW0sIDAsIG1tX3NpemUsIHNpemUsIFNaXzRLLCAmYmxvY2tzLAorCQkJCSAgICAgR1BV X0JVRERZX0NPTlRJR1VPVVNfQUxMT0NBVElPTiB8IEdQVV9CVUREWV9SQU5HRV9BTExPQ0FUSU9O KTsKIAlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgZXJyLCAtRUlOVkFMKTsKIAotCWRybV9idWRkeV9m aW5pKCZtbSk7CisJZ3B1X2J1ZGR5X2ZpbmkoJm1tKTsKIH0KIAotc3RhdGljIGludCBkcm1fYnVk ZHlfc3VpdGVfaW5pdChzdHJ1Y3Qga3VuaXRfc3VpdGUgKnN1aXRlKQorc3RhdGljIGludCBncHVf YnVkZHlfc3VpdGVfaW5pdChzdHJ1Y3Qga3VuaXRfc3VpdGUgKnN1aXRlKQogewogCXdoaWxlICgh cmFuZG9tX3NlZWQpCiAJCXJhbmRvbV9zZWVkID0gZ2V0X3JhbmRvbV91MzIoKTsKIAotCWt1bml0 X2luZm8oc3VpdGUsICJUZXN0aW5nIERSTSBidWRkeSBtYW5hZ2VyLCB3aXRoIHJhbmRvbV9zZWVk PTB4JXhcbiIsCisJa3VuaXRfaW5mbyhzdWl0ZSwgIlRlc3RpbmcgR1BVIGJ1ZGR5IG1hbmFnZXIs IHdpdGggcmFuZG9tX3NlZWQ9MHgleFxuIiwKIAkJICAgcmFuZG9tX3NlZWQpOwogCiAJcmV0dXJu IDA7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBkcm1fYnVkZHlfdGVzdHNbXSA9IHsK LQlLVU5JVF9DQVNFKGRybV90ZXN0X2J1ZGR5X2FsbG9jX2xpbWl0KSwKLQlLVU5JVF9DQVNFKGRy bV90ZXN0X2J1ZGR5X2FsbG9jX29wdGltaXN0aWMpLAotCUtVTklUX0NBU0UoZHJtX3Rlc3RfYnVk ZHlfYWxsb2NfcGVzc2ltaXN0aWMpLAotCUtVTklUX0NBU0UoZHJtX3Rlc3RfYnVkZHlfYWxsb2Nf cGF0aG9sb2dpY2FsKSwKLQlLVU5JVF9DQVNFKGRybV90ZXN0X2J1ZGR5X2FsbG9jX2NvbnRpZ3Vv dXMpLAotCUtVTklUX0NBU0UoZHJtX3Rlc3RfYnVkZHlfYWxsb2NfY2xlYXIpLAotCUtVTklUX0NB U0UoZHJtX3Rlc3RfYnVkZHlfYWxsb2NfcmFuZ2VfYmlhcyksCi0JS1VOSVRfQ0FTRShkcm1fdGVz dF9idWRkeV9mcmFnbWVudGF0aW9uX3BlcmZvcm1hbmNlKSwKLQlLVU5JVF9DQVNFKGRybV90ZXN0 X2J1ZGR5X2FsbG9jX2V4Y2VlZHNfbWF4X29yZGVyKSwKK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2Fz ZSBncHVfYnVkZHlfdGVzdHNbXSA9IHsKKwlLVU5JVF9DQVNFKGdwdV90ZXN0X2J1ZGR5X2FsbG9j X2xpbWl0KSwKKwlLVU5JVF9DQVNFKGdwdV90ZXN0X2J1ZGR5X2FsbG9jX29wdGltaXN0aWMpLAor CUtVTklUX0NBU0UoZ3B1X3Rlc3RfYnVkZHlfYWxsb2NfcGVzc2ltaXN0aWMpLAorCUtVTklUX0NB U0UoZ3B1X3Rlc3RfYnVkZHlfYWxsb2NfcGF0aG9sb2dpY2FsKSwKKwlLVU5JVF9DQVNFKGdwdV90 ZXN0X2J1ZGR5X2FsbG9jX2NvbnRpZ3VvdXMpLAorCUtVTklUX0NBU0UoZ3B1X3Rlc3RfYnVkZHlf YWxsb2NfY2xlYXIpLAorCUtVTklUX0NBU0UoZ3B1X3Rlc3RfYnVkZHlfYWxsb2NfcmFuZ2VfYmlh cyksCisJS1VOSVRfQ0FTRShncHVfdGVzdF9idWRkeV9mcmFnbWVudGF0aW9uX3BlcmZvcm1hbmNl KSwKKwlLVU5JVF9DQVNFKGdwdV90ZXN0X2J1ZGR5X2FsbG9jX2V4Y2VlZHNfbWF4X29yZGVyKSwK IAl7fQogfTsKIAotc3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSBkcm1fYnVkZHlfdGVzdF9zdWl0 ZSA9IHsKLQkubmFtZSA9ICJkcm1fYnVkZHkiLAotCS5zdWl0ZV9pbml0ID0gZHJtX2J1ZGR5X3N1 aXRlX2luaXQsCi0JLnRlc3RfY2FzZXMgPSBkcm1fYnVkZHlfdGVzdHMsCitzdGF0aWMgc3RydWN0 IGt1bml0X3N1aXRlIGdwdV9idWRkeV90ZXN0X3N1aXRlID0geworCS5uYW1lID0gImdwdV9idWRk eSIsCisJLnN1aXRlX2luaXQgPSBncHVfYnVkZHlfc3VpdGVfaW5pdCwKKwkudGVzdF9jYXNlcyA9 IGdwdV9idWRkeV90ZXN0cywKIH07CiAKLWt1bml0X3Rlc3Rfc3VpdGUoZHJtX2J1ZGR5X3Rlc3Rf c3VpdGUpOwora3VuaXRfdGVzdF9zdWl0ZShncHVfYnVkZHlfdGVzdF9zdWl0ZSk7CiAKIE1PRFVM RV9BVVRIT1IoIkludGVsIENvcnBvcmF0aW9uIik7Ci1NT0RVTEVfREVTQ1JJUFRJT04oIkt1bml0 IHRlc3QgZm9yIGRybV9idWRkeSBmdW5jdGlvbnMiKTsKK01PRFVMRV9ERVNDUklQVElPTigiS3Vu aXQgdGVzdCBmb3IgZ3B1X2J1ZGR5IGZ1bmN0aW9ucyIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvdGVzdHMvZ3B1X3JhbmRvbS5jIGIvZHJpdmVycy9n cHUvdGVzdHMvZ3B1X3JhbmRvbS5jCmluZGV4IGRkZDFmNTk0YjVkNS4uNjM1NjM3MmY3ZTUyIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS90ZXN0cy9ncHVfcmFuZG9tLmMKKysrIGIvZHJpdmVycy9n cHUvdGVzdHMvZ3B1X3JhbmRvbS5jCkBAIC04LDI2ICs4LDI2IEBACiAKICNpbmNsdWRlICJncHVf cmFuZG9tLmgiCiAKLXUzMiBkcm1fcHJhbmRvbV91MzJfbWF4X3N0YXRlKHUzMiBlcF9ybywgc3Ry dWN0IHJuZF9zdGF0ZSAqc3RhdGUpCit1MzIgZ3B1X3ByYW5kb21fdTMyX21heF9zdGF0ZSh1MzIg ZXBfcm8sIHN0cnVjdCBybmRfc3RhdGUgKnN0YXRlKQogewogCXJldHVybiB1cHBlcl8zMl9iaXRz KCh1NjQpcHJhbmRvbV91MzJfc3RhdGUoc3RhdGUpICogZXBfcm8pOwogfQotRVhQT1JUX1NZTUJP TChkcm1fcHJhbmRvbV91MzJfbWF4X3N0YXRlKTsKK0VYUE9SVF9TWU1CT0woZ3B1X3ByYW5kb21f dTMyX21heF9zdGF0ZSk7CiAKLXZvaWQgZHJtX3JhbmRvbV9yZW9yZGVyKHVuc2lnbmVkIGludCAq b3JkZXIsIHVuc2lnbmVkIGludCBjb3VudCwKK3ZvaWQgZ3B1X3JhbmRvbV9yZW9yZGVyKHVuc2ln bmVkIGludCAqb3JkZXIsIHVuc2lnbmVkIGludCBjb3VudCwKIAkJCXN0cnVjdCBybmRfc3RhdGUg KnN0YXRlKQogewogCXVuc2lnbmVkIGludCBpLCBqOwogCiAJZm9yIChpID0gMDsgaSA8IGNvdW50 OyArK2kpIHsKIAkJQlVJTERfQlVHX09OKHNpemVvZih1bnNpZ25lZCBpbnQpID4gc2l6ZW9mKHUz MikpOwotCQlqID0gZHJtX3ByYW5kb21fdTMyX21heF9zdGF0ZShjb3VudCwgc3RhdGUpOworCQlq ID0gZ3B1X3ByYW5kb21fdTMyX21heF9zdGF0ZShjb3VudCwgc3RhdGUpOwogCQlzd2FwKG9yZGVy W2ldLCBvcmRlcltqXSk7CiAJfQogfQotRVhQT1JUX1NZTUJPTChkcm1fcmFuZG9tX3Jlb3JkZXIp OworRVhQT1JUX1NZTUJPTChncHVfcmFuZG9tX3Jlb3JkZXIpOwogCi11bnNpZ25lZCBpbnQgKmRy bV9yYW5kb21fb3JkZXIodW5zaWduZWQgaW50IGNvdW50LCBzdHJ1Y3Qgcm5kX3N0YXRlICpzdGF0 ZSkKK3Vuc2lnbmVkIGludCAqZ3B1X3JhbmRvbV9vcmRlcih1bnNpZ25lZCBpbnQgY291bnQsIHN0 cnVjdCBybmRfc3RhdGUgKnN0YXRlKQogewogCXVuc2lnbmVkIGludCAqb3JkZXIsIGk7CiAKQEAg LTM4LDcgKzM4LDcgQEAgdW5zaWduZWQgaW50ICpkcm1fcmFuZG9tX29yZGVyKHVuc2lnbmVkIGlu dCBjb3VudCwgc3RydWN0IHJuZF9zdGF0ZSAqc3RhdGUpCiAJZm9yIChpID0gMDsgaSA8IGNvdW50 OyBpKyspCiAJCW9yZGVyW2ldID0gaTsKIAotCWRybV9yYW5kb21fcmVvcmRlcihvcmRlciwgY291 bnQsIHN0YXRlKTsKKwlncHVfcmFuZG9tX3Jlb3JkZXIob3JkZXIsIGNvdW50LCBzdGF0ZSk7CiAJ cmV0dXJuIG9yZGVyOwogfQotRVhQT1JUX1NZTUJPTChkcm1fcmFuZG9tX29yZGVyKTsKK0VYUE9S VF9TWU1CT0woZ3B1X3JhbmRvbV9vcmRlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS90ZXN0 cy9ncHVfcmFuZG9tLmggYi9kcml2ZXJzL2dwdS90ZXN0cy9ncHVfcmFuZG9tLmgKaW5kZXggOWY4 MjcyNjBhODlkLi5iNjhjZjM0NDgyNjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L3Rlc3RzL2dw dV9yYW5kb20uaAorKysgYi9kcml2ZXJzL2dwdS90ZXN0cy9ncHVfcmFuZG9tLmgKQEAgLTEsNiAr MSw2IEBACiAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwotI2lmbmRlZiBf X0RSTV9SQU5ET01fSF9fCi0jZGVmaW5lIF9fRFJNX1JBTkRPTV9IX18KKyNpZm5kZWYgX19HUFVf UkFORE9NX0hfXworI2RlZmluZSBfX0dQVV9SQU5ET01fSF9fCiAKIC8qIFRoaXMgaXMgYSB0ZW1w b3JhcnkgaG9tZSBmb3IgYSBjb3VwbGUgb2YgdXRpbGl0eSBmdW5jdGlvbnMgdGhhdCBzaG91bGQK ICAqIGJlIHRyYW5zcG9zZWQgdG8gbGliLyBhdCB0aGUgZWFybGllc3QgY29udmVuaWVuY2UuCkBA IC04LDIxICs4LDIxIEBACiAKICNpbmNsdWRlIDxsaW51eC9wcmFuZG9tLmg+CiAKLSNkZWZpbmUg RFJNX1JORF9TVEFURV9JTklUSUFMSVpFUihzZWVkX18pICh7CQkJCVwKKyNkZWZpbmUgR1BVX1JO RF9TVEFURV9JTklUSUFMSVpFUihzZWVkX18pICh7CQkJCVwKIAlzdHJ1Y3Qgcm5kX3N0YXRlIHN0 YXRlX187CQkJCQlcCiAJcHJhbmRvbV9zZWVkX3N0YXRlKCZzdGF0ZV9fLCAoc2VlZF9fKSk7CQkJ CVwKIAlzdGF0ZV9fOwkJCQkJCQlcCiB9KQogCi0jZGVmaW5lIERSTV9STkRfU1RBVEUobmFtZV9f LCBzZWVkX18pIFwKLQlzdHJ1Y3Qgcm5kX3N0YXRlIG5hbWVfXyA9IERSTV9STkRfU1RBVEVfSU5J VElBTElaRVIoc2VlZF9fKQorI2RlZmluZSBHUFVfUk5EX1NUQVRFKG5hbWVfXywgc2VlZF9fKSBc CisJc3RydWN0IHJuZF9zdGF0ZSBuYW1lX18gPSBHUFVfUk5EX1NUQVRFX0lOSVRJQUxJWkVSKHNl ZWRfXykKIAotdW5zaWduZWQgaW50ICpkcm1fcmFuZG9tX29yZGVyKHVuc2lnbmVkIGludCBjb3Vu dCwKK3Vuc2lnbmVkIGludCAqZ3B1X3JhbmRvbV9vcmRlcih1bnNpZ25lZCBpbnQgY291bnQsCiAJ CQkgICAgICAgc3RydWN0IHJuZF9zdGF0ZSAqc3RhdGUpOwotdm9pZCBkcm1fcmFuZG9tX3Jlb3Jk ZXIodW5zaWduZWQgaW50ICpvcmRlciwKK3ZvaWQgZ3B1X3JhbmRvbV9yZW9yZGVyKHVuc2lnbmVk IGludCAqb3JkZXIsCiAJCQl1bnNpZ25lZCBpbnQgY291bnQsCiAJCQlzdHJ1Y3Qgcm5kX3N0YXRl ICpzdGF0ZSk7Ci11MzIgZHJtX3ByYW5kb21fdTMyX21heF9zdGF0ZSh1MzIgZXBfcm8sCit1MzIg Z3B1X3ByYW5kb21fdTMyX21heF9zdGF0ZSh1MzIgZXBfcm8sCiAJCQkgICAgICBzdHJ1Y3Qgcm5k X3N0YXRlICpzdGF0ZSk7CiAKLSNlbmRpZiAvKiAhX19EUk1fUkFORE9NX0hfXyAqLworI2VuZGlm IC8qICFfX0dQVV9SQU5ET01fSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL0tjb25m aWcgYi9kcml2ZXJzL3ZpZGVvL0tjb25maWcKaW5kZXggOTg4NGYwMDMyNDdkLi5hNzE0NGQyNzVm NTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vS2NvbmZpZworKysgYi9kcml2ZXJzL3ZpZGVv L0tjb25maWcKQEAgLTM3LDYgKzM3LDcgQEAgc291cmNlICJkcml2ZXJzL2NoYXIvYWdwL0tjb25m aWciCiAKIHNvdXJjZSAiZHJpdmVycy9ncHUvdmdhL0tjb25maWciCiAKK3NvdXJjZSAiZHJpdmVy cy9ncHUvS2NvbmZpZyIKIHNvdXJjZSAiZHJpdmVycy9ncHUvaG9zdDF4L0tjb25maWciCiBzb3Vy Y2UgImRyaXZlcnMvZ3B1L2lwdS12My9LY29uZmlnIgogc291cmNlICJkcml2ZXJzL2dwdS9ub3Zh LWNvcmUvS2NvbmZpZyIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9idWRkeS5oIGIvaW5j bHVkZS9kcm0vZHJtX2J1ZGR5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi4zMDU0MzY5YmViZmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS9kcm1fYnVk ZHkuaApAQCAtMCwwICsxLDE4IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUICov CisvKgorICogQ29weXJpZ2h0IMKpIDIwMjEgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaWZu ZGVmIF9fRFJNX0JVRERZX0hfXworI2RlZmluZSBfX0RSTV9CVUREWV9IX18KKworI2luY2x1ZGUg PGxpbnV4L2dwdV9idWRkeS5oPgorCitzdHJ1Y3QgZHJtX3ByaW50ZXI7CisKKy8qIERSTS1zcGVj aWZpYyBHUFUgQnVkZHkgQWxsb2NhdG9yIHByaW50IGhlbHBlcnMgKi8KK3ZvaWQgZHJtX2J1ZGR5 X3ByaW50KHN0cnVjdCBncHVfYnVkZHkgKm1tLCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApOwordm9p ZCBkcm1fYnVkZHlfYmxvY2tfcHJpbnQoc3RydWN0IGdwdV9idWRkeSAqbW0sCisJCQkgICBzdHJ1 Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jaywKKwkJCSAgIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7 CisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZ3B1X2J1ZGR5LmggYi9pbmNsdWRl L2xpbnV4L2dwdV9idWRkeS5oCmluZGV4IGI5MDlmYThmODEwYS4uMDdhYzY1ZGI2ZDJlIDEwMDY0 NAotLS0gYS9pbmNsdWRlL2xpbnV4L2dwdV9idWRkeS5oCisrKyBiL2luY2x1ZGUvbGludXgvZ3B1 X2J1ZGR5LmgKQEAgLTMsOCArMyw4IEBACiAgKiBDb3B5cmlnaHQgwqkgMjAyMSBJbnRlbCBDb3Jw b3JhdGlvbgogICovCiAKLSNpZm5kZWYgX19EUk1fQlVERFlfSF9fCi0jZGVmaW5lIF9fRFJNX0JV RERZX0hfXworI2lmbmRlZiBfX0dQVV9CVUREWV9IX18KKyNkZWZpbmUgX19HUFVfQlVERFlfSF9f CiAKICNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CkBA IC0xMiwzOCArMTIsNDUgQEAKICNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgogI2luY2x1ZGUgPGxp bnV4L3JidHJlZS5oPgogCi1zdHJ1Y3QgZHJtX3ByaW50ZXI7CisjZGVmaW5lIEdQVV9CVUREWV9S QU5HRV9BTExPQ0FUSU9OCQlCSVQoMCkKKyNkZWZpbmUgR1BVX0JVRERZX1RPUERPV05fQUxMT0NB VElPTgkJQklUKDEpCisjZGVmaW5lIEdQVV9CVUREWV9DT05USUdVT1VTX0FMTE9DQVRJT04JCUJJ VCgyKQorI2RlZmluZSBHUFVfQlVERFlfQ0xFQVJfQUxMT0NBVElPTgkJQklUKDMpCisjZGVmaW5l IEdQVV9CVUREWV9DTEVBUkVECQkJQklUKDQpCisjZGVmaW5lIEdQVV9CVUREWV9UUklNX0RJU0FC TEUJCQlCSVQoNSkKIAotI2RlZmluZSBEUk1fQlVERFlfUkFOR0VfQUxMT0NBVElPTgkJQklUKDAp Ci0jZGVmaW5lIERSTV9CVUREWV9UT1BET1dOX0FMTE9DQVRJT04JCUJJVCgxKQotI2RlZmluZSBE Uk1fQlVERFlfQ09OVElHVU9VU19BTExPQ0FUSU9OCQlCSVQoMikKLSNkZWZpbmUgRFJNX0JVRERZ X0NMRUFSX0FMTE9DQVRJT04JCUJJVCgzKQotI2RlZmluZSBEUk1fQlVERFlfQ0xFQVJFRAkJCUJJ VCg0KQotI2RlZmluZSBEUk1fQlVERFlfVFJJTV9ESVNBQkxFCQkJQklUKDUpCitlbnVtIGdwdV9i dWRkeV9mcmVlX3RyZWUgeworCUdQVV9CVUREWV9DTEVBUl9UUkVFID0gMCwKKwlHUFVfQlVERFlf RElSVFlfVFJFRSwKKwlHUFVfQlVERFlfTUFYX0ZSRUVfVFJFRVMsCit9OwogCi1zdHJ1Y3QgZHJt X2J1ZGR5X2Jsb2NrIHsKLSNkZWZpbmUgRFJNX0JVRERZX0hFQURFUl9PRkZTRVQgR0VOTUFTS19V TEwoNjMsIDEyKQotI2RlZmluZSBEUk1fQlVERFlfSEVBREVSX1NUQVRFICBHRU5NQVNLX1VMTCgx MSwgMTApCi0jZGVmaW5lICAgRFJNX0JVRERZX0FMTE9DQVRFRAkgICAoMSA8PCAxMCkKLSNkZWZp bmUgICBEUk1fQlVERFlfRlJFRQkgICAoMiA8PCAxMCkKLSNkZWZpbmUgICBEUk1fQlVERFlfU1BM SVQJICAgKDMgPDwgMTApCi0jZGVmaW5lIERSTV9CVUREWV9IRUFERVJfQ0xFQVIgIEdFTk1BU0tf VUxMKDksIDkpCisjZGVmaW5lIGZvcl9lYWNoX2ZyZWVfdHJlZSh0cmVlKSBcCisJZm9yICgodHJl ZSkgPSAwOyAodHJlZSkgPCBHUFVfQlVERFlfTUFYX0ZSRUVfVFJFRVM7ICh0cmVlKSsrKQorCitz dHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrIHsKKyNkZWZpbmUgR1BVX0JVRERZX0hFQURFUl9PRkZTRVQg R0VOTUFTS19VTEwoNjMsIDEyKQorI2RlZmluZSBHUFVfQlVERFlfSEVBREVSX1NUQVRFICBHRU5N QVNLX1VMTCgxMSwgMTApCisjZGVmaW5lICAgR1BVX0JVRERZX0FMTE9DQVRFRAkgICAoMSA8PCAx MCkKKyNkZWZpbmUgICBHUFVfQlVERFlfRlJFRQkgICAoMiA8PCAxMCkKKyNkZWZpbmUgICBHUFVf QlVERFlfU1BMSVQJICAgKDMgPDwgMTApCisjZGVmaW5lIEdQVV9CVUREWV9IRUFERVJfQ0xFQVIg IEdFTk1BU0tfVUxMKDksIDkpCiAvKiBGcmVlIHRvIGJlIHVzZWQsIGlmIG5lZWRlZCBpbiB0aGUg ZnV0dXJlICovCi0jZGVmaW5lIERSTV9CVUREWV9IRUFERVJfVU5VU0VEIEdFTk1BU0tfVUxMKDgs IDYpCi0jZGVmaW5lIERSTV9CVUREWV9IRUFERVJfT1JERVIgIEdFTk1BU0tfVUxMKDUsIDApCisj ZGVmaW5lIEdQVV9CVUREWV9IRUFERVJfVU5VU0VEIEdFTk1BU0tfVUxMKDgsIDYpCisjZGVmaW5l IEdQVV9CVUREWV9IRUFERVJfT1JERVIgIEdFTk1BU0tfVUxMKDUsIDApCiAJdTY0IGhlYWRlcjsK IAotCXN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmxlZnQ7Ci0Jc3RydWN0IGRybV9idWRkeV9ibG9j ayAqcmlnaHQ7Ci0Jc3RydWN0IGRybV9idWRkeV9ibG9jayAqcGFyZW50OworCXN0cnVjdCBncHVf YnVkZHlfYmxvY2sgKmxlZnQ7CisJc3RydWN0IGdwdV9idWRkeV9ibG9jayAqcmlnaHQ7CisJc3Ry dWN0IGdwdV9idWRkeV9ibG9jayAqcGFyZW50OwogCiAJdm9pZCAqcHJpdmF0ZTsgLyogb3duZWQg YnkgY3JlYXRvciAqLwogCiAJLyoKLQkgKiBXaGlsZSB0aGUgYmxvY2sgaXMgYWxsb2NhdGVkIGJ5 IHRoZSB1c2VyIHRocm91Z2ggZHJtX2J1ZGR5X2FsbG9jKiwKKwkgKiBXaGlsZSB0aGUgYmxvY2sg aXMgYWxsb2NhdGVkIGJ5IHRoZSB1c2VyIHRocm91Z2ggZ3B1X2J1ZGR5X2FsbG9jKiwKIAkgKiB0 aGUgdXNlciBoYXMgb3duZXJzaGlwIG9mIHRoZSBsaW5rLCBmb3IgZXhhbXBsZSB0byBtYWludGFp biB3aXRoaW4KIAkgKiBhIGxpc3QsIGlmIHNvIGRlc2lyZWQuIEFzIHNvb24gYXMgdGhlIGJsb2Nr IGlzIGZyZWVkIHdpdGgKLQkgKiBkcm1fYnVkZHlfZnJlZSogb3duZXJzaGlwIGlzIGdpdmVuIGJh Y2sgdG8gdGhlIG1tLgorCSAqIGdwdV9idWRkeV9mcmVlKiBvd25lcnNoaXAgaXMgZ2l2ZW4gYmFj ayB0byB0aGUgbW0uCiAJICovCiAJdW5pb24gewogCQlzdHJ1Y3QgcmJfbm9kZSByYjsKQEAgLTU0 LDE1ICs2MSwxNSBAQCBzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrIHsKIH07CiAKIC8qIE9yZGVyLXpl cm8gbXVzdCBiZSBhdCBsZWFzdCBTWl80SyAqLwotI2RlZmluZSBEUk1fQlVERFlfTUFYX09SREVS ICg2MyAtIDEyKQorI2RlZmluZSBHUFVfQlVERFlfTUFYX09SREVSICg2MyAtIDEyKQogCiAvKgog ICogQmluYXJ5IEJ1ZGR5IFN5c3RlbS4KICAqCiAgKiBMb2NraW5nIHNob3VsZCBiZSBoYW5kbGVk IGJ5IHRoZSB1c2VyLCBhIHNpbXBsZSBtdXRleCBhcm91bmQKLSAqIGRybV9idWRkeV9hbGxvYyog YW5kIGRybV9idWRkeV9mcmVlKiBzaG91bGQgc3VmZmljZS4KKyAqIGdwdV9idWRkeV9hbGxvYyog YW5kIGdwdV9idWRkeV9mcmVlKiBzaG91bGQgc3VmZmljZS4KICAqLwotc3RydWN0IGRybV9idWRk eSB7CitzdHJ1Y3QgZ3B1X2J1ZGR5IHsKIAkvKiBNYWludGFpbiBhIGZyZWUgbGlzdCBmb3IgZWFj aCBvcmRlci4gKi8KIAlzdHJ1Y3QgcmJfcm9vdCAqKmZyZWVfdHJlZXM7CiAKQEAgLTczLDcgKzgw LDcgQEAgc3RydWN0IGRybV9idWRkeSB7CiAJICogYmxvY2suICBOb2RlcyBhcmUgZWl0aGVyIGFs bG9jYXRlZCBvciBmcmVlLCBpbiB3aGljaCBjYXNlIHRoZXkgd2lsbAogCSAqIGFsc28gZXhpc3Qg b24gdGhlIHJlc3BlY3RpdmUgZnJlZSBsaXN0LgogCSAqLwotCXN0cnVjdCBkcm1fYnVkZHlfYmxv Y2sgKipyb290czsKKwlzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICoqcm9vdHM7CiAKIAkvKgogCSAq IEFueXRoaW5nIGZyb20gaGVyZSBpcyBwdWJsaWMsIGFuZCByZW1haW5zIHN0YXRpYyBmb3IgdGhl IGxpZmV0aW1lIG9mCkBAIC05MCw4MiArOTcsODEgQEAgc3RydWN0IGRybV9idWRkeSB7CiB9Owog CiBzdGF0aWMgaW5saW5lIHU2NAotZHJtX2J1ZGR5X2Jsb2NrX29mZnNldChjb25zdCBzdHJ1Y3Qg ZHJtX2J1ZGR5X2Jsb2NrICpibG9jaykKK2dwdV9idWRkeV9ibG9ja19vZmZzZXQoY29uc3Qgc3Ry dWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2spCiB7Ci0JcmV0dXJuIGJsb2NrLT5oZWFkZXIgJiBE Uk1fQlVERFlfSEVBREVSX09GRlNFVDsKKwlyZXR1cm4gYmxvY2stPmhlYWRlciAmIEdQVV9CVURE WV9IRUFERVJfT0ZGU0VUOwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludAotZHJtX2J1 ZGR5X2Jsb2NrX29yZGVyKHN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrKQorZ3B1X2J1ZGR5 X2Jsb2NrX29yZGVyKHN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJsb2NrKQogewotCXJldHVybiBi bG9jay0+aGVhZGVyICYgRFJNX0JVRERZX0hFQURFUl9PUkRFUjsKKwlyZXR1cm4gYmxvY2stPmhl YWRlciAmIEdQVV9CVUREWV9IRUFERVJfT1JERVI7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdW5zaWdu ZWQgaW50Ci1kcm1fYnVkZHlfYmxvY2tfc3RhdGUoc3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxv Y2spCitncHVfYnVkZHlfYmxvY2tfc3RhdGUoc3RydWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2sp CiB7Ci0JcmV0dXJuIGJsb2NrLT5oZWFkZXIgJiBEUk1fQlVERFlfSEVBREVSX1NUQVRFOworCXJl dHVybiBibG9jay0+aGVhZGVyICYgR1BVX0JVRERZX0hFQURFUl9TVEFURTsKIH0KIAogc3RhdGlj IGlubGluZSBib29sCi1kcm1fYnVkZHlfYmxvY2tfaXNfYWxsb2NhdGVkKHN0cnVjdCBkcm1fYnVk ZHlfYmxvY2sgKmJsb2NrKQorZ3B1X2J1ZGR5X2Jsb2NrX2lzX2FsbG9jYXRlZChzdHJ1Y3QgZ3B1 X2J1ZGR5X2Jsb2NrICpibG9jaykKIHsKLQlyZXR1cm4gZHJtX2J1ZGR5X2Jsb2NrX3N0YXRlKGJs b2NrKSA9PSBEUk1fQlVERFlfQUxMT0NBVEVEOworCXJldHVybiBncHVfYnVkZHlfYmxvY2tfc3Rh dGUoYmxvY2spID09IEdQVV9CVUREWV9BTExPQ0FURUQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9v bAotZHJtX2J1ZGR5X2Jsb2NrX2lzX2NsZWFyKHN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJsb2Nr KQorZ3B1X2J1ZGR5X2Jsb2NrX2lzX2NsZWFyKHN0cnVjdCBncHVfYnVkZHlfYmxvY2sgKmJsb2Nr KQogewotCXJldHVybiBibG9jay0+aGVhZGVyICYgRFJNX0JVRERZX0hFQURFUl9DTEVBUjsKKwly ZXR1cm4gYmxvY2stPmhlYWRlciAmIEdQVV9CVUREWV9IRUFERVJfQ0xFQVI7CiB9CiAKIHN0YXRp YyBpbmxpbmUgYm9vbAotZHJtX2J1ZGR5X2Jsb2NrX2lzX2ZyZWUoc3RydWN0IGRybV9idWRkeV9i bG9jayAqYmxvY2spCitncHVfYnVkZHlfYmxvY2tfaXNfZnJlZShzdHJ1Y3QgZ3B1X2J1ZGR5X2Js b2NrICpibG9jaykKIHsKLQlyZXR1cm4gZHJtX2J1ZGR5X2Jsb2NrX3N0YXRlKGJsb2NrKSA9PSBE Uk1fQlVERFlfRlJFRTsKKwlyZXR1cm4gZ3B1X2J1ZGR5X2Jsb2NrX3N0YXRlKGJsb2NrKSA9PSBH UFVfQlVERFlfRlJFRTsKIH0KIAogc3RhdGljIGlubGluZSBib29sCi1kcm1fYnVkZHlfYmxvY2tf aXNfc3BsaXQoc3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2spCitncHVfYnVkZHlfYmxvY2tf aXNfc3BsaXQoc3RydWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2spCiB7Ci0JcmV0dXJuIGRybV9i dWRkeV9ibG9ja19zdGF0ZShibG9jaykgPT0gRFJNX0JVRERZX1NQTElUOworCXJldHVybiBncHVf YnVkZHlfYmxvY2tfc3RhdGUoYmxvY2spID09IEdQVV9CVUREWV9TUExJVDsKIH0KIAogc3RhdGlj IGlubGluZSB1NjQKLWRybV9idWRkeV9ibG9ja19zaXplKHN0cnVjdCBkcm1fYnVkZHkgKm1tLAot CQkgICAgIHN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrKQorZ3B1X2J1ZGR5X2Jsb2NrX3Np emUoc3RydWN0IGdwdV9idWRkeSAqbW0sCisJCSAgICAgc3RydWN0IGdwdV9idWRkeV9ibG9jayAq YmxvY2spCiB7Ci0JcmV0dXJuIG1tLT5jaHVua19zaXplIDw8IGRybV9idWRkeV9ibG9ja19vcmRl cihibG9jayk7CisJcmV0dXJuIG1tLT5jaHVua19zaXplIDw8IGdwdV9idWRkeV9ibG9ja19vcmRl cihibG9jayk7CiB9CiAKLWludCBkcm1fYnVkZHlfaW5pdChzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwg dTY0IHNpemUsIHU2NCBjaHVua19zaXplKTsKK2ludCBncHVfYnVkZHlfaW5pdChzdHJ1Y3QgZ3B1 X2J1ZGR5ICptbSwgdTY0IHNpemUsIHU2NCBjaHVua19zaXplKTsKIAotdm9pZCBkcm1fYnVkZHlf ZmluaShzdHJ1Y3QgZHJtX2J1ZGR5ICptbSk7Cit2b2lkIGdwdV9idWRkeV9maW5pKHN0cnVjdCBn cHVfYnVkZHkgKm1tKTsKIAotc3RydWN0IGRybV9idWRkeV9ibG9jayAqCi1kcm1fZ2V0X2J1ZGR5 KHN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrKTsKK3N0cnVjdCBncHVfYnVkZHlfYmxvY2sg KgorZ3B1X2dldF9idWRkeShzdHJ1Y3QgZ3B1X2J1ZGR5X2Jsb2NrICpibG9jayk7CiAKLWludCBk cm1fYnVkZHlfYWxsb2NfYmxvY2tzKHN0cnVjdCBkcm1fYnVkZHkgKm1tLAoraW50IGdwdV9idWRk eV9hbGxvY19ibG9ja3Moc3RydWN0IGdwdV9idWRkeSAqbW0sCiAJCQkgICB1NjQgc3RhcnQsIHU2 NCBlbmQsIHU2NCBzaXplLAogCQkJICAgdTY0IG1pbl9wYWdlX3NpemUsCiAJCQkgICBzdHJ1Y3Qg bGlzdF9oZWFkICpibG9ja3MsCiAJCQkgICB1bnNpZ25lZCBsb25nIGZsYWdzKTsKIAotaW50IGRy bV9idWRkeV9ibG9ja190cmltKHN0cnVjdCBkcm1fYnVkZHkgKm1tLAoraW50IGdwdV9idWRkeV9i bG9ja190cmltKHN0cnVjdCBncHVfYnVkZHkgKm1tLAogCQkJIHU2NCAqc3RhcnQsCiAJCQkgdTY0 IG5ld19zaXplLAogCQkJIHN0cnVjdCBsaXN0X2hlYWQgKmJsb2Nrcyk7CiAKLXZvaWQgZHJtX2J1 ZGR5X3Jlc2V0X2NsZWFyKHN0cnVjdCBkcm1fYnVkZHkgKm1tLCBib29sIGlzX2NsZWFyKTsKK3Zv aWQgZ3B1X2J1ZGR5X3Jlc2V0X2NsZWFyKHN0cnVjdCBncHVfYnVkZHkgKm1tLCBib29sIGlzX2Ns ZWFyKTsKIAotdm9pZCBkcm1fYnVkZHlfZnJlZV9ibG9jayhzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwg c3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2spOwordm9pZCBncHVfYnVkZHlfZnJlZV9ibG9j ayhzdHJ1Y3QgZ3B1X2J1ZGR5ICptbSwgc3RydWN0IGdwdV9idWRkeV9ibG9jayAqYmxvY2spOwog Ci12b2lkIGRybV9idWRkeV9mcmVlX2xpc3Qoc3RydWN0IGRybV9idWRkeSAqbW0sCit2b2lkIGdw dV9idWRkeV9mcmVlX2xpc3Qoc3RydWN0IGdwdV9idWRkeSAqbW0sCiAJCQkgc3RydWN0IGxpc3Rf aGVhZCAqb2JqZWN0cywKIAkJCSB1bnNpZ25lZCBpbnQgZmxhZ3MpOwogCi12b2lkIGRybV9idWRk eV9wcmludChzdHJ1Y3QgZHJtX2J1ZGR5ICptbSwgc3RydWN0IGRybV9wcmludGVyICpwKTsKLXZv aWQgZHJtX2J1ZGR5X2Jsb2NrX3ByaW50KHN0cnVjdCBkcm1fYnVkZHkgKm1tLAotCQkJICAgc3Ry dWN0IGRybV9idWRkeV9ibG9jayAqYmxvY2ssCi0JCQkgICBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAp Owordm9pZCBncHVfYnVkZHlfcHJpbnQoc3RydWN0IGdwdV9idWRkeSAqbW0pOwordm9pZCBncHVf YnVkZHlfYmxvY2tfcHJpbnQoc3RydWN0IGdwdV9idWRkeSAqbW0sCisJCQkgICBzdHJ1Y3QgZ3B1 X2J1ZGR5X2Jsb2NrICpibG9jayk7CiAjZW5kaWYKLS0gCjIuMzQuMQoK