Thread (55 messages) 55 messages, 7 authors, 2018-09-19

[PATCH v6 07/18] khwasan: add tag related helper functions

From: dvyukov@google.com (Dmitry Vyukov)
Date: 2018-09-18 15:45:36
Also in: linux-doc, linux-kbuild, linux-mm, lkml

On Mon, Sep 17, 2018 at 8:59 PM, Andrey Konovalov [off-list ref] wrote:
On Wed, Sep 12, 2018 at 6:21 PM, Dmitry Vyukov [off-list ref] wrote:
quoted
On Wed, Aug 29, 2018 at 1:35 PM, Andrey Konovalov [off-list ref] wrote:
quoted
quoted
+void *khwasan_preset_slub_tag(struct kmem_cache *cache, const void *addr)
Can't we do this in the existing kasan_init_slab_obj() hook? It looks
like it should do exactly this -- allow any one-time initialization
for objects. We could extend it to accept index and return a new
pointer.
If that does not work for some reason, I would try to at least unify
the hook for slab/slub, e.g. pass idx=-1 from slub and then use
random_tag().
It also seems that we do preset tag for slab multiple times (from
slab_get_obj()). Using kasan_init_slab_obj() should resolve this too
(hopefully we don't call it multiple times).
The issue is that SLAB stores freelist as an array of indexes instead
of using an actual linked list like SLUB. So you can't store the tag
in the pointer while the object is in the freelist, since there's no
pointer. And, technically, we don't preset tags for SLAB, we just use
the id as the tag every time a pointer is used, so perhaps we should
rename the callback. As to unifying the callbacks, sure, we can do
that.
As per offline discussion: potentially we can use
kasan_init_slab_obj() if we add tag in kmalloc hook by using
obj_to_idx().
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help