Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp3721170pxv; Mon, 5 Jul 2021 04:14:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwHaUjYVFZyUiOkAVbZ4jDznjqsZ5jOcYQDAb21BlAkLsYkt7C1lWVzrIAA9PV4uOS8Iz34 X-Received: by 2002:a05:6402:430f:: with SMTP id m15mr3231878edc.113.1625483655571; Mon, 05 Jul 2021 04:14:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625483655; cv=none; d=google.com; s=arc-20160816; b=cfwKt9oqjsntE0Hje7KyLMwc+VMP91Z+eQbD6dGQif97GDZrO2TaNKWhDTl3kTz1UK Tn8psGeWqz8Cw4foGTAya8z/vnJRMcpUSBPd6XOnLhnDtxn015jcYq/z/5/SSdMibVKR /KqY73gcbhp3NLXGDe8AqMLLUdHAibFavgrtsH1hoDkdywCqJ1szxlXibId5oaZ3geGP TRu8MJCIPVjMXbXOcGq+ZzO59oWswEL+M/l/jYosT/B6wnn72ysn9SGBCJEuFBZztxeF WOLI1QqoqDGOvRoKoQ1pl2TWqY50RvQbxq3vCAAL/rjvleufkreglahxdohCgyPxWDM6 rmDA== 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=CaX0flpcWSf1BxIX9YKTaXTNjn37cg6419yg5j4auho=; b=SxGcx7aIzq+Ozh6iUjmTGLdP8ZdZVHnOw/vykDvmrSbH0CTON3Q1K5DPHXaWGNDtIj L4/S7gZtloOZJEQ0IPgS2c8nXF0qh6wLXrsQL92vnOmX1FYRsbtJnRufu9/cB/ph5m0D Euf9ik3/ilVUagxizcmh0GY06BJvNCCSN7yG28vM8fKVUvy3pyVDJ8mqD1Kwka6AD042 ix0VgESVPEbGhRIbRf3RzXiOFSZCJSdBryznyqpsHbLWYZfCbiEJCS7Y0jYkZV4jn6P0 p4Riu5le7FGsicGjNOfuUefFJr1Y4Q55UsyqYwQzE/fnOYBuQ0zJEJ7cYUXbgoRcJQLB TJkg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=jEnaley9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dd4si1844902ejc.607.2021.07.05.04.13.51; Mon, 05 Jul 2021 04:14:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=jEnaley9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230232AbhGELPU (ORCPT + 99 others); Mon, 5 Jul 2021 07:15:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37250 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230093AbhGELPT (ORCPT ); Mon, 5 Jul 2021 07:15:19 -0400 Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 10270C061574 for ; Mon, 5 Jul 2021 04:12:43 -0700 (PDT) Received: by mail-ed1-x534.google.com with SMTP id t3so23245722edc.7 for ; Mon, 05 Jul 2021 04:12:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=CaX0flpcWSf1BxIX9YKTaXTNjn37cg6419yg5j4auho=; b=jEnaley92nsYz6JbSlRThV2E1YRPY06sNCdtkau2fgB2TykXtcwbJCOtCezAV/vc8w 4hDhe7kUwItFuUTLiiagNALF9ddj3LvI9kkEuJ9R92C/whZQ3vkZkwX1vCXIm8Ku1qzp z78re286Qlfn/qoPoSuG6qaVge0tBY4ZHgiys64KOnqifOQt6boJwkcYJgyBEhRGQYp4 7o+/a95mXCP6Lwx41+T6LEZqahRtOluMr+qhtfwZLUiiBnUsCxsvQ/qj4BW0MsdnTych 3Nm/eSxg8yMU1KdU9GSuJma36mm9SRV7maxOFBYk2RMuFpGkaJzQSv4aIRUBJXK2jp6M 8c/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=CaX0flpcWSf1BxIX9YKTaXTNjn37cg6419yg5j4auho=; b=sOPDXbRACOCs4v3fyr05NoBU76VPgnl3vAG9TjiiCCz83jue5Lah9tH8e24+PaFEqJ Xwv/b3hijCUC56p069NzDUAkq/fAJ1fthqVwlX05LuN3kjT9Rc1STn8S49yfhghtWrtH geyd3Gm1CEmIbxQq4MPYH9pqoFRHaWGMsT6iOJhmd7UzWxbUkQh3EUv+nUFFmte+jo/r SS5QBaXcNqC9XGyjrHZhBLUD8wFDyPf5OLFA9rPI3ONoM6br2ZSpXdpwoCgCRagmMe5Q a1a5dijGQwAEDwKpMJuVTjjsfIX9xVnxLO+MLPyCS3mceGRwDkfGqVBKIApyL05w5bEN bitg== X-Gm-Message-State: AOAM533iOgcMTI7Lw4UDES6YShgrAwCIFMDPOQFXPNjyBH6z6zaacYlJ 88gc1Z8Ca4D3jhEYW0VWeXFP+G1v4D5AxLKV0eA= X-Received: by 2002:a05:6402:5c9:: with SMTP id n9mr3075816edx.30.1625483561668; Mon, 05 Jul 2021 04:12:41 -0700 (PDT) MIME-Version: 1.0 References: <20210705103229.8505-1-yee.lee@mediatek.com> <20210705103229.8505-3-yee.lee@mediatek.com> In-Reply-To: <20210705103229.8505-3-yee.lee@mediatek.com> From: Andrey Konovalov Date: Mon, 5 Jul 2021 13:12:30 +0200 Message-ID: Subject: Re: [PATCH v6 2/2] kasan: Add memzero int for unaligned size at DEBUG To: yee.lee@mediatek.com Cc: LKML , nicholas.Tang@mediatek.com, Kuan-Ying Lee , chinwen.chang@mediatek.com, Andrey Ryabinin , Alexander Potapenko , Dmitry Vyukov , Andrew Morton , Matthias Brugger , "open list:KASAN" , "open list:MEMORY MANAGEMENT" , "moderated list:ARM/Mediatek SoC support" , "moderated list:ARM/Mediatek SoC support" Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jul 5, 2021 at 12:33 PM wrote: > > From: Yee Lee > > Issue: when SLUB debug is on, hwtag kasan_unpoison() would overwrite > the redzone of object with unaligned size. > > An additional memzero_explicit() path is added to replacing init by > hwtag instruction for those unaligned size at SLUB debug mode. > > The penalty is acceptable since they are only enabled in debug mode, > not production builds. A block of comment is added for explanation. > > Cc: Andrey Ryabinin > Cc: Alexander Potapenko > Cc: Dmitry Vyukov > Cc: Andrew Morton > Suggested-by: Marco Elver > Suggested-by: Andrey Konovalov > Signed-off-by: Yee Lee > --- > mm/kasan/kasan.h | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h > index 98e3059bfea4..d739cdd1621a 100644 > --- a/mm/kasan/kasan.h > +++ b/mm/kasan/kasan.h > @@ -9,6 +9,7 @@ > #ifdef CONFIG_KASAN_HW_TAGS > > #include > +#include "../slab.h" > > DECLARE_STATIC_KEY_FALSE(kasan_flag_stacktrace); > extern bool kasan_flag_async __ro_after_init; > @@ -387,6 +388,17 @@ static inline void kasan_unpoison(const void *addr, size_t size, bool init) > > if (WARN_ON((unsigned long)addr & KASAN_GRANULE_MASK)) > return; > + /* > + * Explicitly initialize the memory with the precise object size to > + * avoid overwriting the SLAB redzone. This disables initialization in > + * the arch code and may thus lead to performance penalty. The penalty > + * is accepted since SLAB redzones aren't enabled in production builds. > + */ > + if (__slub_debug_enabled() && What happened to slub_debug_enabled_unlikely()? Was it renamed? Why? I didn't receive patch #1 of v6 (nor of v5). > + init && ((unsigned long)size & KASAN_GRANULE_MASK)) { > + init = false; > + memzero_explicit((void *)addr, size); > + } > size = round_up(size, KASAN_GRANULE_SIZE); > > hw_set_mem_tag_range((void *)addr, size, tag, init); > -- > 2.18.0 >