From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01on2070.outbound.protection.outlook.com [40.107.255.70]) by sourceware.org (Postfix) with ESMTPS id 6196F3858D32 for ; Mon, 10 Jul 2023 18:34:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6196F3858D32 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=siemens.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=siemens.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZbYY4QLa//xJnQHJAzP+CnDh2RZLKgb1keQztIYcqhqLq2oT2fK7AVHaitLXKKEhWZ1WNuTBVZ7cKEWdbLBpqNa5FGZChqiwL/mLAVwW7kFWi8DdX3yUfJoi3RGFYknA6km+WSJWbQew0D7a1RCH1Y9tz3IBqiw01AAuhF8GeYBIFGKF8k6FP2uzq1eRKzSB3BYvigz/8ftVzj6xdACbSbydYQA3uOGDcWRMUKj7VwBlbR2r41JX2RN9sLVNyHQrfuLBDJCcj1HgGZpAR3lvuNm1fc1gjoFxNQPgAsLCNPepCQtFWf0MvpaMUDVB6y63lruxm7Z8ObdvT1Bn/HqzRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ZFkDQgsRVM+L8RrBvjZ7hmlDea0GHNJo9NBwwc6ojqo=; b=dhRlGVYTdXa74pqyzTBI5l2J/vu6G5HtXOnuE6wyfyqp6sG1+vEcDdZaLaiYtXxoUNfjFFgxzNTwbfZbV1CYYRNE37VeHNUrywQKUgPAA/aBLmeICgqy4BhNTWfowifGkoz5Btib7QPA01W7j/D3WscuLGUP8Qt0EdGZaEb8ViDGeP3StBT+xGiCHhXtWNgRTItmFnbot3yQNuf8v/vQvp6+BoD7sEXH8iTUD92WelAY4mV1tE3N4cq2iXzLDjWhHaf318dEyhLEm9Lv4ntp+3TLdEdcuJ0LHj//4cStO5iI3KLqQoxXjwgNHgeALqwXshVZRkqJVbNI/it4/LCOZQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=siemens.com; dmarc=pass action=none header.from=siemens.com; dkim=pass header.d=siemens.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=siemens.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZFkDQgsRVM+L8RrBvjZ7hmlDea0GHNJo9NBwwc6ojqo=; b=uVmw8VDLvezFZx8FMiLlOVZmoqqpiOLHL3ZVkg9A/Lnwg2UmzMVvYH/Po/bdX17eabkXPQtwWhOxIOrWt4TH+M27x1dNphQLBiWqEdqlOPAjW4AG5O7eUBCpm8kT5O9UvisE55xSsduN+h13yUWeuabFA2s70etp+tfBOOAyy2KjOQBxpsay3h8CtLUkiaoL1g4xyHro58qR/6rc55CjrbYoM3WFqNfc6HH4o1Klg44Toxwjl/LFYKYm9w/Y+p/fryNuH/sqfIlGkNRlhnAhA5iZrA3Ei99AB1i5VWMXgBQFGFXPi3Rk+YbplDVSLpGZdQPpYTynZdlc80O9sXGP6Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=siemens.com; Received: from SG2PR06MB5430.apcprd06.prod.outlook.com (2603:1096:4:1ba::14) by SEZPR06MB5141.apcprd06.prod.outlook.com (2603:1096:101:43::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.30; Mon, 10 Jul 2023 18:34:03 +0000 Received: from SG2PR06MB5430.apcprd06.prod.outlook.com ([fe80::e9fc:a1ea:cfed:90b8]) by SG2PR06MB5430.apcprd06.prod.outlook.com ([fe80::e9fc:a1ea:cfed:90b8%6]) with mapi id 15.20.6565.028; Mon, 10 Jul 2023 18:34:02 +0000 Content-Type: multipart/mixed; boundary="------------DdZ8MPROSRptuyRbSvSWwdZl" Message-ID: Date: Tue, 11 Jul 2023 02:33:58 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Reply-To: cltang@codesourcery.com Content-Language: en-US From: Chung-Lin Tang Subject: [PATCH, OpenACC 2.7] readonly modifier support in front-ends To: gcc-patches , Thomas Schwinge , Catherine Moore , Tobias Burnus X-ClientProxiedBy: TY2PR0101CA0019.apcprd01.prod.exchangelabs.com (2603:1096:404:92::31) To SG2PR06MB5430.apcprd06.prod.outlook.com (2603:1096:4:1ba::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SG2PR06MB5430:EE_|SEZPR06MB5141:EE_ X-MS-Office365-Filtering-Correlation-Id: fe46458b-7807-4008-c130-08db81743b78 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ZuE2+AXd73bu0PG3mQ6euXr1lleUCsvjo7DsauNa/xf5E5vPCuP9d4v7wlvLA93/ZwH8v2z+Trz83rALxulwONcRszY7DH3YeqEguLJ9puXJH8TtNkysRTsAQAAKRkIhR34qUNvnz3VCwnHdvjQSAQ/FYj6NuGjt/30p40XfJ7/4B1SsqRpahBzjcWKG50bt/E+HyoeEDS3xHQVgh4ctPpkI6W+IKss9sw16wBvLYlUorWAeWmvQ/Q2f2Bme8OPhutWnW/57BCqsDsOW4Mw+sBBJXKOiRL+EoXAiFDiOsNv60dFs/BnAlqwmDT6xZbSRU1FtLIGnQrPnbmoeMEI56ok6v1cV5+yA52IJ+Z3+QSTHR3c/6dQlEe310t2Va8vAUfum1HaGNzG1rnNo4gkl9BtFf4/kjEB/nsAidghNKtOqy+ErPgHwe29OjKc0hotno3iUjJPUP1e6z3vCDoBxtQn6p9RNAUwtgWerMZ33d9fkhsYgfN0XcIcM3vOLZWwxijhdyRvgtNk9Zv4mRVvYGHOmObQdbefYmj74dpdCn8qAqX4uwylDhJwO6kevl6W3IFsS/ZYSnqyLpzfU5LKGLbinRZqP6j7OVhTqD3jtkiUXM8gF6SukU81Xy8mVICad7UQNPjW+3o8dYpraNpAoJQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SG2PR06MB5430.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(39860400002)(136003)(346002)(366004)(396003)(376002)(451199021)(186003)(26005)(2616005)(6512007)(6506007)(83380400001)(41300700001)(66556008)(316002)(2906002)(235185007)(5660300002)(66476007)(8676002)(66946007)(8936002)(478600001)(6486002)(33964004)(6666004)(110136005)(36756003)(82960400001)(31696002)(38100700002)(86362001)(84970400001)(31686004)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WnIvcEp3VDhaTjB2bTNEdVAxaVlYZm9PQTFnVGRNRHNQdXdpa0RqdVFkb2Nz?= =?utf-8?B?Z21wZ1MyMFF5K25ZQVFZdGUrR0cyNmtSL0dxNGdWR05PWFpVdVNYODBWVk00?= =?utf-8?B?RjFpZVAvdkcwQWlWRWtuakVHaHdpaGQyMDdaK1A4Y0dXVXY0Q3BBNVdsUGZv?= =?utf-8?B?bkRGMTJVVUQ0S1BOTXdpRDYxL0JRdXFuUmwzWGJiQ3hpanQwUGJVRUt2UzN2?= =?utf-8?B?eDlUSXJCNDl3V2IzaXZDT0RJNXNhQ1dUWXRDUXAySS9GclFTTnZoMUJHOWZp?= =?utf-8?B?NzJGNjE4cVF3SXdST3RScllXYVQ0c2V0OTFSWHJrUWR0UVpUbktINTUvaDVE?= =?utf-8?B?S1hiR29sNTh6YkhjeE44d0lhWU1lYW1lQm1hUWN1Slh2Y3lKOUE4UGNsWWFV?= =?utf-8?B?bTdJZThLL1JXc0plMHVpUlk5ZGh1M1F4dFQvQzVQQmw2ZEsxak9VdmlYSE13?= =?utf-8?B?bExBZUtCMmpoVkZVR1IzY3NEbHZPYVBuY3hPQjZ2dXNJMThaWGF4M24rak5m?= =?utf-8?B?ZklyM1c4Qml0OEcxNitqazdWcXBXT1oxWElXbkp0Y1p5ZUpWZ3o5cytCckV5?= =?utf-8?B?K214RmorUXJIUHRLTk9SQ1pycHpXVUZpcDdQWTl4ZllJLzVNVGkxU3JwUkRQ?= =?utf-8?B?Y281MGcvSmg2cElUVkxVLzd4K2JYV0t1a0FWSWUwdGdwNEwwTFBmSEVCbGRS?= =?utf-8?B?NnNONE1YMm5QSmZjNUw5SVJJb0w5NFI0M2RJRWlrU0x4elZVSlJLUWpoTytv?= =?utf-8?B?UHEvMk9ua3RNZnlrV2gralNMeWx2djBNc1plRmZxM2FlQkJ2Myt5TExaellm?= =?utf-8?B?Ylp5di93eVF0QzJZZHJyK3VVVHlrbDQrYU5RYzJRUC9QQVlodm5yZHNtL2Fs?= =?utf-8?B?WmtWanIzMXI4ME1nM3I5RjRWSUVtelV6a1lIKy9pYUl0NngyYlMwQ2IxYlRI?= =?utf-8?B?MEZQK3lCbjJLR1U1ZTNrZ0RERHBNaE1zQ2F2bEN1WnFMaWR2SGljRVU5ZUZV?= =?utf-8?B?MXNFaXhJZHlFOFFraGN2SWNlQWQ0TXZwV1lrRHhvNXpVWnZxeVpCdk5KOWxV?= =?utf-8?B?Mm9uZ1I2WFMwSkRKb2dzcTVlVWZWQ3BUWlplZnh3Y0FaNGtRNWxNNUZLbGhE?= =?utf-8?B?YW5qMjA1ak43MzIxdTZxcGZNemd0cmU3akxDdGJKYk9UeFlyNGNxV2RlTFlQ?= =?utf-8?B?V1ZqVDN5UDdwemExU2ZScXNpOGJCeGxtY24zcFNIbHpmci9ZMHlKdE1LVnp5?= =?utf-8?B?bzVFY2phbWIzUmVVMEFXUmFTYjlkckgxdUQ3eURrRXJQNUk5alNWMkhjODRh?= =?utf-8?B?b2dhdmFhRHQ1UHJxaGlySnBybUVyNjVJeWg3Y0k4ZnJBaUc4SDhGcE5qSlNN?= =?utf-8?B?MXBlN2RlWHR6SGVoSjlPckFYU0xIUmIxZHFVNng2RWdVWFBiTEZ5N0E0eUtr?= =?utf-8?B?WUExUHlCZGRHVUs1RUI4Qk9Eb1M4eXpONWs3TnIxQ3Y3SERqNHZjRDlUQ3ho?= =?utf-8?B?ankyY042ZGxha3lmdkQvNGxxL3F1WldlU2pGMjBDVHBQWExGc1hsMDZWOWN5?= =?utf-8?B?VDk4Z1oybm1TZklLVXVMM2JzYjNrTjk0bHpXeVFuU1IydHBud2VVaHdGT3Za?= =?utf-8?B?NlVkdlBCeml5NVcyZmsyTlJPQnNBRDZETHFFcHE0OVhLVXdGb0srZTBLTnFx?= =?utf-8?B?OW9aRkcvMTEyWjRTRHk1dURSSkJ3dDRiRXRFUVkzS1RNRWdqR1J5cEUvV0RI?= =?utf-8?B?KzRNcXVFQ1Jyd1p2c1dnYWkyNlQxOHpnK2Qxem1hYkZQandlWGVVdTh6ME5s?= =?utf-8?B?TkVONStVbkhLYW5BYmpHY1lwNlptRnFvMXBOSndTdlZOQzYxT1ppWlY3OVdU?= =?utf-8?B?UHNYUEh2T05oNnJza1RrR05MZHF2YS9ZTVJmbUw5WEg0R3VQeFVoM3dRL0Zh?= =?utf-8?B?aHprdmoxRHUwU2tGcDlpVGZPOFVuSDU2TlN5RDJmZ0RzT2lHZFdLcmhGTUtE?= =?utf-8?B?ZmMzckFJQllPbzE0YWg5SGErMGVwR0ZtQ3pwcFpIZm82RUdtTnJnRmVILzJY?= =?utf-8?B?SDVncFhETGMvM09BTjQ0dm9OenRCOFhHaFdiQk1PdUppaUZCYmtqVS9pdUpt?= =?utf-8?B?QWVzWTZwWDVycnZlUFIvbFVoQmQ2RktLRWJVRzQ2SUx0aGNlWklWcEdrNitn?= =?utf-8?B?TWc9PQ==?= X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe46458b-7807-4008-c130-08db81743b78 X-MS-Exchange-CrossTenant-AuthSource: SG2PR06MB5430.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2023 18:34:02.7321 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 097K0PLdvH6oZxEtbQ0n0+jxcF6rkKnIWWz8bMlj2aOxAjZg+DPlYHzaG4iA4w8dJogjjHcD12Ax+4/P5agv7O6uGz5fuGSVQNvcHJt5AsA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR06MB5141 X-Spam-Status: No, score=-9.7 required=5.0 tests=BAYES_00,DKIMWL_WL_MED,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------DdZ8MPROSRptuyRbSvSWwdZl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi Thomas, this patch contains support for the 'readonly' modifier in copyin clauses and the cache directive. As we discussed earlier, the work for actually linking this to middle-end points-to analysis is a somewhat non-trivial issue. This first patch allows the language feature to be used in OpenACC directives first (with no effect for now). The middle-end changes are probably going to be a later patch. (Also CCing Tobias because of the Fortran bits) Tested on powerpc64le-linux with nvptx offloading. Is this okay for trunk? Thanks, Chung-Lin 2023-07-10 Chung-Lin Tang gcc/c/ChangeLog: * c-parser.cc (c_parser_omp_var_list_parens): Add 'bool *readonly = NULL' parameter, add readonly modifier parsing support. (c_parser_oacc_data_clause): Adjust c_parser_omp_var_list_parens call to turn on readonly modifier parsing for copyin clause, set OMP_CLAUSE_MAP_READONLY if readonly modifier found, update comments. (c_parser_oacc_cache): Adjust c_parser_omp_var_list_parens call to turn on readonly modifier parsing, set OMP_CLAUSE__CACHE__READONLY if readonly modifier found, update comments. gcc/cp/ChangeLog: * parser.cc (cp_parser_omp_var_list): Add 'bool *readonly = NULL' parameter, add readonly modifier parsing support. (cp_parser_oacc_data_clause): Adjust cp_parser_omp_var_list call to turn on readonly modifier parsing for copyin clause, set OMP_CLAUSE_MAP_READONLY if readonly modifier found, update comments. (cp_parser_oacc_cache): Adjust cp_parser_omp_var_list call to turn on readonly modifier parsing, set OMP_CLAUSE__CACHE__READONLY if readonly modifier found, update comments. gcc/fortran/ChangeLog: * gfortran.h (typedef struct gfc_omp_namelist): Adjust map_op as ENUM_BITFIELD field, add 'bool readonly' field. * openmp.cc (gfc_match_omp_map_clause): Add 'bool readonly = false' parameter, set n->u.readonly field. (gfc_match_omp_clauses): Add readonly modifier parsing for OpenACC copyin clause, adjust call to gfc_match_omp_map_clause. (gfc_match_oacc_cache): Add readonly modifier parsing for OpenACC cache directive, adjust call to gfc_match_omp_map_clause. * trans-openmp.cc (gfc_trans_omp_clauses): Set OMP_CLAUSE_MAP_READONLY, OMP_CLAUSE__CACHE__READONLY to 1 when readonly is set. gcc/ChangeLog: * tree-pretty-print.cc (dump_omp_clause): Add support for printing OMP_CLAUSE_MAP_READONLY and OMP_CLAUSE__CACHE__READONLY. * tree.h (OMP_CLAUSE_MAP_READONLY): New macro. (OMP_CLAUSE__CACHE__READONLY): New macro. gcc/testsuite/ChangeLog: * c-c++-common/goacc/readonly-1.c: New test. * gfortran.dg/goacc/readonly-1.f90: New test. --------------DdZ8MPROSRptuyRbSvSWwdZl Content-Type: text/plain; charset=UTF-8; name="openacc-readonly-modifier.patch" Content-Disposition: attachment; filename="openacc-readonly-modifier.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jL2MtcGFyc2VyLmNjIGIvZ2NjL2MvYy1wYXJzZXIuY2MKaW5kZXgg ZDRiOThkNWQ4YjYuLjA5ZTFlODlkNzkzIDEwMDY0NAotLS0gYS9nY2MvYy9jLXBhcnNlci5jYwor KysgYi9nY2MvYy9jLXBhcnNlci5jYwpAQCAtMTQwNTksNyArMTQwNTksOCBAQCBjX3BhcnNlcl9v bXBfdmFyaWFibGVfbGlzdCAoY19wYXJzZXIgKnBhcnNlciwKIAogc3RhdGljIHRyZWUKIGNfcGFy c2VyX29tcF92YXJfbGlzdF9wYXJlbnMgKGNfcGFyc2VyICpwYXJzZXIsIGVudW0gb21wX2NsYXVz ZV9jb2RlIGtpbmQsCi0JCQkgICAgICB0cmVlIGxpc3QsIGJvb2wgYWxsb3dfZGVyZWYgPSBmYWxz ZSkKKwkJCSAgICAgIHRyZWUgbGlzdCwgYm9vbCBhbGxvd19kZXJlZiA9IGZhbHNlLAorCQkJICAg ICAgYm9vbCAqcmVhZG9ubHkgPSBOVUxMKQogewogICAvKiBUaGUgY2xhdXNlcyBsb2NhdGlvbi4g ICovCiAgIGxvY2F0aW9uX3QgbG9jID0gY19wYXJzZXJfcGVla190b2tlbiAocGFyc2VyKS0+bG9j YXRpb247CkBAIC0xNDA2Nyw2ICsxNDA2OCwyMCBAQCBjX3BhcnNlcl9vbXBfdmFyX2xpc3RfcGFy ZW5zIChjX3BhcnNlciAqcGFyc2VyLCBlbnVtIG9tcF9jbGF1c2VfY29kZSBraW5kLAogICBtYXRj aGluZ19wYXJlbnMgcGFyZW5zOwogICBpZiAocGFyZW5zLnJlcXVpcmVfb3BlbiAocGFyc2VyKSkK ICAgICB7CisgICAgICBpZiAocmVhZG9ubHkgIT0gTlVMTCkKKwl7CisJICBjX3Rva2VuICp0b2tl biA9IGNfcGFyc2VyX3BlZWtfdG9rZW4gKHBhcnNlcik7CisJICBpZiAodG9rZW4tPnR5cGUgPT0g Q1BQX05BTUUKKwkgICAgICAmJiAhc3RyY21wIChJREVOVElGSUVSX1BPSU5URVIgKHRva2VuLT52 YWx1ZSksICJyZWFkb25seSIpCisJICAgICAgJiYgY19wYXJzZXJfcGVla18ybmRfdG9rZW4gKHBh cnNlciktPnR5cGUgPT0gQ1BQX0NPTE9OKQorCSAgICB7CisJICAgICAgY19wYXJzZXJfY29uc3Vt ZV90b2tlbiAocGFyc2VyKTsKKwkgICAgICBjX3BhcnNlcl9jb25zdW1lX3Rva2VuIChwYXJzZXIp OworCSAgICAgICpyZWFkb25seSA9IHRydWU7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgKnJlYWRv bmx5ID0gZmFsc2U7CisJfQogICAgICAgbGlzdCA9IGNfcGFyc2VyX29tcF92YXJpYWJsZV9saXN0 IChwYXJzZXIsIGxvYywga2luZCwgbGlzdCwgYWxsb3dfZGVyZWYpOwogICAgICAgcGFyZW5zLnNr aXBfdW50aWxfZm91bmRfY2xvc2UgKHBhcnNlcik7CiAgICAgfQpAQCAtMTQwODQsNyArMTQwOTks MTEgQEAgY19wYXJzZXJfb21wX3Zhcl9saXN0X3BhcmVucyAoY19wYXJzZXIgKnBhcnNlciwgZW51 bSBvbXBfY2xhdXNlX2NvZGUga2luZCwKICAgIE9wZW5BQ0MgMi42OgogICAgbm9fY3JlYXRlICgg dmFyaWFibGUtbGlzdCApCiAgICBhdHRhY2ggKCB2YXJpYWJsZS1saXN0ICkKLSAgIGRldGFjaCAo IHZhcmlhYmxlLWxpc3QgKSAqLworICAgZGV0YWNoICggdmFyaWFibGUtbGlzdCApCisKKyAgIE9w ZW5BQ0MgMi43OgorICAgY29weWluIChyZWFkb25seSA6IHZhcmlhYmxlLWxpc3QgKQorICovCiAK IHN0YXRpYyB0cmVlCiBjX3BhcnNlcl9vYWNjX2RhdGFfY2xhdXNlIChjX3BhcnNlciAqcGFyc2Vy LCBwcmFnbWFfb21wX2NsYXVzZSBjX2tpbmQsCkBAIC0xNDEzNSwxMSArMTQxNTQsMjIgQEAgY19w YXJzZXJfb2FjY19kYXRhX2NsYXVzZSAoY19wYXJzZXIgKnBhcnNlciwgcHJhZ21hX29tcF9jbGF1 c2UgY19raW5kLAogICAgIGRlZmF1bHQ6CiAgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7CiAgICAg fQorCisgIC8qIFR1cm4gb24gcmVhZG9ubHkgbW9kaWZpZXIgcGFyc2luZyBmb3IgY29weWluIGNs YXVzZS4gICovCisgIGJvb2wgcmVhZG9ubHkgPSBmYWxzZSwgKnJlYWRvbmx5X3B0ciA9IE5VTEw7 CisgIGlmIChjX2tpbmQgPT0gUFJBR01BX09BQ0NfQ0xBVVNFX0NPUFlJTikKKyAgICByZWFkb25s eV9wdHIgPSAmcmVhZG9ubHk7CisKICAgdHJlZSBubCwgYzsKLSAgbmwgPSBjX3BhcnNlcl9vbXBf dmFyX2xpc3RfcGFyZW5zIChwYXJzZXIsIE9NUF9DTEFVU0VfTUFQLCBsaXN0LCB0cnVlKTsKKyAg bmwgPSBjX3BhcnNlcl9vbXBfdmFyX2xpc3RfcGFyZW5zIChwYXJzZXIsIE9NUF9DTEFVU0VfTUFQ LCBsaXN0LCB0cnVlLAorCQkJCSAgICAgcmVhZG9ubHlfcHRyKTsKIAogICBmb3IgKGMgPSBubDsg YyAhPSBsaXN0OyBjID0gT01QX0NMQVVTRV9DSEFJTiAoYykpCi0gICAgT01QX0NMQVVTRV9TRVRf TUFQX0tJTkQgKGMsIGtpbmQpOworICAgIHsKKyAgICAgIE9NUF9DTEFVU0VfU0VUX01BUF9LSU5E IChjLCBraW5kKTsKKyAgICAgIGlmIChyZWFkb25seSkKKwlPTVBfQ0xBVVNFX01BUF9SRUFET05M WSAoYykgPSAxOworICAgIH0KIAogICByZXR1cm4gbmw7CiB9CkBAIC0xODIxMiw2ICsxODI0Miw5 IEBAIGNfcGFyc2VyX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrIChjX3BhcnNlciAqcGFyc2VyLCBib29s ICppZl9wKQogLyogT3BlbkFDQyAyLjA6CiAgICAjIHByYWdtYSBhY2MgY2FjaGUgKHZhcmlhYmxl LWxpc3QpIG5ldy1saW5lCiAKKyAgIE9wZW5BQ0MgMi43OgorICAgIyBwcmFnbWEgYWNjIGNhY2hl IChyZWFkb25seTogdmFyaWFibGUtbGlzdCkgbmV3LWxpbmUKKwogICAgTE9DIGlzIHRoZSBsb2Nh dGlvbiBvZiB0aGUgI3ByYWdtYSB0b2tlbi4KICovCiAKQEAgLTE4MjE5LDggKzE4MjUyLDE0IEBA IHN0YXRpYyB0cmVlCiBjX3BhcnNlcl9vYWNjX2NhY2hlIChsb2NhdGlvbl90IGxvYywgY19wYXJz ZXIgKnBhcnNlcikKIHsKICAgdHJlZSBzdG10LCBjbGF1c2VzOworICBib29sIHJlYWRvbmx5Owor CisgIGNsYXVzZXMgPSBjX3BhcnNlcl9vbXBfdmFyX2xpc3RfcGFyZW5zIChwYXJzZXIsIE9NUF9D TEFVU0VfX0NBQ0hFXywgTlVMTCwKKwkJCQkJICBmYWxzZSwgJnJlYWRvbmx5KTsKKyAgaWYgKHJl YWRvbmx5KQorICAgIGZvciAodHJlZSBjID0gY2xhdXNlczsgYzsgYyA9IE9NUF9DTEFVU0VfQ0hB SU4gKGMpKQorICAgICAgT01QX0NMQVVTRV9fQ0FDSEVfX1JFQURPTkxZIChjKSA9IDE7CiAKLSAg Y2xhdXNlcyA9IGNfcGFyc2VyX29tcF92YXJfbGlzdF9wYXJlbnMgKHBhcnNlciwgT01QX0NMQVVT RV9fQ0FDSEVfLCBOVUxMKTsKICAgY2xhdXNlcyA9IGNfZmluaXNoX29tcF9jbGF1c2VzIChjbGF1 c2VzLCBDX09SVF9BQ0MpOwogCiAgIGNfcGFyc2VyX3NraXBfdG9fcHJhZ21hX2VvbCAocGFyc2Vy KTsKZGlmZiAtLWdpdCBhL2djYy9jcC9wYXJzZXIuY2MgYi9nY2MvY3AvcGFyc2VyLmNjCmluZGV4 IGFjZDFiZDQ4YWY1Li4wZjUxMjg5NTM5YiAxMDA2NDQKLS0tIGEvZ2NjL2NwL3BhcnNlci5jYwor KysgYi9nY2MvY3AvcGFyc2VyLmNjCkBAIC0zNzcyNywxMSArMzc3MjcsMjcgQEAgY3BfcGFyc2Vy X29tcF92YXJfbGlzdF9ub19vcGVuIChjcF9wYXJzZXIgKnBhcnNlciwgZW51bSBvbXBfY2xhdXNl X2NvZGUga2luZCwKIAogc3RhdGljIHRyZWUKIGNwX3BhcnNlcl9vbXBfdmFyX2xpc3QgKGNwX3Bh cnNlciAqcGFyc2VyLCBlbnVtIG9tcF9jbGF1c2VfY29kZSBraW5kLCB0cmVlIGxpc3QsCi0JCQli b29sIGFsbG93X2RlcmVmID0gZmFsc2UpCisJCQlib29sIGFsbG93X2RlcmVmID0gZmFsc2UsIGJv b2wgKnJlYWRvbmx5ID0gTlVMTCkKIHsKICAgaWYgKGNwX3BhcnNlcl9yZXF1aXJlIChwYXJzZXIs IENQUF9PUEVOX1BBUkVOLCBSVF9PUEVOX1BBUkVOKSkKLSAgICByZXR1cm4gY3BfcGFyc2VyX29t cF92YXJfbGlzdF9ub19vcGVuIChwYXJzZXIsIGtpbmQsIGxpc3QsIE5VTEwsCi0JCQkJCSAgIGFs bG93X2RlcmVmKTsKKyAgICB7CisgICAgICBpZiAocmVhZG9ubHkgIT0gTlVMTCkKKwl7CisJICBj cF90b2tlbiAqdG9rZW4gPSBjcF9sZXhlcl9wZWVrX3Rva2VuIChwYXJzZXItPmxleGVyKTsKKwkg IGlmICh0b2tlbi0+dHlwZSA9PSBDUFBfTkFNRQorCSAgICAgICYmICFzdHJjbXAgKElERU5USUZJ RVJfUE9JTlRFUiAodG9rZW4tPnUudmFsdWUpLCAicmVhZG9ubHkiKQorCSAgICAgICYmIGNwX2xl eGVyX250aF90b2tlbl9pcyAocGFyc2VyLT5sZXhlciwgMiwgQ1BQX0NPTE9OKSkKKwkgICAgewor CSAgICAgIGNwX2xleGVyX2NvbnN1bWVfdG9rZW4gKHBhcnNlci0+bGV4ZXIpOworCSAgICAgIGNw X2xleGVyX2NvbnN1bWVfdG9rZW4gKHBhcnNlci0+bGV4ZXIpOworCSAgICAgICpyZWFkb25seSA9 IHRydWU7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgKnJlYWRvbmx5ID0gZmFsc2U7CisJfQorICAg ICAgcmV0dXJuIGNwX3BhcnNlcl9vbXBfdmFyX2xpc3Rfbm9fb3BlbiAocGFyc2VyLCBraW5kLCBs aXN0LCBOVUxMLAorCQkJCQkgICAgIGFsbG93X2RlcmVmKTsKKyAgICB9CiAgIHJldHVybiBsaXN0 OwogfQogCkBAIC0zNzc0Niw3ICszNzc2MiwxMSBAQCBjcF9wYXJzZXJfb21wX3Zhcl9saXN0IChj cF9wYXJzZXIgKnBhcnNlciwgZW51bSBvbXBfY2xhdXNlX2NvZGUga2luZCwgdHJlZSBsaXN0LAog ICAgT3BlbkFDQyAyLjY6CiAgICBub19jcmVhdGUgKCB2YXJpYWJsZS1saXN0ICkKICAgIGF0dGFj aCAoIHZhcmlhYmxlLWxpc3QgKQotICAgZGV0YWNoICggdmFyaWFibGUtbGlzdCApICovCisgICBk ZXRhY2ggKCB2YXJpYWJsZS1saXN0ICkKKworICAgT3BlbkFDQyAyLjc6CisgICBjb3B5aW4gKHJl YWRvbmx5IDogdmFyaWFibGUtbGlzdCApCisgKi8KIAogc3RhdGljIHRyZWUKIGNwX3BhcnNlcl9v YWNjX2RhdGFfY2xhdXNlIChjcF9wYXJzZXIgKnBhcnNlciwgcHJhZ21hX29tcF9jbGF1c2UgY19r aW5kLApAQCAtMzc3OTcsMTEgKzM3ODE3LDIyIEBAIGNwX3BhcnNlcl9vYWNjX2RhdGFfY2xhdXNl IChjcF9wYXJzZXIgKnBhcnNlciwgcHJhZ21hX29tcF9jbGF1c2UgY19raW5kLAogICAgIGRlZmF1 bHQ6CiAgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7CiAgICAgfQorCisgIC8qIFR1cm4gb24gcmVh ZG9ubHkgbW9kaWZpZXIgcGFyc2luZyBmb3IgY29weWluIGNsYXVzZS4gICovCisgIGJvb2wgcmVh ZG9ubHkgPSBmYWxzZSwgKnJlYWRvbmx5X3B0ciA9IE5VTEw7CisgIGlmIChjX2tpbmQgPT0gUFJB R01BX09BQ0NfQ0xBVVNFX0NPUFlJTikKKyAgICByZWFkb25seV9wdHIgPSAmcmVhZG9ubHk7CisK ICAgdHJlZSBubCwgYzsKLSAgbmwgPSBjcF9wYXJzZXJfb21wX3Zhcl9saXN0IChwYXJzZXIsIE9N UF9DTEFVU0VfTUFQLCBsaXN0LCB0cnVlKTsKKyAgbmwgPSBjcF9wYXJzZXJfb21wX3Zhcl9saXN0 IChwYXJzZXIsIE9NUF9DTEFVU0VfTUFQLCBsaXN0LCB0cnVlLAorCQkJICAgICAgIHJlYWRvbmx5 X3B0cik7CiAKICAgZm9yIChjID0gbmw7IGMgIT0gbGlzdDsgYyA9IE9NUF9DTEFVU0VfQ0hBSU4g KGMpKQotICAgIE9NUF9DTEFVU0VfU0VUX01BUF9LSU5EIChjLCBraW5kKTsKKyAgICB7CisgICAg ICBPTVBfQ0xBVVNFX1NFVF9NQVBfS0lORCAoYywga2luZCk7CisgICAgICBpZiAocmVhZG9ubHkp CisJT01QX0NMQVVTRV9NQVBfUkVBRE9OTFkgKGMpID0gMTsKKyAgICB9CiAKICAgcmV0dXJuIG5s OwogfQpAQCAtNDU4NzUsNiArNDU5MDYsOSBAQCBjcF9wYXJzZXJfb21wX3RhcmdldCAoY3BfcGFy c2VyICpwYXJzZXIsIGNwX3Rva2VuICpwcmFnbWFfdG9rLAogCiAvKiBPcGVuQUNDIDIuMDoKICAg ICMgcHJhZ21hIGFjYyBjYWNoZSAodmFyaWFibGUtbGlzdCkgbmV3LWxpbmUKKworICAgT3BlbkFD QyAyLjc6CisgICAjIHByYWdtYSBhY2MgY2FjaGUgKHJlYWRvbmx5OiB2YXJpYWJsZS1saXN0KSBu ZXctbGluZQogKi8KIAogc3RhdGljIHRyZWUKQEAgLTQ1ODg1LDggKzQ1OTE5LDE0IEBAIGNwX3Bh cnNlcl9vYWNjX2NhY2hlIChjcF9wYXJzZXIgKnBhcnNlciwgY3BfdG9rZW4gKnByYWdtYV90b2sp CiAgIGF1dG9fc3VwcHJlc3NfbG9jYXRpb25fd3JhcHBlcnMgc2VudGluZWw7CiAKICAgdHJlZSBz dG10LCBjbGF1c2VzOworICBib29sIHJlYWRvbmx5OworCisgIGNsYXVzZXMgPSBjcF9wYXJzZXJf b21wX3Zhcl9saXN0IChwYXJzZXIsIE9NUF9DTEFVU0VfX0NBQ0hFXywgTlVMTCwKKwkJCQkgICAg ZmFsc2UsICZyZWFkb25seSk7CisgIGlmIChyZWFkb25seSkKKyAgICBmb3IgKHRyZWUgYyA9IGNs YXVzZXM7IGM7IGMgPSBPTVBfQ0xBVVNFX0NIQUlOIChjKSkKKyAgICAgIE9NUF9DTEFVU0VfX0NB Q0hFX19SRUFET05MWSAoYykgPSAxOwogCi0gIGNsYXVzZXMgPSBjcF9wYXJzZXJfb21wX3Zhcl9s aXN0IChwYXJzZXIsIE9NUF9DTEFVU0VfX0NBQ0hFXywgTlVMTF9UUkVFKTsKICAgY2xhdXNlcyA9 IGZpbmlzaF9vbXBfY2xhdXNlcyAoY2xhdXNlcywgQ19PUlRfQUNDKTsKIAogICBjcF9wYXJzZXJf cmVxdWlyZV9wcmFnbWFfZW9sIChwYXJzZXIsIGNwX2xleGVyX3BlZWtfdG9rZW4gKHBhcnNlci0+ bGV4ZXIpKTsKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2dmb3J0cmFuLmggYi9nY2MvZm9ydHJh bi9nZm9ydHJhbi5oCmluZGV4IGNjN2JhN2M4ODQ2Li45ZmE4OTYyZDYzZiAxMDA2NDQKLS0tIGEv Z2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaAorKysgYi9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oCkBAIC0x MzYwLDcgKzEzNjAsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2ZjX29tcF9uYW1lbGlzdAogICAgIHsK ICAgICAgIGdmY19vbXBfcmVkdWN0aW9uX29wIHJlZHVjdGlvbl9vcDsKICAgICAgIGdmY19vbXBf ZGVwZW5kX2RvYWNyb3NzX29wIGRlcGVuZF9kb2Fjcm9zc19vcDsKLSAgICAgIGdmY19vbXBfbWFw X29wIG1hcF9vcDsKKyAgICAgIHN0cnVjdAorICAgICAgICB7CisJICBFTlVNX0JJVEZJRUxEIChn ZmNfb21wX21hcF9vcCkgbWFwX29wOjg7CisJICBib29sIHJlYWRvbmx5OworICAgICAgICB9Owog ICAgICAgZ2ZjX2V4cHIgKmFsaWduOwogICAgICAgc3RydWN0CiAJewpkaWZmIC0tZ2l0IGEvZ2Nj L2ZvcnRyYW4vb3Blbm1wLmNjIGIvZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjCmluZGV4IDAzODkwN2Jh YTQ4Li5hY2QxNDI4ZDJkNyAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjCisrKyBi L2djYy9mb3J0cmFuL29wZW5tcC5jYwpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgb21wX2ludl9tYXNr OjpvbXBfaW52X21hc2sgKGNvbnN0IG9tcF9tYXNrICZtKSA6IG9tcF9tYXNrIChtKQogCiBzdGF0 aWMgYm9vbAogZ2ZjX21hdGNoX29tcF9tYXBfY2xhdXNlIChnZmNfb21wX25hbWVsaXN0ICoqbGlz dCwgZ2ZjX29tcF9tYXBfb3AgbWFwX29wLAotCQkJICBib29sIGFsbG93X2NvbW1vbiwgYm9vbCBh bGxvd19kZXJpdmVkKQorCQkJICBib29sIGFsbG93X2NvbW1vbiwgYm9vbCBhbGxvd19kZXJpdmVk LCBib29sIHJlYWRvbmx5ID0gZmFsc2UpCiB7CiAgIGdmY19vbXBfbmFtZWxpc3QgKipoZWFkID0g TlVMTDsKICAgaWYgKGdmY19tYXRjaF9vbXBfdmFyaWFibGVfbGlzdCAoIiIsIGxpc3QsIGFsbG93 X2NvbW1vbiwgTlVMTCwgJmhlYWQsIHRydWUsCkBAIC0xMjA1LDcgKzEyMDUsMTAgQEAgZ2ZjX21h dGNoX29tcF9tYXBfY2xhdXNlIChnZmNfb21wX25hbWVsaXN0ICoqbGlzdCwgZ2ZjX29tcF9tYXBf b3AgbWFwX29wLAogICAgIHsKICAgICAgIGdmY19vbXBfbmFtZWxpc3QgKm47CiAgICAgICBmb3Ig KG4gPSAqaGVhZDsgbjsgbiA9IG4tPm5leHQpCi0Jbi0+dS5tYXBfb3AgPSBtYXBfb3A7CisJewor CSAgbi0+dS5tYXBfb3AgPSBtYXBfb3A7CisJICBuLT51LnJlYWRvbmx5ID0gcmVhZG9ubHk7CisJ fQogICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMDc5LDExICsyMDgyLDE2IEBAIGdm Y19tYXRjaF9vbXBfY2xhdXNlcyAoZ2ZjX29tcF9jbGF1c2VzICoqY3AsIGNvbnN0IG9tcF9tYXNr IG1hc2ssCiAJICAgIHsKIAkgICAgICBpZiAob3BlbmFjYykKIAkJewotCQkgIGlmIChnZmNfbWF0 Y2ggKCJjb3B5aW4gKCAiKSA9PSBNQVRDSF9ZRVMKLQkJICAgICAgJiYgZ2ZjX21hdGNoX29tcF9t YXBfY2xhdXNlICgmYy0+bGlzdHNbT01QX0xJU1RfTUFQXSwKLQkJCQkJCSAgIE9NUF9NQVBfVE8s IHRydWUsCi0JCQkJCQkgICBhbGxvd19kZXJpdmVkKSkKLQkJICAgIGNvbnRpbnVlOworCQkgIGlm IChnZmNfbWF0Y2ggKCJjb3B5aW4gKCAiKSA9PSBNQVRDSF9ZRVMpCisJCSAgICB7CisJCSAgICAg IGJvb2wgcmVhZG9ubHkgPSBmYWxzZTsKKwkJICAgICAgaWYgKGdmY19tYXRjaCAoInJlYWRvbmx5 IDogIikgPT0gTUFUQ0hfWUVTKQorCQkJcmVhZG9ubHkgPSB0cnVlOworCQkgICAgICBpZiAoZ2Zj X21hdGNoX29tcF9tYXBfY2xhdXNlICgmYy0+bGlzdHNbT01QX0xJU1RfTUFQXSwKKwkJCQkJCSAg ICBPTVBfTUFQX1RPLCB0cnVlLAorCQkJCQkJICAgIGFsbG93X2Rlcml2ZWQsIHJlYWRvbmx5KSkK KwkJCWNvbnRpbnVlOworCQkgICAgfQogCQl9CiAJICAgICAgZWxzZSBpZiAoZ2ZjX21hdGNoX29t cF92YXJpYWJsZV9saXN0ICgiY29weWluICgiLAogCQkJCQkJICAgICZjLT5saXN0c1tPTVBfTElT VF9DT1BZSU5dLApAQCAtNDAwOCwyMCArNDAxNiwzNSBAQCBnZmNfbWF0Y2hfb2FjY193YWl0ICh2 b2lkKQogbWF0Y2gKIGdmY19tYXRjaF9vYWNjX2NhY2hlICh2b2lkKQogeworICBib29sIHJlYWRv bmx5ID0gZmFsc2U7CiAgIGdmY19vbXBfY2xhdXNlcyAqYyA9IGdmY19nZXRfb21wX2NsYXVzZXMg KCk7CiAgIC8qIFRoZSBPcGVuQUNDIGNhY2hlIGRpcmVjdGl2ZSBleHBsaWNpdGx5IG9ubHkgYWxs b3dzICJhcnJheSBlbGVtZW50cyBvcgogICAgICBzdWJhcnJheXMiLCB3aGljaCB3ZSdyZSBjdXJy ZW50bHkgbm90IGNoZWNraW5nIGhlcmUuICBFaXRoZXIgY2hlY2sgdGhpcwogICAgICBhZnRlciB0 aGUgY2FsbCBvZiBnZmNfbWF0Y2hfb21wX3ZhcmlhYmxlX2xpc3QsIG9yIGFkZCBzb21ldGhpbmcg bGlrZSBhCiAgICAgIG9ubHlfc2VjdGlvbnMgdmFyaWFudCBuZXh0IHRvIGl0cyBhbGxvd19zZWN0 aW9ucyBwYXJhbWV0ZXIuICAqLwotICBtYXRjaCBtID0gZ2ZjX21hdGNoX29tcF92YXJpYWJsZV9s aXN0ICgiICgiLAotCQkJCQkgJmMtPmxpc3RzW09NUF9MSVNUX0NBQ0hFXSwgdHJ1ZSwKLQkJCQkJ IE5VTEwsIE5VTEwsIHRydWUpOworICBtYXRjaCBtID0gZ2ZjX21hdGNoICgiICggIik7CiAgIGlm IChtICE9IE1BVENIX1lFUykKICAgICB7CiAgICAgICBnZmNfZnJlZV9vbXBfY2xhdXNlcyhjKTsK ICAgICAgIHJldHVybiBtOwogICAgIH0KIAorICBpZiAoZ2ZjX21hdGNoICgicmVhZG9ubHkgOiIp ID09IE1BVENIX1lFUykKKyAgICByZWFkb25seSA9IHRydWU7CisKKyAgZ2ZjX29tcF9uYW1lbGlz dCAqKmhlYWQgPSBOVUxMOworICBtID0gZ2ZjX21hdGNoX29tcF92YXJpYWJsZV9saXN0ICgiIiwg JmMtPmxpc3RzW09NUF9MSVNUX0NBQ0hFXSwgdHJ1ZSwKKwkJCQkgICBOVUxMLCAmaGVhZCwgdHJ1 ZSk7CisgIGlmIChtICE9IE1BVENIX1lFUykKKyAgICB7CisgICAgICBnZmNfZnJlZV9vbXBfY2xh dXNlcyhjKTsKKyAgICAgIHJldHVybiBtOworICAgIH0KKworICBpZiAocmVhZG9ubHkpCisgICAg Zm9yIChnZmNfb21wX25hbWVsaXN0ICpuID0gKmhlYWQ7IG47IG4gPSBuLT5uZXh0KQorICAgICAg bi0+dS5yZWFkb25seSA9IHRydWU7CisKICAgaWYgKGdmY19jdXJyZW50X3N0YXRlKCkgIT0gQ09N UF9ETyAKICAgICAgICYmIGdmY19jdXJyZW50X3N0YXRlKCkgIT0gQ09NUF9ET19DT05DVVJSRU5U KQogICAgIHsKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYyBiL2djYy9m b3J0cmFuL3RyYW5zLW9wZW5tcC5jYwppbmRleCAwZjgzMjM5MDFkNy4uODdkMGI1ZTBjZGYgMTAw NjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYworKysgYi9nY2MvZm9ydHJhbi90 cmFucy1vcGVubXAuY2MKQEAgLTMwNjcsNiArMzA2Nyw5IEBAIGdmY190cmFuc19vbXBfY2xhdXNl cyAoc3RtdGJsb2NrX3QgKmJsb2NrLCBnZmNfb21wX2NsYXVzZXMgKmNsYXVzZXMsCiAJCSAgICAg IHx8IChuLT5leHByICYmIGdmY19leHByX2F0dHIgKG4tPmV4cHIpLnBvaW50ZXIpKSkKIAkJYWx3 YXlzX21vZGlmaWVyID0gdHJ1ZTsKIAorCSAgICAgIGlmIChuLT51LnJlYWRvbmx5KQorCQlPTVBf Q0xBVVNFX01BUF9SRUFET05MWSAobm9kZSkgPSAxOworCiAJICAgICAgc3dpdGNoIChuLT51Lm1h cF9vcCkKIAkJewogCQljYXNlIE9NUF9NQVBfQUxMT0M6CkBAIC0zOTIwLDYgKzM5MjMsOCBAQCBn ZmNfdHJhbnNfb21wX2NsYXVzZXMgKHN0bXRibG9ja190ICpibG9jaywgZ2ZjX29tcF9jbGF1c2Vz ICpjbGF1c2VzLAogCQl9CiAJICAgICAgaWYgKG4tPnUucHJlc2VudF9tb2RpZmllcikKIAkJT01Q X0NMQVVTRV9NT1RJT05fUFJFU0VOVCAobm9kZSkgPSAxOworCSAgICAgIGlmIChsaXN0ID09IE9N UF9MSVNUX0NBQ0hFICYmIG4tPnUucmVhZG9ubHkpCisJCU9NUF9DTEFVU0VfX0NBQ0hFX19SRUFE T05MWSAobm9kZSkgPSAxOwogCSAgICAgIG9tcF9jbGF1c2VzID0gZ2ZjX3RyYW5zX2FkZF9jbGF1 c2UgKG5vZGUsIG9tcF9jbGF1c2VzKTsKIAkgICAgfQogCSAgYnJlYWs7CmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9yZWFkb25seS0xLmMgYi9nY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9yZWFkb25seS0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjE3MWY5NmMwOGRiCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVhZG9ubHktMS5jCkBAIC0wLDAgKzEsMjcgQEAK Ky8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZmR1bXAtdHJlZS1vcmlnaW5hbCIgfSAqLwor CitzdHJ1Y3QgUworeworICBpbnQgKnB0cjsKKyAgZmxvYXQgZjsKK307CisKKworaW50IG1haW4g KHZvaWQpCit7CisgIGludCB4WzMyXTsKKyAgc3RydWN0IFMgcyA9IHt4LCAwfTsKKworICAjcHJh Z21hIGFjYyBwYXJhbGxlbCBjb3B5aW4ocmVhZG9ubHk6IHhbOjMyXSwgcy5wdHJbOjE2XSkKKyAg eworICAgICNwcmFnbWEgYWNjIGNhY2hlIChyZWFkb25seTogeFs6MzJdKQorICB9CisgIHJldHVy biAwOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIig/bikjcHJh Z21hIGFjYyBwYXJhbGxlbCBtYXBcXChyZWFkb25seSx0bzpcXCpzLnB0ciBcXFxbbGVuOiA2NFxc XF1cXCkgLisgbWFwXFwocmVhZG9ubHksdG86eFxcXFswXFxcXSBcXFxbbGVuOiAxMjhcXFxdXFwp IiAxICJvcmlnaW5hbCIgeyB0YXJnZXQgeyBjIH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcC10aW1lcyAiKD9uKSNwcmFnbWEgYWNjIHBhcmFsbGVsIG1hcFxcKHJlYWRv bmx5LHRvOlxcKk5PTl9MVkFMVUVfRVhQUiA8cy5wdHI+IFxcXFtsZW46IDY0XFxcXVxcKSAuKyBt YXBcXChyZWFkb25seSx0bzp4XFxcWzBcXFxdIFxcXFtsZW46IDEyOFxcXF1cXCkiIDEgIm9yaWdp bmFsIiB7IHRhcmdldCB7IGMrKyB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgIig/bikjcHJhZ21hIGFjYyBjYWNoZSBcXChyZWFkb25seTp4XFxcWzBcXFxd IFxcXFtsZW46IDEyOFxcXF1cXCk7JCIgMSAib3JpZ2luYWwiIH0gfSAqLworCisKKwpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb2FjYy9yZWFkb25seS0xLmY5MCBiL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29hY2MvcmVhZG9ubHktMS5mOTAKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA2OWZlYzBhMGQ1Ci0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb2FjYy9yZWFkb25seS0xLmY5MApAQCAtMCww ICsxLDI4IEBACishIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZmR1bXAtdHJlZS1vcmlnaW5h bCIgfQorCitzdWJyb3V0aW5lIGZvbyAoYSwgbikKKyAgaW50ZWdlciA6OiBuLCBhKDopCisgIGlu dGVnZXIgOjogaSwgYihuKQorICAhJGFjYyBwYXJhbGxlbCBjb3B5aW4ocmVhZG9ubHk6IGEoOiks IGIoOm4pKQorICBkbyBpID0gMSwzMgorICAgICAhJGFjYyBjYWNoZSAocmVhZG9ubHk6IGEoOiks IGIoOm4pKQorICBlbmRkbworICAhJGFjYyBlbmQgcGFyYWxsZWwKK2VuZCBzdWJyb3V0aW5lIGZv bworCitwcm9ncmFtIG1haW4KKyAgaW50ZWdlciA6OiBpLCBuID0gMzIsIGEoMzIpCisgIGludGVn ZXIgOjogYigzMikKKyAgISRhY2MgcGFyYWxsZWwgY29weWluKHJlYWRvbmx5OiBhKDozMiksIGIo Om4pKQorICBkbyBpID0gMSwzMgorICAgICAhJGFjYyBjYWNoZSAocmVhZG9ubHk6IGEoOiksIGIo Om4pKQorICBlbmRkbworICAhJGFjYyBlbmQgcGFyYWxsZWwKK2VuZCBwcm9ncmFtIG1haW4KKwor ISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIig/bikjcHJhZ21hIGFjYyBwYXJh bGxlbCBtYXBcXChyZWFkb25seSx0bzpcXCpcXChpbnRlZ2VyXFwoa2luZD00XFwpXFxcWzA6XFxc XSBcXCpcXCkgcGFybS4qZGF0YSBcXFxbbGVuOiAuK1xcXF1cXCkgLisgbWFwXFwocmVhZG9ubHks dG86XFwqXFwoaW50ZWdlclxcKGtpbmQ9NFxcKVxcXFswOlxcXF0gXFwqXFwpIHBhcm0uKmRhdGEg XFxcW2xlbjogLitcXFxdXFwpIiAxICJvcmlnaW5hbCIgfSB9CishIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyAiKD9uKSNwcmFnbWEgYWNjIHBhcmFsbGVsIG1hcFxcKHJlYWRvbmx5 LHRvOmFcXFxbXFwoXFwoaW50ZWdlclxcKGtpbmQ9OFxcKVxcKSBwYXJtLipkYXRhIC0gXFwoaW50 ZWdlclxcKGtpbmQ9OFxcKVxcKSAmYVxcKSAvIDRcXFxdIFxcXFtsZW46IC4rXFxcXVxcKSAuKyBt YXBcXChyZWFkb25seSx0bzpiXFxcW1xcKFxcKGludGVnZXJcXChraW5kPThcXClcXCkgcGFybS4q ZGF0YSAtIFxcKGludGVnZXJcXChraW5kPThcXClcXCkgJmJcXCkgLyA0XFxcXSBcXFxbbGVuOiAu K1xcXF1cXCkiIDEgIm9yaWdpbmFsIiB9IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICIoP24pI3ByYWdtYSBhY2MgY2FjaGUgXFwocmVhZG9ubHk6XFwqXFwoaW50ZWdlclxc KGtpbmQ9NFxcKVxcXFswOlxcXF0gXFwqXFwpIHBhcm0uKmRhdGEgXFxcW2xlbjogLitcXFxdXFwp IFxcKHJlYWRvbmx5OlxcKlxcKGludGVnZXJcXChraW5kPTRcXClcXFxbMDpcXFxdIFxcKlxcKSBw YXJtLipkYXRhIFxcXFtsZW46IC4rXFxcXVxcKTsiIDIgIm9yaWdpbmFsIiB9IH0KKworCisKZGlm ZiAtLWdpdCBhL2djYy90cmVlLXByZXR0eS1wcmludC5jYyBiL2djYy90cmVlLXByZXR0eS1wcmlu dC5jYwppbmRleCBhNzQzZTNjZGZkOC4uNmE5ODEyYzIyNTMgMTAwNjQ0Ci0tLSBhL2djYy90cmVl LXByZXR0eS1wcmludC5jYworKysgYi9nY2MvdHJlZS1wcmV0dHktcHJpbnQuY2MKQEAgLTkwNSw2 ICs5MDUsOCBAQCBkdW1wX29tcF9jbGF1c2UgKHByZXR0eV9wcmludGVyICpwcCwgdHJlZSBjbGF1 c2UsIGludCBzcGMsIGR1bXBfZmxhZ3NfdCBmbGFncykKIAogICAgIGNhc2UgT01QX0NMQVVTRV9N QVA6CiAgICAgICBwcF9zdHJpbmcgKHBwLCAibWFwKCIpOworICAgICAgaWYgKE9NUF9DTEFVU0Vf TUFQX1JFQURPTkxZIChjbGF1c2UpKQorCXBwX3N0cmluZyAocHAsICJyZWFkb25seSwiKTsKICAg ICAgIHN3aXRjaCAoT01QX0NMQVVTRV9NQVBfS0lORCAoY2xhdXNlKSkKIAl7CiAJY2FzZSBHT01Q X01BUF9BTExPQzoKQEAgLTEwNzUsNiArMTA3Nyw4IEBAIGR1bXBfb21wX2NsYXVzZSAocHJldHR5 X3ByaW50ZXIgKnBwLCB0cmVlIGNsYXVzZSwgaW50IHNwYywgZHVtcF9mbGFnc190IGZsYWdzKQog CiAgICAgY2FzZSBPTVBfQ0xBVVNFX19DQUNIRV86CiAgICAgICBwcF9zdHJpbmcgKHBwLCAiKCIp OworICAgICAgaWYgKE9NUF9DTEFVU0VfX0NBQ0hFX19SRUFET05MWSAoY2xhdXNlKSkKKwlwcF9z dHJpbmcgKHBwLCAicmVhZG9ubHk6Iik7CiAgICAgICBkdW1wX2dlbmVyaWNfbm9kZSAocHAsIE9N UF9DTEFVU0VfREVDTCAoY2xhdXNlKSwKIAkJCSBzcGMsIGZsYWdzLCBmYWxzZSk7CiAgICAgICBn b3RvIHByaW50X2NsYXVzZV9zaXplOwpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUuaCBiL2djYy90cmVl LmgKaW5kZXggM2VlYmY1NzA5YjcuLmE3OTI2MGU0OGViIDEwMDY0NAotLS0gYS9nY2MvdHJlZS5o CisrKyBiL2djYy90cmVlLmgKQEAgLTE4MTMsNiArMTgxMywxNCBAQCBjbGFzcyBhdXRvX3N1cHBy ZXNzX2xvY2F0aW9uX3dyYXBwZXJzCiAjZGVmaW5lIE9NUF9DTEFVU0VfTUFQX0RFQ0xfTUFLRV9B RERSRVNTQUJMRShOT0RFKSBcCiAgIChPTVBfQ0xBVVNFX1NVQkNPREVfQ0hFQ0sgKE5PREUsIE9N UF9DTEFVU0VfTUFQKS0+YmFzZS5hZGRyZXNzYWJsZV9mbGFnKQogCisvKiBOb256ZXJvIGlmIE9w ZW5BQ0MgJ3JlYWRvbmx5JyBtb2RpZmllciBzZXQsIHVzZWQgZm9yICdjb3B5aW4nLiAgKi8KKyNk ZWZpbmUgT01QX0NMQVVTRV9NQVBfUkVBRE9OTFkoTk9ERSkgXAorICBUUkVFX1JFQURPTkxZIChP TVBfQ0xBVVNFX1NVQkNPREVfQ0hFQ0sgKE5PREUsIE9NUF9DTEFVU0VfTUFQKSkKKworLyogU2Ft ZSBhcyBhYm92ZSwgZm9yIHVzZSBpbiBPcGVuQUNDIGNhY2hlIGRpcmVjdGl2ZXMuICAqLworI2Rl ZmluZSBPTVBfQ0xBVVNFX19DQUNIRV9fUkVBRE9OTFkoTk9ERSkgXAorICBUUkVFX1JFQURPTkxZ IChPTVBfQ0xBVVNFX1NVQkNPREVfQ0hFQ0sgKE5PREUsIE9NUF9DTEFVU0VfX0NBQ0hFXykpCisK IC8qIFRydWUgb24gYW4gT01QX0NMQVVTRV9VU0VfREVWSUNFX1BUUiB3aXRoIGFuIE9wZW5BQ0Mg J2lmX3ByZXNlbnQnCiAgICBjbGF1c2UuICAqLwogI2RlZmluZSBPTVBfQ0xBVVNFX1VTRV9ERVZJ Q0VfUFRSX0lGX1BSRVNFTlQoTk9ERSkgXAo= --------------DdZ8MPROSRptuyRbSvSWwdZl--