From: Dmitry Vyukov <dvyukov@google.com>
To: Andrey Konovalov <andreyknvl@google.com>
Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>,
Alexander Potapenko <glider@google.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
Christoph Lameter <cl@linux.com>,
Andrew Morton <akpm@linux-foundation.org>,
Mark Rutland <mark.rutland@arm.com>,
Nick Desaulniers <ndesaulniers@google.com>,
Marc Zyngier <marc.zyngier@arm.com>,
Dave Martin <dave.martin@arm.com>,
Ard Biesheuvel <ard.biesheuvel@linaro.org>,
"Eric W . Biederman" <ebiederm@xmission.com>,
Ingo Molnar <mingo@kernel.org>,
Paul Lawrence <paullawrence@google.com>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Arnd Bergmann <arnd@arndb.de>,
"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Kate Stewart <kstewart@linuxfoundation.org>,
Mike Rapoport <rppt@linux.vnet.ibm.com>,
kasan-dev <kasan-dev@googlegroups.com>,
"open list:DOCUMENTATION" <linux-doc@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
Linux ARM <linux-arm-kernel@lists.infradead.org>,
linux-sparse@vger.kernel.org, Linux-MM <linux-mm@kvack.org>,
"open list:KERNEL BUILD + fi..." <linux-kbuild@vger.kernel.org>,
Kostya Serebryany <kcc@google.com>,
Evgeniy Stepanov <eugenis@google.com>,
Lee Smith <Lee.Smith@arm.com>,
Ramana Radhakrishnan <Ramana.Radhakrishnan@arm.com>,
Jacob Bramley <Jacob.Bramley@arm.com>,
Ruben Ayrapetyan <Ruben.Ayrapetyan@arm.com>,
Jann Horn <jannh@google.com>, Mark Brand <markbrand@google.com>,
Chintan Pandya <cpandya@codeaurora.org>,
Vishwath Mohan <vishwath@google.com>
Subject: Re: [PATCH v8 09/20] kasan: preassign tags to objects with ctors or SLAB_TYPESAFE_BY_RCU
Date: Mon, 24 Sep 2018 11:19:17 +0200 [thread overview]
Message-ID: <CACT4Y+b6qe1S_4dAhYGPm0r1nFWW4Fn1rCNbSZW-7w7jMpcTtQ@mail.gmail.com> (raw)
In-Reply-To: <CAAeHK+zBh0BiYq65QDxD-nxkHHF0QL6UQx8fs40K39R6XJJfzA@mail.gmail.com>
On Fri, Sep 21, 2018 at 2:24 PM, Andrey Konovalov <andreyknvl@google.com> wrote:
> On Fri, Sep 21, 2018 at 1:25 PM, Dmitry Vyukov <dvyukov@google.com> wrote:
>> On Wed, Sep 19, 2018 at 8:54 PM, Andrey Konovalov <andreyknvl@google.com> wrote:
>
>>> if (!shuffle) {
>>> for_each_object_idx(p, idx, s, start, page->objects) {
>>> - setup_object(s, page, p);
>>> - if (likely(idx < page->objects))
>>> - set_freepointer(s, p, p + s->size);
>>> - else
>>> + if (likely(idx < page->objects)) {
>>> + next = p + s->size;
>>> + next = setup_object(s, page, next);
>>> + set_freepointer(s, p, next);
>>> + } else
>>> set_freepointer(s, p, NULL);
>>> }
>>> - page->freelist = fixup_red_left(s, start);
>>> + start = fixup_red_left(s, start);
>>> + start = setup_object(s, page, start);
>>> + page->freelist = start;
>>> }
>>
>> Just want to double-check that this is correct.
>> We now do an additional setup_object call after the loop, but we do 1
>> less in the loop. So total number of calls should be the same, right?
>> However, after the loop we call setup_object for the first object (?),
>> but inside of the loop we skip the call for the last object (?). Am I
>> missing something, or we call ctor twice for the last object and don't
>> call it for the first one?
>
> Inside the loop we call setup_object for the "next" object. So we
> start iterating on the first one, but call setup_object for the
> second. Then the loop moves on to the second one and calls
> setup_object for the third. And so on. So the loop calls setup_object
> for every object (including the last one) except for the first one.
>
> The idea is that we want the freelist pointer that is stored in the
> current object to have a tagged pointer to the next one, so we need to
> assign a tag to the next object before storing the pointer in the
> current one.
Ah, OK, then false alarm.
next prev parent reply other threads:[~2018-09-24 9:19 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-19 18:54 [PATCH v8 00/20] kasan: add software tag-based mode for arm64 Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 01/20] kasan, mm: change hooks signatures Andrey Konovalov
2018-09-21 4:05 ` kbuild test robot
2018-09-21 12:13 ` Andrey Konovalov
2018-09-21 7:03 ` kbuild test robot
2018-09-19 18:54 ` [PATCH v8 02/20] kasan: move common generic and tag-based code to common.c Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 03/20] kasan: rename source files to reflect the new naming scheme Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 04/20] kasan: add CONFIG_KASAN_GENERIC and CONFIG_KASAN_SW_TAGS Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 05/20] kasan, arm64: adjust shadow size for tag-based mode Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 06/20] kasan: initialize shadow to 0xff " Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 07/20] kasan, arm64: untag address in __kimg_to_phys and _virt_addr_is_linear Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 08/20] kasan: add tag related helper functions Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 09/20] kasan: preassign tags to objects with ctors or SLAB_TYPESAFE_BY_RCU Andrey Konovalov
2018-09-21 11:25 ` Dmitry Vyukov
2018-09-21 12:24 ` Andrey Konovalov
2018-09-24 9:19 ` Dmitry Vyukov [this message]
2018-09-19 18:54 ` [PATCH v8 10/20] mm: move obj_to_index to include/linux/slab_def.h Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 11/20] kasan, arm64: fix up fault handling logic Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 12/20] kasan, arm64: enable top byte ignore for the kernel Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 13/20] kasan, mm: perform untagged pointers comparison in krealloc Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 14/20] kasan: split out generic_report.c from report.c Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 15/20] kasan: add bug reporting routines for tag-based mode Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 16/20] kasan: add hooks implementation " Andrey Konovalov
2018-09-21 11:37 ` Dmitry Vyukov
2018-09-21 14:28 ` Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 17/20] kasan, arm64: add brk handler for inline instrumentation Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 18/20] kasan, mm, arm64: tag non slab memory allocated via pagealloc Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 19/20] kasan: update documentation Andrey Konovalov
2018-09-19 18:54 ` [PATCH v8 20/20] kasan: add SPDX-License-Identifier mark to source files Andrey Konovalov
2018-09-19 18:57 ` [PATCH v8 00/20] kasan: add software tag-based mode for arm64 Andrey Konovalov
2018-09-19 19:01 ` Andrey Konovalov
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=CACT4Y+b6qe1S_4dAhYGPm0r1nFWW4Fn1rCNbSZW-7w7jMpcTtQ@mail.gmail.com \
--to=dvyukov@google.com \
--cc=Jacob.Bramley@arm.com \
--cc=Lee.Smith@arm.com \
--cc=Ramana.Radhakrishnan@arm.com \
--cc=Ruben.Ayrapetyan@arm.com \
--cc=akpm@linux-foundation.org \
--cc=andreyknvl@google.com \
--cc=ard.biesheuvel@linaro.org \
--cc=arnd@arndb.de \
--cc=aryabinin@virtuozzo.com \
--cc=catalin.marinas@arm.com \
--cc=cl@linux.com \
--cc=cpandya@codeaurora.org \
--cc=dave.martin@arm.com \
--cc=ebiederm@xmission.com \
--cc=eugenis@google.com \
--cc=geert@linux-m68k.org \
--cc=glider@google.com \
--cc=gregkh@linuxfoundation.org \
--cc=jannh@google.com \
--cc=kasan-dev@googlegroups.com \
--cc=kcc@google.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=kstewart@linuxfoundation.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-sparse@vger.kernel.org \
--cc=marc.zyngier@arm.com \
--cc=mark.rutland@arm.com \
--cc=markbrand@google.com \
--cc=mingo@kernel.org \
--cc=ndesaulniers@google.com \
--cc=paullawrence@google.com \
--cc=rppt@linux.vnet.ibm.com \
--cc=vishwath@google.com \
--cc=will.deacon@arm.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