Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp3713465pxb; Mon, 1 Feb 2021 02:44:44 -0800 (PST) X-Google-Smtp-Source: ABdhPJwF8JEqGm6NiNtAnizYUfYuD1Mvq17A+0vQwETT5ACkCV2ESOTB0Qe5NEYaM3oDO2krQ8Ks X-Received: by 2002:a17:907:948d:: with SMTP id dm13mr16768680ejc.545.1612176283814; Mon, 01 Feb 2021 02:44:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612176283; cv=none; d=google.com; s=arc-20160816; b=uB43f7rDwMTYVz7kr++7GaHZOF+N3untEymxTkjNd2dRuyk8MrXiGPZ9XH7SqskEuk IOAFewnxoRaocYEvA4VXGuQUcdKQXT2fM/Jemg/YPBq4+YeoAaxXD6KXbyzlMPhlO9Pe djAy58q6zGSvf9BZUItds13m79ZkDe/uGQNiePH5/jpiIRMAKurGzGqFngdFNBTVWRRs NGXqlstEvUzJMZXhHTYbYalfes2TmaVxlzxtskVLkN2dBO8Z+sIHuZDpLNMwW/dMsm03 agyosBflOabEPw7L5MFOHl9KaiWio3lBnZtFKEaTf5Krhhj3IJuDRVN4uK97Uc7XO6dL Xm6A== 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=eZ3P7u3TRYoNHUYZqgM31be6IdJ5ULeRL5Xx+spxYug=; b=Km4bWCBh+YaVbijW9h4NdWjl8LUDi1HM7x4tcQs5Q35QXC54WR+s5paT7RNyyXmqW+ 1SYbCZ1CfdaffRCDUohh+AXqrwd71It5b4bLv0rXgbay3xx+ODlL15HeyVM1W58xCEbw UXTJ1EoDRsVBP21P6CCp0yyHISc+VctyNpg01tLgNJawlhUc5ARtbeypl67VBKOaD10t mer9g5Z0B3C2AZvJd50M4QMNvVradubpg5DO/u8fdfKni2CMh2e3M84Cin49yqy40vZs a7hWWJ2WMjRaURCZcB0xwi4/VRYjyHskhdH6qXzGY5Q+gJzhC2GIBAgce2mpKV+gCiHp CUSA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="J+G/5cHA"; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j2si10007903ejb.229.2021.02.01.02.44.19; Mon, 01 Feb 2021 02:44:43 -0800 (PST) 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=@google.com header.s=20161025 header.b="J+G/5cHA"; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233333AbhBAKnf (ORCPT + 99 others); Mon, 1 Feb 2021 05:43:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35998 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233355AbhBAKk5 (ORCPT ); Mon, 1 Feb 2021 05:40:57 -0500 Received: from mail-ot1-x332.google.com (mail-ot1-x332.google.com [IPv6:2607:f8b0:4864:20::332]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2A005C061573 for ; Mon, 1 Feb 2021 02:40:17 -0800 (PST) Received: by mail-ot1-x332.google.com with SMTP id d7so15776609otf.3 for ; Mon, 01 Feb 2021 02:40:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=eZ3P7u3TRYoNHUYZqgM31be6IdJ5ULeRL5Xx+spxYug=; b=J+G/5cHAOoeeChiA2gvAbHNdL/cLBHqEBYggQT9DagQENHw2vR2w4LUTIVIvHsJlK3 BvSxBLO/KJ9Er43uplO1k6Nn3E7BdwDOUPopWx+aZ2FXgSNK2JI54UIJklO0rX6zBdIw 9aE46+23PnFPuBR/2G774C/y/2rLDh99LNWGG61nW8kLmQ/1fKZ7pUel0nZixWV701sR lir1+JvjiGlvFswRQDg9gL3k2utSVl1RbNnAEgpAVy+TGfmBa6+LL3rI3QTkWKj3rHXX wKXMyKhWSF+JDGlBb0PeCkMlr3RwSEiMoODTJAVp6Em7TF2WzW9954ZDEDfbmnbcxnY/ Hmkw== 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=eZ3P7u3TRYoNHUYZqgM31be6IdJ5ULeRL5Xx+spxYug=; b=U8mTenjy7pcwpAwHI8DZ4UBjCjTMubvbu5CmK+KvLkaqUEXtiL0YUfjvsmP0CFcaZI 1RluK8UcAJFfPTijh+O6eeWmD3fQVPxZH7vzT0gebXY86VSFd9xeER5UGLgmP82rU4jW YgiSo841LXSkvcXPzGA7LVQyhHcjohPZbzgcnHCaHtrUbNmF9TBslwfODfaufxazCNxU fP3dH3TfQWzzgSoEHn3XnHDv1L1lyzFqT+P9NIfaESA4P67SBFkg7avMCp+GyXGtoiJC lychknyITkEOWxe/i4pjYcuDqJVecXAP+Ph3ZRXlXOaTNotxXLDKaNKCHo0NBwp4na3Y u1Zg== X-Gm-Message-State: AOAM530TKINIYb2WHlXM5Ers5mI42wsXUnilTJ1+jt0TUqaQnjSjgED6 k/NMbdT7kK77l6JoLlv/X8Hh/ECXgojRAQZOJXucOw== X-Received: by 2002:a9d:4687:: with SMTP id z7mr11570191ote.233.1612176016311; Mon, 01 Feb 2021 02:40:16 -0800 (PST) MIME-Version: 1.0 References: <9dc196006921b191d25d10f6e611316db7da2efc.1611946152.git.andreyknvl@google.com> In-Reply-To: <9dc196006921b191d25d10f6e611316db7da2efc.1611946152.git.andreyknvl@google.com> From: Marco Elver Date: Mon, 1 Feb 2021 11:40:05 +0100 Message-ID: Subject: Re: [PATCH mm] kasan: untag addresses for KFENCE To: Andrey Konovalov Cc: Andrew Morton , Andrey Ryabinin , Alexander Potapenko , Dmitry Vyukov , kasan-dev , Linux Memory Management List , LKML Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 29 Jan 2021 at 19:50, Andrey Konovalov wrote: > > KFENCE annotations operate on untagged addresses. > > Untag addresses in KASAN runtime where they might be tagged. > > Signed-off-by: Andrey Konovalov Reviewed-by: Marco Elver Thank you! > --- > > This can be squashed into: > > revert kasan-remove-kfence-leftovers > kfence, kasan: make KFENCE compatible with KASA > > --- > mm/kasan/common.c | 2 +- > mm/kasan/kasan.h | 12 +++++++++--- > 2 files changed, 10 insertions(+), 4 deletions(-) > > diff --git a/mm/kasan/common.c b/mm/kasan/common.c > index a390fae9d64b..fe852f3cfa42 100644 > --- a/mm/kasan/common.c > +++ b/mm/kasan/common.c > @@ -416,7 +416,7 @@ static void *____kasan_kmalloc(struct kmem_cache *cache, const void *object, > if (unlikely(object == NULL)) > return NULL; > > - if (is_kfence_address(object)) > + if (is_kfence_address(kasan_reset_tag(object))) > return (void *)object; > > redzone_start = round_up((unsigned long)(object + size), > diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h > index 11c6e3650468..4fb8106f8e31 100644 > --- a/mm/kasan/kasan.h > +++ b/mm/kasan/kasan.h > @@ -320,22 +320,28 @@ static inline u8 kasan_random_tag(void) { return 0; } > > static inline void kasan_poison(const void *address, size_t size, u8 value) > { > + address = kasan_reset_tag(address); > + > /* Skip KFENCE memory if called explicitly outside of sl*b. */ > if (is_kfence_address(address)) > return; > > - hw_set_mem_tag_range(kasan_reset_tag(address), > + hw_set_mem_tag_range((void *)address, > round_up(size, KASAN_GRANULE_SIZE), value); > } > > static inline void kasan_unpoison(const void *address, size_t size) > { > + u8 tag = get_tag(address); > + > + address = kasan_reset_tag(address); > + > /* Skip KFENCE memory if called explicitly outside of sl*b. */ > if (is_kfence_address(address)) > return; > > - hw_set_mem_tag_range(kasan_reset_tag(address), > - round_up(size, KASAN_GRANULE_SIZE), get_tag(address)); > + hw_set_mem_tag_range((void *)address, > + round_up(size, KASAN_GRANULE_SIZE), tag); > } > > static inline bool kasan_byte_accessible(const void *addr) > -- > 2.30.0.365.g02bc693789-goog >