Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp791632ybi; Fri, 31 May 2019 08:59:04 -0700 (PDT) X-Google-Smtp-Source: APXvYqzVzmCZMO8iC0wVlc4eAZZuXe+JTvLAd+GEligWeh+2EI8iRKmSDmwPAwbSCP7HF+bWPVMK X-Received: by 2002:a17:90a:af8a:: with SMTP id w10mr10660119pjq.132.1559318344749; Fri, 31 May 2019 08:59:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559318344; cv=none; d=google.com; s=arc-20160816; b=xXCMgOlrzpFM3kl/9lnxLPIks5+01ZRWd3Bu7mePaPKtF8Y6MmuIcuR/JfKp0bDLgi usgShJpG7MIew/dFnddai7LQ1spEevQTnnOiQ0kpqrjv2qBcWSpStWBvun2obSc1kgWX R3TL45WR360+iW2gSemEt/Y/zVg1CR5R/3j2cBDS6N5zYzsDNqbKxPY5auOAwCh+2UF2 KeSG0dmd+1YqQ8ot73igbQlnIxbn2sZSGH+iS8wXoRrJmjifQKOqIf5O8WLnDfykV5CC h5nIhudfyu3GJPNIBF+XaCswbhHgZY9/z9SpITcFTQubMMZDgzCl2Ds0MUt8Y2xt2DYu d/6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=5q4pd8tkqz3U6d/6DU2z08AiX+G7zcZW73Uqv7mWZVM=; b=oSMhwwXXO+TJ6/HCJgnbPVw5P9NsMmB7tHsYonItNNfSim68kgObuOReqWq0fRq3lD gfYWdG+VVPVm3hceIVrhuR6PjggYyspWOdmPD03j1dYMa+AgsiJF3ONzX3yyJcVc9PEB /B+q3WGC5WT0q8IK3oGG4bXKxaFlCTLj+Oqq3U0xTWSDtWmO3uZgjb1m2Cv+sNGuDGcP 0PTmuxGgkAlBbp55kKsxttpty14tzvAM90hrN93dD4YCdSCFDh6ZW3GGhLWMBwCDFh+9 enKQlZo3Vbss397aZPfeVXMK7ufydoHQnRZlHR3xh+AI7S4QqyYmIR8I7Y0KA9ZCft6N ObYg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c17si6612839pgd.368.2019.05.31.08.58.48; Fri, 31 May 2019 08:59:04 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726825AbfEaP5l (ORCPT + 99 others); Fri, 31 May 2019 11:57:41 -0400 Received: from foss.arm.com ([217.140.101.70]:53658 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726576AbfEaP5l (ORCPT ); Fri, 31 May 2019 11:57:41 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3324A341; Fri, 31 May 2019 08:57:40 -0700 (PDT) Received: from lakrids.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3DB213F59C; Fri, 31 May 2019 08:57:37 -0700 (PDT) Date: Fri, 31 May 2019 16:57:30 +0100 From: Mark Rutland To: Marco Elver Cc: peterz@infradead.org, aryabinin@virtuozzo.com, dvyukov@google.com, glider@google.com, andreyknvl@google.com, hpa@zytor.com, corbet@lwn.net, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, x86@kernel.org, arnd@arndb.de, jpoimboe@redhat.com, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, kasan-dev@googlegroups.com Subject: Re: [PATCH v3 1/3] lib/test_kasan: Add bitops tests Message-ID: <20190531155730.GA2646@lakrids.cambridge.arm.com> References: <20190531150828.157832-1-elver@google.com> <20190531150828.157832-2-elver@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190531150828.157832-2-elver@google.com> User-Agent: Mutt/1.11.1+11 (2f07cb52) (2018-12-01) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, May 31, 2019 at 05:08:29PM +0200, Marco Elver wrote: > This adds bitops tests to the test_kasan module. In a follow-up patch, > support for bitops instrumentation will be added. > > Signed-off-by: Marco Elver > --- > Changes in v3: > * Use kzalloc instead of kmalloc. > * Use sizeof(*bits). Thatnks for cleaning these up! FWIW: Acked-by: Mark Rutland Mark. > > Changes in v2: > * Use BITS_PER_LONG. > * Use heap allocated memory for test, as newer compilers (correctly) > warn on OOB stack access. > --- > lib/test_kasan.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++-- > 1 file changed, 72 insertions(+), 3 deletions(-) > > diff --git a/lib/test_kasan.c b/lib/test_kasan.c > index 7de2702621dc..1ef9702327d2 100644 > --- a/lib/test_kasan.c > +++ b/lib/test_kasan.c > @@ -11,16 +11,17 @@ > > #define pr_fmt(fmt) "kasan test: %s " fmt, __func__ > > +#include > #include > +#include > #include > -#include > #include > +#include > +#include > #include > #include > #include > #include > -#include > -#include > > /* > * Note: test functions are marked noinline so that their names appear in > @@ -623,6 +624,73 @@ static noinline void __init kasan_strings(void) > strnlen(ptr, 1); > } > > +static noinline void __init kasan_bitops(void) > +{ > + long *bits = kzalloc(sizeof(*bits), GFP_KERNEL); > + if (!bits) > + return; > + > + pr_info("within-bounds in set_bit"); > + set_bit(0, bits); > + > + pr_info("within-bounds in set_bit"); > + set_bit(BITS_PER_LONG - 1, bits); > + > + pr_info("out-of-bounds in set_bit\n"); > + set_bit(BITS_PER_LONG, bits); > + > + pr_info("out-of-bounds in __set_bit\n"); > + __set_bit(BITS_PER_LONG, bits); > + > + pr_info("out-of-bounds in clear_bit\n"); > + clear_bit(BITS_PER_LONG, bits); > + > + pr_info("out-of-bounds in __clear_bit\n"); > + __clear_bit(BITS_PER_LONG, bits); > + > + pr_info("out-of-bounds in clear_bit_unlock\n"); > + clear_bit_unlock(BITS_PER_LONG, bits); > + > + pr_info("out-of-bounds in __clear_bit_unlock\n"); > + __clear_bit_unlock(BITS_PER_LONG, bits); > + > + pr_info("out-of-bounds in change_bit\n"); > + change_bit(BITS_PER_LONG, bits); > + > + pr_info("out-of-bounds in __change_bit\n"); > + __change_bit(BITS_PER_LONG, bits); > + > + pr_info("out-of-bounds in test_and_set_bit\n"); > + test_and_set_bit(BITS_PER_LONG, bits); > + > + pr_info("out-of-bounds in __test_and_set_bit\n"); > + __test_and_set_bit(BITS_PER_LONG, bits); > + > + pr_info("out-of-bounds in test_and_set_bit_lock\n"); > + test_and_set_bit_lock(BITS_PER_LONG, bits); > + > + pr_info("out-of-bounds in test_and_clear_bit\n"); > + test_and_clear_bit(BITS_PER_LONG, bits); > + > + pr_info("out-of-bounds in __test_and_clear_bit\n"); > + __test_and_clear_bit(BITS_PER_LONG, bits); > + > + pr_info("out-of-bounds in test_and_change_bit\n"); > + test_and_change_bit(BITS_PER_LONG, bits); > + > + pr_info("out-of-bounds in __test_and_change_bit\n"); > + __test_and_change_bit(BITS_PER_LONG, bits); > + > + pr_info("out-of-bounds in test_bit\n"); > + (void)test_bit(BITS_PER_LONG, bits); > + > +#if defined(clear_bit_unlock_is_negative_byte) > + pr_info("out-of-bounds in clear_bit_unlock_is_negative_byte\n"); > + clear_bit_unlock_is_negative_byte(BITS_PER_LONG, bits); > +#endif > + kfree(bits); > +} > + > static int __init kmalloc_tests_init(void) > { > /* > @@ -664,6 +732,7 @@ static int __init kmalloc_tests_init(void) > kasan_memchr(); > kasan_memcmp(); > kasan_strings(); > + kasan_bitops(); > > kasan_restore_multi_shot(multishot); > > -- > 2.22.0.rc1.257.g3120a18244-goog >