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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A2EBDC433FE for ; Wed, 30 Nov 2022 14:11:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 262DA6B0072; Wed, 30 Nov 2022 09:11:50 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2138A6B0073; Wed, 30 Nov 2022 09:11:50 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0DB0C6B0074; Wed, 30 Nov 2022 09:11:50 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id F04CF6B0072 for ; Wed, 30 Nov 2022 09:11:49 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id B0364161092 for ; Wed, 30 Nov 2022 14:11:49 +0000 (UTC) X-FDA: 80190297138.17.EFBC47B Received: from mail-pg1-f170.google.com (mail-pg1-f170.google.com [209.85.215.170]) by imf01.hostedemail.com (Postfix) with ESMTP id A67DB40023 for ; Wed, 30 Nov 2022 14:11:47 +0000 (UTC) Received: by mail-pg1-f170.google.com with SMTP id s196so16169937pgs.3 for ; Wed, 30 Nov 2022 06:11:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=8cVvNyKtufNa8rAjSWHiN1tGPoWILfr7xg86SXOtMxo=; b=XKwVdAfOI1u1oPLKzd3snv3q/AZbbwGy3n8Lr7XL5R3R1ln0sKbkvKztrFolUep3wL DBQqw3BQANZ0judOonr2BgnmNyboGPg9nOs65Se5996SEOSgoZODKNcVl0T5qWQZbdrk 9CfjK7DKNsFXwmr0gXy2IbSHVZRysBKiRdovbCi1wItupMJqQp04nKMuS8HMvaK87uam lGXcgU8lXCtRE8hM6lD6426YQ1cjp0PCQMZ85kCEflva3PJsga+pn3Rw4aQbdLdAMp2/ fS9dKDlctIi8N2mw5CokipJbU0x+KM/A+DJ5Y6gNxsS1wiDg6PAC/cs5UIJeZxWPLOmY Qlgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=8cVvNyKtufNa8rAjSWHiN1tGPoWILfr7xg86SXOtMxo=; b=5KNU+HOLGltP+44mHmjMZoBbcTZO1Jx4OjcHdqzQKChkB0oip2E4IT/pcxIp8MK9+j HYVLX5Em7+evj6BVpKEG+CH374dlC6NA1hi/1CdeBOjhQ+ONBqC7ZgedZfg8OaSgRg+W AfmEodHODaKJ7R6n+oXndKrV1eHGWUKdggPF7GXMDnZGZpA6D5Xi0YtQDI3TqCWPjgYQ P9CaQoIRjgMSSvTz6lqs1L0IwZeKxT5k7zLW/khvwcrfXxN+aXj41KTM2OhHfqMFvDTS MC/W3swdkYUV8h3ORe1xNGglKp1nvKLh92kEIRWlGlDT6rr34+tt3k0DMFQyZqC1a1Xb +QqQ== X-Gm-Message-State: ANoB5pmNPHwoVl72lNEfj9QwoQhjcQAsT6KOvusqN7a5pRXvmcvMQr1w qzhqfre8jjkyX4+bQiaFyoOu1u4A3YCs6pnethc= X-Google-Smtp-Source: AA0mqf7yVsc7I8xt+oo4P1rrPtumZTeAyGc9Feqy40OPOKxUqMquajvaM/o/s/5QWepRzcJmv848dtFhVXPohDHxnGA= X-Received: by 2002:a62:2702:0:b0:572:8766:598b with SMTP id n2-20020a622702000000b005728766598bmr42059861pfn.21.1669817506180; Wed, 30 Nov 2022 06:11:46 -0800 (PST) MIME-Version: 1.0 References: <20221118035656.gonna.698-kees@kernel.org> <202211261654.5F276B51B@keescook> In-Reply-To: <202211261654.5F276B51B@keescook> From: Andrey Konovalov Date: Wed, 30 Nov 2022 15:11:35 +0100 Message-ID: Subject: Re: [PATCH v2] mm: Make ksize() a reporting-only function To: Kees Cook Cc: Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Andrey Ryabinin , Alexander Potapenko , Dmitry Vyukov , Vincenzo Frascino , linux-mm@kvack.org, kasan-dev@googlegroups.com, Vlastimil Babka , linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Content-Type: text/plain; charset="UTF-8" ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1669817507; a=rsa-sha256; cv=none; b=8BnhVsiKI8Vv865JCwzs9gAggmSF8lVh9tTpI/uKMs8hiAvO4tPyR03C3hCDU+2BWvrdXV vyVpKmLzb1n/8hsQX7vkzkVWoNzgnI4tGb8rIyAEKOSVdmu4HwjjvKYfflT+riHfnuR4sG 7IJRIUccXz/idJ/HJTviHpyFU/03/U8= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=XKwVdAfO; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.215.170 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1669817507; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=8cVvNyKtufNa8rAjSWHiN1tGPoWILfr7xg86SXOtMxo=; b=rIP9/LtnRrPFOoQMzk5QElob8bY03qIIkRKxnMX3MOmnDlTJAN2c4e/1F4ya75rDnk9j4G 5r2FqHceCE6KqDLH9dkM/AskcEMXR3SbdKy/Uo7Uy24R7+LbeA7Ec6PfIUybanJOjnfdWo D/T8tvMeorQIAe6u8at/Lal967D0bls= X-Rspamd-Queue-Id: A67DB40023 Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=XKwVdAfO; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.215.170 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com X-Rspamd-Server: rspam12 X-Rspam-User: X-Stat-Signature: xtawg7qhwt3x6bxjf1yqmom1mgrcproy X-HE-Tag: 1669817507-400543 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, Nov 27, 2022 at 1:55 AM Kees Cook wrote: > > > I just realized there's an issue here with the tag-based modes, as > > they align the unpoisoned area to 16 bytes. > > > > One solution would be to change the allocation size to 128 - > > KASAN_GRANULE_SIZE - 5, the same way kmalloc_oob_right test does it, > > so that the last 16-byte granule won't get unpoisoned for the > > tag-based modes. And then check that the ptr[size] access fails only > > for the Generic mode. > > Ah! Good point. Are you able to send a patch? I suspect you know exactly > what to change; it might take me a bit longer to double-check all of > those details. Let's do it like this: size_t size = 128 - KASAN_GRANULE_SIZE - 5, real_size. ... /* These must trigger a KASAN report. */ if (IS_ENABLED(CONFIG_KASAN_GENERIC)) KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[size]); KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[size + 5]); KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[real_size - 1]); Thanks!