linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
To: Andrey Konovalov <andreyknvl@gmail.com>
Cc: Vitaly Buka <vitalybuka@google.com>, <kees@kernel.org>,
	<julian.stecklina@cyberus-technology.de>,
	<kevinloughlin@google.com>, <peterz@infradead.org>,
	<tglx@linutronix.de>, <justinstitt@google.com>,
	<catalin.marinas@arm.com>, <wangkefeng.wang@huawei.com>,
	<bhe@redhat.com>, <ryabinin.a.a@gmail.com>,
	<kirill.shutemov@linux.intel.com>, <will@kernel.org>,
	<ardb@kernel.org>, <jason.andryuk@amd.com>,
	<dave.hansen@linux.intel.com>, <pasha.tatashin@soleen.com>,
	<guoweikang.kernel@gmail.com>, <dwmw@amazon.co.uk>,
	<mark.rutland@arm.com>, <broonie@kernel.org>,
	<apopple@nvidia.com>, <bp@alien8.de>, <rppt@kernel.org>,
	<kaleshsingh@google.com>, <richard.weiyang@gmail.com>,
	<luto@kernel.org>, <glider@google.com>, <pankaj.gupta@amd.com>,
	<pawan.kumar.gupta@linux.intel.com>,
	<kuan-ying.lee@canonical.com>, <tony.luck@intel.com>,
	<tj@kernel.org>, <jgross@suse.com>, <dvyukov@google.com>,
	<baohua@kernel.org>, <samuel.holland@sifive.com>,
	<dennis@kernel.org>, <akpm@linux-foundation.org>,
	<thomas.weissschuh@linutronix.de>, <surenb@google.com>,
	<kbingham@kernel.org>, <ankita@nvidia.com>, <nathan@kernel.org>,
	<ziy@nvidia.com>, <xin@zytor.com>, <rafael.j.wysocki@intel.com>,
	<andriy.shevchenko@linux.intel.com>, <cl@linux.com>,
	<jhubbard@nvidia.com>, <hpa@zytor.com>,
	<scott@os.amperecomputing.com>, <david@redhat.com>,
	<jan.kiszka@siemens.com>, <vincenzo.frascino@arm.com>,
	<corbet@lwn.net>, <maz@kernel.org>, <mingo@redhat.com>,
	<arnd@arndb.de>, <ytcoode@gmail.com>, <xur@google.com>,
	<morbo@google.com>, <thiago.bauermann@linaro.org>,
	<linux-doc@vger.kernel.org>, <kasan-dev@googlegroups.com>,
	<linux-kernel@vger.kernel.org>, <llvm@lists.linux.dev>,
	<linux-mm@kvack.org>, <linux-arm-kernel@lists.infradead.org>,
	<x86@kernel.org>
Subject: Re: [PATCH v2 01/14] kasan: sw_tags: Use arithmetic shift for shadow computation
Date: Thu, 13 Mar 2025 15:56:00 +0100	[thread overview]
Message-ID: <qacbgkfbfqylupmoc7umy4n5pdvpdp7hrok7hqefhamhrsnhhm@4e2qucovduw2> (raw)
In-Reply-To: <CA+fCnZdE+rVcoR-sMLdk8e-1Jo_tybOc7PtSp9K6HrP5BEv95g@mail.gmail.com>

On 2025-03-07 at 02:10:39 +0100, Andrey Konovalov wrote:
>On Tue, Mar 4, 2025 at 3:08 PM Maciej Wieczor-Retman
><maciej.wieczor-retman@intel.com> wrote:
>>
>> But looking at the patch you sent I'm wondering - are we treating the arithmetic
>> in kasan_mem_to_shadow() as unsigned?
>
>The shift is signed (arithmetic). But for the addition, it doesn't
>matter? Adding an integer to a void* pointer should result in the same
>value, regardless of whether the integer is signed or unsigned.

Yes, you're right, sorry.

>
>> You wrote that all the ranges will
>> overflow but I thought we're interpreting the arithmetic as signed - so only
>> positive addresses will overflow and negative addresses (with bit 63 set) will
>> only be more negative thus not causing an overflow.
>
>Ah, yes, I see what you mean. From the C point of view, calculating
>the shadow address for a pointer with bit 63 set can be interpreted as
>subtracting from KASAN_SHADOW_OFFSET, and there's no overflow. But on
>the assembly level, the compiler should generate the add instruction,
>and the addition will overflow in both cases.
>
>The important thing is that both possible shadow memory ranges are
>contiguous (either both start and end overflow or none of them).
>
>So this was my brain converting things to assembly. Feel free to
>reword/clarify the comments.

Right, I focused too much on the signed aspect. Treating everything as
overflowing sounds better, more unified.

>
>> That was my assumption when
>> writing the previous checks - we need to check below the overflown range, above
>> the negative (not overflown) range, and between the two.
>
>It could be that your checks are equivalent to mine. What I did was to
>check that the address lies outside of both contiguous regions, which
>makes the checks symmetrical and IMO easier to follow.

I drew this out and yeah, it looks like it's the same, just grouping the logical
expressions differently. What do you think about incorporating something like
the following into your comment about the x86 part? :

	Given the KASAN_SHADOW_OFFSET equal 0xffeffc0000000000
	the following ranges are valid mem-to-shadow mappings:

	0xFFFFFFFFFFFFFFFF
		INVALID
	0xFFEFFBFFFFFFFFFF - kasan_mem_to_shadow(~0UL)
		VALID	- kasan shadow mem
		VALID	- non-canonical kernel virtual address
	0xFFCFFC0000000000 - kasan_mem_to_shadow(0xFEUL << 56)
		INVALID
	0x07EFFBFFFFFFFFFF - kasan_mem_to_shadow(~0UL >> 1)
		VALID	- non-canonical user virtual addresses
		VALID	- user addresses
	0x07CFFC0000000000 - kasan_mem_to_shadow(0x7EUL << 56)
		INVALID
	0x0000000000000000

-- 
Kind regards
Maciej Wieczór-Retman


  reply	other threads:[~2025-03-13 14:58 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-18  8:15 [PATCH v2 00/14] kasan: x86: arm64: KASAN tag-based mode for x86 Maciej Wieczor-Retman
2025-02-18  8:15 ` [PATCH v2 01/14] kasan: sw_tags: Use arithmetic shift for shadow computation Maciej Wieczor-Retman
2025-02-19 23:29   ` Andrey Konovalov
2025-02-21 13:11     ` Maciej Wieczor-Retman
2025-02-22 15:06       ` Andrey Konovalov
2025-02-25 17:20         ` Maciej Wieczor-Retman
2025-02-25 19:12           ` Maciej Wieczor-Retman
2025-02-25 20:12             ` Maciej Wieczor-Retman
2025-02-25 21:38               ` Andrey Konovalov
2025-02-26 16:42                 ` Maciej Wieczor-Retman
2025-02-26 19:44                   ` Andrey Konovalov
2025-02-27 12:27                     ` Maciej Wieczor-Retman
2025-02-28 16:12                       ` Maciej Wieczor-Retman
2025-03-01  0:21                         ` Andrey Konovalov
2025-03-04 14:06                           ` Maciej Wieczor-Retman
2025-03-07  1:10                             ` Andrey Konovalov
2025-03-13 14:56                               ` Maciej Wieczor-Retman [this message]
2025-03-18 15:31                                 ` Andrey Konovalov
2025-02-25 21:37           ` Andrey Konovalov
2025-02-27 12:33             ` Maciej Wieczor-Retman
2025-03-01  0:22               ` Andrey Konovalov
2025-03-04 12:29                 ` Maciej Wieczor-Retman
2025-03-07  1:10                   ` Andrey Konovalov
2025-03-14 15:57                     ` Maciej Wieczor-Retman
2025-03-18 15:32                       ` Andrey Konovalov
2025-02-18  8:15 ` [PATCH v2 02/14] kasan: sw_tags: Check kasan_flag_enabled at runtime Maciej Wieczor-Retman
2025-02-19 23:30   ` Andrey Konovalov
2025-02-21 14:35     ` Maciej Wieczor-Retman
2025-02-18  8:15 ` [PATCH v2 03/14] kasan: sw_tags: Support outline stack tag generation Maciej Wieczor-Retman
2025-02-19 23:30   ` Andrey Konovalov
2025-02-18  8:15 ` [PATCH v2 04/14] kasan: sw_tags: Support tag widths less than 8 bits Maciej Wieczor-Retman
2025-02-18  8:15 ` [PATCH v2 05/14] kasan: arm64: x86: Make special tags arch specific Maciej Wieczor-Retman
2025-02-18  8:15 ` [PATCH v2 06/14] x86: Add arch specific kasan functions Maciej Wieczor-Retman
2025-02-19 23:30   ` Andrey Konovalov
2025-02-21  8:40     ` Maciej Wieczor-Retman
2025-02-18  8:15 ` [PATCH v2 07/14] x86: Reset tag for virtual to physical address conversions Maciej Wieczor-Retman
2025-02-18  8:15 ` [PATCH v2 08/14] x86: Physical address comparisons in fill_p*d/pte Maciej Wieczor-Retman
2025-02-18  8:15 ` [PATCH v2 09/14] mm: Pcpu chunk address tag reset Maciej Wieczor-Retman
2025-03-20 17:39   ` Andrey Ryabinin
2025-03-20 17:47     ` Andrey Konovalov
2025-03-21 10:40     ` Maciej Wieczor-Retman
2025-02-18  8:15 ` [PATCH v2 10/14] x86: KASAN raw shadow memory PTE init Maciej Wieczor-Retman
2025-02-18  8:15 ` [PATCH v2 11/14] x86: LAM initialization Maciej Wieczor-Retman
2025-02-18  8:15 ` [PATCH v2 12/14] x86: Minimal SLAB alignment Maciej Wieczor-Retman
2025-02-19 23:30   ` Andrey Konovalov
2025-02-21  7:24     ` Maciej Wieczor-Retman
2025-02-18  8:15 ` [PATCH v2 13/14] x86: runtime_const used for KASAN_SHADOW_END Maciej Wieczor-Retman
2025-02-19 23:31   ` Andrey Konovalov
2025-02-21 15:10     ` Maciej Wieczor-Retman
2025-02-21 15:27       ` Maciej Wieczor-Retman
2025-02-22 15:08         ` Andrey Konovalov
2025-02-22 15:07       ` Andrey Konovalov
2025-02-25 17:15         ` Maciej Wieczor-Retman
2025-02-25 21:37           ` Andrey Konovalov
2025-02-26 11:52             ` Maciej Wieczor-Retman
2025-02-26 15:24               ` Andrey Konovalov
2025-02-26 17:03                 ` Maciej Wieczor-Retman
2025-03-21 19:20                 ` Maciej Wieczor-Retman
2025-03-21 20:16                   ` Andrey Konovalov
2025-03-24 10:43                     ` Maciej Wieczor-Retman
2025-03-24 10:50                       ` Maciej Wieczor-Retman
2025-03-24 21:58                         ` Andrey Konovalov
2025-02-18  8:15 ` [PATCH v2 14/14] x86: Make software tag-based kasan available Maciej Wieczor-Retman
2025-02-19 23:31   ` Andrey Konovalov
2025-02-20 16:32     ` Andrey Konovalov
2025-02-21 14:44     ` Maciej Wieczor-Retman
2025-02-22 15:06       ` Andrey Konovalov
2025-02-25 15:39         ` Maciej Wieczor-Retman
2025-02-20  2:49   ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=qacbgkfbfqylupmoc7umy4n5pdvpdp7hrok7hqefhamhrsnhhm@4e2qucovduw2 \
    --to=maciej.wieczor-retman@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=andreyknvl@gmail.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=ankita@nvidia.com \
    --cc=apopple@nvidia.com \
    --cc=ardb@kernel.org \
    --cc=arnd@arndb.de \
    --cc=baohua@kernel.org \
    --cc=bhe@redhat.com \
    --cc=bp@alien8.de \
    --cc=broonie@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=cl@linux.com \
    --cc=corbet@lwn.net \
    --cc=dave.hansen@linux.intel.com \
    --cc=david@redhat.com \
    --cc=dennis@kernel.org \
    --cc=dvyukov@google.com \
    --cc=dwmw@amazon.co.uk \
    --cc=glider@google.com \
    --cc=guoweikang.kernel@gmail.com \
    --cc=hpa@zytor.com \
    --cc=jan.kiszka@siemens.com \
    --cc=jason.andryuk@amd.com \
    --cc=jgross@suse.com \
    --cc=jhubbard@nvidia.com \
    --cc=julian.stecklina@cyberus-technology.de \
    --cc=justinstitt@google.com \
    --cc=kaleshsingh@google.com \
    --cc=kasan-dev@googlegroups.com \
    --cc=kbingham@kernel.org \
    --cc=kees@kernel.org \
    --cc=kevinloughlin@google.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=kuan-ying.lee@canonical.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=llvm@lists.linux.dev \
    --cc=luto@kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=maz@kernel.org \
    --cc=mingo@redhat.com \
    --cc=morbo@google.com \
    --cc=nathan@kernel.org \
    --cc=pankaj.gupta@amd.com \
    --cc=pasha.tatashin@soleen.com \
    --cc=pawan.kumar.gupta@linux.intel.com \
    --cc=peterz@infradead.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=richard.weiyang@gmail.com \
    --cc=rppt@kernel.org \
    --cc=ryabinin.a.a@gmail.com \
    --cc=samuel.holland@sifive.com \
    --cc=scott@os.amperecomputing.com \
    --cc=surenb@google.com \
    --cc=tglx@linutronix.de \
    --cc=thiago.bauermann@linaro.org \
    --cc=thomas.weissschuh@linutronix.de \
    --cc=tj@kernel.org \
    --cc=tony.luck@intel.com \
    --cc=vincenzo.frascino@arm.com \
    --cc=vitalybuka@google.com \
    --cc=wangkefeng.wang@huawei.com \
    --cc=will@kernel.org \
    --cc=x86@kernel.org \
    --cc=xin@zytor.com \
    --cc=xur@google.com \
    --cc=ytcoode@gmail.com \
    --cc=ziy@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox