From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: ARC-Seal: i=1; a=rsa-sha256; t=1521828380; cv=none; d=google.com; s=arc-20160816; b=UHj0IYGd4IGpxHp0Vo5B3lFgNDiFivtaGAAdB2JYfNCCt3E6Cz7oL8vgvxA4s3Md3R yFpIkWlr7z0054MEersvyaqDnKRyAPUZieqcLiKKKKWdQfrzNeiKNCME6mZUzJlgVV/C khstmazwOKl+K4Dm7hvg7jtnPq+Lks4EXA9iqvCIc23NMsoDMGd/YKryUAYI9g3lpibg RUvVCG+D3eBNCbtzoEcNhVCTnXt71c+mKF/o6B9CLQ4rCND16dTPxd7D882sjnSHX5HF uYYxJMHV8XwpS4kHqIMfhimM0jVlsAHuh/A9/3FQvf2vX5Qsf881dwLW7PKLIQ7XWXw/ m11g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=mUDeQOFtVJWXm0knc1bDJKVfDM0pxa/3uJzZ1chGIyw=; b=ptyosl7GS+Np1OTOllpTtfsnJWSMFJEcV8r+dHbrtsdJDkfBUJidFAdlpgOC7dW+kY hLfj3P5gSDzlqlMQLeZMazKRat0gv2mWb7oZxb/2RNl+hi1uce6QBHS1fJwQ34A3H49l MGwHN2j96RELaTFzrOv1eskylK7747Wz4Ynzi2VcyGoIfbDVURuxGA4wJ/crtCK31Yzb 9vG7gN5VzCifbVBAlRU2y3P38Ah59l/Km05sf3fiDj8t2+HbaqJVwKZe8FgVFkvhkxuc 5n2+roBZl8tcJ5jsgbwXVCg55BymiuI+7xeq/Y++7K0Pq0DFxWUAvZOf8pFVoRKhKQ9i b71Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=jIFClqM2; spf=pass (google.com: domain of andreyknvl@google.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=andreyknvl@google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=jIFClqM2; spf=pass (google.com: domain of andreyknvl@google.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=andreyknvl@google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com X-Google-Smtp-Source: AG47ELuwVASQJuluZ/sxgns/L2ZBnFzahf5eN8QRG8B7Cl5vv15nFLehmUwm5Hp9VuoeLi93oMVzqw== From: Andrey Konovalov To: Andrey Ryabinin , Alexander Potapenko , Dmitry Vyukov , Jonathan Corbet , Catalin Marinas , Will Deacon , Christoffer Dall , Marc Zyngier , Christopher Li , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Masahiro Yamada , Michal Marek , "GitAuthor : Andrey Konovalov" , Mark Rutland , Ard Biesheuvel , Yury Norov , Nick Desaulniers , Suzuki K Poulose , Kristina Martsenko , Punit Agrawal , Dave Martin , Michael Weiser , James Morse , Julien Thierry , Steve Capper , Tyler Baicar , "Eric W . Biederman" , Stephen Boyd , Thomas Gleixner , Ingo Molnar , Paul Lawrence , Greg Kroah-Hartman , David Woodhouse , Sandipan Das , Kees Cook , Herbert Xu , 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, kvmarm@lists.cs.columbia.edu, linux-sparse@vger.kernel.org, linux-mm@kvack.org, linux-kbuild@vger.kernel.org Cc: Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Kees Cook , Jann Horn , Mark Brand Subject: [RFC PATCH v2 11/15] khwasan, mm: perform untagged pointers comparison in krealloc Date: Fri, 23 Mar 2018 19:05:47 +0100 Message-Id: <6eb08c160ae23eb890bd937ddf8346ba211df09f.1521828274.git.andreyknvl@google.com> X-Mailer: git-send-email 2.17.0.rc0.231.g781580f067-goog In-Reply-To: References: In-Reply-To: References: X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1595752716297382191?= X-GMAIL-MSGID: =?utf-8?q?1595752716297382191?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: The krealloc function checks where the same buffer was reused or a new one allocated by comparing kernel pointers. KHWASAN changes memory tag on the krealloc'ed chunk of memory and therefore also changes the pointer tag of the returned pointer. Therefore we need to perform comparison on untagged (with tags reset) pointers to check whether it's the same memory region or not. Signed-off-by: Andrey Konovalov --- mm/slab_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/slab_common.c b/mm/slab_common.c index a33e61315ca6..5911f2194cf7 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -1494,7 +1494,7 @@ void *krealloc(const void *p, size_t new_size, gfp_t flags) } ret = __do_krealloc(p, new_size, flags); - if (ret && p != ret) + if (ret && khwasan_reset_tag(p) != khwasan_reset_tag(ret)) kfree(p); return ret; -- 2.17.0.rc0.231.g781580f067-goog