Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp750893iog; Thu, 30 Jun 2022 09:26:23 -0700 (PDT) X-Google-Smtp-Source: AGRyM1ulIvaXXNE+S4LMCanse5qnEk9pR3H5kySZBILWiBvMeMrrzMU0klCVxgirtxrr580O/8U5 X-Received: by 2002:a17:907:3f04:b0:6e8:4b0e:438d with SMTP id hq4-20020a1709073f0400b006e84b0e438dmr9840083ejc.391.1656606383700; Thu, 30 Jun 2022 09:26:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1656606383; cv=none; d=google.com; s=arc-20160816; b=t3zOQJTMbajdDekpYryykBWXyPf6+aPnx8Nve4NjFWXceY0l/Jec1BT2cdMj6qFwYl M5vr9OX8Uzt5dKc2H6LepsfsTrl1cSl78UOR8KZxgAGAVe2rNQ/fGqgLCMF+hiO5q6GE wBblRI8Lh6tGD3YsqZbyPXkcpQPPchj4rflUTznM8G+hySfqu0FT5bNtQzDUdkwftNq/ SYM8m2LgmpKWs/ZHwx4aIO38TwvbQO4JUWN3kkNv48E5j+/TAkUKS4m1HZq4V7W3pgre r50qyhy4cGkZdcLDiFrJZjA5HWExMpAQp0nT0PzWLW/4ad2qrafkJSQiqQwNl5eDouYK DZog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=siGKi/dIfvfe8+iskQhGtDTJS7NXa0bDAndCilNFqRU=; b=0uvrW4LJs8y+uxroVls1Vj0OOf7gh8RxB1CHYDvJ0VJfacmjIt4Em403eH+8xf0bSL MMDH4TtmXoQW16b2mPo24uC2wjStl/YxOniTSRbhSUyL5wFZNuX2nqnXz1A9c70vyZb9 Ev2ycpjSAIqODLU+GRnI+wkEjpXX462MYp0yKH4hoROHCK6QgDD5kb9sfxqCa07epD8s whQOiZ9jk8rWt9fhm9GjgDSWoMEgeNltQ9qz9VU8+m4J5KIvS55d/ysJq4vGLHCzhwIN XMTE3i/OneZzG0Sxw5T9vFoFIeVZvznKPTVE5rUq09Hdj6UUH+91pUENroa6W5KXfegG s4Iw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=PY172wyg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i11-20020a05640242cb00b0043578c2decfsi6396736edc.444.2022.06.30.09.25.57; Thu, 30 Jun 2022 09:26:23 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=PY172wyg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235567AbiF3QT5 (ORCPT + 99 others); Thu, 30 Jun 2022 12:19:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56808 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230223AbiF3QTz (ORCPT ); Thu, 30 Jun 2022 12:19:55 -0400 Received: from mail-yb1-xb2b.google.com (mail-yb1-xb2b.google.com [IPv6:2607:f8b0:4864:20::b2b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8344C2E9D9 for ; Thu, 30 Jun 2022 09:19:54 -0700 (PDT) Received: by mail-yb1-xb2b.google.com with SMTP id d5so34638239yba.5 for ; Thu, 30 Jun 2022 09:19:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=siGKi/dIfvfe8+iskQhGtDTJS7NXa0bDAndCilNFqRU=; b=PY172wygPNzbXx/MtlL0kVYhRqHP/PMSgMPKfMe5d3bzaiPOFgDA24BfmJk1n+zPMX fc/bD2b+O9jTkZx6hTCu9mc5JivMe1meY8jOCRsG//k9b88HjGzDX8h8Y69vjuHcXDCy xOoQL6P5l7QZgCNx+04KtnwvzbIl2DoRn3J24x5aHkRHyB1J6Dz3f/03FXjJ2oV40NI3 h+LLWTCGpXw7DUWpa9ZIxtFe99Y48TMHMZfWnjuIh7rvMkm1AdEkL4gjOPQE4a0SFeZd i5/7o/AYKlRkjlV+w7+lMcU1gD2PdeXYLEPIxdLD1dPp9eAwQRuekkzRPpPNu8Pt+g4m Fj/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=siGKi/dIfvfe8+iskQhGtDTJS7NXa0bDAndCilNFqRU=; b=YiogEZGu0f+A4YYikaGqy2g1gPfdwZW2OoHHHPuF/YsQwfmuHaB/62r+yAsiRV3lID riM07ueMQSDpps7aM75/lGvjgqe+iw7C4XzrUUI0v/aKS4QZkrE2yVAkdGNxM5bP0T1W l9ZgUEeSNXKQb3oSO6JXBqp5MpiR/dfhwIZIg4TxO/1Eqv66M6xZ/YYT9vKrNABWlude +XjP+7nXULnqT57qHaaM7RlkOQsyvSfIXpGKPO4Rir92O0pd3FXxsQ9Fc/+E6f0OeD5I xddnzMvflI5JC2NO5mTktLpbOtPBTQzYh7k9feOpKJE9sYug1juazs+ro2KdYPxzSy1T whYw== X-Gm-Message-State: AJIora+sG6XllTRGeUdU5QMkbGPE0p7u3XtZD0onNyzdAenQzCt8gd5l TDuRhp0JHMLCRDlgWUwZVI3Naxa0iqlkG4xIlYdDhg== X-Received: by 2002:a25:c646:0:b0:669:b341:a595 with SMTP id k67-20020a25c646000000b00669b341a595mr10978550ybf.304.1656605993493; Thu, 30 Jun 2022 09:19:53 -0700 (PDT) MIME-Version: 1.0 References: <20220630094646.91837-1-haibo.li@mediatek.com> <20220630094646.91837-2-haibo.li@mediatek.com> In-Reply-To: <20220630094646.91837-2-haibo.li@mediatek.com> From: Sami Tolvanen Date: Thu, 30 Jun 2022 09:19:17 -0700 Message-ID: Subject: Re: [PATCH 1/2] ANDROID: cfi: enable sanitize for cfi.c To: Haibo Li Cc: xiaoming.yu@mediatek.com, Kees Cook , Nathan Chancellor , Nick Desaulniers , Matthias Brugger , Peter Zijlstra , Masami Hiramatsu , Christophe Leroy , =?UTF-8?Q?Andr=C3=A9_Almeida?= , Luis Chamberlain , Juergen Gross , Tiezhu Yang , Aaron Tomlin , Dmitry Torokhov , LKML , llvm@lists.linux.dev, linux-arm-kernel , "moderated list:ARM/Mediatek SoC..." , Lecopzer Chen Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jun 30, 2022 at 2:47 AM Haibo Li wrote: > > currenly,cfi.c is excluded from cfi sanitize because of cfi handler. > The side effect is that we can not transfer function pointer to > other files which enable cfi sanitize. > > Enable cfi sanitize for cfi.c and bypass cfi check for __cfi_slowpath_diag > > Signed-off-by: Haibo Li > Signed-off-by: Lecopzer Chen > --- > kernel/Makefile | 3 --- > kernel/cfi.c | 8 +++++++- > 2 files changed, 7 insertions(+), 4 deletions(-) > > diff --git a/kernel/Makefile b/kernel/Makefile > index a7e1f49ab2b3..a997bef1a200 100644 > --- a/kernel/Makefile > +++ b/kernel/Makefile > @@ -40,9 +40,6 @@ KCSAN_SANITIZE_kcov.o := n > UBSAN_SANITIZE_kcov.o := n > CFLAGS_kcov.o := $(call cc-option, -fno-conserve-stack) -fno-stack-protector > > -# Don't instrument error handlers > -CFLAGS_REMOVE_cfi.o := $(CC_FLAGS_CFI) > - > obj-y += sched/ > obj-y += locking/ > obj-y += power/ > diff --git a/kernel/cfi.c b/kernel/cfi.c > index 08102d19ec15..456771c8e454 100644 > --- a/kernel/cfi.c > +++ b/kernel/cfi.c > @@ -311,7 +311,7 @@ static inline cfi_check_fn find_check_fn(unsigned long ptr) > return fn; > } > > -void __cfi_slowpath_diag(uint64_t id, void *ptr, void *diag) > +static inline void __nocfi _run_cfi_check(u64 id, void *ptr, void *diag) > { > cfi_check_fn fn = find_check_fn((unsigned long)ptr); > > @@ -320,6 +320,12 @@ void __cfi_slowpath_diag(uint64_t id, void *ptr, void *diag) > else /* Don't allow unchecked modules */ > handle_cfi_failure(ptr); > } > + > +void __cfi_slowpath_diag(u64 id, void *ptr, void *diag) > +{ > + /*run cfi check without cfi sanitize to avoid calling cfi handler recursively*/ > + _run_cfi_check(id, ptr, diag); > +} > EXPORT_SYMBOL(__cfi_slowpath_diag); You can just add __nocfi to __cfi_slowpath_diag, right? There's no need for the separate function. Sami