From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: ARC-Seal: i=1; a=rsa-sha256; t=1525800092; cv=none; d=google.com; s=arc-20160816; b=A2sh1MpYtuXBsq4C3e26CfBHOdj1dhprePaPJpX/TctEbolhWZ/xSrRIDqhL6QF8iM 0qlcF9B2QIJKgiq7mrz5hVENeYV0Ti304mhiirevegeRLEvLk39ov5FPPOnR6deDx4Aj J4v76X2+2R1FOal9yxS8d1f9KAcvVfRs78GDiXL6TyTIboxOTHx6JCxuGqnyOx1tG7nM 60Ycfx2JSUQiLObeLUq0jLxJseSnbfW1gheWxA8UbclITezf81f5ALxJE6JdmMsbvUSI +dIYaULU31E0oM2J0uLSsbjNsPyGeuZ64C/99Rv6JfFn7QIeb36PUmDFgJQkJModOZKV Qk5Q== 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=Vk6H7EqObGOe3OueMBY6mMglUBWPr45n5C13EM+GkZA=; b=ih18B1pyYqFHkx5cD4duouaeoly5qnvIn5iRB6DoLaXdKc7mxsQIR3c+xp7HPZOkvj R8jy2oViSgQQvXPn0/ui9plSlw8MGGVmpboeocClYZxMorYVl7/lpKq4pv5Xewwm3mvC Tg7tAKem2s0cUUu8gqmRYlbnXjMHUOy8+zWUU/ntzAh2DSHgKG8BjPvfsgyxZzkz/Hcg xO3rf97Rkh+Y+hfr+mQ0sjBj0EVGji/q07XuwkwZMiAP7e3yrg1KsCtsKfVMpgtnht7J 6Em3n8iso5CK7/mnRIalrc/EwYp5GbxTXwi6/dBlMEAYOqk3fTt5uQihIk9X7VI38fKd Iblw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=K1SQbcPc; 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=K1SQbcPc; 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: AB8JxZqRWZSyHBNGwW9+VJuuuaXrydk8vbnqkQFIhjNBMBWFeV8mllDTquBhOCrTGK36NGRP5AFLSQ== From: Andrey Konovalov To: Andrey Ryabinin , Alexander Potapenko , Dmitry Vyukov , Jonathan Corbet , Catalin Marinas , Will Deacon , Christopher Li , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Masahiro Yamada , Michal Marek , Andrey Konovalov , Mark Rutland , Nick Desaulniers , Yury Norov , Marc Zyngier , Kristina Martsenko , Suzuki K Poulose , Punit Agrawal , Dave Martin , Ard Biesheuvel , James Morse , Michael Weiser , Julien Thierry , Tyler Baicar , "Eric W . Biederman" , Thomas Gleixner , Ingo Molnar , Kees Cook , Sandipan Das , David Woodhouse , Paul Lawrence , Herbert Xu , Josh Poimboeuf , Geert Uytterhoeven , Tom Lendacky , Arnd Bergmann , Dan Williams , Michal Hocko , Jan Kara , Ross Zwisler , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Matthew Wilcox , "Kirill A . Shutemov" , Souptick Joarder , Hugh Dickins , Davidlohr Bueso , Greg Kroah-Hartman , Philippe Ombredanne , Kate Stewart , Laura Abbott , Boris Brezillon , Vlastimil Babka , Pintu Agarwal , Doug Berger , Anshuman Khandual , Mike Rapoport , Mel Gorman , Pavel Tatashin , Tetsuo Handa , kasan-dev@googlegroups.com, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, 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 , Chintan Pandya Subject: [PATCH v1 10/16] khwasan, mm: perform untagged pointers comparison in krealloc Date: Tue, 8 May 2018 19:20:56 +0200 Message-Id: <94f6719e7e696977de00354f8201581a8f9108d3.1525798754.git.andreyknvl@google.com> X-Mailer: git-send-email 2.17.0.441.gb46fe60e1d-goog In-Reply-To: References: In-Reply-To: References: X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1599917357759295814?= X-GMAIL-MSGID: =?utf-8?q?1599917357759295814?= 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 0582004351c4..451b094b8c5b 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -1478,7 +1478,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.441.gb46fe60e1d-goog