From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ot0-f197.google.com (mail-ot0-f197.google.com [74.125.82.197]) by kanga.kvack.org (Postfix) with ESMTP id 438426B0003 for ; Mon, 19 Mar 2018 20:49:24 -0400 (EDT) Received: by mail-ot0-f197.google.com with SMTP id g107-v6so4198976otg.20 for ; Mon, 19 Mar 2018 17:49:24 -0700 (PDT) Received: from userp2120.oracle.com (userp2120.oracle.com. [156.151.31.85]) by mx.google.com with ESMTPS id x109-v6si148221otb.12.2018.03.19.17.49.22 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 19 Mar 2018 17:49:22 -0700 (PDT) Subject: Re: [RFC PATCH 09/14] khwasan: add hooks implementation References: <06a4d0c483fba8babd01fe23727fe4a79482d309.1520017438.git.andreyknvl@google.com> From: Anthony Yznaga Message-ID: Date: Mon, 19 Mar 2018 17:44:22 -0700 MIME-Version: 1.0 In-Reply-To: <06a4d0c483fba8babd01fe23727fe4a79482d309.1520017438.git.andreyknvl@google.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: To: Andrey Konovalov , Andrey Ryabinin , Alexander Potapenko , Dmitry Vyukov , Jonathan Corbet , Catalin Marinas , Will Deacon , Theodore Ts'o , Jan Kara , Christopher Li , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Masahiro Yamada , Michal Marek , Mark Rutland , Ard Biesheuvel , Yury Norov , Nick Desaulniers , Marc Zyngier , Bob Picco , Suzuki K Poulose , Kristina Martsenko , Punit Agrawal , Dave Martin , James Morse , Julien Thierry , Michael Weiser , Steve Capper , Ingo Molnar , Thomas Gleixner , Sandipan Das , Paul Lawrence , David Woodhouse , Kees Cook , Geert Uytterhoeven , Josh Poimboeuf , Arnd Bergmann , kasan-dev@googlegroups.com, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-ext4@vger.kernel.org, linux-sparse@vger.kernel.org, linux-mm@kvack.org, linux-kbuild@vger.kernel.org, Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Kees Cook , Jann Horn , Mark Brand Hi Andrey, On 3/2/18 11:44 AM, Andrey Konovalov wrote: > void kasan_poison_kfree(void *ptr, unsigned long ip) > { > + struct page *page; > + > + page = virt_to_head_page(ptr) An untagged addr should be passed to virt_to_head_page(), no? > + > + if (unlikely(!PageSlab(page))) { > + if (reset_tag(ptr) != page_address(page)) { > + /* Report invalid-free here */ > + return; > + } > + kasan_poison_shadow(ptr, PAGE_SIZE << compound_order(page), > + khwasan_random_tag()); > + } else { > + __kasan_slab_free(page->slab_cache, ptr, ip); > + } > } > > void kasan_kfree_large(void *ptr, unsigned long ip) > { > + struct page *page = virt_to_page(ptr); > + struct page *head_page = virt_to_head_page(ptr); Same as above and for virt_to_page() as well. Anthony > + > + if (reset_tag(ptr) != page_address(head_page)) { > + /* Report invalid-free here */ > + return; > + } > + > + kasan_poison_shadow(ptr, PAGE_SIZE << compound_order(page), > + khwasan_random_tag()); > }