Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp4227680rwd; Tue, 30 May 2023 02:14:05 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5hoiMoR8L95Tr49p7lby8KkAmIb4ZufBSynYuZfwZG3CD3FjARmuUybHG1/0MhXxGmPQM7 X-Received: by 2002:a05:6a20:429c:b0:10f:8f2e:edc0 with SMTP id o28-20020a056a20429c00b0010f8f2eedc0mr1813913pzj.55.1685438045149; Tue, 30 May 2023 02:14:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685438045; cv=none; d=google.com; s=arc-20160816; b=XHQTxIefdSTiBFHaRIzz9+5Fav30zyB5RgGynOJceJTUVjXj2ykov5p1LhngpzcJ3z hKQJAlOxMVHeHlN078LCN8zyPgglkl/LkMdOaFjJJa4qUz41igMEA90/dIjMNk0LgE17 1x1z7M/wEeQlyuSuPSDNkejF6kKBD+7w4EEFZ5LGJDqyTFfM1+xGGq3Ck8kVTRX4zE7l eQ94LCXgFFDdKvi2zg76Dxjlr+1of+2hxh69jNqii2ugsvQMZqaHx02iB5/cMHdDTmcd t7vpfvI3Eb+dEBLrbU1nN3/W+9FbQ6A53oHj5JnozKAAEKFOqAeBMajQoFv1sdvU1uNR u24Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=lFTo/TdSXcdAD7s8nzeXWfL6YJOnEyi31YyJRsIFKlo=; b=hFakJ2eY8+ynu5Xs5z2NqvUJ2ZIJ4/ehnLgXFlFFxDbxzYgUZZ/SCHgaatvmdLF/sg ttD6VcMOZAq1I5YcCIXils7C1fmikwAsDVXcqFXajLHS/2YCWsRys+zf0sNWENheGI52 fU1yMGbgNoObfVncsK5PvTcwEmkE6r9mPbfCoVJ7Nz4C3DwlWkAJ6Sh2gBqF4bAFtXHo y4o2xuBpoJBPyc+Du6IvTvSQYuCWRwqjZ0l2ZysQapmqK1jd2NiNIvl/E03kmlBgWIr2 9mHD7b/VnlbjMiIts9wVMZ03VvTgP+bH+Uf/q+y4E5n8K61r1MThqusSV5utoXt83rdN aFKg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=r2xfxhW6; 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 q20-20020a656a94000000b0051b7b83d6b1si1964030pgu.241.2023.05.30.02.13.51; Tue, 30 May 2023 02:14:05 -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=20221208 header.b=r2xfxhW6; 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 S229643AbjE3Il2 (ORCPT + 99 others); Tue, 30 May 2023 04:41:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50292 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230419AbjE3IlN (ORCPT ); Tue, 30 May 2023 04:41:13 -0400 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6ED7CE5 for ; Tue, 30 May 2023 01:41:05 -0700 (PDT) Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-3f61530506aso43933705e9.1 for ; Tue, 30 May 2023 01:41:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1685436064; x=1688028064; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=lFTo/TdSXcdAD7s8nzeXWfL6YJOnEyi31YyJRsIFKlo=; b=r2xfxhW64Ll1CyRP6MfeCDcNIMIXdddwYAdtbH2OfwHbGOT/lhZ2wfgID9hiZzX5Bf 1M6AWKQQYlcxw6tXQCcPHCQfXaxqVg6MeY95/haHQNIWlmq9+tXPKBEDNjrGQnmqgfth 0We9/MTHj5qdu/k23xJc479aNo8IPg236+nSTTpRs05OTT0lhZjLk9VLPIa6QVkh6WrX RFi4pnTu165MjX+TTTmfXvIBxyv6X2SjlKqhabUKjfpTOeLyEhGfbiP+lVeP1m5VHWNe wYJkRR1IObAbs2MEgwavEgx6XisSrUVQngxHEeisCPkjJosN0ukNs0GZJMCoR7GKBXN8 F7Ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685436064; x=1688028064; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lFTo/TdSXcdAD7s8nzeXWfL6YJOnEyi31YyJRsIFKlo=; b=Gsw2KR7sS0Fcpaa4muO7sg6p6CytxeW0zQgvvf02KLkKDLacD3yWGxSsesZFZWH9li tp0H4GLyNT3AwUII+VvAqpvte7sixUG7LAU9rYYlFK/7Np/DW31eWw0dIRnB0uV3AbWz EvZ/uxOgkB6u16GbJgY2ijUJ89wY8NxSOPY8MMFPNsx+inqGM8X6WT9FYDrIKsP9YEWj iLkOKzai1nXtFMv1jkasdMx5dZU5uIMTdmYvVHycKLOTfCci/MO04kfcBG0V53kZPWRU LAFQkpCflxi2XGk9Qk7Eb2dVEEuB0W5xHDDvLR3IEYOMS4ieUhPc4FAqwh2nU4Q1jITj ozRw== X-Gm-Message-State: AC+VfDyF85cHeXMFVMdYTxGCLVT+MXM7rXISV/ln4q+4fGFiGxRJ8oZJ hxSTMm1WHKDBD4oNVO2LRH6Txzl3KYhlCY1OzJuD7w== X-Received: by 2002:a1c:7712:0:b0:3f6:44e:9d8 with SMTP id t18-20020a1c7712000000b003f6044e09d8mr1087598wmi.22.1685436063826; Tue, 30 May 2023 01:41:03 -0700 (PDT) MIME-Version: 1.0 References: <20230530083911.1104336-1-glider@google.com> In-Reply-To: <20230530083911.1104336-1-glider@google.com> From: Alexander Potapenko Date: Tue, 30 May 2023 10:40:26 +0200 Message-ID: Subject: Re: [PATCH v2] string: use __builtin_memcpy() in strlcpy/strlcat To: glider@google.com, andy@kernel.org, akpm@linux-foundation.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, elver@google.com, dvyukov@google.com, kasan-dev@googlegroups.com, ndesaulniers@google.com, nathan@kernel.org, keescook@chromium.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 Tue, May 30, 2023 at 10:39=E2=80=AFAM Alexander Potapenko wrote: > > lib/string.c is built with -ffreestanding, which prevents the compiler > from replacing certain functions with calls to their library versions. > > On the other hand, this also prevents Clang and GCC from instrumenting > calls to memcpy() when building with KASAN, KCSAN or KMSAN: > - KASAN normally replaces memcpy() with __asan_memcpy() with the > additional cc-param,asan-kernel-mem-intrinsic-prefix=3D1; > - KCSAN and KMSAN replace memcpy() with __tsan_memcpy() and > __msan_memcpy() by default. > > To let the tools catch memory accesses from strlcpy/strlcat, replace > the calls to memcpy() with __builtin_memcpy(), which KASAN, KCSAN and > KMSAN are able to replace even in -ffreestanding mode. > > This preserves the behavior in normal builds (__builtin_memcpy() ends up > being replaced with memcpy()), and does not introduce new instrumentation > in unwanted places, as strlcpy/strlcat are already instrumented. > > Suggested-by: Marco Elver > Signed-off-by: Alexander Potapenko > Link: https://lore.kernel.org/all/20230224085942.1791837-1-elver@google.c= om/ Sorry, missed a "Reviewed-by: Marco Elver " from the previous thread: https://lore.kernel.org/lkml/CAG_fn=3DUzQ-jnQrxzvLE6EV37zSVCOGPmsVTxyfp1wXz= Bir4vAg@mail.gmail.com/T/ > Acked-by: Kees Cook