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=-7.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no 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 CC46CC2B9F4 for ; Tue, 22 Jun 2021 15:50:05 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 7912E6100A for ; Tue, 22 Jun 2021 15:50:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7912E6100A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 66BB26B005D; Tue, 22 Jun 2021 11:50:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 643506B006C; Tue, 22 Jun 2021 11:50:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 50D046B006E; Tue, 22 Jun 2021 11:50:04 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0001.hostedemail.com [216.40.44.1]) by kanga.kvack.org (Postfix) with ESMTP id 19C696B005D for ; Tue, 22 Jun 2021 11:50:04 -0400 (EDT) Received: from forelay.prod.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by fograve03.hostedemail.com (Postfix) with ESMTP id 76CF6180921D0 for ; Tue, 22 Jun 2021 13:55:07 +0000 (UTC) Received: from smtpin21.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 57336160C0 for ; Tue, 22 Jun 2021 13:54:57 +0000 (UTC) X-FDA: 78281505834.21.1FA31BB Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) by imf25.hostedemail.com (Postfix) with ESMTP id EDC1B60019C7 for ; Tue, 22 Jun 2021 13:54:56 +0000 (UTC) Received: by mail-ed1-f45.google.com with SMTP id d7so23870883edx.0 for ; Tue, 22 Jun 2021 06:54:56 -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=P7b5G3A0+58gTpXa0/n5lleUJqlnrASAuqzNx+IB8OE=; b=Do7Q+4WVU0WjOoWN7dbhO+1BES2mXGeaLQiaGBDhR9Gm3cUN3Fjg6WG7we7cfzgJuR fORpsoTEVuyHROhZnXXzltRfHNofIorWoBTq/5nqwHnfJ/rqMgiVfvIvpDRWIxawoPRT x+YF0vcRsSvdf4dWRJbLozaa/4mBIr7qyl2RH1RMtFcMCi0qnhwrlbg1uRynBNt7Ee4m uFP1fCjD4whgY4sS+yS1Hf1jeVRvB3lO1A0qeJuVvuxNELRTFU6Ijv00UBtCyeisD87O 5ZlE5BuSMN14eZOQ1A99vPtzBR54G3ro7W59NMoei/GHo+Qv8+V2Cq83g2ei20nPUHKn bRTw== 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=P7b5G3A0+58gTpXa0/n5lleUJqlnrASAuqzNx+IB8OE=; b=mMmhRpEtxUDXfWDUvA6jX7OxPO2ZGaqkROD64m4OFp1kT4/fasd7AkxhwhCHeYZ1KG T01Trmnq1sWZm+Z3zyEL8mneEST7UVHE2pFQ+2263jakklPXuFuZleX1T6x7bm4dnhBd rtGjmGWKtSxbY1uO4yRDh73K00nYA527KT22CGohPOUdIMnud/rTwQ/tVMZ2BWbIHel6 W+9JXBtkSYJuSaMaq599DRS+BzNVK1nhU6fUlFk9wPxZIP3X95LMUFgTgOKnx8FkDRVv wZ45//U/GAIvi4pdxZtp1e+GyMovr3JrFTQVhN/CqnjXvAjDsBpA3l1PKJh7NKG+4pi/ R3Hg== X-Gm-Message-State: AOAM531ZGRdJlb79uSaVOCmrny6cOFn7ZidaV7Bd+jS/P3v9mFFDyjfL zOFUrU2N7TYJRkoFCFpZ5l4JnAASSgQbGQAaXfI= X-Google-Smtp-Source: ABdhPJwW6EaB1bmA1xujcy7BGJIRwEuHmi2zdTinLMNFFthY6zB2HCEAPGIQHaohEk1ZUfALmzQ7FTNoQaVgHf/h6k4= X-Received: by 2002:a05:6402:1014:: with SMTP id c20mr5097086edu.70.1624370094862; Tue, 22 Jun 2021 06:54:54 -0700 (PDT) MIME-Version: 1.0 References: <20210620114756.31304-1-Kuan-Ying.Lee@mediatek.com> <20210620114756.31304-3-Kuan-Ying.Lee@mediatek.com> In-Reply-To: <20210620114756.31304-3-Kuan-Ying.Lee@mediatek.com> From: Andrey Konovalov Date: Tue, 22 Jun 2021 16:54:34 +0300 Message-ID: Subject: Re: [PATCH v3 2/3] kasan: integrate the common part of two KASAN tag-based modes To: Kuan-Ying Lee Cc: Andrey Ryabinin , Alexander Potapenko , Marco Elver , Dmitry Vyukov , Andrew Morton , Matthias Brugger , kasan-dev , LKML , Linux Memory Management List , Linux ARM , linux-mediatek@lists.infradead.org, wsd_upstream@mediatek.com, chinwen.chang@mediatek.com, nicholas.tang@mediatek.com Content-Type: text/plain; charset="UTF-8" Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20161025 header.b=Do7Q+4WV; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf25.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.208.45 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com X-Rspamd-Server: rspam02 X-Stat-Signature: i1ijrea95pyr9nc487j5odp1qp71fh9u X-Rspamd-Queue-Id: EDC1B60019C7 X-HE-Tag: 1624370096-665576 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Sun, Jun 20, 2021 at 2:48 PM Kuan-Ying Lee wrote: > > 1. Move kasan_get_free_track() and kasan_set_free_info() > into tags.c Please mention that the patch doesn't only move but also combines these functions for SW_TAGS and HW_TAGS modes. > --- /dev/null > +++ b/mm/kasan/report_tags.h > @@ -0,0 +1,55 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * Copyright (c) 2014 Samsung Electronics Co., Ltd. > + * Copyright (c) 2020 Google, Inc. > + */ > +#ifndef __MM_KASAN_REPORT_TAGS_H > +#define __MM_KASAN_REPORT_TAGS_H > + > +#include "kasan.h" > +#include "../slab.h" > + > +const char *kasan_get_bug_type(struct kasan_access_info *info) As mentioned by Alex, don't put this implementation into a header. Put it into report_tags.c. The declaration is already in kasan.h. > +{ > +#ifdef CONFIG_KASAN_TAGS_IDENTIFY > + struct kasan_alloc_meta *alloc_meta; > + struct kmem_cache *cache; > + struct page *page; > + const void *addr; > + void *object; > + u8 tag; > + int i; > + > + tag = get_tag(info->access_addr); > + addr = kasan_reset_tag(info->access_addr); > + page = kasan_addr_to_page(addr); > + if (page && PageSlab(page)) { > + cache = page->slab_cache; > + object = nearest_obj(cache, page, (void *)addr); > + alloc_meta = kasan_get_alloc_meta(cache, object); > + > + if (alloc_meta) { > + for (i = 0; i < KASAN_NR_FREE_STACKS; i++) { > + if (alloc_meta->free_pointer_tag[i] == tag) > + return "use-after-free"; > + } > + } > + return "out-of-bounds"; > + } > +#endif > + > + /* > + * If access_size is a negative number, then it has reason to be > + * defined as out-of-bounds bug type. > + * > + * Casting negative numbers to size_t would indeed turn up as > + * a large size_t and its value will be larger than ULONG_MAX/2, > + * so that this can qualify as out-of-bounds. > + */ > + if (info->access_addr + info->access_size < info->access_addr) > + return "out-of-bounds"; > + > + return "invalid-access"; > +}