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 X-Spam-Level: X-Spam-Status: No, score=-15.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 090C0C433B4 for ; Tue, 20 Apr 2021 08:43:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BF79861168 for ; Tue, 20 Apr 2021 08:43:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230475AbhDTIne (ORCPT ); Tue, 20 Apr 2021 04:43:34 -0400 Received: from mail-bn7nam10on2040.outbound.protection.outlook.com ([40.107.92.40]:60129 "EHLO NAM10-BN7-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S229551AbhDTIne (ORCPT ); Tue, 20 Apr 2021 04:43:34 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ETo7w4upNJbTBoIse/BzgAbwdPQ0J/QRMkGdDtSwLdqhaT3RfqwukX3meWbFeq/3d+GlY5SdsagBHRzZFrl1DXrYMQKnIIJORDaQ2pyacCTj4FqbtvTB1/OodTn4pKyEeGAPFUao23VXXt9LXrqEtcAoztLmKJR7rXYPgvDUWpuLNiH3qSNmuhfrdgC3F7R+cwdhC15E0Nboh5T6+nRhTVbASCMkbEvSdUDsJn7+DLSXfJG69C6OHGIQ1gl3TF/FyouKhPI9MeiK1wXaXtkMvHISZ6UNrLZM5snzdtJOUavyhFNdjEOBxE+7zb19959U8BHw/8rdcrXbgXigfxJIbQ== 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-SenderADCheck; bh=2kqMc8XC4x8SdevsW1L+ueIpnjRcxOQb8RZL3eUtwfo=; b=apjoSF70bLdUyxCZItsStANdzuJ5fgh4k/07UHdkaiOjnPtNhCejpohbjHQ1C4cGp6DxLHUys2tTg9AJ0q7doCxLXOeupZ7bQusZ5I08Us7COrPWqgmlPoB0gcjSGvYNgOu8cIdbNT20WS0ehmHI/e6jJlWV2DC0o4kKPzRUo7kq+9Xbgf2ae3eVWm1TW0yqze1ttTc/wOYShRfQZ1pY2lGqf4kYW7clhR5KWkXERDO+mPIhWKo+MRkbl98DY+IsL/f2HdYs0NwjhIetHNVrwieojJi85AifrArVTTm4ZHH1juWndis9u6hUS9sn28Xt+qIafMEXCS7iv+zn6K7LhQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriversystems.onmicrosoft.com; s=selector2-windriversystems-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2kqMc8XC4x8SdevsW1L+ueIpnjRcxOQb8RZL3eUtwfo=; b=RBheptuMO3YJD0J1gEQKEuocXIRK5KEl1IQEuuQI5CG9K9KjL60sNORWGs43o3l8wdKR8NCFZinmOTl6sOikiMG+ThQTiyhcHfzQNs3TcFhNWmjh7IA56k7LGrYRfWYup91ANc2GWqMq+BAns1gJDx3pao9P2WUIpXqatFeaHQo= Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=windriver.com; Received: from MWHPR1101MB2351.namprd11.prod.outlook.com (2603:10b6:300:74::18) by MWHPR11MB1534.namprd11.prod.outlook.com (2603:10b6:301:c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16; Tue, 20 Apr 2021 08:43:01 +0000 Received: from MWHPR1101MB2351.namprd11.prod.outlook.com ([fe80::c156:455d:860e:ba87]) by MWHPR1101MB2351.namprd11.prod.outlook.com ([fe80::c156:455d:860e:ba87%4]) with mapi id 15.20.4042.024; Tue, 20 Apr 2021 08:43:01 +0000 Subject: Re: [PATCH 1/3] arm64: ptrace: Add is_syscall_success to handle compat To: Catalin Marinas Cc: oleg@redhat.com, will@kernel.org, linux-arm-kernel@lists.infradead.org, paul@paul-moore.com, eparis@redhat.com, linux-audit@redhat.com, linux-kernel@vger.kernel.org, Mark Rutland References: <20210416075533.7720-1-zhe.he@windriver.com> <20210416123322.GA23184@arm.com> From: He Zhe Message-ID: <9b5b340b-66ad-41c9-865e-32724e33a5b8@windriver.com> Date: Tue, 20 Apr 2021 16:42:53 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 In-Reply-To: <20210416123322.GA23184@arm.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Language: en-US X-Originating-IP: [60.247.85.82] X-ClientProxiedBy: HK2PR02CA0140.apcprd02.prod.outlook.com (2603:1096:202:16::24) To MWHPR1101MB2351.namprd11.prod.outlook.com (2603:10b6:300:74::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [128.224.162.175] (60.247.85.82) by HK2PR02CA0140.apcprd02.prod.outlook.com (2603:1096:202:16::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Tue, 20 Apr 2021 08:42:59 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0d969856-4959-4d01-81b8-08d903d84e64 X-MS-TrafficTypeDiagnostic: MWHPR11MB1534: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: etz2FHCbF0LKv8XF9PjlDW5mESVF5SMxwvsh6dIuUNxhdwJqfoHP4pG6EwTVIiZVC6lMgMgfJ8K7ZWsGCsC8Z6nMMb1QQMH3dvHaAzffMqCJIoFf6S+bY7EMEPIwpoLyAE5CXBXp86AyV1b9Fml8aisR0OyAiCNVGEAj3oL25g2fNTbBVElmCHRFqi8wi7uJnCVGMNYC0Tlqk6Lsyeh1AqvzzNItviNW/1r3y0G6U0lgjg9TQGl5sKh8dfgMoIDnTDTwqw5gaRH55y4QLTYHLmg5ZMhucmUcHci/b6HDtMYy7QOpxGqi0TvDH51ZZKvZwvMC7EndfQU5YozhuqC+9tAw3BTRphPlpynCzrY8Mde804E7TKimEv+6+LZVBEP8TVlv7QagNipmruMrPruzwemmnZNmUNRnWtgJxxock4lJpzV6OL5K+h0nbr5fpgq5vCJEvB0Nwq0gDD5mhjKsC8GU/jAHmBoJoHaVnyl2fdFmWYwJJ24WWSRgBa/GTQZUmSQJWMfQxhxjNhZz3GtkTRzoWnArIfrAM2i9HQJfbM1oYndgLq10xVv/RpJFxCjwr0rsr2HtghyFSL0RL40HapgxYZ9t3PBPMaPc/KxIK5bGWqjbyIZbu+QzoVAxTSVBVRCHJ33ruEQl3QNW4JT+tlDhRlFTsnTkwu0FlHeQBEacapQBvn55b4i8647nRkEPzBoP2dYIDyo/ucwRqafOuJuUITFul4W+NIKKMeNAw7NsmDeLlKRxxj5aUU8P4aVW X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR1101MB2351.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(376002)(346002)(39850400004)(366004)(396003)(86362001)(31696002)(38350700002)(66556008)(6706004)(53546011)(6666004)(36756003)(2906002)(6916009)(83380400001)(5660300002)(38100700002)(31686004)(8676002)(66946007)(478600001)(4326008)(186003)(8936002)(956004)(316002)(2616005)(16576012)(16526019)(26005)(6486002)(66476007)(52116002)(78286007)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?eDgzZ2lLcndsNll1WnBkQm5aMTRmdW5qa1Jrc3F5MFJHRkJwR0ZoNTllRWlX?= =?utf-8?B?T0ZiWVUwQWJlYlp4L1NkTk9tZ2c5SHlpZ1FqNVZDQmpmQ1B6b0RVTFB5b3Mr?= =?utf-8?B?K1hvaGZ1S002WGptUERxUXlwWVNJdTVsbzlqZTRvWHdzUkxYVHdmN1Nla0JZ?= =?utf-8?B?dDNOcXFjVnE3WWV1ZXprcHlxVkhVN3Y1aGFGaFdDZTI5cG41THRDZmZUTVV5?= =?utf-8?B?cHlLUXBHZHVKaElHdjMzMWJNY081Yk5GVm9Mc3dtUmx2UnhPbGhzZGdTNFdF?= =?utf-8?B?WFpyME5WY0ZsQ1dLRFlQVzlZOFhtSk1EcXNLRUJaQnkzRC9jK0Z2UEYrelpF?= =?utf-8?B?aXo5MDNteVdpR0VxUlo1ZXFEajRUNGN2SDc0U2E4QnE1bGxJNVFaS0tkanBR?= =?utf-8?B?VnhHY2s2L0tPTkd4YmNmNnNwYy9UUXJ0dUVRNVc0UTVtYkYzYXlTcW9iV1Zt?= =?utf-8?B?TkdCVGIwTTBVaUNjT2tHWUJickM3RlIwSjdLbFI2RUxWRE1qTGc1UUtVOFQr?= =?utf-8?B?N3pGMy9QZDRUVVZTaEIzQmYzeEVEMndhbzhFLzZ1TzBTTzlwM2w0NzVHNHpu?= =?utf-8?B?Y0wrQUdVNC9zN3FjNXZoTWYvQWFVR2RYRzc0R2s0bVVub3NWSWN6cFVpYmVL?= =?utf-8?B?U1huTm5UU3Zzb3EzbzFkL0lqcVJzNzd3L1pWczZjbFUvSFArZWp2cHYwdjAr?= =?utf-8?B?OHFCbXJOd0JoclI3bjhTbHRSM0d1ZDlGbUYvVVpBSG1rWEJLNEttVnFMRVF5?= =?utf-8?B?eTFRR2R5M2ZpSTFSb0o0TGxHb3FRNndsUkpJMlUzdWdnRnczN0JuMnJwNkdD?= =?utf-8?B?bGFvV0NvVWtIZjJ4azBsV3N2cmNjUVcxNG9Vb1NVUVpibUNFWVpMb3dYMkFv?= =?utf-8?B?c3hnQlY4NXVSYm5Td0VYWjBCSUNMODlVbXJwNGNYaEVZSEVxNklkNGpNSFlh?= =?utf-8?B?bWdoZ1ZvWklhRUdCOTNVbms1Z281aFhVa1FFaVFhSXFWaUd2QXZtdTZxRnhZ?= =?utf-8?B?bVVCQUlOKzRZVU1ZaWJpeU11MTFlZG1EWkh1c2FzelJXRUd1Ylp6eTNhN3lZ?= =?utf-8?B?S09acjhFNVFpYjZsUmJjcUFoWVQ4a1dpc2ZoamZWWjY0RElUK21PWldYMS8y?= =?utf-8?B?dmQvSlBrNm91Rjk3THRBNE5MRUtQc2dKVVd4Z2FRVFpTdGdyRm1kTk5mSGNi?= =?utf-8?B?b2J1NWc3cTArM2tOQkQrME0weGpESCtJVzBBL1oyVmZPQStZU3N6ck9yNnNL?= =?utf-8?B?cjk0K1JZOVlUdS9WQ3VleU0xKzNIeWpvUFc3ODF2ZXhiNCszdkUwQlhQcS9G?= =?utf-8?B?aWUzMFludXA3UUxGam03dHZ1U3FGN0VSM0NiRXc2bzF1ZG1HRGFXSHFrUW9j?= =?utf-8?B?eUV3TUNWUWNTeGhES0xrSEcrZFdlVGV2aG80YVU4Rmt4QkNLbVUrYldUOUwx?= =?utf-8?B?QWwvMjBZSFowdTQzMXQySXNuYk5GVXRBalpjYUdmYitVMEhUMlZyUTBXaEoz?= =?utf-8?B?dTRRL3lqL2djSm90OHZFYmhFOVZ0c05zZnNKbHdOR0t6RG5TVmN4MXhrcEk5?= =?utf-8?B?QnZiQllsYnNwRjREUkxmUnFCam1rQ0pvZzdySWdMVC9vQUFXZjFEUmZqNWtG?= =?utf-8?B?eFcxUnZIRjU0c3Q2N1ZwU1N6NjE5aWZ2YU45NVgyWnRFaDJhUVFjaHJMYkd2?= =?utf-8?B?N2YyNTNwODFUMEEvRGMzSElucmYvWHFTOGVmd0JsNjdMYVJ5NWtpZDhNRk1K?= =?utf-8?Q?V3gtxbZQRIAfc9F15d4pHpWbDndnLbJM9b6u3Ag?= X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0d969856-4959-4d01-81b8-08d903d84e64 X-MS-Exchange-CrossTenant-AuthSource: MWHPR1101MB2351.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2021 08:43:01.4823 (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: tbK8izOq5ULYEx+5sR75RnS1mhAWn/NkhCDw+9nWbnsDXGXr/RtsmxgaZLVT4u92c/rwp/uQ77zJOcxY5h/Log== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1534 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 4/16/21 8:33 PM, Catalin Marinas wrote: > On Fri, Apr 16, 2021 at 03:55:31PM +0800, He Zhe wrote: >> The general version of is_syscall_success does not handle 32-bit >> compatible case, which would cause 32-bit negative return code to be >> recoganized as a positive number later and seen as a "success". >> >> Since is_compat_thread is defined in compat.h, implementing >> is_syscall_success in ptrace.h would introduce build failure due to >> recursive inclusion of some basic headers like mutex.h. We put the >> implementation to ptrace.c >> >> Signed-off-by: He Zhe >> --- >> arch/arm64/include/asm/ptrace.h | 3 +++ >> arch/arm64/kernel/ptrace.c | 10 ++++++++++ >> 2 files changed, 13 insertions(+) >> >> diff --git a/arch/arm64/include/asm/ptrace.h b/arch/arm64/include/asm/ptrace.h >> index e58bca832dff..3c415e9e5d85 100644 >> --- a/arch/arm64/include/asm/ptrace.h >> +++ b/arch/arm64/include/asm/ptrace.h >> @@ -328,6 +328,9 @@ static inline void regs_set_return_value(struct pt_regs *regs, unsigned long rc) >> regs->regs[0] = rc; >> } >> >> +extern inline int is_syscall_success(struct pt_regs *regs); >> +#define is_syscall_success(regs) is_syscall_success(regs) >> + >> /** >> * regs_get_kernel_argument() - get Nth function argument in kernel >> * @regs: pt_regs of that context >> diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c >> index 170f42fd6101..3266201f8c60 100644 >> --- a/arch/arm64/kernel/ptrace.c >> +++ b/arch/arm64/kernel/ptrace.c >> @@ -1909,3 +1909,13 @@ int valid_user_regs(struct user_pt_regs *regs, struct task_struct *task) >> else >> return valid_native_regs(regs); >> } >> + >> +inline int is_syscall_success(struct pt_regs *regs) >> +{ >> + unsigned long val = regs->regs[0]; >> + >> + if (is_compat_thread(task_thread_info(current))) >> + val = sign_extend64(val, 31); >> + >> + return !IS_ERR_VALUE(val); >> +} > It's better to use compat_user_mode(regs) here instead of > is_compat_thread(). It saves us from worrying whether regs are for the > current context. Thanks. I'll use this for v2. > > I think we should change regs_return_value() instead. This function > seems to be called from several other places and it has the same > potential problems if called on compat pt_regs. IMHO, now that we have had specific function, syscall_get_return_value, to get syscall return code, we might as well use it. regs_return_value may be left for where we want internal return code. I found such places below and haven't found other places that syscall sign extension is concerned about. kernel/test_kprobes.c kernel/trace/trace_kprobe.c samples/kprobes/kretprobe_example.c Regards, Zhe > 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 X-Spam-Level: X-Spam-Status: No, score=-15.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7A177C433ED for ; Tue, 20 Apr 2021 11:58:55 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id BD7B4613BF for ; Tue, 20 Apr 2021 11:58:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BD7B4613BF Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=windriver.com Authentication-Results: mail.kernel.org; spf=tempfail smtp.mailfrom=linux-audit-bounces@redhat.com Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-439-ti0vpZawPuytWVYMhITMbw-1; Tue, 20 Apr 2021 07:58:51 -0400 X-MC-Unique: ti0vpZawPuytWVYMhITMbw-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id EF00B8030A0; Tue, 20 Apr 2021 11:58:47 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D2B1419D9B; Tue, 20 Apr 2021 11:58:47 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id A41C444A5C; Tue, 20 Apr 2021 11:58:47 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 13K8hdYG003624 for ; Tue, 20 Apr 2021 04:43:39 -0400 Received: by smtp.corp.redhat.com (Postfix) id ACEA620AE854; Tue, 20 Apr 2021 08:43:39 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A64AF20AE853 for ; Tue, 20 Apr 2021 08:43:37 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6673F8026FA for ; Tue, 20 Apr 2021 08:43:37 +0000 (UTC) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2075.outbound.protection.outlook.com [40.107.92.75]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-158-38acdOTDNX2ltpdbe9DuTg-1; Tue, 20 Apr 2021 04:43:03 -0400 X-MC-Unique: 38acdOTDNX2ltpdbe9DuTg-1 Received: from MWHPR1101MB2351.namprd11.prod.outlook.com (2603:10b6:300:74::18) by MWHPR11MB1534.namprd11.prod.outlook.com (2603:10b6:301:c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16; Tue, 20 Apr 2021 08:43:01 +0000 Received: from MWHPR1101MB2351.namprd11.prod.outlook.com ([fe80::c156:455d:860e:ba87]) by MWHPR1101MB2351.namprd11.prod.outlook.com ([fe80::c156:455d:860e:ba87%4]) with mapi id 15.20.4042.024; Tue, 20 Apr 2021 08:43:01 +0000 Subject: Re: [PATCH 1/3] arm64: ptrace: Add is_syscall_success to handle compat To: Catalin Marinas References: <20210416075533.7720-1-zhe.he@windriver.com> <20210416123322.GA23184@arm.com> From: He Zhe Message-ID: <9b5b340b-66ad-41c9-865e-32724e33a5b8@windriver.com> Date: Tue, 20 Apr 2021 16:42:53 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 In-Reply-To: <20210416123322.GA23184@arm.com> X-Originating-IP: [60.247.85.82] X-ClientProxiedBy: HK2PR02CA0140.apcprd02.prod.outlook.com (2603:1096:202:16::24) To MWHPR1101MB2351.namprd11.prod.outlook.com (2603:10b6:300:74::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [128.224.162.175] (60.247.85.82) by HK2PR02CA0140.apcprd02.prod.outlook.com (2603:1096:202:16::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Tue, 20 Apr 2021 08:42:59 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0d969856-4959-4d01-81b8-08d903d84e64 X-MS-TrafficTypeDiagnostic: MWHPR11MB1534: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0 X-Microsoft-Antispam-Message-Info: etz2FHCbF0LKv8XF9PjlDW5mESVF5SMxwvsh6dIuUNxhdwJqfoHP4pG6EwTVIiZVC6lMgMgfJ8K7ZWsGCsC8Z6nMMb1QQMH3dvHaAzffMqCJIoFf6S+bY7EMEPIwpoLyAE5CXBXp86AyV1b9Fml8aisR0OyAiCNVGEAj3oL25g2fNTbBVElmCHRFqi8wi7uJnCVGMNYC0Tlqk6Lsyeh1AqvzzNItviNW/1r3y0G6U0lgjg9TQGl5sKh8dfgMoIDnTDTwqw5gaRH55y4QLTYHLmg5ZMhucmUcHci/b6HDtMYy7QOpxGqi0TvDH51ZZKvZwvMC7EndfQU5YozhuqC+9tAw3BTRphPlpynCzrY8Mde804E7TKimEv+6+LZVBEP8TVlv7QagNipmruMrPruzwemmnZNmUNRnWtgJxxock4lJpzV6OL5K+h0nbr5fpgq5vCJEvB0Nwq0gDD5mhjKsC8GU/jAHmBoJoHaVnyl2fdFmWYwJJ24WWSRgBa/GTQZUmSQJWMfQxhxjNhZz3GtkTRzoWnArIfrAM2i9HQJfbM1oYndgLq10xVv/RpJFxCjwr0rsr2HtghyFSL0RL40HapgxYZ9t3PBPMaPc/KxIK5bGWqjbyIZbu+QzoVAxTSVBVRCHJ33ruEQl3QNW4JT+tlDhRlFTsnTkwu0FlHeQBEacapQBvn55b4i8647nRkEPzBoP2dYIDyo/ucwRqafOuJuUITFul4W+NIKKMeNAw7NsmDeLlKRxxj5aUU8P4aVW X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR1101MB2351.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(376002)(346002)(39850400004)(366004)(396003)(86362001)(31696002)(38350700002)(66556008)(6706004)(53546011)(6666004)(36756003)(2906002)(6916009)(83380400001)(5660300002)(38100700002)(31686004)(8676002)(66946007)(478600001)(4326008)(186003)(8936002)(956004)(316002)(2616005)(16576012)(16526019)(26005)(6486002)(66476007)(52116002)(78286007)(43740500002)(45980500001); DIR:OUT; SFP:1101 X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?eDgzZ2lLcndsNll1WnBkQm5aMTRmdW5qa1Jrc3F5MFJHRkJwR0ZoNTllRWlX?= =?utf-8?B?T0ZiWVUwQWJlYlp4L1NkTk9tZ2c5SHlpZ1FqNVZDQmpmQ1B6b0RVTFB5b3Mr?= =?utf-8?B?K1hvaGZ1S002WGptUERxUXlwWVNJdTVsbzlqZTRvWHdzUkxYVHdmN1Nla0JZ?= =?utf-8?B?dDNOcXFjVnE3WWV1ZXprcHlxVkhVN3Y1aGFGaFdDZTI5cG41THRDZmZUTVV5?= =?utf-8?B?cHlLUXBHZHVKaElHdjMzMWJNY081Yk5GVm9Mc3dtUmx2UnhPbGhzZGdTNFdF?= =?utf-8?B?WFpyME5WY0ZsQ1dLRFlQVzlZOFhtSk1EcXNLRUJaQnkzRC9jK0Z2UEYrelpF?= =?utf-8?B?aXo5MDNteVdpR0VxUlo1ZXFEajRUNGN2SDc0U2E4QnE1bGxJNVFaS0tkanBR?= =?utf-8?B?VnhHY2s2L0tPTkd4YmNmNnNwYy9UUXJ0dUVRNVc0UTVtYkYzYXlTcW9iV1Zt?= =?utf-8?B?TkdCVGIwTTBVaUNjT2tHWUJickM3RlIwSjdLbFI2RUxWRE1qTGc1UUtVOFQr?= =?utf-8?B?N3pGMy9QZDRUVVZTaEIzQmYzeEVEMndhbzhFLzZ1TzBTTzlwM2w0NzVHNHpu?= =?utf-8?B?Y0wrQUdVNC9zN3FjNXZoTWYvQWFVR2RYRzc0R2s0bVVub3NWSWN6cFVpYmVL?= =?utf-8?B?U1huTm5UU3Zzb3EzbzFkL0lqcVJzNzd3L1pWczZjbFUvSFArZWp2cHYwdjAr?= =?utf-8?B?OHFCbXJOd0JoclI3bjhTbHRSM0d1ZDlGbUYvVVpBSG1rWEJLNEttVnFMRVF5?= =?utf-8?B?eTFRR2R5M2ZpSTFSb0o0TGxHb3FRNndsUkpJMlUzdWdnRnczN0JuMnJwNkdD?= =?utf-8?B?bGFvV0NvVWtIZjJ4azBsV3N2cmNjUVcxNG9Vb1NVUVpibUNFWVpMb3dYMkFv?= =?utf-8?B?c3hnQlY4NXVSYm5Td0VYWjBCSUNMODlVbXJwNGNYaEVZSEVxNklkNGpNSFlh?= =?utf-8?B?bWdoZ1ZvWklhRUdCOTNVbms1Z281aFhVa1FFaVFhSXFWaUd2QXZtdTZxRnhZ?= =?utf-8?B?bVVCQUlOKzRZVU1ZaWJpeU11MTFlZG1EWkh1c2FzelJXRUd1Ylp6eTNhN3lZ?= =?utf-8?B?S09acjhFNVFpYjZsUmJjcUFoWVQ4a1dpc2ZoamZWWjY0RElUK21PWldYMS8y?= =?utf-8?B?dmQvSlBrNm91Rjk3THRBNE5MRUtQc2dKVVd4Z2FRVFpTdGdyRm1kTk5mSGNi?= =?utf-8?B?b2J1NWc3cTArM2tOQkQrME0weGpESCtJVzBBL1oyVmZPQStZU3N6ck9yNnNL?= =?utf-8?B?cjk0K1JZOVlUdS9WQ3VleU0xKzNIeWpvUFc3ODF2ZXhiNCszdkUwQlhQcS9G?= =?utf-8?B?aWUzMFludXA3UUxGam03dHZ1U3FGN0VSM0NiRXc2bzF1ZG1HRGFXSHFrUW9j?= =?utf-8?B?eUV3TUNWUWNTeGhES0xrSEcrZFdlVGV2aG80YVU4Rmt4QkNLbVUrYldUOUwx?= =?utf-8?B?QWwvMjBZSFowdTQzMXQySXNuYk5GVXRBalpjYUdmYitVMEhUMlZyUTBXaEoz?= =?utf-8?B?dTRRL3lqL2djSm90OHZFYmhFOVZ0c05zZnNKbHdOR0t6RG5TVmN4MXhrcEk5?= =?utf-8?B?QnZiQllsYnNwRjREUkxmUnFCam1rQ0pvZzdySWdMVC9vQUFXZjFEUmZqNWtG?= =?utf-8?B?eFcxUnZIRjU0c3Q2N1ZwU1N6NjE5aWZ2YU45NVgyWnRFaDJhUVFjaHJMYkd2?= =?utf-8?B?N2YyNTNwODFUMEEvRGMzSElucmYvWHFTOGVmd0JsNjdMYVJ5NWtpZDhNRk1K?= =?utf-8?Q?V3gtxbZQRIAfc9F15d4pHpWbDndnLbJM9b6u3Ag?= X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0d969856-4959-4d01-81b8-08d903d84e64 X-MS-Exchange-CrossTenant-AuthSource: MWHPR1101MB2351.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2021 08:43:01.4823 (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: tbK8izOq5ULYEx+5sR75RnS1mhAWn/NkhCDw+9nWbnsDXGXr/RtsmxgaZLVT4u92c/rwp/uQ77zJOcxY5h/Log== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1534 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: linux-audit@redhat.com X-Mailman-Approved-At: Tue, 20 Apr 2021 07:58:35 -0400 Cc: Mark Rutland , oleg@redhat.com, linux-kernel@vger.kernel.org, linux-audit@redhat.com, will@kernel.org, linux-arm-kernel@lists.infradead.org X-BeenThere: linux-audit@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Linux Audit Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-audit-bounces@redhat.com Errors-To: linux-audit-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=linux-audit-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit On 4/16/21 8:33 PM, Catalin Marinas wrote: > On Fri, Apr 16, 2021 at 03:55:31PM +0800, He Zhe wrote: >> The general version of is_syscall_success does not handle 32-bit >> compatible case, which would cause 32-bit negative return code to be >> recoganized as a positive number later and seen as a "success". >> >> Since is_compat_thread is defined in compat.h, implementing >> is_syscall_success in ptrace.h would introduce build failure due to >> recursive inclusion of some basic headers like mutex.h. We put the >> implementation to ptrace.c >> >> Signed-off-by: He Zhe >> --- >> arch/arm64/include/asm/ptrace.h | 3 +++ >> arch/arm64/kernel/ptrace.c | 10 ++++++++++ >> 2 files changed, 13 insertions(+) >> >> diff --git a/arch/arm64/include/asm/ptrace.h b/arch/arm64/include/asm/ptrace.h >> index e58bca832dff..3c415e9e5d85 100644 >> --- a/arch/arm64/include/asm/ptrace.h >> +++ b/arch/arm64/include/asm/ptrace.h >> @@ -328,6 +328,9 @@ static inline void regs_set_return_value(struct pt_regs *regs, unsigned long rc) >> regs->regs[0] = rc; >> } >> >> +extern inline int is_syscall_success(struct pt_regs *regs); >> +#define is_syscall_success(regs) is_syscall_success(regs) >> + >> /** >> * regs_get_kernel_argument() - get Nth function argument in kernel >> * @regs: pt_regs of that context >> diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c >> index 170f42fd6101..3266201f8c60 100644 >> --- a/arch/arm64/kernel/ptrace.c >> +++ b/arch/arm64/kernel/ptrace.c >> @@ -1909,3 +1909,13 @@ int valid_user_regs(struct user_pt_regs *regs, struct task_struct *task) >> else >> return valid_native_regs(regs); >> } >> + >> +inline int is_syscall_success(struct pt_regs *regs) >> +{ >> + unsigned long val = regs->regs[0]; >> + >> + if (is_compat_thread(task_thread_info(current))) >> + val = sign_extend64(val, 31); >> + >> + return !IS_ERR_VALUE(val); >> +} > It's better to use compat_user_mode(regs) here instead of > is_compat_thread(). It saves us from worrying whether regs are for the > current context. Thanks. I'll use this for v2. > > I think we should change regs_return_value() instead. This function > seems to be called from several other places and it has the same > potential problems if called on compat pt_regs. IMHO, now that we have had specific function, syscall_get_return_value, to get syscall return code, we might as well use it. regs_return_value may be left for where we want internal return code. I found such places below and haven't found other places that syscall sign extension is concerned about. kernel/test_kprobes.c kernel/trace/trace_kprobe.c samples/kprobes/kretprobe_example.c Regards, Zhe > -- Linux-audit mailing list Linux-audit@redhat.com https://listman.redhat.com/mailman/listinfo/linux-audit 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 X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0CA79C433B4 for ; Tue, 20 Apr 2021 08:45:38 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 515C061104 for ; Tue, 20 Apr 2021 08:45:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 515C061104 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=windriver.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=2xJUnFMu5pxrUcrzvdP9gk6HpsWt5wQW35hAvfu0N8E=; b=HLhBIMZCc8O/snlpe/F2m5zaB 7F3pAS5tF2xttK3LXcPxUPKG3kQf3D8yxOQfAntA4v6KNEf4Dkt89UbWbcYbu8/N7aAuZoWHRz3rA g5UNfC9Q3cfMPiFatFz8Dw9EH4pNYSk8T9VI1Ea8llK7vC6ST6/kt3G9kW5zqg/sR93KMymLSPPXW MEVu/+wajfUbH8yP0rm4Ls3coTwjrN5HZ70cN6+VGsMV6nHloxY6w1/xPUQXoolLLrXMp+6XxBnpd kpmgUHOQVp9u81/B5XcmXFc7onsu2SeZw9HQgtD0xsFaq+vcRscIyFn3ijC79raCt+gU4+mqokwU+ rQeX3pE/A==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lYlyT-00BcLT-Hz; Tue, 20 Apr 2021 08:43:13 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lYlyP-00BcL7-Mh for linux-arm-kernel@desiato.infradead.org; Tue, 20 Apr 2021 08:43:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=MIME-Version: Content-Transfer-Encoding:Content-Type:In-Reply-To:Date:Message-ID:From: References:Cc:To:Subject:Sender:Reply-To:Content-ID:Content-Description; bh=2kqMc8XC4x8SdevsW1L+ueIpnjRcxOQb8RZL3eUtwfo=; b=lxAdINqrb7qKLbM24G7s8FBcXy co7zMJf5AZJYNWHv9W2rPCy0Tfd3WAcC8znrXzjIuxcvgsHE0YSmXjQzL6/u536niJcZA5ngUvmgR qJyC4F4pvhYX28CoW+kpnkOZAkQK0qWCYq1hQn4amuPDRxhCZwLl0ihuMn5XDisdhS4bTJ7Tbe06P JWMRcO2oHm3CpYqC/ZNpsivQhFRxAUBKc4pLrhErtqtKkbDRqJioXnSDGMyBCCk7pzFNTOLZhuekf VA8lLBek5intzQg6PSJPIPs1kHSqArox3PTp6s2USdgL9hI49VWNJWrH3DKnoeRC7WMfsiLDq1jM6 YSRpYO2A==; Received: from mail-bn7nam10on2072.outbound.protection.outlook.com ([40.107.92.72] helo=NAM10-BN7-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lYlyK-00Bw19-8j for linux-arm-kernel@lists.infradead.org; Tue, 20 Apr 2021 08:43:08 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ETo7w4upNJbTBoIse/BzgAbwdPQ0J/QRMkGdDtSwLdqhaT3RfqwukX3meWbFeq/3d+GlY5SdsagBHRzZFrl1DXrYMQKnIIJORDaQ2pyacCTj4FqbtvTB1/OodTn4pKyEeGAPFUao23VXXt9LXrqEtcAoztLmKJR7rXYPgvDUWpuLNiH3qSNmuhfrdgC3F7R+cwdhC15E0Nboh5T6+nRhTVbASCMkbEvSdUDsJn7+DLSXfJG69C6OHGIQ1gl3TF/FyouKhPI9MeiK1wXaXtkMvHISZ6UNrLZM5snzdtJOUavyhFNdjEOBxE+7zb19959U8BHw/8rdcrXbgXigfxJIbQ== 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-SenderADCheck; bh=2kqMc8XC4x8SdevsW1L+ueIpnjRcxOQb8RZL3eUtwfo=; b=apjoSF70bLdUyxCZItsStANdzuJ5fgh4k/07UHdkaiOjnPtNhCejpohbjHQ1C4cGp6DxLHUys2tTg9AJ0q7doCxLXOeupZ7bQusZ5I08Us7COrPWqgmlPoB0gcjSGvYNgOu8cIdbNT20WS0ehmHI/e6jJlWV2DC0o4kKPzRUo7kq+9Xbgf2ae3eVWm1TW0yqze1ttTc/wOYShRfQZ1pY2lGqf4kYW7clhR5KWkXERDO+mPIhWKo+MRkbl98DY+IsL/f2HdYs0NwjhIetHNVrwieojJi85AifrArVTTm4ZHH1juWndis9u6hUS9sn28Xt+qIafMEXCS7iv+zn6K7LhQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriversystems.onmicrosoft.com; s=selector2-windriversystems-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2kqMc8XC4x8SdevsW1L+ueIpnjRcxOQb8RZL3eUtwfo=; b=RBheptuMO3YJD0J1gEQKEuocXIRK5KEl1IQEuuQI5CG9K9KjL60sNORWGs43o3l8wdKR8NCFZinmOTl6sOikiMG+ThQTiyhcHfzQNs3TcFhNWmjh7IA56k7LGrYRfWYup91ANc2GWqMq+BAns1gJDx3pao9P2WUIpXqatFeaHQo= Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=windriver.com; Received: from MWHPR1101MB2351.namprd11.prod.outlook.com (2603:10b6:300:74::18) by MWHPR11MB1534.namprd11.prod.outlook.com (2603:10b6:301:c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16; Tue, 20 Apr 2021 08:43:01 +0000 Received: from MWHPR1101MB2351.namprd11.prod.outlook.com ([fe80::c156:455d:860e:ba87]) by MWHPR1101MB2351.namprd11.prod.outlook.com ([fe80::c156:455d:860e:ba87%4]) with mapi id 15.20.4042.024; Tue, 20 Apr 2021 08:43:01 +0000 Subject: Re: [PATCH 1/3] arm64: ptrace: Add is_syscall_success to handle compat To: Catalin Marinas Cc: oleg@redhat.com, will@kernel.org, linux-arm-kernel@lists.infradead.org, paul@paul-moore.com, eparis@redhat.com, linux-audit@redhat.com, linux-kernel@vger.kernel.org, Mark Rutland References: <20210416075533.7720-1-zhe.he@windriver.com> <20210416123322.GA23184@arm.com> From: He Zhe Message-ID: <9b5b340b-66ad-41c9-865e-32724e33a5b8@windriver.com> Date: Tue, 20 Apr 2021 16:42:53 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 In-Reply-To: <20210416123322.GA23184@arm.com> Content-Language: en-US X-Originating-IP: [60.247.85.82] X-ClientProxiedBy: HK2PR02CA0140.apcprd02.prod.outlook.com (2603:1096:202:16::24) To MWHPR1101MB2351.namprd11.prod.outlook.com (2603:10b6:300:74::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [128.224.162.175] (60.247.85.82) by HK2PR02CA0140.apcprd02.prod.outlook.com (2603:1096:202:16::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16 via Frontend Transport; Tue, 20 Apr 2021 08:42:59 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0d969856-4959-4d01-81b8-08d903d84e64 X-MS-TrafficTypeDiagnostic: MWHPR11MB1534: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: etz2FHCbF0LKv8XF9PjlDW5mESVF5SMxwvsh6dIuUNxhdwJqfoHP4pG6EwTVIiZVC6lMgMgfJ8K7ZWsGCsC8Z6nMMb1QQMH3dvHaAzffMqCJIoFf6S+bY7EMEPIwpoLyAE5CXBXp86AyV1b9Fml8aisR0OyAiCNVGEAj3oL25g2fNTbBVElmCHRFqi8wi7uJnCVGMNYC0Tlqk6Lsyeh1AqvzzNItviNW/1r3y0G6U0lgjg9TQGl5sKh8dfgMoIDnTDTwqw5gaRH55y4QLTYHLmg5ZMhucmUcHci/b6HDtMYy7QOpxGqi0TvDH51ZZKvZwvMC7EndfQU5YozhuqC+9tAw3BTRphPlpynCzrY8Mde804E7TKimEv+6+LZVBEP8TVlv7QagNipmruMrPruzwemmnZNmUNRnWtgJxxock4lJpzV6OL5K+h0nbr5fpgq5vCJEvB0Nwq0gDD5mhjKsC8GU/jAHmBoJoHaVnyl2fdFmWYwJJ24WWSRgBa/GTQZUmSQJWMfQxhxjNhZz3GtkTRzoWnArIfrAM2i9HQJfbM1oYndgLq10xVv/RpJFxCjwr0rsr2HtghyFSL0RL40HapgxYZ9t3PBPMaPc/KxIK5bGWqjbyIZbu+QzoVAxTSVBVRCHJ33ruEQl3QNW4JT+tlDhRlFTsnTkwu0FlHeQBEacapQBvn55b4i8647nRkEPzBoP2dYIDyo/ucwRqafOuJuUITFul4W+NIKKMeNAw7NsmDeLlKRxxj5aUU8P4aVW X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR1101MB2351.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(376002)(346002)(39850400004)(366004)(396003)(86362001)(31696002)(38350700002)(66556008)(6706004)(53546011)(6666004)(36756003)(2906002)(6916009)(83380400001)(5660300002)(38100700002)(31686004)(8676002)(66946007)(478600001)(4326008)(186003)(8936002)(956004)(316002)(2616005)(16576012)(16526019)(26005)(6486002)(66476007)(52116002)(78286007)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?eDgzZ2lLcndsNll1WnBkQm5aMTRmdW5qa1Jrc3F5MFJHRkJwR0ZoNTllRWlX?= =?utf-8?B?T0ZiWVUwQWJlYlp4L1NkTk9tZ2c5SHlpZ1FqNVZDQmpmQ1B6b0RVTFB5b3Mr?= =?utf-8?B?K1hvaGZ1S002WGptUERxUXlwWVNJdTVsbzlqZTRvWHdzUkxYVHdmN1Nla0JZ?= =?utf-8?B?dDNOcXFjVnE3WWV1ZXprcHlxVkhVN3Y1aGFGaFdDZTI5cG41THRDZmZUTVV5?= =?utf-8?B?cHlLUXBHZHVKaElHdjMzMWJNY081Yk5GVm9Mc3dtUmx2UnhPbGhzZGdTNFdF?= =?utf-8?B?WFpyME5WY0ZsQ1dLRFlQVzlZOFhtSk1EcXNLRUJaQnkzRC9jK0Z2UEYrelpF?= =?utf-8?B?aXo5MDNteVdpR0VxUlo1ZXFEajRUNGN2SDc0U2E4QnE1bGxJNVFaS0tkanBR?= =?utf-8?B?VnhHY2s2L0tPTkd4YmNmNnNwYy9UUXJ0dUVRNVc0UTVtYkYzYXlTcW9iV1Zt?= =?utf-8?B?TkdCVGIwTTBVaUNjT2tHWUJickM3RlIwSjdLbFI2RUxWRE1qTGc1UUtVOFQr?= =?utf-8?B?N3pGMy9QZDRUVVZTaEIzQmYzeEVEMndhbzhFLzZ1TzBTTzlwM2w0NzVHNHpu?= =?utf-8?B?Y0wrQUdVNC9zN3FjNXZoTWYvQWFVR2RYRzc0R2s0bVVub3NWSWN6cFVpYmVL?= =?utf-8?B?U1huTm5UU3Zzb3EzbzFkL0lqcVJzNzd3L1pWczZjbFUvSFArZWp2cHYwdjAr?= =?utf-8?B?OHFCbXJOd0JoclI3bjhTbHRSM0d1ZDlGbUYvVVpBSG1rWEJLNEttVnFMRVF5?= =?utf-8?B?eTFRR2R5M2ZpSTFSb0o0TGxHb3FRNndsUkpJMlUzdWdnRnczN0JuMnJwNkdD?= =?utf-8?B?bGFvV0NvVWtIZjJ4azBsV3N2cmNjUVcxNG9Vb1NVUVpibUNFWVpMb3dYMkFv?= =?utf-8?B?c3hnQlY4NXVSYm5Td0VYWjBCSUNMODlVbXJwNGNYaEVZSEVxNklkNGpNSFlh?= =?utf-8?B?bWdoZ1ZvWklhRUdCOTNVbms1Z281aFhVa1FFaVFhSXFWaUd2QXZtdTZxRnhZ?= =?utf-8?B?bVVCQUlOKzRZVU1ZaWJpeU11MTFlZG1EWkh1c2FzelJXRUd1Ylp6eTNhN3lZ?= =?utf-8?B?S09acjhFNVFpYjZsUmJjcUFoWVQ4a1dpc2ZoamZWWjY0RElUK21PWldYMS8y?= =?utf-8?B?dmQvSlBrNm91Rjk3THRBNE5MRUtQc2dKVVd4Z2FRVFpTdGdyRm1kTk5mSGNi?= =?utf-8?B?b2J1NWc3cTArM2tOQkQrME0weGpESCtJVzBBL1oyVmZPQStZU3N6ck9yNnNL?= =?utf-8?B?cjk0K1JZOVlUdS9WQ3VleU0xKzNIeWpvUFc3ODF2ZXhiNCszdkUwQlhQcS9G?= =?utf-8?B?aWUzMFludXA3UUxGam03dHZ1U3FGN0VSM0NiRXc2bzF1ZG1HRGFXSHFrUW9j?= =?utf-8?B?eUV3TUNWUWNTeGhES0xrSEcrZFdlVGV2aG80YVU4Rmt4QkNLbVUrYldUOUwx?= =?utf-8?B?QWwvMjBZSFowdTQzMXQySXNuYk5GVXRBalpjYUdmYitVMEhUMlZyUTBXaEoz?= =?utf-8?B?dTRRL3lqL2djSm90OHZFYmhFOVZ0c05zZnNKbHdOR0t6RG5TVmN4MXhrcEk5?= =?utf-8?B?QnZiQllsYnNwRjREUkxmUnFCam1rQ0pvZzdySWdMVC9vQUFXZjFEUmZqNWtG?= =?utf-8?B?eFcxUnZIRjU0c3Q2N1ZwU1N6NjE5aWZ2YU45NVgyWnRFaDJhUVFjaHJMYkd2?= =?utf-8?B?N2YyNTNwODFUMEEvRGMzSElucmYvWHFTOGVmd0JsNjdMYVJ5NWtpZDhNRk1K?= =?utf-8?Q?V3gtxbZQRIAfc9F15d4pHpWbDndnLbJM9b6u3Ag?= X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0d969856-4959-4d01-81b8-08d903d84e64 X-MS-Exchange-CrossTenant-AuthSource: MWHPR1101MB2351.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2021 08:43:01.4823 (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: tbK8izOq5ULYEx+5sR75RnS1mhAWn/NkhCDw+9nWbnsDXGXr/RtsmxgaZLVT4u92c/rwp/uQ77zJOcxY5h/Log== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1534 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210420_014304_343254_31EDAD7A X-CRM114-Status: GOOD ( 19.72 ) 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="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On 4/16/21 8:33 PM, Catalin Marinas wrote: > On Fri, Apr 16, 2021 at 03:55:31PM +0800, He Zhe wrote: >> The general version of is_syscall_success does not handle 32-bit >> compatible case, which would cause 32-bit negative return code to be >> recoganized as a positive number later and seen as a "success". >> >> Since is_compat_thread is defined in compat.h, implementing >> is_syscall_success in ptrace.h would introduce build failure due to >> recursive inclusion of some basic headers like mutex.h. We put the >> implementation to ptrace.c >> >> Signed-off-by: He Zhe >> --- >> arch/arm64/include/asm/ptrace.h | 3 +++ >> arch/arm64/kernel/ptrace.c | 10 ++++++++++ >> 2 files changed, 13 insertions(+) >> >> diff --git a/arch/arm64/include/asm/ptrace.h b/arch/arm64/include/asm/ptrace.h >> index e58bca832dff..3c415e9e5d85 100644 >> --- a/arch/arm64/include/asm/ptrace.h >> +++ b/arch/arm64/include/asm/ptrace.h >> @@ -328,6 +328,9 @@ static inline void regs_set_return_value(struct pt_regs *regs, unsigned long rc) >> regs->regs[0] = rc; >> } >> >> +extern inline int is_syscall_success(struct pt_regs *regs); >> +#define is_syscall_success(regs) is_syscall_success(regs) >> + >> /** >> * regs_get_kernel_argument() - get Nth function argument in kernel >> * @regs: pt_regs of that context >> diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c >> index 170f42fd6101..3266201f8c60 100644 >> --- a/arch/arm64/kernel/ptrace.c >> +++ b/arch/arm64/kernel/ptrace.c >> @@ -1909,3 +1909,13 @@ int valid_user_regs(struct user_pt_regs *regs, struct task_struct *task) >> else >> return valid_native_regs(regs); >> } >> + >> +inline int is_syscall_success(struct pt_regs *regs) >> +{ >> + unsigned long val = regs->regs[0]; >> + >> + if (is_compat_thread(task_thread_info(current))) >> + val = sign_extend64(val, 31); >> + >> + return !IS_ERR_VALUE(val); >> +} > It's better to use compat_user_mode(regs) here instead of > is_compat_thread(). It saves us from worrying whether regs are for the > current context. Thanks. I'll use this for v2. > > I think we should change regs_return_value() instead. This function > seems to be called from several other places and it has the same > potential problems if called on compat pt_regs. IMHO, now that we have had specific function, syscall_get_return_value, to get syscall return code, we might as well use it. regs_return_value may be left for where we want internal return code. I found such places below and haven't found other places that syscall sign extension is concerned about. kernel/test_kprobes.c kernel/trace/trace_kprobe.c samples/kprobes/kretprobe_example.c Regards, Zhe > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel