From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9D6173DB641 for ; Tue, 19 May 2026 07:35:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779176160; cv=none; b=KJblg+C+KHaKEG6HVB3zUWfBhtR3zN2cfS+B2CmHhJmmoEV2EbgdRNy1t7lK3UgM+VHeAVaeWzIODtNI0qyh5T67BVm6GVmX2fMhY0uZqWk+STtuU/ND3zk0T9kHwr+G1Y7p9iTGuTEZtmeLh2Rxy8SZRlQee/3Laaly4AHoP94= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779176160; c=relaxed/simple; bh=lrNkq8vPNhkoaGraKXb5A4V1Dd+fTMSHxiXMaQsexgo=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=Fd+b+A8Mm7Z3YSHGI41ZyUp/ofYznMLxav7GP7GDPGdwgxrqMLjxjs0vtSgto/w1qfMKUDpzPqaGFkjvNmsK+kOvbXZqxB3hPYdmcl1Lxt8Lh94QB0a4Om6aEFU2RXdPAK+2F/VVOXXqBRBMjwF9gUGYxpNCJzcGSTINVFv81NM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=UKVx6mfL; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="UKVx6mfL" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 6D46D34FC; Tue, 19 May 2026 00:35:51 -0700 (PDT) Received: from [10.164.19.29] (unknown [10.164.19.29]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 478FF3F632; Tue, 19 May 2026 00:35:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1779176156; bh=lrNkq8vPNhkoaGraKXb5A4V1Dd+fTMSHxiXMaQsexgo=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=UKVx6mfLx2RPQMAb+GC/xBVqDqFz2f6ViqSFuUy1fR5x94T8y/nE6RGjhqZfxhwOa FkVpeLJLBFgnh3bNEdvdN4M1KdDq/pXOIz7TZZnUQp18CFoFQkSa4WV5INEGLn+ANv DlRw6Wzj/ZrHHSEHczZN+SuXjvYH1JnIb1dcFDMU= Message-ID: Date: Tue, 19 May 2026 13:05:44 +0530 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 3/3] vmalloc: hw_tags: optimize vmalloc redzoning To: akpm@linux-foundation.org, vbabka@kernel.org, harry@kernel.org, ryabinin.a.a@gmail.com Cc: surenb@google.com, mhocko@suse.com, jackmanb@google.com, hannes@cmpxchg.org, ziy@nvidia.com, hao.li@linux.dev, cl@gentwo.org, rientjes@google.com, roman.gushchin@linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, glider@google.com, andreyknvl@gmail.com, dvyukov@google.com, vincenzo.frascino@arm.com, kasan-dev@googlegroups.com, ryan.roberts@arm.com, anshuman.khandual@arm.com, catalin.marinas@arm.com References: <20260513105734.3380544-1-dev.jain@arm.com> <20260513105734.3380544-4-dev.jain@arm.com> Content-Language: en-US From: Dev Jain In-Reply-To: <20260513105734.3380544-4-dev.jain@arm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 13/05/26 4:27 pm, Dev Jain wrote: > If the allocation size is less than a page, vmalloc first unpoisons the > entire page, then poisons the tail with KASAN_TAG_INVALID (for hw tags), > to catch OOB. > > Instead, unpoison the allocation length, and then poison the tail, > saving some work. My bad, I see that the actual allocation size (and not page-aligned size) is passed down to kasan_unpoison_vmalloc, so this patch is a no-op. I'll drop it. > > Signed-off-by: Dev Jain > --- > mm/kasan/hw_tags.c | 13 ++++++++----- > 1 file changed, 8 insertions(+), 5 deletions(-) > > diff --git a/mm/kasan/hw_tags.c b/mm/kasan/hw_tags.c > index cbef5e450954..7c94f71b5f12 100644 > --- a/mm/kasan/hw_tags.c > +++ b/mm/kasan/hw_tags.c > @@ -364,9 +364,6 @@ void *__kasan_unpoison_vmalloc(const void *start, unsigned long size, > tag = (flags & KASAN_VMALLOC_KEEP_TAG) ? get_tag(start) : kasan_random_tag(); > start = set_tag(start, tag); > > - /* Unpoison and initialize memory up to size. */ > - kasan_unpoison(start, size, flags & KASAN_VMALLOC_INIT); > - > /* > * Explicitly poison and initialize the in-page vmalloc() redzone. > * Unlike software KASAN modes, hardware tag-based KASAN doesn't > @@ -375,8 +372,14 @@ void *__kasan_unpoison_vmalloc(const void *start, unsigned long size, > redzone_start = round_up((unsigned long)start + size, > KASAN_GRANULE_SIZE); > redzone_size = round_up(redzone_start, PAGE_SIZE) - redzone_start; > - kasan_poison((void *)redzone_start, redzone_size, KASAN_TAG_INVALID, > - flags & KASAN_VMALLOC_INIT); > + > + /* Unpoison and initialize memory before the redzone. */ > + kasan_unpoison(start, redzone_start - (unsigned long)start, > + flags & KASAN_VMALLOC_INIT); > + > + if (redzone_size) > + kasan_poison((void *)redzone_start, redzone_size, > + KASAN_TAG_INVALID, flags & KASAN_VMALLOC_INIT); > > /* > * Set per-page tag flags to allow accessing physical memory for the