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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A4565C433EF for ; Thu, 21 Apr 2022 09:22:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387574AbiDUJZR (ORCPT ); Thu, 21 Apr 2022 05:25:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35412 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1357478AbiDUJZM (ORCPT ); Thu, 21 Apr 2022 05:25:12 -0400 Received: from mx0b-0064b401.pphosted.com (mx0b-0064b401.pphosted.com [205.220.178.238]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 584BB24BE5; Thu, 21 Apr 2022 02:22:22 -0700 (PDT) Received: from pps.filterd (m0250811.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 23L9AvK1026892; Thu, 21 Apr 2022 09:21:12 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriver.com; h=message-id : date : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding : mime-version; s=PPS06212021; bh=+I/hKBmFfrLjDXuANwOpiS4CkWcsG3eDjGQfRygSH9M=; b=XeM3q16L18aj5UTEcSHXtLfGCtcPX1UMyoFXE3PhELswGyMPPUeG0d1oEQqwhStUjQRV TAoPEM5mEMgZVp+T2xY8Xtz6sKxrHIKsi1nlyCyBDIyOO2ls0TxIDy2cylMVRhv7dCYt ox+VujbKP++HQHZz/BG29vM8i5H29/W9Jv7DtCxCOSA2ZjFlTjLPFoQaQbxB69awS+YE EY0UmXADi6UI281WaJ7DF/sg4Ck78SKiBosMe9UW2ibsLhFcY+au3mRUuTfsXEOajUBm zr8fO81ABQfRJnseI8V6VdyzzpM9w30Wa1StRw5ezqUBuCTRSa47+e3TVvZJWoAJN3Q1 pA== Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2106.outbound.protection.outlook.com [104.47.70.106]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 3ffpqn3pn8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Apr 2022 09:21:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WA9Ufbz2Q7P/btY9P2h0kRDG2LVB8+2eDHCh/J715SRlOlU/mC0Qfxh4LWnYhYE3Mh1rQDoysBXf6/+9C5+sPbrZn6sVv7WKK/xbV/KHE4mANJggQ2zrOLqrQIwgyYKd1LLL6iHr7YmYxBTFHtj4Lqbku8IGBSqGkCm7cPuYGclvowEIO18qSLj772LpT2R69mwFFQ9/n63NOhTrM86hll2ihtccCKSiY370XoM+LErQipk1mfdEdb+1NdxQVMZnuKRDcPqGq22D0G05cyDABPVb0IJx77LTIc4eyZNrNG3m5U9G0P6sy0s2IEzbpep/79FttAE//h1yDdeWycipjg== 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=+I/hKBmFfrLjDXuANwOpiS4CkWcsG3eDjGQfRygSH9M=; b=X/74RngEvpT9vXTXgVZDjfiDYKMV7V6oCF2Jm0zFM7LqovS06o8TAxZWtUUAyCtcAY9Ngi8bZZY1NZ/7iYmxjncAMPUpMk49QXFU/GwewzbsGdJPsEx6M7rgOYuSRrzGpbPj1XmU5qmoXeCWRKGkTb7r8uKuhd4sbWi1YWXbRzpO/yTIOpKuiakAj75OW2oWLQwf/Lo+TNV1akiO5aVRS3lyBa/CTK0L7KTplF/uKRSNsWGqiExV/CUyyVuqE3w8cYdi92J/R1rlBEoM32uAk74REMerN9qbf/koRF1TX/b/5xwFUVLtKULGJt/Tqo+kMfyXYF+5v3AuCsSBggwTNA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=windriver.com; dmarc=pass action=none header.from=windriver.com; dkim=pass header.d=windriver.com; arc=none Received: from MWHPR11MB1358.namprd11.prod.outlook.com (2603:10b6:300:23::8) by SN6PR11MB3438.namprd11.prod.outlook.com (2603:10b6:805:cf::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.20; Thu, 21 Apr 2022 09:21:09 +0000 Received: from MWHPR11MB1358.namprd11.prod.outlook.com ([fe80::1cd4:125:344:9fc]) by MWHPR11MB1358.namprd11.prod.outlook.com ([fe80::1cd4:125:344:9fc%7]) with mapi id 15.20.5164.026; Thu, 21 Apr 2022 09:21:08 +0000 Message-ID: Date: Thu, 21 Apr 2022 17:20:54 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Subject: Re: [PATCH RFC 2/8] arm64: stacktrace: Add arch_within_stack_frames Content-Language: en-US To: Mark Rutland Cc: catalin.marinas@arm.com, will@kernel.org, tglx@linutronix.de, bp@alien8.de, dave.hansen@linux.intel.com, keescook@chromium.org, alexander.shishkin@linux.intel.com, jolsa@kernel.org, namhyung@kernel.org, benh@kernel.crashing.org, paulus@samba.org, borntraeger@linux.ibm.com, svens@linux.ibm.com, hpa@zytor.com, x86@kernel.org, linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org References: <20220418132217.1573072-1-zhe.he@windriver.com> <20220418132217.1573072-3-zhe.he@windriver.com> From: He Zhe In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: HKAPR04CA0002.apcprd04.prod.outlook.com (2603:1096:203:d0::12) To MWHPR11MB1358.namprd11.prod.outlook.com (2603:10b6:300:23::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f48a7c3f-0314-49e5-8b6d-08da237844d0 X-MS-TrafficTypeDiagnostic: SN6PR11MB3438:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rtmY9Mo0hQSkV8Lgb1tNfmeMD6kzkkcpF98s9pfqFFuz1esMjCJL74IcNEXN548OfwRsdse9t2twunhwupMLiATrVm2K9j9s+8UCljd7yjo+zGpYPVMiine5TSQzw4NClYzun2JGfqzu0CXSBRGABUuXbF69GNhJG8zu1/5LqRuXskmqWoWZPWDuMVJw8hP+CSSrvFfu3AMoFQgCyaSYWchy4PkDaJqEwkKHpcUIjktZX6WkzPyCXycV1doT6GTcdFWszBbTIbp6Xxaci3B3xzYgOwnS2f34xsWBqqr8YtApHfqp5lQuM+H4I3VMGOxJ/xby8eJpcUfI+GXVspg4YXj+jbsz6uM5vaSQ7vhv3c6u9UoTEE53Lqk12WgtyEIzY/Byqn7ZYRWBb5yTOM8oPoan+PlYBRK+O0E4vpTvGTPUM7ejiCo82Vcivax8IVDzo6ETHLhaGTYvwftZAGjlhT1Vlg+t9e2/YtTBpMjyIdXLVCqGqqrFyt93ptXK1CYM0NGbk3AqLGHeLUI/FRbnnFCOISTr0IAUtABMSQl7hOjRKzkg1wcG23osnED1RP3wkaXG/7zabuiTi1a6mKjVriEg5UvVKRfWQZw37rGqThMCxUlFaLORJ627eTCWgc0zQRqYLH/Jszc1wU2+E9SGnaMy5tO3GMhjuxUmfwjSMRzLzfkPKoklK9MybNBZM8xyoSpyU5ZE4TNIQCf41ZUvLExRcH8PN5VPVexBQVD3FM3T21zhFx1iOqXS1Twi+SpL+dXGJMRgJejPdfMfgA/GmhmTbQcMjEUdrg8NSGORE2ZVDCRSDqND879BF41rXBMEFvXdgKjvzj+mkjJfSnOh4RIRoXuoFsUP1tC2tYnRxnIIDIJaOWx2m+XsbDg4soLGDY4d2WDWYTjwwWSnctkqEg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR11MB1358.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(38350700002)(38100700002)(6666004)(66946007)(86362001)(4326008)(26005)(83380400001)(66476007)(31686004)(53546011)(66556008)(6486002)(31696002)(52116002)(8676002)(2906002)(186003)(36756003)(6506007)(508600001)(966005)(8936002)(30864003)(6512007)(5660300002)(7416002)(2616005)(316002)(6916009)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?L21NTU5KaTNYYzlxUE9WamE5dk9HZEJhQ1JlbllXQ2hlcThhcmZ4ZFZVMlN3?= =?utf-8?B?Nm5SZVFHZFluVkRvK29kL3RXUlVibW8weWk5b0ZjOHJMVTN6VU95YU12NDh6?= =?utf-8?B?eVo5N0NDMyt2bHU0SkltaUMzZXk5bG05YXFUUG1YcEpvamRMUiszUnNzUzhF?= =?utf-8?B?TEdxamQ4bm1SclByWUFuR0hiVEVNM2xnTkl2K0RzeGRJNUQ4NU5YMEttMVVK?= =?utf-8?B?Q2xmYVh3c2VsdExQcncycGVOa1hveXcxNlBhMThkVXYwcytUTjlldk9WclBV?= =?utf-8?B?YURMZXpWL2RzQTlYeUo3RXorL2hZRTU5bjZDOUo3T0xySkVXenFDR3F0R2ZU?= =?utf-8?B?cWRyWGJCZm5pZWMwWWFFOWczN0xETmI0elJ2SHZIMW1GOUJjazF4VlNCd1Br?= =?utf-8?B?Qms2WGg0dGRaRStGWENKK3JnelZtelRONVV1VWZhcVZxRmlUcS9rcW84Qk43?= =?utf-8?B?QmhFeVozbTE0dGlRY3dnMWFmRENBVkYvdFl1alJ2YVBFTUcwMFJ5K3pIL056?= =?utf-8?B?K0dZSnFlUVZYM3I1MTFuVjlZZ2h6Z2Y2Wk1QcGJFbEtST3dxNklvMllNSnVB?= =?utf-8?B?VTRIR2JpZHZRdHVUWmVTY0xSR1RjNWtjRlNDMzEzc05VMktkV3lrUk1Pcldk?= =?utf-8?B?SklWcjFjc2tsT09VSjdLUFB5WHVIZklOcUptaS9vR0dESSsyRStNMmxhRFNX?= =?utf-8?B?dEt4KzVlY2J2eHgvV0JoV1ZraFFva3hKS0V2RlRZL2txemhOWlpxUEc3WEVr?= =?utf-8?B?UFVVWGZRTFk0UHdwWmtRcVVTMi9NRnVxRy9SZjhvb1RJQS9Jb3luRUJPM1R6?= =?utf-8?B?K2RrMDhzOEM3dHl1d2R6TXp5SDRLa25SQmt2Nzl1RXhBdllTWXFxWXRlaGI1?= =?utf-8?B?MW1qa1pSRnNOSlVUV0drYVlEWnVHTFVsajBadUJxZENpUWExaGZKa2hsUlhZ?= =?utf-8?B?RGlXSG04WU9KdFpqZy9STS9JcnVpYTVBVFppQzc0d1Z0ZXBySExCZ1pHV3V1?= =?utf-8?B?S3czc3Bya1BUOWhRWXVZVk1sdEFRNzdNcElCU29lRkVPNTEwK3FWK1cyYnlM?= =?utf-8?B?VEl5YkRhMk4vRm1ldUVKeHBTU2VVUmZyVXdadWw1L3pBL0pub0ljV1ovTjg0?= =?utf-8?B?VEcvcUNadWVHU0JCVmI0dURLamhhU3FuSmNwTWFyNy9vSjdNNmF0L0Y5bTJK?= =?utf-8?B?WjZPNURydS91WGxDMk9yZCtJWDMvWlRVblpJQjNIUHFkRTQrTnY5QUlwYnY5?= =?utf-8?B?dWxPSGlCVElyVGorenlsVjE2bGdmeStuNUlBTWdNSjh2SkVMMHVaY2oxOXhV?= =?utf-8?B?emN0T1F4YzE2RlM4TDVwa1FxVUM2eFhEQTBTRFNsVWlPelJ2SE5SeHZlaXhQ?= =?utf-8?B?QXlJNHd4TEI5aEFMSlRES1VLakgxc3p0OGtobVhHN0hFVDkzbGFia1k0OFpJ?= =?utf-8?B?Y2dEa2Nwb292WjVFanB3NGlHR0haMG5QanRWb0EzZUxqOHhOVUs1MFJqcjNZ?= =?utf-8?B?TlVvODBJQWRhM3RMUFBYOGU3VGRsTitHVTFldmlDVml1QkM4eHFXbGcvYmU1?= =?utf-8?B?QnRkSjM2MVNLdlg4ZW1HWmF4NHhDRmlPZXVhb0xDK0ZTRW9aMXJsWjRLYzh5?= =?utf-8?B?Sk1wN0xYZ3dGZzlNNTJ3bHJLVXo3TTh2SHhSN1hXek5PSG0rUVkwQnhGZ0xZ?= =?utf-8?B?aVdJdXZxbldab3FSYnpHTm42TjZPZ1AvZG5wQ1h3VlljT0MreHBKQ3VCQk56?= =?utf-8?B?Tnhvb1ViS0JFNWhrYlVTN0hCT3dFeGM3TUVvd0RTSmE5T3N3QXhtejQwMVNk?= =?utf-8?B?QnpydndWWTdtQjNCZmhTWXNKbEdmU3RPVjZ3a2NJeFRxazd6Nk5SdmlHZDJY?= =?utf-8?B?WEhvWGg2WDNFRHRhWXRmNkdENjhPWUVlSTQyT0I3cWZVR0xmaXdSUVoxajdr?= =?utf-8?B?Yml5T3pzMXRMQlhxNlhTcVRsZDBhR3EzelByaGNpSHk1UExicFRVTFBkYytN?= =?utf-8?B?WnVxVzZrY1dackk3MlZpazRPdnMvNTdJbERIcVRYd2ZyNzkrRzRyNmRjbzVl?= =?utf-8?B?cTZlb2hWdS9IR1cwNmpiZzZDTWNBNmNYL0R6T0Z0ZlRxT2o2T0tyZXJ3VUgw?= =?utf-8?B?NjRRc1lzR0ZtM3htZW1naTNDMXd0WUdBUFAzaE8reHhqQ0RHN1d6MURmN3dH?= =?utf-8?B?ZC9oR3J1Y1krYUR3VnBDN0RKSmdTNG9WbElLMFRkS0Roelg1Q1J4elpSNmQw?= =?utf-8?B?dHNBQmdUTFo4d0xmTGoxbldDa1JQTVNjMnA2dFNmUkRBbVFXMjdLWmJHOEor?= =?utf-8?B?Z25QbXUySi91QWxaRUU0ZCtaT2RFaWdkQ0JCNW52N0ZHTGxmdUpwdz09?= X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: f48a7c3f-0314-49e5-8b6d-08da237844d0 X-MS-Exchange-CrossTenant-AuthSource: MWHPR11MB1358.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 09:21:08.7193 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ddb2873-a1ad-4a18-ae4e-4644631433be X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5rTT8pxlKhd/72EMFwxs+jGS+ESG5I8fY4lKwlb2Vo2yYYW6L+dZqy2NK4wl9IGmmHWBieGKEa/PX9wRuQv3SQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB3438 X-Proofpoint-GUID: Ycd9U5FO_xuAMobxvzLvIJBP9z9wd24m X-Proofpoint-ORIG-GUID: Ycd9U5FO_xuAMobxvzLvIJBP9z9wd24m X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-04-20_06,2022-04-20_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 phishscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 suspectscore=0 mlxlogscore=999 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2204210051 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 4/19/22 22:40, Mark Rutland wrote: > Hi, > > On Mon, Apr 18, 2022 at 09:22:11PM +0800, He Zhe wrote: >> This function checks if the given address range crosses frame boundary. > I don't think that's quite true, becuase arm64's procedure call standard > (AAPCS64) doesn't give us enough information to determine this without > additional metadata from the compiler, which we simply don't have today. > > Since there's a lot of confusion in this area, I've made a bit of an info dump > below, before review on the patch itself, but TBH I'm struggling to see that > this is all that useful. Thanks for the exhaustive explanation and info dump here. I've read through all your comments, very helpful. > > On arm64, we use a calling convention called AAPCS64, (in full: "Procedure Call > Standard for the ArmĀ® 64-bit Architecture (AArch64)"). That's maintained at: > > https://github.com/ARM-software/abi-aa > > ... with the latest release (as of today) at: > > https://github.com/ARM-software/abi-aa/blob/60a8eb8c55e999d74dac5e368fc9d7e36e38dda4/aapcs64/aapcs64.rst > https://github.com/ARM-software/abi-aa/releases/download/2022Q1/aapcs64.pdf > > In AAPCS64, there are two related but distinct things to be aware of: > > * The "stack frame" of a function, which is the entire contiguous region of > stack memory used by a function. > > * The "frame record", which is the saved FP and LR placed *somewhere* within > the function's stack frame. The FP points at the most recent frame record on > the stack, and at function call boundaries points at the caller's frame > record. > > AAPCS64 doesn't say *where* a frame record is placed within a stack frame, and > there are reasons for compilers to place above and below it. So in genral, a > functionss stack frame looks like: > > +=========+ > | above | > |---------| > | FP | LR | > |---------| > | below | > +=========+ > > ... where the "above" or "below" portions might be any size (even 0 bytes). > > Typical code generation today means for most functions that the "below" portion > is 0 bytes in size, but this is not guaranteed, and even today there are cases > where this is not true. > > When one function calls another without a stack transition, that looks like: > > +=========+ ___ > | above | \ > |---------| | > ,->| FP | LR | +-- Caller's stack frame > | |---------| | > | | below | ___/ > | +=========+ ___ > | | above | \ > | |---------| | > '--| FP | LR | +-- Callee's stack frame > |---------| | > | below | ___/ > +=========+ > > Where there's a stack transition, and the new stack is at a *lower* VA than the > old stack, that looks like: > > +=========+ ___ > | above | \ > |---------| | > ,->| FP | LR | +-- Caller's stack frame > | |---------| | > | | below | ___/ > | +=========+ > | > | ~~~~~~~~~~~ > | Arbitrarily > | large gap, > | potentially > | including > | other data > | ~~~~~~~~~~~ > | > | +=========+ ___ > | | above | \ > | |---------| | > '--| FP | LR | +-- Callee's stack frame > |---------| | > | below | ___/ > +=========+ > > Where there's a stack transition, and the new stack is at a *higher* VA than > the old stack, that looks like: > > +=========+ ___ > | above | \ > |---------| | > ,--| FP | LR | +-- Callee's stack frame > | |---------| | > | | below | ___/ > | +=========+ > | > | ~~~~~~~~~~~ > | Arbitrarily > | large gap, > | potentially > | including > | other data > | ~~~~~~~~~~~ > | > | +=========+ ___ > | | above | \ > | |---------| | > '->| FP | LR | +-- Caller's stack frame > |---------| | > | below | ___/ > +=========+ > > In all of these cases, we *cannot* identify the boundary between the two stack > frames, we can *only* identify where something overlaps a frame record. That > might itself be a good thing, but it's not the same thing as what you describe > in the commit message. > >> It is based on the existing x86 algorithm, but implemented via stacktrace. >> This can be tested by USERCOPY_STACK_FRAME_FROM and >> USERCOPY_STACK_FRAME_TO in lkdtm. > Can you please explain *why* we'd want this? We are trying to use the hardened usercopy feature on arm64 hardware and found that the lkdtm can help validate the feature. But USERCOPY_STACK_FRAME_FROM/TO checks, which were originally added for x86, are not supported for arm64. I thought it would be good if we can enhance such hardening for arm64 and tried to add the basic frame check like on x86 in this series. And yes, with all the arm64 details provided above, this surely needs to be reconsidered. > > Who do we expect to use this? > > What's the overhead in practice? > > Has this passed a more realistic stress test (e.g. running some userspace > applications which make intensive use of copies to/from the kernel)? Just did some very rough performance impact test as in the other reply, But not sure what needs to be done further. Thanks, Zhe > >> Signed-off-by: He Zhe >> --- >> arch/arm64/Kconfig | 1 + >> arch/arm64/include/asm/thread_info.h | 12 +++++ >> arch/arm64/kernel/stacktrace.c | 76 ++++++++++++++++++++++++++-- >> 3 files changed, 85 insertions(+), 4 deletions(-) >> >> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig >> index 57c4c995965f..0f52a83d7771 100644 >> --- a/arch/arm64/Kconfig >> +++ b/arch/arm64/Kconfig >> @@ -165,6 +165,7 @@ config ARM64 >> select HAVE_ARCH_TRACEHOOK >> select HAVE_ARCH_TRANSPARENT_HUGEPAGE >> select HAVE_ARCH_VMAP_STACK >> + select HAVE_ARCH_WITHIN_STACK_FRAMES >> select HAVE_ARM_SMCCC >> select HAVE_ASM_MODVERSIONS >> select HAVE_EBPF_JIT >> diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h >> index e1317b7c4525..b839ad9f2248 100644 >> --- a/arch/arm64/include/asm/thread_info.h >> +++ b/arch/arm64/include/asm/thread_info.h >> @@ -58,6 +58,18 @@ void arch_setup_new_exec(void); >> void arch_release_task_struct(struct task_struct *tsk); >> int arch_dup_task_struct(struct task_struct *dst, >> struct task_struct *src); >> +/* >> + * Walks up the stack frames to make sure that the specified object is >> + * entirely contained by a single stack frame. >> + * >> + * Returns: >> + * GOOD_FRAME if within a frame > As above, we cannot identify this reliably. > >> + * BAD_STACK if placed across a frame boundary (or outside stack) >> + * NOT_STACK unable to determine (no frame pointers, etc) > On arm64 we always have frame pointers enabled, so this is a confusing comment. > Is this a copy-paste from x86? > >> + */ >> +int arch_within_stack_frames(const void * const stack, >> + const void * const stackend, >> + const void *obj, unsigned long len); >> >> #endif >> >> diff --git a/arch/arm64/kernel/stacktrace.c b/arch/arm64/kernel/stacktrace.c >> index e4103e085681..219b90c1de12 100644 >> --- a/arch/arm64/kernel/stacktrace.c >> +++ b/arch/arm64/kernel/stacktrace.c >> @@ -145,12 +145,17 @@ NOKPROBE_SYMBOL(unwind_frame); >> >> static void notrace walk_stackframe(struct task_struct *tsk, >> struct stackframe *frame, >> - bool (*fn)(void *, unsigned long), void *data) >> + stack_trace_consume_fn fn, void *data) >> { >> + struct frame_info fi; >> + >> while (1) { >> int ret; >> >> - if (!fn(data, frame->pc)) >> + fi.pc = frame->pc; >> + fi.fp = frame->fp; >> + fi.prev_fp = frame->prev_fp; >> + if (!fn(data, &fi)) >> break; >> ret = unwind_frame(tsk, frame); >> if (ret < 0) > As on my prior comment, I don't think we want to alter our generic stack walker > in this way. If we need more info, I'd prefer to expose this in layers, keeping > arch_stack_walk unchanged, but having an arm64_stack_walk that can pass some > arm64-specific data. > >> @@ -159,10 +164,10 @@ static void notrace walk_stackframe(struct task_struct >> *tsk, >> } >> NOKPROBE_SYMBOL(walk_stackframe); >> >> -static bool dump_backtrace_entry(void *arg, unsigned long where) >> +static bool dump_backtrace_entry(void *arg, struct frame_info *fi) >> { >> char *loglvl = arg; >> - printk("%s %pSb\n", loglvl, (void *)where); >> + printk("%s %pSb\n", loglvl, (void *)fi->pc); >> return true; >> } >> >> @@ -210,3 +215,66 @@ noinline notrace void arch_stack_walk(stack_trace_consume_fn consume_entry, >> >> walk_stackframe(task, &frame, consume_entry, cookie); >> } >> + >> +struct arch_stack_object { >> + unsigned long start; >> + unsigned long len; >> + int flag; > What is "flag" ? > >> +}; >> + >> +static bool arch_stack_object_check(void *data, struct frame_info *fi) >> +{ >> + struct arch_stack_object *obj = (struct arch_stack_object *)data; >> + >> + /* Skip the frame of arch_within_stack_frames itself */ >> + if (fi->prev_fp == 0) >> + return true; > That's not what this is skipping. The first time arch_stack_walk() is called, > it gives the PC of its caller (i.e. arch_within_stack_frames), and it's own > synthetic FP. The next time around it gives the FP of it's caller. > >> + >> + /* >> + * low ----------------------------------------------> high >> + * [saved bp][saved ip][args][local vars][saved bp][saved ip] >> + * ^----------------^ >> + * allow copies only within here >> + */ > This diagram is not valid for arm64. There is no "bp" or "ip", and each stack > frame can be laid out more arbitrarily relative to the frame record. > >> + if (obj->start + obj->len <= fi->fp) { >> + obj->flag = obj->start >= >> + fi->prev_fp + 2 * sizeof(void *) ? >> + GOOD_FRAME : BAD_STACK; > This check is broken in several ways if there's a stack transition, since the > placement of fp and prev_fp is legitimately arbitrary. > > This would also be a lot clearer if you bailed out early rather than nesting > checks. > > The best thing you can realistically do is check that the object falls entirely > within a given stack, then check that that no frames intersect the object. You > don't need prev_fp for that, since you can just check each frame record in > turn, then bail out once the object has been passed (i.e. once we've hit the > correct stack, and either seen an FP above it or transitioned to another > stack). > >> + return false; >> + } else >> + return true; >> +} >> + >> +/* >> + * Walks up the stack frames to make sure that the specified object is >> + * entirely contained by a single stack frame. >> + * >> + * Returns: >> + * GOOD_FRAME if within a frame >> + * BAD_STACK if placed across a frame boundary (or outside stack) >> + * NOT_STACK unable to determine (no frame pointers, etc) >> + */ > This is the exact same comment as in the header. My comments from there apply > here, and one of the two should disappear. > >> +int arch_within_stack_frames(const void * const stack, >> + const void * const stackend, >> + const void *obj, unsigned long len) >> +{ >> +#if defined(CONFIG_FRAME_POINTER) > As above, this *cannot* be selected on arm64. > >> + struct arch_stack_object object; >> + struct pt_regs regs; >> + >> + if (__builtin_frame_address(1) == 0) >> + return NOT_STACK; > When do you expect this to happen? > >> + >> + object.start = (unsigned long)obj; >> + object.len = len; >> + object.flag = NOT_STACK; >> + >> + regs.regs[29] = (u64)__builtin_frame_address(1); > NAK to making a synthetic pt_regs like this. That an abuse of the existing API, > and you don't need to do this in the first place. > >> + >> + arch_stack_walk(arch_stack_object_check, (void *)&object, NULL, ®s); > A void pointer cast is not necessary. > > Thanks, > Mark. > >> + >> + return object.flag; >> +#else >> + return NOT_STACK; >> +#endif >> +} >> -- >> 2.25.1 >> 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 C0783C433F5 for ; Thu, 21 Apr 2022 09:22:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:From: References:Cc:To:Subject:Date:Message-ID:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=gJt2Ua7xDK292Q3P2+H1TAPmaZnLKfQhXn2WwMhWWFw=; b=BPPEMYrQr6teR11p4ADm13GGPX rrj+xt/Vwc02dUKVvFuL9sMIqoNOXM3ZrivWXol3tq5vSdiUAk4f2DU1j5V32QvGS9AEO06wK16Fg cxI8vAxhna/nsxywafu7Qday1OrqLTEtyHLZSgi/FAbCV6LJQncSqcgzgjpnGQvdVWtc1WVYEwmdZ slphOmpNrpkXVJPTd4B8iGroVfkbEmkTG5P0VyhcY83zZKbZ2bTTsiKz9ktzLLO3/qAbNpmI9ksMg 4ekxTEXYbFw0DyU9yyGPyycCqVKaMKp4dKrTPHGCiiYJgyjuxYZeVZB67YqsCEnRISMcujKkUxzyl MDKCoYoQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhT18-00Ci3Q-4A; Thu, 21 Apr 2022 09:22:26 +0000 Received: from mx0b-0064b401.pphosted.com ([205.220.178.238]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhT0j-00Chqy-6P; Thu, 21 Apr 2022 09:22:04 +0000 Received: from pps.filterd (m0250811.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 23L9AvK1026892; Thu, 21 Apr 2022 09:21:12 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriver.com; h=message-id : date : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding : mime-version; s=PPS06212021; bh=+I/hKBmFfrLjDXuANwOpiS4CkWcsG3eDjGQfRygSH9M=; b=XeM3q16L18aj5UTEcSHXtLfGCtcPX1UMyoFXE3PhELswGyMPPUeG0d1oEQqwhStUjQRV TAoPEM5mEMgZVp+T2xY8Xtz6sKxrHIKsi1nlyCyBDIyOO2ls0TxIDy2cylMVRhv7dCYt ox+VujbKP++HQHZz/BG29vM8i5H29/W9Jv7DtCxCOSA2ZjFlTjLPFoQaQbxB69awS+YE EY0UmXADi6UI281WaJ7DF/sg4Ck78SKiBosMe9UW2ibsLhFcY+au3mRUuTfsXEOajUBm zr8fO81ABQfRJnseI8V6VdyzzpM9w30Wa1StRw5ezqUBuCTRSa47+e3TVvZJWoAJN3Q1 pA== Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2106.outbound.protection.outlook.com [104.47.70.106]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 3ffpqn3pn8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Apr 2022 09:21:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WA9Ufbz2Q7P/btY9P2h0kRDG2LVB8+2eDHCh/J715SRlOlU/mC0Qfxh4LWnYhYE3Mh1rQDoysBXf6/+9C5+sPbrZn6sVv7WKK/xbV/KHE4mANJggQ2zrOLqrQIwgyYKd1LLL6iHr7YmYxBTFHtj4Lqbku8IGBSqGkCm7cPuYGclvowEIO18qSLj772LpT2R69mwFFQ9/n63NOhTrM86hll2ihtccCKSiY370XoM+LErQipk1mfdEdb+1NdxQVMZnuKRDcPqGq22D0G05cyDABPVb0IJx77LTIc4eyZNrNG3m5U9G0P6sy0s2IEzbpep/79FttAE//h1yDdeWycipjg== 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=+I/hKBmFfrLjDXuANwOpiS4CkWcsG3eDjGQfRygSH9M=; b=X/74RngEvpT9vXTXgVZDjfiDYKMV7V6oCF2Jm0zFM7LqovS06o8TAxZWtUUAyCtcAY9Ngi8bZZY1NZ/7iYmxjncAMPUpMk49QXFU/GwewzbsGdJPsEx6M7rgOYuSRrzGpbPj1XmU5qmoXeCWRKGkTb7r8uKuhd4sbWi1YWXbRzpO/yTIOpKuiakAj75OW2oWLQwf/Lo+TNV1akiO5aVRS3lyBa/CTK0L7KTplF/uKRSNsWGqiExV/CUyyVuqE3w8cYdi92J/R1rlBEoM32uAk74REMerN9qbf/koRF1TX/b/5xwFUVLtKULGJt/Tqo+kMfyXYF+5v3AuCsSBggwTNA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=windriver.com; dmarc=pass action=none header.from=windriver.com; dkim=pass header.d=windriver.com; arc=none Received: from MWHPR11MB1358.namprd11.prod.outlook.com (2603:10b6:300:23::8) by SN6PR11MB3438.namprd11.prod.outlook.com (2603:10b6:805:cf::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.20; Thu, 21 Apr 2022 09:21:09 +0000 Received: from MWHPR11MB1358.namprd11.prod.outlook.com ([fe80::1cd4:125:344:9fc]) by MWHPR11MB1358.namprd11.prod.outlook.com ([fe80::1cd4:125:344:9fc%7]) with mapi id 15.20.5164.026; Thu, 21 Apr 2022 09:21:08 +0000 Message-ID: Date: Thu, 21 Apr 2022 17:20:54 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Subject: Re: [PATCH RFC 2/8] arm64: stacktrace: Add arch_within_stack_frames Content-Language: en-US To: Mark Rutland Cc: catalin.marinas@arm.com, will@kernel.org, tglx@linutronix.de, bp@alien8.de, dave.hansen@linux.intel.com, keescook@chromium.org, alexander.shishkin@linux.intel.com, jolsa@kernel.org, namhyung@kernel.org, benh@kernel.crashing.org, paulus@samba.org, borntraeger@linux.ibm.com, svens@linux.ibm.com, hpa@zytor.com, x86@kernel.org, linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org References: <20220418132217.1573072-1-zhe.he@windriver.com> <20220418132217.1573072-3-zhe.he@windriver.com> From: He Zhe In-Reply-To: X-ClientProxiedBy: HKAPR04CA0002.apcprd04.prod.outlook.com (2603:1096:203:d0::12) To MWHPR11MB1358.namprd11.prod.outlook.com (2603:10b6:300:23::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f48a7c3f-0314-49e5-8b6d-08da237844d0 X-MS-TrafficTypeDiagnostic: SN6PR11MB3438:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rtmY9Mo0hQSkV8Lgb1tNfmeMD6kzkkcpF98s9pfqFFuz1esMjCJL74IcNEXN548OfwRsdse9t2twunhwupMLiATrVm2K9j9s+8UCljd7yjo+zGpYPVMiine5TSQzw4NClYzun2JGfqzu0CXSBRGABUuXbF69GNhJG8zu1/5LqRuXskmqWoWZPWDuMVJw8hP+CSSrvFfu3AMoFQgCyaSYWchy4PkDaJqEwkKHpcUIjktZX6WkzPyCXycV1doT6GTcdFWszBbTIbp6Xxaci3B3xzYgOwnS2f34xsWBqqr8YtApHfqp5lQuM+H4I3VMGOxJ/xby8eJpcUfI+GXVspg4YXj+jbsz6uM5vaSQ7vhv3c6u9UoTEE53Lqk12WgtyEIzY/Byqn7ZYRWBb5yTOM8oPoan+PlYBRK+O0E4vpTvGTPUM7ejiCo82Vcivax8IVDzo6ETHLhaGTYvwftZAGjlhT1Vlg+t9e2/YtTBpMjyIdXLVCqGqqrFyt93ptXK1CYM0NGbk3AqLGHeLUI/FRbnnFCOISTr0IAUtABMSQl7hOjRKzkg1wcG23osnED1RP3wkaXG/7zabuiTi1a6mKjVriEg5UvVKRfWQZw37rGqThMCxUlFaLORJ627eTCWgc0zQRqYLH/Jszc1wU2+E9SGnaMy5tO3GMhjuxUmfwjSMRzLzfkPKoklK9MybNBZM8xyoSpyU5ZE4TNIQCf41ZUvLExRcH8PN5VPVexBQVD3FM3T21zhFx1iOqXS1Twi+SpL+dXGJMRgJejPdfMfgA/GmhmTbQcMjEUdrg8NSGORE2ZVDCRSDqND879BF41rXBMEFvXdgKjvzj+mkjJfSnOh4RIRoXuoFsUP1tC2tYnRxnIIDIJaOWx2m+XsbDg4soLGDY4d2WDWYTjwwWSnctkqEg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR11MB1358.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(38350700002)(38100700002)(6666004)(66946007)(86362001)(4326008)(26005)(83380400001)(66476007)(31686004)(53546011)(66556008)(6486002)(31696002)(52116002)(8676002)(2906002)(186003)(36756003)(6506007)(508600001)(966005)(8936002)(30864003)(6512007)(5660300002)(7416002)(2616005)(316002)(6916009)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?L21NTU5KaTNYYzlxUE9WamE5dk9HZEJhQ1JlbllXQ2hlcThhcmZ4ZFZVMlN3?= =?utf-8?B?Nm5SZVFHZFluVkRvK29kL3RXUlVibW8weWk5b0ZjOHJMVTN6VU95YU12NDh6?= =?utf-8?B?eVo5N0NDMyt2bHU0SkltaUMzZXk5bG05YXFUUG1YcEpvamRMUiszUnNzUzhF?= =?utf-8?B?TEdxamQ4bm1SclByWUFuR0hiVEVNM2xnTkl2K0RzeGRJNUQ4NU5YMEttMVVK?= =?utf-8?B?Q2xmYVh3c2VsdExQcncycGVOa1hveXcxNlBhMThkVXYwcytUTjlldk9WclBV?= =?utf-8?B?YURMZXpWL2RzQTlYeUo3RXorL2hZRTU5bjZDOUo3T0xySkVXenFDR3F0R2ZU?= =?utf-8?B?cWRyWGJCZm5pZWMwWWFFOWczN0xETmI0elJ2SHZIMW1GOUJjazF4VlNCd1Br?= =?utf-8?B?Qms2WGg0dGRaRStGWENKK3JnelZtelRONVV1VWZhcVZxRmlUcS9rcW84Qk43?= =?utf-8?B?QmhFeVozbTE0dGlRY3dnMWFmRENBVkYvdFl1alJ2YVBFTUcwMFJ5K3pIL056?= =?utf-8?B?K0dZSnFlUVZYM3I1MTFuVjlZZ2h6Z2Y2Wk1QcGJFbEtST3dxNklvMllNSnVB?= =?utf-8?B?VTRIR2JpZHZRdHVUWmVTY0xSR1RjNWtjRlNDMzEzc05VMktkV3lrUk1Pcldk?= =?utf-8?B?SklWcjFjc2tsT09VSjdLUFB5WHVIZklOcUptaS9vR0dESSsyRStNMmxhRFNX?= =?utf-8?B?dEt4KzVlY2J2eHgvV0JoV1ZraFFva3hKS0V2RlRZL2txemhOWlpxUEc3WEVr?= =?utf-8?B?UFVVWGZRTFk0UHdwWmtRcVVTMi9NRnVxRy9SZjhvb1RJQS9Jb3luRUJPM1R6?= =?utf-8?B?K2RrMDhzOEM3dHl1d2R6TXp5SDRLa25SQmt2Nzl1RXhBdllTWXFxWXRlaGI1?= =?utf-8?B?MW1qa1pSRnNOSlVUV0drYVlEWnVHTFVsajBadUJxZENpUWExaGZKa2hsUlhZ?= =?utf-8?B?RGlXSG04WU9KdFpqZy9STS9JcnVpYTVBVFppQzc0d1Z0ZXBySExCZ1pHV3V1?= =?utf-8?B?S3czc3Bya1BUOWhRWXVZVk1sdEFRNzdNcElCU29lRkVPNTEwK3FWK1cyYnlM?= =?utf-8?B?VEl5YkRhMk4vRm1ldUVKeHBTU2VVUmZyVXdadWw1L3pBL0pub0ljV1ovTjg0?= =?utf-8?B?VEcvcUNadWVHU0JCVmI0dURLamhhU3FuSmNwTWFyNy9vSjdNNmF0L0Y5bTJK?= =?utf-8?B?WjZPNURydS91WGxDMk9yZCtJWDMvWlRVblpJQjNIUHFkRTQrTnY5QUlwYnY5?= =?utf-8?B?dWxPSGlCVElyVGorenlsVjE2bGdmeStuNUlBTWdNSjh2SkVMMHVaY2oxOXhV?= =?utf-8?B?emN0T1F4YzE2RlM4TDVwa1FxVUM2eFhEQTBTRFNsVWlPelJ2SE5SeHZlaXhQ?= =?utf-8?B?QXlJNHd4TEI5aEFMSlRES1VLakgxc3p0OGtobVhHN0hFVDkzbGFia1k0OFpJ?= =?utf-8?B?Y2dEa2Nwb292WjVFanB3NGlHR0haMG5QanRWb0EzZUxqOHhOVUs1MFJqcjNZ?= =?utf-8?B?TlVvODBJQWRhM3RMUFBYOGU3VGRsTitHVTFldmlDVml1QkM4eHFXbGcvYmU1?= =?utf-8?B?QnRkSjM2MVNLdlg4ZW1HWmF4NHhDRmlPZXVhb0xDK0ZTRW9aMXJsWjRLYzh5?= =?utf-8?B?Sk1wN0xYZ3dGZzlNNTJ3bHJLVXo3TTh2SHhSN1hXek5PSG0rUVkwQnhGZ0xZ?= =?utf-8?B?aVdJdXZxbldab3FSYnpHTm42TjZPZ1AvZG5wQ1h3VlljT0MreHBKQ3VCQk56?= =?utf-8?B?Tnhvb1ViS0JFNWhrYlVTN0hCT3dFeGM3TUVvd0RTSmE5T3N3QXhtejQwMVNk?= =?utf-8?B?QnpydndWWTdtQjNCZmhTWXNKbEdmU3RPVjZ3a2NJeFRxazd6Nk5SdmlHZDJY?= =?utf-8?B?WEhvWGg2WDNFRHRhWXRmNkdENjhPWUVlSTQyT0I3cWZVR0xmaXdSUVoxajdr?= =?utf-8?B?Yml5T3pzMXRMQlhxNlhTcVRsZDBhR3EzelByaGNpSHk1UExicFRVTFBkYytN?= =?utf-8?B?WnVxVzZrY1dackk3MlZpazRPdnMvNTdJbERIcVRYd2ZyNzkrRzRyNmRjbzVl?= =?utf-8?B?cTZlb2hWdS9IR1cwNmpiZzZDTWNBNmNYL0R6T0Z0ZlRxT2o2T0tyZXJ3VUgw?= =?utf-8?B?NjRRc1lzR0ZtM3htZW1naTNDMXd0WUdBUFAzaE8reHhqQ0RHN1d6MURmN3dH?= =?utf-8?B?ZC9oR3J1Y1krYUR3VnBDN0RKSmdTNG9WbElLMFRkS0Roelg1Q1J4elpSNmQw?= =?utf-8?B?dHNBQmdUTFo4d0xmTGoxbldDa1JQTVNjMnA2dFNmUkRBbVFXMjdLWmJHOEor?= =?utf-8?B?Z25QbXUySi91QWxaRUU0ZCtaT2RFaWdkQ0JCNW52N0ZHTGxmdUpwdz09?= X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: f48a7c3f-0314-49e5-8b6d-08da237844d0 X-MS-Exchange-CrossTenant-AuthSource: MWHPR11MB1358.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 09:21:08.7193 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ddb2873-a1ad-4a18-ae4e-4644631433be X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5rTT8pxlKhd/72EMFwxs+jGS+ESG5I8fY4lKwlb2Vo2yYYW6L+dZqy2NK4wl9IGmmHWBieGKEa/PX9wRuQv3SQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB3438 X-Proofpoint-GUID: Ycd9U5FO_xuAMobxvzLvIJBP9z9wd24m X-Proofpoint-ORIG-GUID: Ycd9U5FO_xuAMobxvzLvIJBP9z9wd24m X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-04-20_06,2022-04-20_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 phishscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 suspectscore=0 mlxlogscore=999 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2204210051 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220421_022201_399930_30A4A651 X-CRM114-Status: GOOD ( 35.19 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org CgpPbiA0LzE5LzIyIDIyOjQwLCBNYXJrIFJ1dGxhbmQgd3JvdGU6Cj4gSGksCj4KPiBPbiBNb24s IEFwciAxOCwgMjAyMiBhdCAwOToyMjoxMVBNICswODAwLCBIZSBaaGUgd3JvdGU6Cj4+IFRoaXMg ZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBnaXZlbiBhZGRyZXNzIHJhbmdlIGNyb3NzZXMgZnJhbWUg Ym91bmRhcnkuCj4gSSBkb24ndCB0aGluayB0aGF0J3MgcXVpdGUgdHJ1ZSwgYmVjdWFzZSBhcm02 NCdzIHByb2NlZHVyZSBjYWxsIHN0YW5kYXJkCj4gKEFBUENTNjQpIGRvZXNuJ3QgZ2l2ZSB1cyBl bm91Z2ggaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHRoaXMgd2l0aG91dAo+IGFkZGl0aW9uYWwg bWV0YWRhdGEgZnJvbSB0aGUgY29tcGlsZXIsIHdoaWNoIHdlIHNpbXBseSBkb24ndCBoYXZlIHRv ZGF5Lgo+Cj4gU2luY2UgdGhlcmUncyBhIGxvdCBvZiBjb25mdXNpb24gaW4gdGhpcyBhcmVhLCBJ J3ZlIG1hZGUgYSBiaXQgb2YgYW4gaW5mbyBkdW1wCj4gYmVsb3csIGJlZm9yZSByZXZpZXcgb24g dGhlIHBhdGNoIGl0c2VsZiwgYnV0IFRCSCBJJ20gc3RydWdnbGluZyB0byBzZWUgdGhhdAo+IHRo aXMgaXMgYWxsIHRoYXQgdXNlZnVsLgoKVGhhbmtzIGZvciB0aGUgZXhoYXVzdGl2ZSBleHBsYW5h dGlvbiBhbmQgaW5mbyBkdW1wIGhlcmUuIEkndmUgcmVhZCB0aHJvdWdoIGFsbAp5b3VyIGNvbW1l bnRzLCB2ZXJ5IGhlbHBmdWwuCgo+Cj4gT24gYXJtNjQsIHdlIHVzZSBhIGNhbGxpbmcgY29udmVu dGlvbiBjYWxsZWQgQUFQQ1M2NCwgKGluIGZ1bGw6ICJQcm9jZWR1cmUgQ2FsbAo+IFN0YW5kYXJk IGZvciB0aGUgQXJtwq4gNjQtYml0IEFyY2hpdGVjdHVyZSAoQUFyY2g2NCkiKS4gVGhhdCdzIG1h aW50YWluZWQgYXQ6Cj4KPiAgIGh0dHBzOi8vZ2l0aHViLmNvbS9BUk0tc29mdHdhcmUvYWJpLWFh Cj4KPiAuLi4gd2l0aCB0aGUgbGF0ZXN0IHJlbGVhc2UgKGFzIG9mIHRvZGF5KSBhdDoKPgo+ICAg aHR0cHM6Ly9naXRodWIuY29tL0FSTS1zb2Z0d2FyZS9hYmktYWEvYmxvYi82MGE4ZWI4YzU1ZTk5 OWQ3NGRhYzVlMzY4ZmM5ZDdlMzZlMzhkZGE0L2FhcGNzNjQvYWFwY3M2NC5yc3QKPiAgIGh0dHBz Oi8vZ2l0aHViLmNvbS9BUk0tc29mdHdhcmUvYWJpLWFhL3JlbGVhc2VzL2Rvd25sb2FkLzIwMjJR MS9hYXBjczY0LnBkZgo+Cj4gSW4gQUFQQ1M2NCwgdGhlcmUgYXJlIHR3byByZWxhdGVkIGJ1dCBk aXN0aW5jdCB0aGluZ3MgdG8gYmUgYXdhcmUgb2Y6Cj4KPiAqIFRoZSAic3RhY2sgZnJhbWUiIG9m IGEgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBlbnRpcmUgY29udGlndW91cyByZWdpb24gb2YKPiAg IHN0YWNrIG1lbW9yeSB1c2VkIGJ5IGEgZnVuY3Rpb24uCj4KPiAqIFRoZSAiZnJhbWUgcmVjb3Jk Iiwgd2hpY2ggaXMgdGhlIHNhdmVkIEZQIGFuZCBMUiBwbGFjZWQgKnNvbWV3aGVyZSogd2l0aGlu Cj4gICB0aGUgZnVuY3Rpb24ncyBzdGFjayBmcmFtZS4gVGhlIEZQIHBvaW50cyBhdCB0aGUgbW9z dCByZWNlbnQgZnJhbWUgcmVjb3JkIG9uCj4gICB0aGUgc3RhY2ssIGFuZCBhdCBmdW5jdGlvbiBj YWxsIGJvdW5kYXJpZXMgcG9pbnRzIGF0IHRoZSBjYWxsZXIncyBmcmFtZQo+ICAgcmVjb3JkLgo+ Cj4gQUFQQ1M2NCBkb2Vzbid0IHNheSAqd2hlcmUqIGEgZnJhbWUgcmVjb3JkIGlzIHBsYWNlZCB3 aXRoaW4gYSBzdGFjayBmcmFtZSwgYW5kCj4gdGhlcmUgYXJlIHJlYXNvbnMgZm9yIGNvbXBpbGVy cyB0byBwbGFjZSBhYm92ZSBhbmQgYmVsb3cgaXQuIFNvIGluIGdlbnJhbCwgYQo+IGZ1bmN0aW9u c3Mgc3RhY2sgZnJhbWUgbG9va3MgbGlrZToKPiAgICAgICAKPiAgICAgICAgICs9PT09PT09PT0r Cj4gICAgICAgICB8ICBhYm92ZSAgfAo+ICAgICAgICAgfC0tLS0tLS0tLXwKPiAgICAgICAgIHwg RlAgfCBMUiB8Cj4gICAgICAgICB8LS0tLS0tLS0tfAo+ICAgICAgICAgfCAgYmVsb3cgIHwKPiAg ICAgICAgICs9PT09PT09PT0rCj4KPiAuLi4gd2hlcmUgdGhlICJhYm92ZSIgb3IgImJlbG93IiBw b3J0aW9ucyBtaWdodCBiZSBhbnkgc2l6ZSAoZXZlbiAwIGJ5dGVzKS4KPgo+IFR5cGljYWwgY29k ZSBnZW5lcmF0aW9uIHRvZGF5IG1lYW5zIGZvciBtb3N0IGZ1bmN0aW9ucyB0aGF0IHRoZSAiYmVs b3ciIHBvcnRpb24KPiBpcyAwIGJ5dGVzIGluIHNpemUsIGJ1dCB0aGlzIGlzIG5vdCBndWFyYW50 ZWVkLCBhbmQgZXZlbiB0b2RheSB0aGVyZSBhcmUgY2FzZXMKPiB3aGVyZSB0aGlzIGlzIG5vdCB0 cnVlLgo+Cj4gV2hlbiBvbmUgZnVuY3Rpb24gY2FsbHMgYW5vdGhlciB3aXRob3V0IGEgc3RhY2sg dHJhbnNpdGlvbiwgdGhhdCBsb29rcyBsaWtlOgo+Cj4gICAgICAgICArPT09PT09PT09KyBfX18K PiAgICAgICAgIHwgIGFib3ZlICB8ICAgIFwKPiAgICAgICAgIHwtLS0tLS0tLS18ICAgIHwKPiAg ICAgICwtPnwgRlAgfCBMUiB8ICAgICstLSBDYWxsZXIncyBzdGFjayBmcmFtZQo+ICAgICAgfCAg fC0tLS0tLS0tLXwgICAgfAo+ICAgICAgfCAgfCAgYmVsb3cgIHwgX19fLwo+ICAgICAgfCAgKz09 PT09PT09PSsgX19fIAo+ICAgICAgfCAgfCAgYWJvdmUgIHwgICAgXAo+ICAgICAgfCAgfC0tLS0t LS0tLXwgICAgfAo+ICAgICAgJy0tfCBGUCB8IExSIHwgICAgKy0tIENhbGxlZSdzIHN0YWNrIGZy YW1lCj4gICAgICAgICB8LS0tLS0tLS0tfCAgICB8Cj4gICAgICAgICB8ICBiZWxvdyAgfCBfX18v Cj4gICAgICAgICArPT09PT09PT09Kwo+Cj4gV2hlcmUgdGhlcmUncyBhIHN0YWNrIHRyYW5zaXRp b24sIGFuZCB0aGUgbmV3IHN0YWNrIGlzIGF0IGEgKmxvd2VyKiBWQSB0aGFuIHRoZQo+IG9sZCBz dGFjaywgdGhhdCBsb29rcyBsaWtlOgo+Cj4gICAgICAgICArPT09PT09PT09KyBfX18KPiAgICAg ICAgIHwgIGFib3ZlICB8ICAgIFwKPiAgICAgICAgIHwtLS0tLS0tLS18ICAgIHwKPiAgICAgICwt PnwgRlAgfCBMUiB8ICAgICstLSBDYWxsZXIncyBzdGFjayBmcmFtZQo+ICAgICAgfCAgfC0tLS0t LS0tLXwgICAgfAo+ICAgICAgfCAgfCAgYmVsb3cgIHwgX19fLwo+ICAgICAgfCAgKz09PT09PT09 PSsKPiAgICAgIHwgCj4gICAgICB8ICB+fn5+fn5+fn5+fgo+ICAgICAgfCAgQXJiaXRyYXJpbHkg Cj4gICAgICB8ICBsYXJnZSBnYXAsCj4gICAgICB8ICBwb3RlbnRpYWxseQo+ICAgICAgfCAgaW5j bHVkaW5nCj4gICAgICB8ICBvdGhlciBkYXRhCj4gICAgICB8ICB+fn5+fn5+fn5+fgo+ICAgICAg fAo+ICAgICAgfCAgKz09PT09PT09PSsgX19fIAo+ICAgICAgfCAgfCAgYWJvdmUgIHwgICAgXAo+ ICAgICAgfCAgfC0tLS0tLS0tLXwgICAgfAo+ICAgICAgJy0tfCBGUCB8IExSIHwgICAgKy0tIENh bGxlZSdzIHN0YWNrIGZyYW1lCj4gICAgICAgICB8LS0tLS0tLS0tfCAgICB8Cj4gICAgICAgICB8 ICBiZWxvdyAgfCBfX18vCj4gICAgICAgICArPT09PT09PT09Kwo+Cj4gV2hlcmUgdGhlcmUncyBh IHN0YWNrIHRyYW5zaXRpb24sIGFuZCB0aGUgbmV3IHN0YWNrIGlzIGF0IGEgKmhpZ2hlciogVkEg dGhhbgo+IHRoZSBvbGQgc3RhY2ssIHRoYXQgbG9va3MgbGlrZToKPgo+ICAgICAgICAgKz09PT09 PT09PSsgX19fIAo+ICAgICAgICAgfCAgYWJvdmUgIHwgICAgXAo+ICAgICAgICAgfC0tLS0tLS0t LXwgICAgfAo+ICAgICAgLC0tfCBGUCB8IExSIHwgICAgKy0tIENhbGxlZSdzIHN0YWNrIGZyYW1l Cj4gICAgICB8ICB8LS0tLS0tLS0tfCAgICB8Cj4gICAgICB8ICB8ICBiZWxvdyAgfCBfX18vCj4g ICAgICB8ICArPT09PT09PT09Kwo+ICAgICAgfAo+ICAgICAgfCAgfn5+fn5+fn5+fn4KPiAgICAg IHwgIEFyYml0cmFyaWx5IAo+ICAgICAgfCAgbGFyZ2UgZ2FwLAo+ICAgICAgfCAgcG90ZW50aWFs bHkKPiAgICAgIHwgIGluY2x1ZGluZwo+ICAgICAgfCAgb3RoZXIgZGF0YQo+ICAgICAgfCAgfn5+ fn5+fn5+fn4KPiAgICAgIHwgCj4gICAgICB8ICArPT09PT09PT09KyBfX18KPiAgICAgIHwgIHwg IGFib3ZlICB8ICAgIFwKPiAgICAgIHwgIHwtLS0tLS0tLS18ICAgIHwKPiAgICAgICctPnwgRlAg fCBMUiB8ICAgICstLSBDYWxsZXIncyBzdGFjayBmcmFtZQo+ICAgICAgICAgfC0tLS0tLS0tLXwg ICAgfAo+ICAgICAgICAgfCAgYmVsb3cgIHwgX19fLwo+ICAgICAgICAgKz09PT09PT09PSsKPiAg Cj4gSW4gYWxsIG9mIHRoZXNlIGNhc2VzLCB3ZSAqY2Fubm90KiBpZGVudGlmeSB0aGUgYm91bmRh cnkgYmV0d2VlbiB0aGUgdHdvIHN0YWNrCj4gZnJhbWVzLCB3ZSBjYW4gKm9ubHkqIGlkZW50aWZ5 IHdoZXJlIHNvbWV0aGluZyBvdmVybGFwcyBhIGZyYW1lIHJlY29yZC4gVGhhdAo+IG1pZ2h0IGl0 c2VsZiBiZSBhIGdvb2QgdGhpbmcsIGJ1dCBpdCdzIG5vdCB0aGUgc2FtZSB0aGluZyBhcyB3aGF0 IHlvdSBkZXNjcmliZQo+IGluIHRoZSBjb21taXQgbWVzc2FnZS4KPgo+PiBJdCBpcyBiYXNlZCBv biB0aGUgZXhpc3RpbmcgeDg2IGFsZ29yaXRobSwgYnV0IGltcGxlbWVudGVkIHZpYSBzdGFja3Ry YWNlLgo+PiBUaGlzIGNhbiBiZSB0ZXN0ZWQgYnkgVVNFUkNPUFlfU1RBQ0tfRlJBTUVfRlJPTSBh bmQKPj4gVVNFUkNPUFlfU1RBQ0tfRlJBTUVfVE8gaW4gbGtkdG0uCj4gQ2FuIHlvdSBwbGVhc2Ug ZXhwbGFpbiAqd2h5KiB3ZSdkIHdhbnQgdGhpcz8KCldlIGFyZSB0cnlpbmcgdG8gdXNlIHRoZSBo YXJkZW5lZCB1c2VyY29weSBmZWF0dXJlIG9uIGFybTY0IGhhcmR3YXJlIGFuZCBmb3VuZAp0aGF0 IHRoZSBsa2R0bSBjYW4gaGVscCB2YWxpZGF0ZSB0aGUgZmVhdHVyZS4gQnV0IFVTRVJDT1BZX1NU QUNLX0ZSQU1FX0ZST00vVE8KY2hlY2tzLCB3aGljaCB3ZXJlIG9yaWdpbmFsbHkgYWRkZWQgZm9y IHg4NiwgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIGFybTY0LiBJCnRob3VnaHQgaXQgd291bGQgYmUg Z29vZCBpZiB3ZSBjYW4gZW5oYW5jZSBzdWNoIGhhcmRlbmluZyBmb3IgYXJtNjQgYW5kIHRyaWVk IHRvCmFkZCB0aGUgYmFzaWMgZnJhbWUgY2hlY2sgbGlrZSBvbiB4ODYgaW4gdGhpcyBzZXJpZXMu IEFuZCB5ZXMsIHdpdGggYWxsIHRoZSBhcm02NCBkZXRhaWxzCnByb3ZpZGVkIGFib3ZlLCB0aGlz IHN1cmVseSBuZWVkcyB0byBiZSByZWNvbnNpZGVyZWQuCgo+Cj4gV2hvIGRvIHdlIGV4cGVjdCB0 byB1c2UgdGhpcz8KPgo+IFdoYXQncyB0aGUgb3ZlcmhlYWQgaW4gcHJhY3RpY2U/Cj4KPiBIYXMg dGhpcyBwYXNzZWQgYSBtb3JlIHJlYWxpc3RpYyBzdHJlc3MgdGVzdCAoZS5nLiBydW5uaW5nIHNv bWUgdXNlcnNwYWNlCj4gYXBwbGljYXRpb25zIHdoaWNoIG1ha2UgaW50ZW5zaXZlIHVzZSBvZiBj b3BpZXMgdG8vZnJvbSB0aGUga2VybmVsKT8KCkp1c3QgZGlkIHNvbWUgdmVyeSByb3VnaCBwZXJm b3JtYW5jZSBpbXBhY3QgdGVzdCBhcyBpbiB0aGUgb3RoZXIgcmVwbHksIEJ1dCBub3QKc3VyZSB3 aGF0IG5lZWRzIHRvIGJlIGRvbmUgZnVydGhlci4KClRoYW5rcywKWmhlCgo+Cj4+IFNpZ25lZC1v ZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Cj4+IC0tLQo+PiAgYXJjaC9hcm02 NC9LY29uZmlnICAgICAgICAgICAgICAgICAgIHwgIDEgKwo+PiAgYXJjaC9hcm02NC9pbmNsdWRl L2FzbS90aHJlYWRfaW5mby5oIHwgMTIgKysrKysKPj4gIGFyY2gvYXJtNjQva2VybmVsL3N0YWNr dHJhY2UuYyAgICAgICB8IDc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPj4gIDMgZmls ZXMgY2hhbmdlZCwgODUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAt LWdpdCBhL2FyY2gvYXJtNjQvS2NvbmZpZyBiL2FyY2gvYXJtNjQvS2NvbmZpZwo+PiBpbmRleCA1 N2M0Yzk5NTk2NWYuLjBmNTJhODNkNzc3MSAxMDA2NDQKPj4gLS0tIGEvYXJjaC9hcm02NC9LY29u ZmlnCj4+ICsrKyBiL2FyY2gvYXJtNjQvS2NvbmZpZwo+PiBAQCAtMTY1LDYgKzE2NSw3IEBAIGNv bmZpZyBBUk02NAo+PiAgCXNlbGVjdCBIQVZFX0FSQ0hfVFJBQ0VIT09LCj4+ICAJc2VsZWN0IEhB VkVfQVJDSF9UUkFOU1BBUkVOVF9IVUdFUEFHRQo+PiAgCXNlbGVjdCBIQVZFX0FSQ0hfVk1BUF9T VEFDSwo+PiArCXNlbGVjdCBIQVZFX0FSQ0hfV0lUSElOX1NUQUNLX0ZSQU1FUwo+PiAgCXNlbGVj dCBIQVZFX0FSTV9TTUNDQwo+PiAgCXNlbGVjdCBIQVZFX0FTTV9NT0RWRVJTSU9OUwo+PiAgCXNl bGVjdCBIQVZFX0VCUEZfSklUCj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNt L3RocmVhZF9pbmZvLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKPj4g aW5kZXggZTEzMTdiN2M0NTI1Li5iODM5YWQ5ZjIyNDggMTAwNjQ0Cj4+IC0tLSBhL2FyY2gvYXJt NjQvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaAo+PiArKysgYi9hcmNoL2FybTY0L2luY2x1ZGUv YXNtL3RocmVhZF9pbmZvLmgKPj4gQEAgLTU4LDYgKzU4LDE4IEBAIHZvaWQgYXJjaF9zZXR1cF9u ZXdfZXhlYyh2b2lkKTsKPj4gIHZvaWQgYXJjaF9yZWxlYXNlX3Rhc2tfc3RydWN0KHN0cnVjdCB0 YXNrX3N0cnVjdCAqdHNrKTsKPj4gIGludCBhcmNoX2R1cF90YXNrX3N0cnVjdChzdHJ1Y3QgdGFz a19zdHJ1Y3QgKmRzdCwKPj4gIAkJCQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnNyYyk7Cj4+ICsvKgo+ PiArICogV2Fsa3MgdXAgdGhlIHN0YWNrIGZyYW1lcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgc3Bl Y2lmaWVkIG9iamVjdCBpcwo+PiArICogZW50aXJlbHkgY29udGFpbmVkIGJ5IGEgc2luZ2xlIHN0 YWNrIGZyYW1lLgo+PiArICoKPj4gKyAqIFJldHVybnM6Cj4+ICsgKglHT09EX0ZSQU1FCWlmIHdp dGhpbiBhIGZyYW1lCj4gQXMgYWJvdmUsIHdlIGNhbm5vdCBpZGVudGlmeSB0aGlzIHJlbGlhYmx5 Lgo+Cj4+ICsgKglCQURfU1RBQ0sJaWYgcGxhY2VkIGFjcm9zcyBhIGZyYW1lIGJvdW5kYXJ5IChv ciBvdXRzaWRlIHN0YWNrKQo+PiArICoJTk9UX1NUQUNLCXVuYWJsZSB0byBkZXRlcm1pbmUgKG5v IGZyYW1lIHBvaW50ZXJzLCBldGMpCj4gT24gYXJtNjQgd2UgYWx3YXlzIGhhdmUgZnJhbWUgcG9p bnRlcnMgZW5hYmxlZCwgc28gdGhpcyBpcyBhIGNvbmZ1c2luZyBjb21tZW50Lgo+IElzIHRoaXMg YSBjb3B5LXBhc3RlIGZyb20geDg2Pwo+Cj4+ICsgKi8KPj4gK2ludCBhcmNoX3dpdGhpbl9zdGFj a19mcmFtZXMoY29uc3Qgdm9pZCAqIGNvbnN0IHN0YWNrLAo+PiArCQljb25zdCB2b2lkICogY29u c3Qgc3RhY2tlbmQsCj4+ICsJCWNvbnN0IHZvaWQgKm9iaiwgdW5zaWduZWQgbG9uZyBsZW4pOwo+ PiAgCj4+ICAjZW5kaWYKPj4gIAo+PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvc3Rh Y2t0cmFjZS5jIGIvYXJjaC9hcm02NC9rZXJuZWwvc3RhY2t0cmFjZS5jCj4+IGluZGV4IGU0MTAz ZTA4NTY4MS4uMjE5YjkwYzFkZTEyIDEwMDY0NAo+PiAtLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9z dGFja3RyYWNlLmMKPj4gKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvc3RhY2t0cmFjZS5jCj4+IEBA IC0xNDUsMTIgKzE0NSwxNyBAQCBOT0tQUk9CRV9TWU1CT0wodW53aW5kX2ZyYW1lKTsKPj4gIAo+ PiAgc3RhdGljIHZvaWQgbm90cmFjZSB3YWxrX3N0YWNrZnJhbWUoc3RydWN0IHRhc2tfc3RydWN0 ICp0c2ssCj4+ICAJCQkJICAgIHN0cnVjdCBzdGFja2ZyYW1lICpmcmFtZSwKPj4gLQkJCQkgICAg Ym9vbCAoKmZuKSh2b2lkICosIHVuc2lnbmVkIGxvbmcpLCB2b2lkICpkYXRhKQo+PiArCQkJCSAg ICBzdGFja190cmFjZV9jb25zdW1lX2ZuIGZuLCB2b2lkICpkYXRhKQo+PiAgewo+PiArCXN0cnVj dCBmcmFtZV9pbmZvIGZpOwo+PiArCj4+ICAJd2hpbGUgKDEpIHsKPj4gIAkJaW50IHJldDsKPj4g IAo+PiAtCQlpZiAoIWZuKGRhdGEsIGZyYW1lLT5wYykpCj4+ICsJCWZpLnBjID0gZnJhbWUtPnBj Owo+PiArCQlmaS5mcCA9IGZyYW1lLT5mcDsKPj4gKwkJZmkucHJldl9mcCA9IGZyYW1lLT5wcmV2 X2ZwOwo+PiArCQlpZiAoIWZuKGRhdGEsICZmaSkpCj4+ICAJCQlicmVhazsKPj4gIAkJcmV0ID0g dW53aW5kX2ZyYW1lKHRzaywgZnJhbWUpOwo+PiAgCQlpZiAocmV0IDwgMCkKPiBBcyBvbiBteSBw cmlvciBjb21tZW50LCBJIGRvbid0IHRoaW5rIHdlIHdhbnQgdG8gYWx0ZXIgb3VyIGdlbmVyaWMg c3RhY2sgd2Fsa2VyCj4gaW4gdGhpcyB3YXkuIElmIHdlIG5lZWQgbW9yZSBpbmZvLCBJJ2QgcHJl ZmVyIHRvIGV4cG9zZSB0aGlzIGluIGxheWVycywga2VlcGluZwo+IGFyY2hfc3RhY2tfd2FsayB1 bmNoYW5nZWQsIGJ1dCBoYXZpbmcgYW4gYXJtNjRfc3RhY2tfd2FsayB0aGF0IGNhbiBwYXNzIHNv bWUKPiBhcm02NC1zcGVjaWZpYyBkYXRhLgo+Cj4+IEBAIC0xNTksMTAgKzE2NCwxMCBAQCBzdGF0 aWMgdm9pZCBub3RyYWNlIHdhbGtfc3RhY2tmcmFtZShzdHJ1Y3QgdGFza19zdHJ1Y3QKPj4gKnRz aywKPj4gIH0KPj4gIE5PS1BST0JFX1NZTUJPTCh3YWxrX3N0YWNrZnJhbWUpOwo+PiAgCj4+IC1z dGF0aWMgYm9vbCBkdW1wX2JhY2t0cmFjZV9lbnRyeSh2b2lkICphcmcsIHVuc2lnbmVkIGxvbmcg d2hlcmUpCj4+ICtzdGF0aWMgYm9vbCBkdW1wX2JhY2t0cmFjZV9lbnRyeSh2b2lkICphcmcsIHN0 cnVjdCBmcmFtZV9pbmZvICpmaSkKPj4gIHsKPj4gIAljaGFyICpsb2dsdmwgPSBhcmc7Cj4+IC0J cHJpbnRrKCIlcyAlcFNiXG4iLCBsb2dsdmwsICh2b2lkICopd2hlcmUpOwo+PiArCXByaW50aygi JXMgJXBTYlxuIiwgbG9nbHZsLCAodm9pZCAqKWZpLT5wYyk7Cj4+ICAJcmV0dXJuIHRydWU7Cj4+ ICB9Cj4+ICAKPj4gQEAgLTIxMCwzICsyMTUsNjYgQEAgbm9pbmxpbmUgbm90cmFjZSB2b2lkIGFy Y2hfc3RhY2tfd2FsayhzdGFja190cmFjZV9jb25zdW1lX2ZuIGNvbnN1bWVfZW50cnksCj4+ICAK Pj4gIAl3YWxrX3N0YWNrZnJhbWUodGFzaywgJmZyYW1lLCBjb25zdW1lX2VudHJ5LCBjb29raWUp Owo+PiAgfQo+PiArCj4+ICtzdHJ1Y3QgYXJjaF9zdGFja19vYmplY3Qgewo+PiArCXVuc2lnbmVk IGxvbmcgc3RhcnQ7Cj4+ICsJdW5zaWduZWQgbG9uZyBsZW47Cj4+ICsJaW50IGZsYWc7Cj4gV2hh dCBpcyAiZmxhZyIgPwo+Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgYm9vbCBhcmNoX3N0YWNrX29i amVjdF9jaGVjayh2b2lkICpkYXRhLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZmkpCj4+ICt7Cj4+ICsJ c3RydWN0IGFyY2hfc3RhY2tfb2JqZWN0ICpvYmogPSAoc3RydWN0IGFyY2hfc3RhY2tfb2JqZWN0 ICopZGF0YTsKPj4gKwo+PiArCS8qIFNraXAgdGhlIGZyYW1lIG9mIGFyY2hfd2l0aGluX3N0YWNr X2ZyYW1lcyBpdHNlbGYgKi8KPj4gKwlpZiAoZmktPnByZXZfZnAgPT0gMCkKPj4gKwkJcmV0dXJu IHRydWU7Cj4gVGhhdCdzIG5vdCB3aGF0IHRoaXMgaXMgc2tpcHBpbmcuIFRoZSBmaXJzdCB0aW1l IGFyY2hfc3RhY2tfd2FsaygpIGlzIGNhbGxlZCwKPiBpdCBnaXZlcyB0aGUgUEMgb2YgaXRzIGNh bGxlciAoaS5lLiBhcmNoX3dpdGhpbl9zdGFja19mcmFtZXMpLCBhbmQgaXQncyBvd24KPiBzeW50 aGV0aWMgRlAuIFRoZSBuZXh0IHRpbWUgYXJvdW5kIGl0IGdpdmVzIHRoZSBGUCBvZiBpdCdzIGNh bGxlci4KPgo+PiArCj4+ICsJLyoKPj4gKwkgKiBsb3cgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4gaGlnaAo+PiArCSAqIFtzYXZlZCBicF1bc2F2ZWQgaXBd W2FyZ3NdW2xvY2FsIHZhcnNdW3NhdmVkIGJwXVtzYXZlZCBpcF0KPj4gKwkgKiAgICAgICAgICAg ICAgICAgICAgIF4tLS0tLS0tLS0tLS0tLS0tXgo+PiArCSAqICAgICAgICAgICAgICAgYWxsb3cg Y29waWVzIG9ubHkgd2l0aGluIGhlcmUKPj4gKwkgKi8KPiBUaGlzIGRpYWdyYW0gaXMgbm90IHZh bGlkIGZvciBhcm02NC4gVGhlcmUgaXMgbm8gImJwIiBvciAiaXAiLCBhbmQgZWFjaCBzdGFjawo+ IGZyYW1lIGNhbiBiZSBsYWlkIG91dCBtb3JlIGFyYml0cmFyaWx5IHJlbGF0aXZlIHRvIHRoZSBm cmFtZSByZWNvcmQuCj4KPj4gKwlpZiAob2JqLT5zdGFydCArIG9iai0+bGVuIDw9IGZpLT5mcCkg ewo+PiArCQlvYmotPmZsYWcgPSBvYmotPnN0YXJ0ID49Cj4+ICsJCQlmaS0+cHJldl9mcCArIDIg KiBzaXplb2Yodm9pZCAqKSA/Cj4+ICsJCQlHT09EX0ZSQU1FIDogQkFEX1NUQUNLOwo+IFRoaXMg Y2hlY2sgaXMgYnJva2VuIGluIHNldmVyYWwgd2F5cyBpZiB0aGVyZSdzIGEgc3RhY2sgdHJhbnNp dGlvbiwgc2luY2UgdGhlCj4gcGxhY2VtZW50IG9mIGZwIGFuZCBwcmV2X2ZwIGlzIGxlZ2l0aW1h dGVseSBhcmJpdHJhcnkuCj4KPiBUaGlzIHdvdWxkIGFsc28gYmUgYSBsb3QgY2xlYXJlciBpZiB5 b3UgYmFpbGVkIG91dCBlYXJseSByYXRoZXIgdGhhbiBuZXN0aW5nCj4gY2hlY2tzLgo+Cj4gVGhl IGJlc3QgdGhpbmcgeW91IGNhbiByZWFsaXN0aWNhbGx5IGRvIGlzIGNoZWNrIHRoYXQgdGhlIG9i amVjdCBmYWxscyBlbnRpcmVseQo+IHdpdGhpbiBhIGdpdmVuIHN0YWNrLCB0aGVuIGNoZWNrIHRo YXQgdGhhdCBubyBmcmFtZXMgaW50ZXJzZWN0IHRoZSBvYmplY3QuIFlvdQo+IGRvbid0IG5lZWQg cHJldl9mcCBmb3IgdGhhdCwgc2luY2UgeW91IGNhbiBqdXN0IGNoZWNrIGVhY2ggZnJhbWUgcmVj b3JkIGluCj4gdHVybiwgdGhlbiBiYWlsIG91dCBvbmNlIHRoZSBvYmplY3QgaGFzIGJlZW4gcGFz c2VkIChpLmUuIG9uY2Ugd2UndmUgaGl0IHRoZQo+IGNvcnJlY3Qgc3RhY2ssIGFuZCBlaXRoZXIg c2VlbiBhbiBGUCBhYm92ZSBpdCBvciB0cmFuc2l0aW9uZWQgdG8gYW5vdGhlcgo+IHN0YWNrKS4K Pgo+PiArCQlyZXR1cm4gZmFsc2U7Cj4+ICsJfSBlbHNlCj4+ICsJCXJldHVybiB0cnVlOwo+PiAr fQo+PiArCj4+ICsvKgo+PiArICogV2Fsa3MgdXAgdGhlIHN0YWNrIGZyYW1lcyB0byBtYWtlIHN1 cmUgdGhhdCB0aGUgc3BlY2lmaWVkIG9iamVjdCBpcwo+PiArICogZW50aXJlbHkgY29udGFpbmVk IGJ5IGEgc2luZ2xlIHN0YWNrIGZyYW1lLgo+PiArICoKPj4gKyAqIFJldHVybnM6Cj4+ICsgKglH T09EX0ZSQU1FCWlmIHdpdGhpbiBhIGZyYW1lCj4+ICsgKglCQURfU1RBQ0sJaWYgcGxhY2VkIGFj cm9zcyBhIGZyYW1lIGJvdW5kYXJ5IChvciBvdXRzaWRlIHN0YWNrKQo+PiArICoJTk9UX1NUQUNL CXVuYWJsZSB0byBkZXRlcm1pbmUgKG5vIGZyYW1lIHBvaW50ZXJzLCBldGMpCj4+ICsgKi8KPiBU aGlzIGlzIHRoZSBleGFjdCBzYW1lIGNvbW1lbnQgYXMgaW4gdGhlIGhlYWRlci4gTXkgY29tbWVu dHMgZnJvbSB0aGVyZSBhcHBseQo+IGhlcmUsIGFuZCBvbmUgb2YgdGhlIHR3byBzaG91bGQgZGlz YXBwZWFyLgo+Cj4+ICtpbnQgYXJjaF93aXRoaW5fc3RhY2tfZnJhbWVzKGNvbnN0IHZvaWQgKiBj b25zdCBzdGFjaywKPj4gKwkJY29uc3Qgdm9pZCAqIGNvbnN0IHN0YWNrZW5kLAo+PiArCQljb25z dCB2b2lkICpvYmosIHVuc2lnbmVkIGxvbmcgbGVuKQo+PiArewo+PiArI2lmIGRlZmluZWQoQ09O RklHX0ZSQU1FX1BPSU5URVIpCj4gQXMgYWJvdmUsIHRoaXMgKmNhbm5vdCogYmUgc2VsZWN0ZWQg b24gYXJtNjQuCj4KPj4gKwlzdHJ1Y3QgYXJjaF9zdGFja19vYmplY3Qgb2JqZWN0Owo+PiArCXN0 cnVjdCBwdF9yZWdzIHJlZ3M7Cj4+ICsKPj4gKwlpZiAoX19idWlsdGluX2ZyYW1lX2FkZHJlc3Mo MSkgPT0gMCkKPj4gKwkJcmV0dXJuIE5PVF9TVEFDSzsKPiBXaGVuIGRvIHlvdSBleHBlY3QgdGhp cyB0byBoYXBwZW4/Cj4KPj4gKwo+PiArCW9iamVjdC5zdGFydCA9ICh1bnNpZ25lZCBsb25nKW9i ajsKPj4gKwlvYmplY3QubGVuID0gbGVuOwo+PiArCW9iamVjdC5mbGFnID0gTk9UX1NUQUNLOwo+ PiArCj4+ICsJcmVncy5yZWdzWzI5XSA9ICh1NjQpX19idWlsdGluX2ZyYW1lX2FkZHJlc3MoMSk7 Cj4gTkFLIHRvIG1ha2luZyBhIHN5bnRoZXRpYyBwdF9yZWdzIGxpa2UgdGhpcy4gVGhhdCBhbiBh YnVzZSBvZiB0aGUgZXhpc3RpbmcgQVBJLAo+IGFuZCB5b3UgZG9uJ3QgbmVlZCB0byBkbyB0aGlz IGluIHRoZSBmaXJzdCBwbGFjZS4KPgo+PiArCj4+ICsJYXJjaF9zdGFja193YWxrKGFyY2hfc3Rh Y2tfb2JqZWN0X2NoZWNrLCAodm9pZCAqKSZvYmplY3QsIE5VTEwsICZyZWdzKTsKPiBBIHZvaWQg cG9pbnRlciBjYXN0IGlzIG5vdCBuZWNlc3NhcnkuCj4KPiBUaGFua3MsCj4gTWFyay4KPgo+PiAr Cj4+ICsJcmV0dXJuIG9iamVjdC5mbGFnOwo+PiArI2Vsc2UKPj4gKwlyZXR1cm4gTk9UX1NUQUNL Owo+PiArI2VuZGlmCj4+ICt9Cj4+IC0tIAo+PiAyLjI1LjEKPj4KCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QK bGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg== 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 lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (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 14C9EC433FE for ; Thu, 21 Apr 2022 09:23:03 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KkXBs3bcZz3bgR for ; Thu, 21 Apr 2022 19:23:01 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=windriver.com header.i=@windriver.com header.a=rsa-sha256 header.s=PPS06212021 header.b=XeM3q16L; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=windriver.com (client-ip=205.220.178.238; helo=mx0b-0064b401.pphosted.com; envelope-from=prvs=1110f56b4b=zhe.he@windriver.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=windriver.com header.i=@windriver.com header.a=rsa-sha256 header.s=PPS06212021 header.b=XeM3q16L; dkim-atps=neutral Received: from mx0b-0064b401.pphosted.com (mx0b-0064b401.pphosted.com [205.220.178.238]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4KkX9v2vp1z2xsc for ; Thu, 21 Apr 2022 19:22:07 +1000 (AEST) Received: from pps.filterd (m0250811.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 23L9AvK1026892; Thu, 21 Apr 2022 09:21:12 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriver.com; h=message-id : date : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding : mime-version; s=PPS06212021; bh=+I/hKBmFfrLjDXuANwOpiS4CkWcsG3eDjGQfRygSH9M=; b=XeM3q16L18aj5UTEcSHXtLfGCtcPX1UMyoFXE3PhELswGyMPPUeG0d1oEQqwhStUjQRV TAoPEM5mEMgZVp+T2xY8Xtz6sKxrHIKsi1nlyCyBDIyOO2ls0TxIDy2cylMVRhv7dCYt ox+VujbKP++HQHZz/BG29vM8i5H29/W9Jv7DtCxCOSA2ZjFlTjLPFoQaQbxB69awS+YE EY0UmXADi6UI281WaJ7DF/sg4Ck78SKiBosMe9UW2ibsLhFcY+au3mRUuTfsXEOajUBm zr8fO81ABQfRJnseI8V6VdyzzpM9w30Wa1StRw5ezqUBuCTRSa47+e3TVvZJWoAJN3Q1 pA== Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2106.outbound.protection.outlook.com [104.47.70.106]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 3ffpqn3pn8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Apr 2022 09:21:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WA9Ufbz2Q7P/btY9P2h0kRDG2LVB8+2eDHCh/J715SRlOlU/mC0Qfxh4LWnYhYE3Mh1rQDoysBXf6/+9C5+sPbrZn6sVv7WKK/xbV/KHE4mANJggQ2zrOLqrQIwgyYKd1LLL6iHr7YmYxBTFHtj4Lqbku8IGBSqGkCm7cPuYGclvowEIO18qSLj772LpT2R69mwFFQ9/n63NOhTrM86hll2ihtccCKSiY370XoM+LErQipk1mfdEdb+1NdxQVMZnuKRDcPqGq22D0G05cyDABPVb0IJx77LTIc4eyZNrNG3m5U9G0P6sy0s2IEzbpep/79FttAE//h1yDdeWycipjg== 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=+I/hKBmFfrLjDXuANwOpiS4CkWcsG3eDjGQfRygSH9M=; b=X/74RngEvpT9vXTXgVZDjfiDYKMV7V6oCF2Jm0zFM7LqovS06o8TAxZWtUUAyCtcAY9Ngi8bZZY1NZ/7iYmxjncAMPUpMk49QXFU/GwewzbsGdJPsEx6M7rgOYuSRrzGpbPj1XmU5qmoXeCWRKGkTb7r8uKuhd4sbWi1YWXbRzpO/yTIOpKuiakAj75OW2oWLQwf/Lo+TNV1akiO5aVRS3lyBa/CTK0L7KTplF/uKRSNsWGqiExV/CUyyVuqE3w8cYdi92J/R1rlBEoM32uAk74REMerN9qbf/koRF1TX/b/5xwFUVLtKULGJt/Tqo+kMfyXYF+5v3AuCsSBggwTNA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=windriver.com; dmarc=pass action=none header.from=windriver.com; dkim=pass header.d=windriver.com; arc=none Received: from MWHPR11MB1358.namprd11.prod.outlook.com (2603:10b6:300:23::8) by SN6PR11MB3438.namprd11.prod.outlook.com (2603:10b6:805:cf::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.20; Thu, 21 Apr 2022 09:21:09 +0000 Received: from MWHPR11MB1358.namprd11.prod.outlook.com ([fe80::1cd4:125:344:9fc]) by MWHPR11MB1358.namprd11.prod.outlook.com ([fe80::1cd4:125:344:9fc%7]) with mapi id 15.20.5164.026; Thu, 21 Apr 2022 09:21:08 +0000 Message-ID: Date: Thu, 21 Apr 2022 17:20:54 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Subject: Re: [PATCH RFC 2/8] arm64: stacktrace: Add arch_within_stack_frames Content-Language: en-US To: Mark Rutland References: <20220418132217.1573072-1-zhe.he@windriver.com> <20220418132217.1573072-3-zhe.he@windriver.com> From: He Zhe In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: HKAPR04CA0002.apcprd04.prod.outlook.com (2603:1096:203:d0::12) To MWHPR11MB1358.namprd11.prod.outlook.com (2603:10b6:300:23::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f48a7c3f-0314-49e5-8b6d-08da237844d0 X-MS-TrafficTypeDiagnostic: SN6PR11MB3438:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rtmY9Mo0hQSkV8Lgb1tNfmeMD6kzkkcpF98s9pfqFFuz1esMjCJL74IcNEXN548OfwRsdse9t2twunhwupMLiATrVm2K9j9s+8UCljd7yjo+zGpYPVMiine5TSQzw4NClYzun2JGfqzu0CXSBRGABUuXbF69GNhJG8zu1/5LqRuXskmqWoWZPWDuMVJw8hP+CSSrvFfu3AMoFQgCyaSYWchy4PkDaJqEwkKHpcUIjktZX6WkzPyCXycV1doT6GTcdFWszBbTIbp6Xxaci3B3xzYgOwnS2f34xsWBqqr8YtApHfqp5lQuM+H4I3VMGOxJ/xby8eJpcUfI+GXVspg4YXj+jbsz6uM5vaSQ7vhv3c6u9UoTEE53Lqk12WgtyEIzY/Byqn7ZYRWBb5yTOM8oPoan+PlYBRK+O0E4vpTvGTPUM7ejiCo82Vcivax8IVDzo6ETHLhaGTYvwftZAGjlhT1Vlg+t9e2/YtTBpMjyIdXLVCqGqqrFyt93ptXK1CYM0NGbk3AqLGHeLUI/FRbnnFCOISTr0IAUtABMSQl7hOjRKzkg1wcG23osnED1RP3wkaXG/7zabuiTi1a6mKjVriEg5UvVKRfWQZw37rGqThMCxUlFaLORJ627eTCWgc0zQRqYLH/Jszc1wU2+E9SGnaMy5tO3GMhjuxUmfwjSMRzLzfkPKoklK9MybNBZM8xyoSpyU5ZE4TNIQCf41ZUvLExRcH8PN5VPVexBQVD3FM3T21zhFx1iOqXS1Twi+SpL+dXGJMRgJejPdfMfgA/GmhmTbQcMjEUdrg8NSGORE2ZVDCRSDqND879BF41rXBMEFvXdgKjvzj+mkjJfSnOh4RIRoXuoFsUP1tC2tYnRxnIIDIJaOWx2m+XsbDg4soLGDY4d2WDWYTjwwWSnctkqEg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR11MB1358.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(38350700002)(38100700002)(6666004)(66946007)(86362001)(4326008)(26005)(83380400001)(66476007)(31686004)(53546011)(66556008)(6486002)(31696002)(52116002)(8676002)(2906002)(186003)(36756003)(6506007)(508600001)(966005)(8936002)(30864003)(6512007)(5660300002)(7416002)(2616005)(316002)(6916009)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?L21NTU5KaTNYYzlxUE9WamE5dk9HZEJhQ1JlbllXQ2hlcThhcmZ4ZFZVMlN3?= =?utf-8?B?Nm5SZVFHZFluVkRvK29kL3RXUlVibW8weWk5b0ZjOHJMVTN6VU95YU12NDh6?= =?utf-8?B?eVo5N0NDMyt2bHU0SkltaUMzZXk5bG05YXFUUG1YcEpvamRMUiszUnNzUzhF?= =?utf-8?B?TEdxamQ4bm1SclByWUFuR0hiVEVNM2xnTkl2K0RzeGRJNUQ4NU5YMEttMVVK?= =?utf-8?B?Q2xmYVh3c2VsdExQcncycGVOa1hveXcxNlBhMThkVXYwcytUTjlldk9WclBV?= =?utf-8?B?YURMZXpWL2RzQTlYeUo3RXorL2hZRTU5bjZDOUo3T0xySkVXenFDR3F0R2ZU?= =?utf-8?B?cWRyWGJCZm5pZWMwWWFFOWczN0xETmI0elJ2SHZIMW1GOUJjazF4VlNCd1Br?= =?utf-8?B?Qms2WGg0dGRaRStGWENKK3JnelZtelRONVV1VWZhcVZxRmlUcS9rcW84Qk43?= =?utf-8?B?QmhFeVozbTE0dGlRY3dnMWFmRENBVkYvdFl1alJ2YVBFTUcwMFJ5K3pIL056?= =?utf-8?B?K0dZSnFlUVZYM3I1MTFuVjlZZ2h6Z2Y2Wk1QcGJFbEtST3dxNklvMllNSnVB?= =?utf-8?B?VTRIR2JpZHZRdHVUWmVTY0xSR1RjNWtjRlNDMzEzc05VMktkV3lrUk1Pcldk?= =?utf-8?B?SklWcjFjc2tsT09VSjdLUFB5WHVIZklOcUptaS9vR0dESSsyRStNMmxhRFNX?= =?utf-8?B?dEt4KzVlY2J2eHgvV0JoV1ZraFFva3hKS0V2RlRZL2txemhOWlpxUEc3WEVr?= =?utf-8?B?UFVVWGZRTFk0UHdwWmtRcVVTMi9NRnVxRy9SZjhvb1RJQS9Jb3luRUJPM1R6?= =?utf-8?B?K2RrMDhzOEM3dHl1d2R6TXp5SDRLa25SQmt2Nzl1RXhBdllTWXFxWXRlaGI1?= =?utf-8?B?MW1qa1pSRnNOSlVUV0drYVlEWnVHTFVsajBadUJxZENpUWExaGZKa2hsUlhZ?= =?utf-8?B?RGlXSG04WU9KdFpqZy9STS9JcnVpYTVBVFppQzc0d1Z0ZXBySExCZ1pHV3V1?= =?utf-8?B?S3czc3Bya1BUOWhRWXVZVk1sdEFRNzdNcElCU29lRkVPNTEwK3FWK1cyYnlM?= =?utf-8?B?VEl5YkRhMk4vRm1ldUVKeHBTU2VVUmZyVXdadWw1L3pBL0pub0ljV1ovTjg0?= =?utf-8?B?VEcvcUNadWVHU0JCVmI0dURLamhhU3FuSmNwTWFyNy9vSjdNNmF0L0Y5bTJK?= =?utf-8?B?WjZPNURydS91WGxDMk9yZCtJWDMvWlRVblpJQjNIUHFkRTQrTnY5QUlwYnY5?= =?utf-8?B?dWxPSGlCVElyVGorenlsVjE2bGdmeStuNUlBTWdNSjh2SkVMMHVaY2oxOXhV?= =?utf-8?B?emN0T1F4YzE2RlM4TDVwa1FxVUM2eFhEQTBTRFNsVWlPelJ2SE5SeHZlaXhQ?= =?utf-8?B?QXlJNHd4TEI5aEFMSlRES1VLakgxc3p0OGtobVhHN0hFVDkzbGFia1k0OFpJ?= =?utf-8?B?Y2dEa2Nwb292WjVFanB3NGlHR0haMG5QanRWb0EzZUxqOHhOVUs1MFJqcjNZ?= =?utf-8?B?TlVvODBJQWRhM3RMUFBYOGU3VGRsTitHVTFldmlDVml1QkM4eHFXbGcvYmU1?= =?utf-8?B?QnRkSjM2MVNLdlg4ZW1HWmF4NHhDRmlPZXVhb0xDK0ZTRW9aMXJsWjRLYzh5?= =?utf-8?B?Sk1wN0xYZ3dGZzlNNTJ3bHJLVXo3TTh2SHhSN1hXek5PSG0rUVkwQnhGZ0xZ?= =?utf-8?B?aVdJdXZxbldab3FSYnpHTm42TjZPZ1AvZG5wQ1h3VlljT0MreHBKQ3VCQk56?= =?utf-8?B?Tnhvb1ViS0JFNWhrYlVTN0hCT3dFeGM3TUVvd0RTSmE5T3N3QXhtejQwMVNk?= =?utf-8?B?QnpydndWWTdtQjNCZmhTWXNKbEdmU3RPVjZ3a2NJeFRxazd6Nk5SdmlHZDJY?= =?utf-8?B?WEhvWGg2WDNFRHRhWXRmNkdENjhPWUVlSTQyT0I3cWZVR0xmaXdSUVoxajdr?= =?utf-8?B?Yml5T3pzMXRMQlhxNlhTcVRsZDBhR3EzelByaGNpSHk1UExicFRVTFBkYytN?= =?utf-8?B?WnVxVzZrY1dackk3MlZpazRPdnMvNTdJbERIcVRYd2ZyNzkrRzRyNmRjbzVl?= =?utf-8?B?cTZlb2hWdS9IR1cwNmpiZzZDTWNBNmNYL0R6T0Z0ZlRxT2o2T0tyZXJ3VUgw?= =?utf-8?B?NjRRc1lzR0ZtM3htZW1naTNDMXd0WUdBUFAzaE8reHhqQ0RHN1d6MURmN3dH?= =?utf-8?B?ZC9oR3J1Y1krYUR3VnBDN0RKSmdTNG9WbElLMFRkS0Roelg1Q1J4elpSNmQw?= =?utf-8?B?dHNBQmdUTFo4d0xmTGoxbldDa1JQTVNjMnA2dFNmUkRBbVFXMjdLWmJHOEor?= =?utf-8?B?Z25QbXUySi91QWxaRUU0ZCtaT2RFaWdkQ0JCNW52N0ZHTGxmdUpwdz09?= X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: f48a7c3f-0314-49e5-8b6d-08da237844d0 X-MS-Exchange-CrossTenant-AuthSource: MWHPR11MB1358.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 09:21:08.7193 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ddb2873-a1ad-4a18-ae4e-4644631433be X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5rTT8pxlKhd/72EMFwxs+jGS+ESG5I8fY4lKwlb2Vo2yYYW6L+dZqy2NK4wl9IGmmHWBieGKEa/PX9wRuQv3SQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB3438 X-Proofpoint-GUID: Ycd9U5FO_xuAMobxvzLvIJBP9z9wd24m X-Proofpoint-ORIG-GUID: Ycd9U5FO_xuAMobxvzLvIJBP9z9wd24m X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-04-20_06,2022-04-20_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 phishscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 suspectscore=0 mlxlogscore=999 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2204210051 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-arm-kernel@lists.infradead.org, linux-s390@vger.kernel.org, x86@kernel.org, hpa@zytor.com, keescook@chromium.org, alexander.shishkin@linux.intel.com, catalin.marinas@arm.com, dave.hansen@linux.intel.com, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, bp@alien8.de, svens@linux.ibm.com, jolsa@kernel.org, namhyung@kernel.org, tglx@linutronix.de, borntraeger@linux.ibm.com, will@kernel.org, linux-riscv@lists.infradead.org, paulus@samba.org Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" On 4/19/22 22:40, Mark Rutland wrote: > Hi, > > On Mon, Apr 18, 2022 at 09:22:11PM +0800, He Zhe wrote: >> This function checks if the given address range crosses frame boundary. > I don't think that's quite true, becuase arm64's procedure call standard > (AAPCS64) doesn't give us enough information to determine this without > additional metadata from the compiler, which we simply don't have today. > > Since there's a lot of confusion in this area, I've made a bit of an info dump > below, before review on the patch itself, but TBH I'm struggling to see that > this is all that useful. Thanks for the exhaustive explanation and info dump here. I've read through all your comments, very helpful. > > On arm64, we use a calling convention called AAPCS64, (in full: "Procedure Call > Standard for the ArmĀ® 64-bit Architecture (AArch64)"). That's maintained at: > > https://github.com/ARM-software/abi-aa > > ... with the latest release (as of today) at: > > https://github.com/ARM-software/abi-aa/blob/60a8eb8c55e999d74dac5e368fc9d7e36e38dda4/aapcs64/aapcs64.rst > https://github.com/ARM-software/abi-aa/releases/download/2022Q1/aapcs64.pdf > > In AAPCS64, there are two related but distinct things to be aware of: > > * The "stack frame" of a function, which is the entire contiguous region of > stack memory used by a function. > > * The "frame record", which is the saved FP and LR placed *somewhere* within > the function's stack frame. The FP points at the most recent frame record on > the stack, and at function call boundaries points at the caller's frame > record. > > AAPCS64 doesn't say *where* a frame record is placed within a stack frame, and > there are reasons for compilers to place above and below it. So in genral, a > functionss stack frame looks like: > > +=========+ > | above | > |---------| > | FP | LR | > |---------| > | below | > +=========+ > > ... where the "above" or "below" portions might be any size (even 0 bytes). > > Typical code generation today means for most functions that the "below" portion > is 0 bytes in size, but this is not guaranteed, and even today there are cases > where this is not true. > > When one function calls another without a stack transition, that looks like: > > +=========+ ___ > | above | \ > |---------| | > ,->| FP | LR | +-- Caller's stack frame > | |---------| | > | | below | ___/ > | +=========+ ___ > | | above | \ > | |---------| | > '--| FP | LR | +-- Callee's stack frame > |---------| | > | below | ___/ > +=========+ > > Where there's a stack transition, and the new stack is at a *lower* VA than the > old stack, that looks like: > > +=========+ ___ > | above | \ > |---------| | > ,->| FP | LR | +-- Caller's stack frame > | |---------| | > | | below | ___/ > | +=========+ > | > | ~~~~~~~~~~~ > | Arbitrarily > | large gap, > | potentially > | including > | other data > | ~~~~~~~~~~~ > | > | +=========+ ___ > | | above | \ > | |---------| | > '--| FP | LR | +-- Callee's stack frame > |---------| | > | below | ___/ > +=========+ > > Where there's a stack transition, and the new stack is at a *higher* VA than > the old stack, that looks like: > > +=========+ ___ > | above | \ > |---------| | > ,--| FP | LR | +-- Callee's stack frame > | |---------| | > | | below | ___/ > | +=========+ > | > | ~~~~~~~~~~~ > | Arbitrarily > | large gap, > | potentially > | including > | other data > | ~~~~~~~~~~~ > | > | +=========+ ___ > | | above | \ > | |---------| | > '->| FP | LR | +-- Caller's stack frame > |---------| | > | below | ___/ > +=========+ > > In all of these cases, we *cannot* identify the boundary between the two stack > frames, we can *only* identify where something overlaps a frame record. That > might itself be a good thing, but it's not the same thing as what you describe > in the commit message. > >> It is based on the existing x86 algorithm, but implemented via stacktrace. >> This can be tested by USERCOPY_STACK_FRAME_FROM and >> USERCOPY_STACK_FRAME_TO in lkdtm. > Can you please explain *why* we'd want this? We are trying to use the hardened usercopy feature on arm64 hardware and found that the lkdtm can help validate the feature. But USERCOPY_STACK_FRAME_FROM/TO checks, which were originally added for x86, are not supported for arm64. I thought it would be good if we can enhance such hardening for arm64 and tried to add the basic frame check like on x86 in this series. And yes, with all the arm64 details provided above, this surely needs to be reconsidered. > > Who do we expect to use this? > > What's the overhead in practice? > > Has this passed a more realistic stress test (e.g. running some userspace > applications which make intensive use of copies to/from the kernel)? Just did some very rough performance impact test as in the other reply, But not sure what needs to be done further. Thanks, Zhe > >> Signed-off-by: He Zhe >> --- >> arch/arm64/Kconfig | 1 + >> arch/arm64/include/asm/thread_info.h | 12 +++++ >> arch/arm64/kernel/stacktrace.c | 76 ++++++++++++++++++++++++++-- >> 3 files changed, 85 insertions(+), 4 deletions(-) >> >> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig >> index 57c4c995965f..0f52a83d7771 100644 >> --- a/arch/arm64/Kconfig >> +++ b/arch/arm64/Kconfig >> @@ -165,6 +165,7 @@ config ARM64 >> select HAVE_ARCH_TRACEHOOK >> select HAVE_ARCH_TRANSPARENT_HUGEPAGE >> select HAVE_ARCH_VMAP_STACK >> + select HAVE_ARCH_WITHIN_STACK_FRAMES >> select HAVE_ARM_SMCCC >> select HAVE_ASM_MODVERSIONS >> select HAVE_EBPF_JIT >> diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h >> index e1317b7c4525..b839ad9f2248 100644 >> --- a/arch/arm64/include/asm/thread_info.h >> +++ b/arch/arm64/include/asm/thread_info.h >> @@ -58,6 +58,18 @@ void arch_setup_new_exec(void); >> void arch_release_task_struct(struct task_struct *tsk); >> int arch_dup_task_struct(struct task_struct *dst, >> struct task_struct *src); >> +/* >> + * Walks up the stack frames to make sure that the specified object is >> + * entirely contained by a single stack frame. >> + * >> + * Returns: >> + * GOOD_FRAME if within a frame > As above, we cannot identify this reliably. > >> + * BAD_STACK if placed across a frame boundary (or outside stack) >> + * NOT_STACK unable to determine (no frame pointers, etc) > On arm64 we always have frame pointers enabled, so this is a confusing comment. > Is this a copy-paste from x86? > >> + */ >> +int arch_within_stack_frames(const void * const stack, >> + const void * const stackend, >> + const void *obj, unsigned long len); >> >> #endif >> >> diff --git a/arch/arm64/kernel/stacktrace.c b/arch/arm64/kernel/stacktrace.c >> index e4103e085681..219b90c1de12 100644 >> --- a/arch/arm64/kernel/stacktrace.c >> +++ b/arch/arm64/kernel/stacktrace.c >> @@ -145,12 +145,17 @@ NOKPROBE_SYMBOL(unwind_frame); >> >> static void notrace walk_stackframe(struct task_struct *tsk, >> struct stackframe *frame, >> - bool (*fn)(void *, unsigned long), void *data) >> + stack_trace_consume_fn fn, void *data) >> { >> + struct frame_info fi; >> + >> while (1) { >> int ret; >> >> - if (!fn(data, frame->pc)) >> + fi.pc = frame->pc; >> + fi.fp = frame->fp; >> + fi.prev_fp = frame->prev_fp; >> + if (!fn(data, &fi)) >> break; >> ret = unwind_frame(tsk, frame); >> if (ret < 0) > As on my prior comment, I don't think we want to alter our generic stack walker > in this way. If we need more info, I'd prefer to expose this in layers, keeping > arch_stack_walk unchanged, but having an arm64_stack_walk that can pass some > arm64-specific data. > >> @@ -159,10 +164,10 @@ static void notrace walk_stackframe(struct task_struct >> *tsk, >> } >> NOKPROBE_SYMBOL(walk_stackframe); >> >> -static bool dump_backtrace_entry(void *arg, unsigned long where) >> +static bool dump_backtrace_entry(void *arg, struct frame_info *fi) >> { >> char *loglvl = arg; >> - printk("%s %pSb\n", loglvl, (void *)where); >> + printk("%s %pSb\n", loglvl, (void *)fi->pc); >> return true; >> } >> >> @@ -210,3 +215,66 @@ noinline notrace void arch_stack_walk(stack_trace_consume_fn consume_entry, >> >> walk_stackframe(task, &frame, consume_entry, cookie); >> } >> + >> +struct arch_stack_object { >> + unsigned long start; >> + unsigned long len; >> + int flag; > What is "flag" ? > >> +}; >> + >> +static bool arch_stack_object_check(void *data, struct frame_info *fi) >> +{ >> + struct arch_stack_object *obj = (struct arch_stack_object *)data; >> + >> + /* Skip the frame of arch_within_stack_frames itself */ >> + if (fi->prev_fp == 0) >> + return true; > That's not what this is skipping. The first time arch_stack_walk() is called, > it gives the PC of its caller (i.e. arch_within_stack_frames), and it's own > synthetic FP. The next time around it gives the FP of it's caller. > >> + >> + /* >> + * low ----------------------------------------------> high >> + * [saved bp][saved ip][args][local vars][saved bp][saved ip] >> + * ^----------------^ >> + * allow copies only within here >> + */ > This diagram is not valid for arm64. There is no "bp" or "ip", and each stack > frame can be laid out more arbitrarily relative to the frame record. > >> + if (obj->start + obj->len <= fi->fp) { >> + obj->flag = obj->start >= >> + fi->prev_fp + 2 * sizeof(void *) ? >> + GOOD_FRAME : BAD_STACK; > This check is broken in several ways if there's a stack transition, since the > placement of fp and prev_fp is legitimately arbitrary. > > This would also be a lot clearer if you bailed out early rather than nesting > checks. > > The best thing you can realistically do is check that the object falls entirely > within a given stack, then check that that no frames intersect the object. You > don't need prev_fp for that, since you can just check each frame record in > turn, then bail out once the object has been passed (i.e. once we've hit the > correct stack, and either seen an FP above it or transitioned to another > stack). > >> + return false; >> + } else >> + return true; >> +} >> + >> +/* >> + * Walks up the stack frames to make sure that the specified object is >> + * entirely contained by a single stack frame. >> + * >> + * Returns: >> + * GOOD_FRAME if within a frame >> + * BAD_STACK if placed across a frame boundary (or outside stack) >> + * NOT_STACK unable to determine (no frame pointers, etc) >> + */ > This is the exact same comment as in the header. My comments from there apply > here, and one of the two should disappear. > >> +int arch_within_stack_frames(const void * const stack, >> + const void * const stackend, >> + const void *obj, unsigned long len) >> +{ >> +#if defined(CONFIG_FRAME_POINTER) > As above, this *cannot* be selected on arm64. > >> + struct arch_stack_object object; >> + struct pt_regs regs; >> + >> + if (__builtin_frame_address(1) == 0) >> + return NOT_STACK; > When do you expect this to happen? > >> + >> + object.start = (unsigned long)obj; >> + object.len = len; >> + object.flag = NOT_STACK; >> + >> + regs.regs[29] = (u64)__builtin_frame_address(1); > NAK to making a synthetic pt_regs like this. That an abuse of the existing API, > and you don't need to do this in the first place. > >> + >> + arch_stack_walk(arch_stack_object_check, (void *)&object, NULL, ®s); > A void pointer cast is not necessary. > > Thanks, > Mark. > >> + >> + return object.flag; >> +#else >> + return NOT_STACK; >> +#endif >> +} >> -- >> 2.25.1 >> 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 6BADFC433EF for ; Thu, 21 Apr 2022 09:23:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:From: References:Cc:To:Subject:Date:Message-ID:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=GbhILPAzT19aq9GL2tnTcdtdFm0vkflilX0w8eOHylM=; b=dN2bdhsYs/lcaI5Vu0bnX7I4YP GJmWFWkP67zajsKYMLfzKcLMEEAFkHSPp0EgY7b1GiiBrUAhsupqjindmHUKmzFV6MQneIsBvBBRo geiCaUIeQ8nc+lmwcdRB+1s/7QgyjkLeZHq4VUZZZI4SEBJKTFRM5uO9d/Rj3WQl3ktVuLtIivC5c BmE1Xjf5OYMFybgSEVGHGIGDacp0vgo95tgvE7R/TZjztnuxr/X9rAXcyZWUCHTEeTxSk/wnnRgeC NrzbFNKJFTVszsWuM93illFkQ8ok+hmbQ1Kos7u5IScZg1ff2Zizt2Hx3h657ZgvfOTVHrRF7SK2n tWAQbKpw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhT0p-00ChvE-0x; Thu, 21 Apr 2022 09:22:07 +0000 Received: from mx0b-0064b401.pphosted.com ([205.220.178.238]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhT0j-00Chqy-6P; Thu, 21 Apr 2022 09:22:04 +0000 Received: from pps.filterd (m0250811.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 23L9AvK1026892; Thu, 21 Apr 2022 09:21:12 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriver.com; h=message-id : date : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding : mime-version; s=PPS06212021; bh=+I/hKBmFfrLjDXuANwOpiS4CkWcsG3eDjGQfRygSH9M=; b=XeM3q16L18aj5UTEcSHXtLfGCtcPX1UMyoFXE3PhELswGyMPPUeG0d1oEQqwhStUjQRV TAoPEM5mEMgZVp+T2xY8Xtz6sKxrHIKsi1nlyCyBDIyOO2ls0TxIDy2cylMVRhv7dCYt ox+VujbKP++HQHZz/BG29vM8i5H29/W9Jv7DtCxCOSA2ZjFlTjLPFoQaQbxB69awS+YE EY0UmXADi6UI281WaJ7DF/sg4Ck78SKiBosMe9UW2ibsLhFcY+au3mRUuTfsXEOajUBm zr8fO81ABQfRJnseI8V6VdyzzpM9w30Wa1StRw5ezqUBuCTRSa47+e3TVvZJWoAJN3Q1 pA== Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2106.outbound.protection.outlook.com [104.47.70.106]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 3ffpqn3pn8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Apr 2022 09:21:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WA9Ufbz2Q7P/btY9P2h0kRDG2LVB8+2eDHCh/J715SRlOlU/mC0Qfxh4LWnYhYE3Mh1rQDoysBXf6/+9C5+sPbrZn6sVv7WKK/xbV/KHE4mANJggQ2zrOLqrQIwgyYKd1LLL6iHr7YmYxBTFHtj4Lqbku8IGBSqGkCm7cPuYGclvowEIO18qSLj772LpT2R69mwFFQ9/n63NOhTrM86hll2ihtccCKSiY370XoM+LErQipk1mfdEdb+1NdxQVMZnuKRDcPqGq22D0G05cyDABPVb0IJx77LTIc4eyZNrNG3m5U9G0P6sy0s2IEzbpep/79FttAE//h1yDdeWycipjg== 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=+I/hKBmFfrLjDXuANwOpiS4CkWcsG3eDjGQfRygSH9M=; b=X/74RngEvpT9vXTXgVZDjfiDYKMV7V6oCF2Jm0zFM7LqovS06o8TAxZWtUUAyCtcAY9Ngi8bZZY1NZ/7iYmxjncAMPUpMk49QXFU/GwewzbsGdJPsEx6M7rgOYuSRrzGpbPj1XmU5qmoXeCWRKGkTb7r8uKuhd4sbWi1YWXbRzpO/yTIOpKuiakAj75OW2oWLQwf/Lo+TNV1akiO5aVRS3lyBa/CTK0L7KTplF/uKRSNsWGqiExV/CUyyVuqE3w8cYdi92J/R1rlBEoM32uAk74REMerN9qbf/koRF1TX/b/5xwFUVLtKULGJt/Tqo+kMfyXYF+5v3AuCsSBggwTNA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=windriver.com; dmarc=pass action=none header.from=windriver.com; dkim=pass header.d=windriver.com; arc=none Received: from MWHPR11MB1358.namprd11.prod.outlook.com (2603:10b6:300:23::8) by SN6PR11MB3438.namprd11.prod.outlook.com (2603:10b6:805:cf::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.20; Thu, 21 Apr 2022 09:21:09 +0000 Received: from MWHPR11MB1358.namprd11.prod.outlook.com ([fe80::1cd4:125:344:9fc]) by MWHPR11MB1358.namprd11.prod.outlook.com ([fe80::1cd4:125:344:9fc%7]) with mapi id 15.20.5164.026; Thu, 21 Apr 2022 09:21:08 +0000 Message-ID: Date: Thu, 21 Apr 2022 17:20:54 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Subject: Re: [PATCH RFC 2/8] arm64: stacktrace: Add arch_within_stack_frames Content-Language: en-US To: Mark Rutland Cc: catalin.marinas@arm.com, will@kernel.org, tglx@linutronix.de, bp@alien8.de, dave.hansen@linux.intel.com, keescook@chromium.org, alexander.shishkin@linux.intel.com, jolsa@kernel.org, namhyung@kernel.org, benh@kernel.crashing.org, paulus@samba.org, borntraeger@linux.ibm.com, svens@linux.ibm.com, hpa@zytor.com, x86@kernel.org, linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org References: <20220418132217.1573072-1-zhe.he@windriver.com> <20220418132217.1573072-3-zhe.he@windriver.com> From: He Zhe In-Reply-To: X-ClientProxiedBy: HKAPR04CA0002.apcprd04.prod.outlook.com (2603:1096:203:d0::12) To MWHPR11MB1358.namprd11.prod.outlook.com (2603:10b6:300:23::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f48a7c3f-0314-49e5-8b6d-08da237844d0 X-MS-TrafficTypeDiagnostic: SN6PR11MB3438:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rtmY9Mo0hQSkV8Lgb1tNfmeMD6kzkkcpF98s9pfqFFuz1esMjCJL74IcNEXN548OfwRsdse9t2twunhwupMLiATrVm2K9j9s+8UCljd7yjo+zGpYPVMiine5TSQzw4NClYzun2JGfqzu0CXSBRGABUuXbF69GNhJG8zu1/5LqRuXskmqWoWZPWDuMVJw8hP+CSSrvFfu3AMoFQgCyaSYWchy4PkDaJqEwkKHpcUIjktZX6WkzPyCXycV1doT6GTcdFWszBbTIbp6Xxaci3B3xzYgOwnS2f34xsWBqqr8YtApHfqp5lQuM+H4I3VMGOxJ/xby8eJpcUfI+GXVspg4YXj+jbsz6uM5vaSQ7vhv3c6u9UoTEE53Lqk12WgtyEIzY/Byqn7ZYRWBb5yTOM8oPoan+PlYBRK+O0E4vpTvGTPUM7ejiCo82Vcivax8IVDzo6ETHLhaGTYvwftZAGjlhT1Vlg+t9e2/YtTBpMjyIdXLVCqGqqrFyt93ptXK1CYM0NGbk3AqLGHeLUI/FRbnnFCOISTr0IAUtABMSQl7hOjRKzkg1wcG23osnED1RP3wkaXG/7zabuiTi1a6mKjVriEg5UvVKRfWQZw37rGqThMCxUlFaLORJ627eTCWgc0zQRqYLH/Jszc1wU2+E9SGnaMy5tO3GMhjuxUmfwjSMRzLzfkPKoklK9MybNBZM8xyoSpyU5ZE4TNIQCf41ZUvLExRcH8PN5VPVexBQVD3FM3T21zhFx1iOqXS1Twi+SpL+dXGJMRgJejPdfMfgA/GmhmTbQcMjEUdrg8NSGORE2ZVDCRSDqND879BF41rXBMEFvXdgKjvzj+mkjJfSnOh4RIRoXuoFsUP1tC2tYnRxnIIDIJaOWx2m+XsbDg4soLGDY4d2WDWYTjwwWSnctkqEg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR11MB1358.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(38350700002)(38100700002)(6666004)(66946007)(86362001)(4326008)(26005)(83380400001)(66476007)(31686004)(53546011)(66556008)(6486002)(31696002)(52116002)(8676002)(2906002)(186003)(36756003)(6506007)(508600001)(966005)(8936002)(30864003)(6512007)(5660300002)(7416002)(2616005)(316002)(6916009)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?L21NTU5KaTNYYzlxUE9WamE5dk9HZEJhQ1JlbllXQ2hlcThhcmZ4ZFZVMlN3?= =?utf-8?B?Nm5SZVFHZFluVkRvK29kL3RXUlVibW8weWk5b0ZjOHJMVTN6VU95YU12NDh6?= =?utf-8?B?eVo5N0NDMyt2bHU0SkltaUMzZXk5bG05YXFUUG1YcEpvamRMUiszUnNzUzhF?= =?utf-8?B?TEdxamQ4bm1SclByWUFuR0hiVEVNM2xnTkl2K0RzeGRJNUQ4NU5YMEttMVVK?= =?utf-8?B?Q2xmYVh3c2VsdExQcncycGVOa1hveXcxNlBhMThkVXYwcytUTjlldk9WclBV?= =?utf-8?B?YURMZXpWL2RzQTlYeUo3RXorL2hZRTU5bjZDOUo3T0xySkVXenFDR3F0R2ZU?= =?utf-8?B?cWRyWGJCZm5pZWMwWWFFOWczN0xETmI0elJ2SHZIMW1GOUJjazF4VlNCd1Br?= =?utf-8?B?Qms2WGg0dGRaRStGWENKK3JnelZtelRONVV1VWZhcVZxRmlUcS9rcW84Qk43?= =?utf-8?B?QmhFeVozbTE0dGlRY3dnMWFmRENBVkYvdFl1alJ2YVBFTUcwMFJ5K3pIL056?= =?utf-8?B?K0dZSnFlUVZYM3I1MTFuVjlZZ2h6Z2Y2Wk1QcGJFbEtST3dxNklvMllNSnVB?= =?utf-8?B?VTRIR2JpZHZRdHVUWmVTY0xSR1RjNWtjRlNDMzEzc05VMktkV3lrUk1Pcldk?= =?utf-8?B?SklWcjFjc2tsT09VSjdLUFB5WHVIZklOcUptaS9vR0dESSsyRStNMmxhRFNX?= =?utf-8?B?dEt4KzVlY2J2eHgvV0JoV1ZraFFva3hKS0V2RlRZL2txemhOWlpxUEc3WEVr?= =?utf-8?B?UFVVWGZRTFk0UHdwWmtRcVVTMi9NRnVxRy9SZjhvb1RJQS9Jb3luRUJPM1R6?= =?utf-8?B?K2RrMDhzOEM3dHl1d2R6TXp5SDRLa25SQmt2Nzl1RXhBdllTWXFxWXRlaGI1?= =?utf-8?B?MW1qa1pSRnNOSlVUV0drYVlEWnVHTFVsajBadUJxZENpUWExaGZKa2hsUlhZ?= =?utf-8?B?RGlXSG04WU9KdFpqZy9STS9JcnVpYTVBVFppQzc0d1Z0ZXBySExCZ1pHV3V1?= =?utf-8?B?S3czc3Bya1BUOWhRWXVZVk1sdEFRNzdNcElCU29lRkVPNTEwK3FWK1cyYnlM?= =?utf-8?B?VEl5YkRhMk4vRm1ldUVKeHBTU2VVUmZyVXdadWw1L3pBL0pub0ljV1ovTjg0?= =?utf-8?B?VEcvcUNadWVHU0JCVmI0dURLamhhU3FuSmNwTWFyNy9vSjdNNmF0L0Y5bTJK?= =?utf-8?B?WjZPNURydS91WGxDMk9yZCtJWDMvWlRVblpJQjNIUHFkRTQrTnY5QUlwYnY5?= =?utf-8?B?dWxPSGlCVElyVGorenlsVjE2bGdmeStuNUlBTWdNSjh2SkVMMHVaY2oxOXhV?= =?utf-8?B?emN0T1F4YzE2RlM4TDVwa1FxVUM2eFhEQTBTRFNsVWlPelJ2SE5SeHZlaXhQ?= =?utf-8?B?QXlJNHd4TEI5aEFMSlRES1VLakgxc3p0OGtobVhHN0hFVDkzbGFia1k0OFpJ?= =?utf-8?B?Y2dEa2Nwb292WjVFanB3NGlHR0haMG5QanRWb0EzZUxqOHhOVUs1MFJqcjNZ?= =?utf-8?B?TlVvODBJQWRhM3RMUFBYOGU3VGRsTitHVTFldmlDVml1QkM4eHFXbGcvYmU1?= =?utf-8?B?QnRkSjM2MVNLdlg4ZW1HWmF4NHhDRmlPZXVhb0xDK0ZTRW9aMXJsWjRLYzh5?= =?utf-8?B?Sk1wN0xYZ3dGZzlNNTJ3bHJLVXo3TTh2SHhSN1hXek5PSG0rUVkwQnhGZ0xZ?= =?utf-8?B?aVdJdXZxbldab3FSYnpHTm42TjZPZ1AvZG5wQ1h3VlljT0MreHBKQ3VCQk56?= =?utf-8?B?Tnhvb1ViS0JFNWhrYlVTN0hCT3dFeGM3TUVvd0RTSmE5T3N3QXhtejQwMVNk?= =?utf-8?B?QnpydndWWTdtQjNCZmhTWXNKbEdmU3RPVjZ3a2NJeFRxazd6Nk5SdmlHZDJY?= =?utf-8?B?WEhvWGg2WDNFRHRhWXRmNkdENjhPWUVlSTQyT0I3cWZVR0xmaXdSUVoxajdr?= =?utf-8?B?Yml5T3pzMXRMQlhxNlhTcVRsZDBhR3EzelByaGNpSHk1UExicFRVTFBkYytN?= =?utf-8?B?WnVxVzZrY1dackk3MlZpazRPdnMvNTdJbERIcVRYd2ZyNzkrRzRyNmRjbzVl?= =?utf-8?B?cTZlb2hWdS9IR1cwNmpiZzZDTWNBNmNYL0R6T0Z0ZlRxT2o2T0tyZXJ3VUgw?= =?utf-8?B?NjRRc1lzR0ZtM3htZW1naTNDMXd0WUdBUFAzaE8reHhqQ0RHN1d6MURmN3dH?= =?utf-8?B?ZC9oR3J1Y1krYUR3VnBDN0RKSmdTNG9WbElLMFRkS0Roelg1Q1J4elpSNmQw?= =?utf-8?B?dHNBQmdUTFo4d0xmTGoxbldDa1JQTVNjMnA2dFNmUkRBbVFXMjdLWmJHOEor?= =?utf-8?B?Z25QbXUySi91QWxaRUU0ZCtaT2RFaWdkQ0JCNW52N0ZHTGxmdUpwdz09?= X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: f48a7c3f-0314-49e5-8b6d-08da237844d0 X-MS-Exchange-CrossTenant-AuthSource: MWHPR11MB1358.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 09:21:08.7193 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ddb2873-a1ad-4a18-ae4e-4644631433be X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5rTT8pxlKhd/72EMFwxs+jGS+ESG5I8fY4lKwlb2Vo2yYYW6L+dZqy2NK4wl9IGmmHWBieGKEa/PX9wRuQv3SQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB3438 X-Proofpoint-GUID: Ycd9U5FO_xuAMobxvzLvIJBP9z9wd24m X-Proofpoint-ORIG-GUID: Ycd9U5FO_xuAMobxvzLvIJBP9z9wd24m X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-04-20_06,2022-04-20_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 phishscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 suspectscore=0 mlxlogscore=999 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2204210051 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220421_022201_399930_30A4A651 X-CRM114-Status: GOOD ( 35.19 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgpPbiA0LzE5LzIyIDIyOjQwLCBNYXJrIFJ1dGxhbmQgd3JvdGU6Cj4gSGksCj4KPiBPbiBNb24s IEFwciAxOCwgMjAyMiBhdCAwOToyMjoxMVBNICswODAwLCBIZSBaaGUgd3JvdGU6Cj4+IFRoaXMg ZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBnaXZlbiBhZGRyZXNzIHJhbmdlIGNyb3NzZXMgZnJhbWUg Ym91bmRhcnkuCj4gSSBkb24ndCB0aGluayB0aGF0J3MgcXVpdGUgdHJ1ZSwgYmVjdWFzZSBhcm02 NCdzIHByb2NlZHVyZSBjYWxsIHN0YW5kYXJkCj4gKEFBUENTNjQpIGRvZXNuJ3QgZ2l2ZSB1cyBl bm91Z2ggaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHRoaXMgd2l0aG91dAo+IGFkZGl0aW9uYWwg bWV0YWRhdGEgZnJvbSB0aGUgY29tcGlsZXIsIHdoaWNoIHdlIHNpbXBseSBkb24ndCBoYXZlIHRv ZGF5Lgo+Cj4gU2luY2UgdGhlcmUncyBhIGxvdCBvZiBjb25mdXNpb24gaW4gdGhpcyBhcmVhLCBJ J3ZlIG1hZGUgYSBiaXQgb2YgYW4gaW5mbyBkdW1wCj4gYmVsb3csIGJlZm9yZSByZXZpZXcgb24g dGhlIHBhdGNoIGl0c2VsZiwgYnV0IFRCSCBJJ20gc3RydWdnbGluZyB0byBzZWUgdGhhdAo+IHRo aXMgaXMgYWxsIHRoYXQgdXNlZnVsLgoKVGhhbmtzIGZvciB0aGUgZXhoYXVzdGl2ZSBleHBsYW5h dGlvbiBhbmQgaW5mbyBkdW1wIGhlcmUuIEkndmUgcmVhZCB0aHJvdWdoIGFsbAp5b3VyIGNvbW1l bnRzLCB2ZXJ5IGhlbHBmdWwuCgo+Cj4gT24gYXJtNjQsIHdlIHVzZSBhIGNhbGxpbmcgY29udmVu dGlvbiBjYWxsZWQgQUFQQ1M2NCwgKGluIGZ1bGw6ICJQcm9jZWR1cmUgQ2FsbAo+IFN0YW5kYXJk IGZvciB0aGUgQXJtwq4gNjQtYml0IEFyY2hpdGVjdHVyZSAoQUFyY2g2NCkiKS4gVGhhdCdzIG1h aW50YWluZWQgYXQ6Cj4KPiAgIGh0dHBzOi8vZ2l0aHViLmNvbS9BUk0tc29mdHdhcmUvYWJpLWFh Cj4KPiAuLi4gd2l0aCB0aGUgbGF0ZXN0IHJlbGVhc2UgKGFzIG9mIHRvZGF5KSBhdDoKPgo+ICAg aHR0cHM6Ly9naXRodWIuY29tL0FSTS1zb2Z0d2FyZS9hYmktYWEvYmxvYi82MGE4ZWI4YzU1ZTk5 OWQ3NGRhYzVlMzY4ZmM5ZDdlMzZlMzhkZGE0L2FhcGNzNjQvYWFwY3M2NC5yc3QKPiAgIGh0dHBz Oi8vZ2l0aHViLmNvbS9BUk0tc29mdHdhcmUvYWJpLWFhL3JlbGVhc2VzL2Rvd25sb2FkLzIwMjJR MS9hYXBjczY0LnBkZgo+Cj4gSW4gQUFQQ1M2NCwgdGhlcmUgYXJlIHR3byByZWxhdGVkIGJ1dCBk aXN0aW5jdCB0aGluZ3MgdG8gYmUgYXdhcmUgb2Y6Cj4KPiAqIFRoZSAic3RhY2sgZnJhbWUiIG9m IGEgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBlbnRpcmUgY29udGlndW91cyByZWdpb24gb2YKPiAg IHN0YWNrIG1lbW9yeSB1c2VkIGJ5IGEgZnVuY3Rpb24uCj4KPiAqIFRoZSAiZnJhbWUgcmVjb3Jk Iiwgd2hpY2ggaXMgdGhlIHNhdmVkIEZQIGFuZCBMUiBwbGFjZWQgKnNvbWV3aGVyZSogd2l0aGlu Cj4gICB0aGUgZnVuY3Rpb24ncyBzdGFjayBmcmFtZS4gVGhlIEZQIHBvaW50cyBhdCB0aGUgbW9z dCByZWNlbnQgZnJhbWUgcmVjb3JkIG9uCj4gICB0aGUgc3RhY2ssIGFuZCBhdCBmdW5jdGlvbiBj YWxsIGJvdW5kYXJpZXMgcG9pbnRzIGF0IHRoZSBjYWxsZXIncyBmcmFtZQo+ICAgcmVjb3JkLgo+ Cj4gQUFQQ1M2NCBkb2Vzbid0IHNheSAqd2hlcmUqIGEgZnJhbWUgcmVjb3JkIGlzIHBsYWNlZCB3 aXRoaW4gYSBzdGFjayBmcmFtZSwgYW5kCj4gdGhlcmUgYXJlIHJlYXNvbnMgZm9yIGNvbXBpbGVy cyB0byBwbGFjZSBhYm92ZSBhbmQgYmVsb3cgaXQuIFNvIGluIGdlbnJhbCwgYQo+IGZ1bmN0aW9u c3Mgc3RhY2sgZnJhbWUgbG9va3MgbGlrZToKPiAgICAgICAKPiAgICAgICAgICs9PT09PT09PT0r Cj4gICAgICAgICB8ICBhYm92ZSAgfAo+ICAgICAgICAgfC0tLS0tLS0tLXwKPiAgICAgICAgIHwg RlAgfCBMUiB8Cj4gICAgICAgICB8LS0tLS0tLS0tfAo+ICAgICAgICAgfCAgYmVsb3cgIHwKPiAg ICAgICAgICs9PT09PT09PT0rCj4KPiAuLi4gd2hlcmUgdGhlICJhYm92ZSIgb3IgImJlbG93IiBw b3J0aW9ucyBtaWdodCBiZSBhbnkgc2l6ZSAoZXZlbiAwIGJ5dGVzKS4KPgo+IFR5cGljYWwgY29k ZSBnZW5lcmF0aW9uIHRvZGF5IG1lYW5zIGZvciBtb3N0IGZ1bmN0aW9ucyB0aGF0IHRoZSAiYmVs b3ciIHBvcnRpb24KPiBpcyAwIGJ5dGVzIGluIHNpemUsIGJ1dCB0aGlzIGlzIG5vdCBndWFyYW50 ZWVkLCBhbmQgZXZlbiB0b2RheSB0aGVyZSBhcmUgY2FzZXMKPiB3aGVyZSB0aGlzIGlzIG5vdCB0 cnVlLgo+Cj4gV2hlbiBvbmUgZnVuY3Rpb24gY2FsbHMgYW5vdGhlciB3aXRob3V0IGEgc3RhY2sg dHJhbnNpdGlvbiwgdGhhdCBsb29rcyBsaWtlOgo+Cj4gICAgICAgICArPT09PT09PT09KyBfX18K PiAgICAgICAgIHwgIGFib3ZlICB8ICAgIFwKPiAgICAgICAgIHwtLS0tLS0tLS18ICAgIHwKPiAg ICAgICwtPnwgRlAgfCBMUiB8ICAgICstLSBDYWxsZXIncyBzdGFjayBmcmFtZQo+ICAgICAgfCAg fC0tLS0tLS0tLXwgICAgfAo+ICAgICAgfCAgfCAgYmVsb3cgIHwgX19fLwo+ICAgICAgfCAgKz09 PT09PT09PSsgX19fIAo+ICAgICAgfCAgfCAgYWJvdmUgIHwgICAgXAo+ICAgICAgfCAgfC0tLS0t LS0tLXwgICAgfAo+ICAgICAgJy0tfCBGUCB8IExSIHwgICAgKy0tIENhbGxlZSdzIHN0YWNrIGZy YW1lCj4gICAgICAgICB8LS0tLS0tLS0tfCAgICB8Cj4gICAgICAgICB8ICBiZWxvdyAgfCBfX18v Cj4gICAgICAgICArPT09PT09PT09Kwo+Cj4gV2hlcmUgdGhlcmUncyBhIHN0YWNrIHRyYW5zaXRp b24sIGFuZCB0aGUgbmV3IHN0YWNrIGlzIGF0IGEgKmxvd2VyKiBWQSB0aGFuIHRoZQo+IG9sZCBz dGFjaywgdGhhdCBsb29rcyBsaWtlOgo+Cj4gICAgICAgICArPT09PT09PT09KyBfX18KPiAgICAg ICAgIHwgIGFib3ZlICB8ICAgIFwKPiAgICAgICAgIHwtLS0tLS0tLS18ICAgIHwKPiAgICAgICwt PnwgRlAgfCBMUiB8ICAgICstLSBDYWxsZXIncyBzdGFjayBmcmFtZQo+ICAgICAgfCAgfC0tLS0t LS0tLXwgICAgfAo+ICAgICAgfCAgfCAgYmVsb3cgIHwgX19fLwo+ICAgICAgfCAgKz09PT09PT09 PSsKPiAgICAgIHwgCj4gICAgICB8ICB+fn5+fn5+fn5+fgo+ICAgICAgfCAgQXJiaXRyYXJpbHkg Cj4gICAgICB8ICBsYXJnZSBnYXAsCj4gICAgICB8ICBwb3RlbnRpYWxseQo+ICAgICAgfCAgaW5j bHVkaW5nCj4gICAgICB8ICBvdGhlciBkYXRhCj4gICAgICB8ICB+fn5+fn5+fn5+fgo+ICAgICAg fAo+ICAgICAgfCAgKz09PT09PT09PSsgX19fIAo+ICAgICAgfCAgfCAgYWJvdmUgIHwgICAgXAo+ ICAgICAgfCAgfC0tLS0tLS0tLXwgICAgfAo+ICAgICAgJy0tfCBGUCB8IExSIHwgICAgKy0tIENh bGxlZSdzIHN0YWNrIGZyYW1lCj4gICAgICAgICB8LS0tLS0tLS0tfCAgICB8Cj4gICAgICAgICB8 ICBiZWxvdyAgfCBfX18vCj4gICAgICAgICArPT09PT09PT09Kwo+Cj4gV2hlcmUgdGhlcmUncyBh IHN0YWNrIHRyYW5zaXRpb24sIGFuZCB0aGUgbmV3IHN0YWNrIGlzIGF0IGEgKmhpZ2hlciogVkEg dGhhbgo+IHRoZSBvbGQgc3RhY2ssIHRoYXQgbG9va3MgbGlrZToKPgo+ICAgICAgICAgKz09PT09 PT09PSsgX19fIAo+ICAgICAgICAgfCAgYWJvdmUgIHwgICAgXAo+ICAgICAgICAgfC0tLS0tLS0t LXwgICAgfAo+ICAgICAgLC0tfCBGUCB8IExSIHwgICAgKy0tIENhbGxlZSdzIHN0YWNrIGZyYW1l Cj4gICAgICB8ICB8LS0tLS0tLS0tfCAgICB8Cj4gICAgICB8ICB8ICBiZWxvdyAgfCBfX18vCj4g ICAgICB8ICArPT09PT09PT09Kwo+ICAgICAgfAo+ICAgICAgfCAgfn5+fn5+fn5+fn4KPiAgICAg IHwgIEFyYml0cmFyaWx5IAo+ICAgICAgfCAgbGFyZ2UgZ2FwLAo+ICAgICAgfCAgcG90ZW50aWFs bHkKPiAgICAgIHwgIGluY2x1ZGluZwo+ICAgICAgfCAgb3RoZXIgZGF0YQo+ICAgICAgfCAgfn5+ fn5+fn5+fn4KPiAgICAgIHwgCj4gICAgICB8ICArPT09PT09PT09KyBfX18KPiAgICAgIHwgIHwg IGFib3ZlICB8ICAgIFwKPiAgICAgIHwgIHwtLS0tLS0tLS18ICAgIHwKPiAgICAgICctPnwgRlAg fCBMUiB8ICAgICstLSBDYWxsZXIncyBzdGFjayBmcmFtZQo+ICAgICAgICAgfC0tLS0tLS0tLXwg ICAgfAo+ICAgICAgICAgfCAgYmVsb3cgIHwgX19fLwo+ICAgICAgICAgKz09PT09PT09PSsKPiAg Cj4gSW4gYWxsIG9mIHRoZXNlIGNhc2VzLCB3ZSAqY2Fubm90KiBpZGVudGlmeSB0aGUgYm91bmRh cnkgYmV0d2VlbiB0aGUgdHdvIHN0YWNrCj4gZnJhbWVzLCB3ZSBjYW4gKm9ubHkqIGlkZW50aWZ5 IHdoZXJlIHNvbWV0aGluZyBvdmVybGFwcyBhIGZyYW1lIHJlY29yZC4gVGhhdAo+IG1pZ2h0IGl0 c2VsZiBiZSBhIGdvb2QgdGhpbmcsIGJ1dCBpdCdzIG5vdCB0aGUgc2FtZSB0aGluZyBhcyB3aGF0 IHlvdSBkZXNjcmliZQo+IGluIHRoZSBjb21taXQgbWVzc2FnZS4KPgo+PiBJdCBpcyBiYXNlZCBv biB0aGUgZXhpc3RpbmcgeDg2IGFsZ29yaXRobSwgYnV0IGltcGxlbWVudGVkIHZpYSBzdGFja3Ry YWNlLgo+PiBUaGlzIGNhbiBiZSB0ZXN0ZWQgYnkgVVNFUkNPUFlfU1RBQ0tfRlJBTUVfRlJPTSBh bmQKPj4gVVNFUkNPUFlfU1RBQ0tfRlJBTUVfVE8gaW4gbGtkdG0uCj4gQ2FuIHlvdSBwbGVhc2Ug ZXhwbGFpbiAqd2h5KiB3ZSdkIHdhbnQgdGhpcz8KCldlIGFyZSB0cnlpbmcgdG8gdXNlIHRoZSBo YXJkZW5lZCB1c2VyY29weSBmZWF0dXJlIG9uIGFybTY0IGhhcmR3YXJlIGFuZCBmb3VuZAp0aGF0 IHRoZSBsa2R0bSBjYW4gaGVscCB2YWxpZGF0ZSB0aGUgZmVhdHVyZS4gQnV0IFVTRVJDT1BZX1NU QUNLX0ZSQU1FX0ZST00vVE8KY2hlY2tzLCB3aGljaCB3ZXJlIG9yaWdpbmFsbHkgYWRkZWQgZm9y IHg4NiwgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIGFybTY0LiBJCnRob3VnaHQgaXQgd291bGQgYmUg Z29vZCBpZiB3ZSBjYW4gZW5oYW5jZSBzdWNoIGhhcmRlbmluZyBmb3IgYXJtNjQgYW5kIHRyaWVk IHRvCmFkZCB0aGUgYmFzaWMgZnJhbWUgY2hlY2sgbGlrZSBvbiB4ODYgaW4gdGhpcyBzZXJpZXMu IEFuZCB5ZXMsIHdpdGggYWxsIHRoZSBhcm02NCBkZXRhaWxzCnByb3ZpZGVkIGFib3ZlLCB0aGlz IHN1cmVseSBuZWVkcyB0byBiZSByZWNvbnNpZGVyZWQuCgo+Cj4gV2hvIGRvIHdlIGV4cGVjdCB0 byB1c2UgdGhpcz8KPgo+IFdoYXQncyB0aGUgb3ZlcmhlYWQgaW4gcHJhY3RpY2U/Cj4KPiBIYXMg dGhpcyBwYXNzZWQgYSBtb3JlIHJlYWxpc3RpYyBzdHJlc3MgdGVzdCAoZS5nLiBydW5uaW5nIHNv bWUgdXNlcnNwYWNlCj4gYXBwbGljYXRpb25zIHdoaWNoIG1ha2UgaW50ZW5zaXZlIHVzZSBvZiBj b3BpZXMgdG8vZnJvbSB0aGUga2VybmVsKT8KCkp1c3QgZGlkIHNvbWUgdmVyeSByb3VnaCBwZXJm b3JtYW5jZSBpbXBhY3QgdGVzdCBhcyBpbiB0aGUgb3RoZXIgcmVwbHksIEJ1dCBub3QKc3VyZSB3 aGF0IG5lZWRzIHRvIGJlIGRvbmUgZnVydGhlci4KClRoYW5rcywKWmhlCgo+Cj4+IFNpZ25lZC1v ZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Cj4+IC0tLQo+PiAgYXJjaC9hcm02 NC9LY29uZmlnICAgICAgICAgICAgICAgICAgIHwgIDEgKwo+PiAgYXJjaC9hcm02NC9pbmNsdWRl L2FzbS90aHJlYWRfaW5mby5oIHwgMTIgKysrKysKPj4gIGFyY2gvYXJtNjQva2VybmVsL3N0YWNr dHJhY2UuYyAgICAgICB8IDc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPj4gIDMgZmls ZXMgY2hhbmdlZCwgODUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAt LWdpdCBhL2FyY2gvYXJtNjQvS2NvbmZpZyBiL2FyY2gvYXJtNjQvS2NvbmZpZwo+PiBpbmRleCA1 N2M0Yzk5NTk2NWYuLjBmNTJhODNkNzc3MSAxMDA2NDQKPj4gLS0tIGEvYXJjaC9hcm02NC9LY29u ZmlnCj4+ICsrKyBiL2FyY2gvYXJtNjQvS2NvbmZpZwo+PiBAQCAtMTY1LDYgKzE2NSw3IEBAIGNv bmZpZyBBUk02NAo+PiAgCXNlbGVjdCBIQVZFX0FSQ0hfVFJBQ0VIT09LCj4+ICAJc2VsZWN0IEhB VkVfQVJDSF9UUkFOU1BBUkVOVF9IVUdFUEFHRQo+PiAgCXNlbGVjdCBIQVZFX0FSQ0hfVk1BUF9T VEFDSwo+PiArCXNlbGVjdCBIQVZFX0FSQ0hfV0lUSElOX1NUQUNLX0ZSQU1FUwo+PiAgCXNlbGVj dCBIQVZFX0FSTV9TTUNDQwo+PiAgCXNlbGVjdCBIQVZFX0FTTV9NT0RWRVJTSU9OUwo+PiAgCXNl bGVjdCBIQVZFX0VCUEZfSklUCj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNt L3RocmVhZF9pbmZvLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKPj4g aW5kZXggZTEzMTdiN2M0NTI1Li5iODM5YWQ5ZjIyNDggMTAwNjQ0Cj4+IC0tLSBhL2FyY2gvYXJt NjQvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaAo+PiArKysgYi9hcmNoL2FybTY0L2luY2x1ZGUv YXNtL3RocmVhZF9pbmZvLmgKPj4gQEAgLTU4LDYgKzU4LDE4IEBAIHZvaWQgYXJjaF9zZXR1cF9u ZXdfZXhlYyh2b2lkKTsKPj4gIHZvaWQgYXJjaF9yZWxlYXNlX3Rhc2tfc3RydWN0KHN0cnVjdCB0 YXNrX3N0cnVjdCAqdHNrKTsKPj4gIGludCBhcmNoX2R1cF90YXNrX3N0cnVjdChzdHJ1Y3QgdGFz a19zdHJ1Y3QgKmRzdCwKPj4gIAkJCQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnNyYyk7Cj4+ICsvKgo+ PiArICogV2Fsa3MgdXAgdGhlIHN0YWNrIGZyYW1lcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgc3Bl Y2lmaWVkIG9iamVjdCBpcwo+PiArICogZW50aXJlbHkgY29udGFpbmVkIGJ5IGEgc2luZ2xlIHN0 YWNrIGZyYW1lLgo+PiArICoKPj4gKyAqIFJldHVybnM6Cj4+ICsgKglHT09EX0ZSQU1FCWlmIHdp dGhpbiBhIGZyYW1lCj4gQXMgYWJvdmUsIHdlIGNhbm5vdCBpZGVudGlmeSB0aGlzIHJlbGlhYmx5 Lgo+Cj4+ICsgKglCQURfU1RBQ0sJaWYgcGxhY2VkIGFjcm9zcyBhIGZyYW1lIGJvdW5kYXJ5IChv ciBvdXRzaWRlIHN0YWNrKQo+PiArICoJTk9UX1NUQUNLCXVuYWJsZSB0byBkZXRlcm1pbmUgKG5v IGZyYW1lIHBvaW50ZXJzLCBldGMpCj4gT24gYXJtNjQgd2UgYWx3YXlzIGhhdmUgZnJhbWUgcG9p bnRlcnMgZW5hYmxlZCwgc28gdGhpcyBpcyBhIGNvbmZ1c2luZyBjb21tZW50Lgo+IElzIHRoaXMg YSBjb3B5LXBhc3RlIGZyb20geDg2Pwo+Cj4+ICsgKi8KPj4gK2ludCBhcmNoX3dpdGhpbl9zdGFj a19mcmFtZXMoY29uc3Qgdm9pZCAqIGNvbnN0IHN0YWNrLAo+PiArCQljb25zdCB2b2lkICogY29u c3Qgc3RhY2tlbmQsCj4+ICsJCWNvbnN0IHZvaWQgKm9iaiwgdW5zaWduZWQgbG9uZyBsZW4pOwo+ PiAgCj4+ICAjZW5kaWYKPj4gIAo+PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvc3Rh Y2t0cmFjZS5jIGIvYXJjaC9hcm02NC9rZXJuZWwvc3RhY2t0cmFjZS5jCj4+IGluZGV4IGU0MTAz ZTA4NTY4MS4uMjE5YjkwYzFkZTEyIDEwMDY0NAo+PiAtLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9z dGFja3RyYWNlLmMKPj4gKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvc3RhY2t0cmFjZS5jCj4+IEBA IC0xNDUsMTIgKzE0NSwxNyBAQCBOT0tQUk9CRV9TWU1CT0wodW53aW5kX2ZyYW1lKTsKPj4gIAo+ PiAgc3RhdGljIHZvaWQgbm90cmFjZSB3YWxrX3N0YWNrZnJhbWUoc3RydWN0IHRhc2tfc3RydWN0 ICp0c2ssCj4+ICAJCQkJICAgIHN0cnVjdCBzdGFja2ZyYW1lICpmcmFtZSwKPj4gLQkJCQkgICAg Ym9vbCAoKmZuKSh2b2lkICosIHVuc2lnbmVkIGxvbmcpLCB2b2lkICpkYXRhKQo+PiArCQkJCSAg ICBzdGFja190cmFjZV9jb25zdW1lX2ZuIGZuLCB2b2lkICpkYXRhKQo+PiAgewo+PiArCXN0cnVj dCBmcmFtZV9pbmZvIGZpOwo+PiArCj4+ICAJd2hpbGUgKDEpIHsKPj4gIAkJaW50IHJldDsKPj4g IAo+PiAtCQlpZiAoIWZuKGRhdGEsIGZyYW1lLT5wYykpCj4+ICsJCWZpLnBjID0gZnJhbWUtPnBj Owo+PiArCQlmaS5mcCA9IGZyYW1lLT5mcDsKPj4gKwkJZmkucHJldl9mcCA9IGZyYW1lLT5wcmV2 X2ZwOwo+PiArCQlpZiAoIWZuKGRhdGEsICZmaSkpCj4+ICAJCQlicmVhazsKPj4gIAkJcmV0ID0g dW53aW5kX2ZyYW1lKHRzaywgZnJhbWUpOwo+PiAgCQlpZiAocmV0IDwgMCkKPiBBcyBvbiBteSBw cmlvciBjb21tZW50LCBJIGRvbid0IHRoaW5rIHdlIHdhbnQgdG8gYWx0ZXIgb3VyIGdlbmVyaWMg c3RhY2sgd2Fsa2VyCj4gaW4gdGhpcyB3YXkuIElmIHdlIG5lZWQgbW9yZSBpbmZvLCBJJ2QgcHJl ZmVyIHRvIGV4cG9zZSB0aGlzIGluIGxheWVycywga2VlcGluZwo+IGFyY2hfc3RhY2tfd2FsayB1 bmNoYW5nZWQsIGJ1dCBoYXZpbmcgYW4gYXJtNjRfc3RhY2tfd2FsayB0aGF0IGNhbiBwYXNzIHNv bWUKPiBhcm02NC1zcGVjaWZpYyBkYXRhLgo+Cj4+IEBAIC0xNTksMTAgKzE2NCwxMCBAQCBzdGF0 aWMgdm9pZCBub3RyYWNlIHdhbGtfc3RhY2tmcmFtZShzdHJ1Y3QgdGFza19zdHJ1Y3QKPj4gKnRz aywKPj4gIH0KPj4gIE5PS1BST0JFX1NZTUJPTCh3YWxrX3N0YWNrZnJhbWUpOwo+PiAgCj4+IC1z dGF0aWMgYm9vbCBkdW1wX2JhY2t0cmFjZV9lbnRyeSh2b2lkICphcmcsIHVuc2lnbmVkIGxvbmcg d2hlcmUpCj4+ICtzdGF0aWMgYm9vbCBkdW1wX2JhY2t0cmFjZV9lbnRyeSh2b2lkICphcmcsIHN0 cnVjdCBmcmFtZV9pbmZvICpmaSkKPj4gIHsKPj4gIAljaGFyICpsb2dsdmwgPSBhcmc7Cj4+IC0J cHJpbnRrKCIlcyAlcFNiXG4iLCBsb2dsdmwsICh2b2lkICopd2hlcmUpOwo+PiArCXByaW50aygi JXMgJXBTYlxuIiwgbG9nbHZsLCAodm9pZCAqKWZpLT5wYyk7Cj4+ICAJcmV0dXJuIHRydWU7Cj4+ ICB9Cj4+ICAKPj4gQEAgLTIxMCwzICsyMTUsNjYgQEAgbm9pbmxpbmUgbm90cmFjZSB2b2lkIGFy Y2hfc3RhY2tfd2FsayhzdGFja190cmFjZV9jb25zdW1lX2ZuIGNvbnN1bWVfZW50cnksCj4+ICAK Pj4gIAl3YWxrX3N0YWNrZnJhbWUodGFzaywgJmZyYW1lLCBjb25zdW1lX2VudHJ5LCBjb29raWUp Owo+PiAgfQo+PiArCj4+ICtzdHJ1Y3QgYXJjaF9zdGFja19vYmplY3Qgewo+PiArCXVuc2lnbmVk IGxvbmcgc3RhcnQ7Cj4+ICsJdW5zaWduZWQgbG9uZyBsZW47Cj4+ICsJaW50IGZsYWc7Cj4gV2hh dCBpcyAiZmxhZyIgPwo+Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgYm9vbCBhcmNoX3N0YWNrX29i amVjdF9jaGVjayh2b2lkICpkYXRhLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZmkpCj4+ICt7Cj4+ICsJ c3RydWN0IGFyY2hfc3RhY2tfb2JqZWN0ICpvYmogPSAoc3RydWN0IGFyY2hfc3RhY2tfb2JqZWN0 ICopZGF0YTsKPj4gKwo+PiArCS8qIFNraXAgdGhlIGZyYW1lIG9mIGFyY2hfd2l0aGluX3N0YWNr X2ZyYW1lcyBpdHNlbGYgKi8KPj4gKwlpZiAoZmktPnByZXZfZnAgPT0gMCkKPj4gKwkJcmV0dXJu IHRydWU7Cj4gVGhhdCdzIG5vdCB3aGF0IHRoaXMgaXMgc2tpcHBpbmcuIFRoZSBmaXJzdCB0aW1l IGFyY2hfc3RhY2tfd2FsaygpIGlzIGNhbGxlZCwKPiBpdCBnaXZlcyB0aGUgUEMgb2YgaXRzIGNh bGxlciAoaS5lLiBhcmNoX3dpdGhpbl9zdGFja19mcmFtZXMpLCBhbmQgaXQncyBvd24KPiBzeW50 aGV0aWMgRlAuIFRoZSBuZXh0IHRpbWUgYXJvdW5kIGl0IGdpdmVzIHRoZSBGUCBvZiBpdCdzIGNh bGxlci4KPgo+PiArCj4+ICsJLyoKPj4gKwkgKiBsb3cgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4gaGlnaAo+PiArCSAqIFtzYXZlZCBicF1bc2F2ZWQgaXBd W2FyZ3NdW2xvY2FsIHZhcnNdW3NhdmVkIGJwXVtzYXZlZCBpcF0KPj4gKwkgKiAgICAgICAgICAg ICAgICAgICAgIF4tLS0tLS0tLS0tLS0tLS0tXgo+PiArCSAqICAgICAgICAgICAgICAgYWxsb3cg Y29waWVzIG9ubHkgd2l0aGluIGhlcmUKPj4gKwkgKi8KPiBUaGlzIGRpYWdyYW0gaXMgbm90IHZh bGlkIGZvciBhcm02NC4gVGhlcmUgaXMgbm8gImJwIiBvciAiaXAiLCBhbmQgZWFjaCBzdGFjawo+ IGZyYW1lIGNhbiBiZSBsYWlkIG91dCBtb3JlIGFyYml0cmFyaWx5IHJlbGF0aXZlIHRvIHRoZSBm cmFtZSByZWNvcmQuCj4KPj4gKwlpZiAob2JqLT5zdGFydCArIG9iai0+bGVuIDw9IGZpLT5mcCkg ewo+PiArCQlvYmotPmZsYWcgPSBvYmotPnN0YXJ0ID49Cj4+ICsJCQlmaS0+cHJldl9mcCArIDIg KiBzaXplb2Yodm9pZCAqKSA/Cj4+ICsJCQlHT09EX0ZSQU1FIDogQkFEX1NUQUNLOwo+IFRoaXMg Y2hlY2sgaXMgYnJva2VuIGluIHNldmVyYWwgd2F5cyBpZiB0aGVyZSdzIGEgc3RhY2sgdHJhbnNp dGlvbiwgc2luY2UgdGhlCj4gcGxhY2VtZW50IG9mIGZwIGFuZCBwcmV2X2ZwIGlzIGxlZ2l0aW1h dGVseSBhcmJpdHJhcnkuCj4KPiBUaGlzIHdvdWxkIGFsc28gYmUgYSBsb3QgY2xlYXJlciBpZiB5 b3UgYmFpbGVkIG91dCBlYXJseSByYXRoZXIgdGhhbiBuZXN0aW5nCj4gY2hlY2tzLgo+Cj4gVGhl IGJlc3QgdGhpbmcgeW91IGNhbiByZWFsaXN0aWNhbGx5IGRvIGlzIGNoZWNrIHRoYXQgdGhlIG9i amVjdCBmYWxscyBlbnRpcmVseQo+IHdpdGhpbiBhIGdpdmVuIHN0YWNrLCB0aGVuIGNoZWNrIHRo YXQgdGhhdCBubyBmcmFtZXMgaW50ZXJzZWN0IHRoZSBvYmplY3QuIFlvdQo+IGRvbid0IG5lZWQg cHJldl9mcCBmb3IgdGhhdCwgc2luY2UgeW91IGNhbiBqdXN0IGNoZWNrIGVhY2ggZnJhbWUgcmVj b3JkIGluCj4gdHVybiwgdGhlbiBiYWlsIG91dCBvbmNlIHRoZSBvYmplY3QgaGFzIGJlZW4gcGFz c2VkIChpLmUuIG9uY2Ugd2UndmUgaGl0IHRoZQo+IGNvcnJlY3Qgc3RhY2ssIGFuZCBlaXRoZXIg c2VlbiBhbiBGUCBhYm92ZSBpdCBvciB0cmFuc2l0aW9uZWQgdG8gYW5vdGhlcgo+IHN0YWNrKS4K Pgo+PiArCQlyZXR1cm4gZmFsc2U7Cj4+ICsJfSBlbHNlCj4+ICsJCXJldHVybiB0cnVlOwo+PiAr fQo+PiArCj4+ICsvKgo+PiArICogV2Fsa3MgdXAgdGhlIHN0YWNrIGZyYW1lcyB0byBtYWtlIHN1 cmUgdGhhdCB0aGUgc3BlY2lmaWVkIG9iamVjdCBpcwo+PiArICogZW50aXJlbHkgY29udGFpbmVk IGJ5IGEgc2luZ2xlIHN0YWNrIGZyYW1lLgo+PiArICoKPj4gKyAqIFJldHVybnM6Cj4+ICsgKglH T09EX0ZSQU1FCWlmIHdpdGhpbiBhIGZyYW1lCj4+ICsgKglCQURfU1RBQ0sJaWYgcGxhY2VkIGFj cm9zcyBhIGZyYW1lIGJvdW5kYXJ5IChvciBvdXRzaWRlIHN0YWNrKQo+PiArICoJTk9UX1NUQUNL CXVuYWJsZSB0byBkZXRlcm1pbmUgKG5vIGZyYW1lIHBvaW50ZXJzLCBldGMpCj4+ICsgKi8KPiBU aGlzIGlzIHRoZSBleGFjdCBzYW1lIGNvbW1lbnQgYXMgaW4gdGhlIGhlYWRlci4gTXkgY29tbWVu dHMgZnJvbSB0aGVyZSBhcHBseQo+IGhlcmUsIGFuZCBvbmUgb2YgdGhlIHR3byBzaG91bGQgZGlz YXBwZWFyLgo+Cj4+ICtpbnQgYXJjaF93aXRoaW5fc3RhY2tfZnJhbWVzKGNvbnN0IHZvaWQgKiBj b25zdCBzdGFjaywKPj4gKwkJY29uc3Qgdm9pZCAqIGNvbnN0IHN0YWNrZW5kLAo+PiArCQljb25z dCB2b2lkICpvYmosIHVuc2lnbmVkIGxvbmcgbGVuKQo+PiArewo+PiArI2lmIGRlZmluZWQoQ09O RklHX0ZSQU1FX1BPSU5URVIpCj4gQXMgYWJvdmUsIHRoaXMgKmNhbm5vdCogYmUgc2VsZWN0ZWQg b24gYXJtNjQuCj4KPj4gKwlzdHJ1Y3QgYXJjaF9zdGFja19vYmplY3Qgb2JqZWN0Owo+PiArCXN0 cnVjdCBwdF9yZWdzIHJlZ3M7Cj4+ICsKPj4gKwlpZiAoX19idWlsdGluX2ZyYW1lX2FkZHJlc3Mo MSkgPT0gMCkKPj4gKwkJcmV0dXJuIE5PVF9TVEFDSzsKPiBXaGVuIGRvIHlvdSBleHBlY3QgdGhp cyB0byBoYXBwZW4/Cj4KPj4gKwo+PiArCW9iamVjdC5zdGFydCA9ICh1bnNpZ25lZCBsb25nKW9i ajsKPj4gKwlvYmplY3QubGVuID0gbGVuOwo+PiArCW9iamVjdC5mbGFnID0gTk9UX1NUQUNLOwo+ PiArCj4+ICsJcmVncy5yZWdzWzI5XSA9ICh1NjQpX19idWlsdGluX2ZyYW1lX2FkZHJlc3MoMSk7 Cj4gTkFLIHRvIG1ha2luZyBhIHN5bnRoZXRpYyBwdF9yZWdzIGxpa2UgdGhpcy4gVGhhdCBhbiBh YnVzZSBvZiB0aGUgZXhpc3RpbmcgQVBJLAo+IGFuZCB5b3UgZG9uJ3QgbmVlZCB0byBkbyB0aGlz IGluIHRoZSBmaXJzdCBwbGFjZS4KPgo+PiArCj4+ICsJYXJjaF9zdGFja193YWxrKGFyY2hfc3Rh Y2tfb2JqZWN0X2NoZWNrLCAodm9pZCAqKSZvYmplY3QsIE5VTEwsICZyZWdzKTsKPiBBIHZvaWQg cG9pbnRlciBjYXN0IGlzIG5vdCBuZWNlc3NhcnkuCj4KPiBUaGFua3MsCj4gTWFyay4KPgo+PiAr Cj4+ICsJcmV0dXJuIG9iamVjdC5mbGFnOwo+PiArI2Vsc2UKPj4gKwlyZXR1cm4gTk9UX1NUQUNL Owo+PiArI2VuZGlmCj4+ICt9Cj4+IC0tIAo+PiAyLjI1LjEKPj4KCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcg bGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==