[RFC PATCH 3/3] mm/vmalloc.c: change _vm_unmap_aliases() to do purge firstly
Thomas Gleixner
tglx at linutronix.de
Mon May 22 13:44:04 PDT 2023
On Mon, May 22 2023 at 22:21, Thomas Gleixner wrote:
> Lets assume that *bar is the first member of foo, i.e. offset of *bar in
> struct foo is 0
>
> p = (struct foo *)(member_pointer - 0);
>
> So you end up with
>
> p == member_pointer == bar
>
> But you won't get there because the static_assert() in container_of()
> will catch that and the compiler will tell you in colourful ways.
>
> Once the vmap area is handed over for cleaning up the vmap block is gone
> and even if you let it stay around then the vmap area does not have any
> information where to find the block.
>
> You'd need to have a pointer to the vmap block in vmap area or embed
> vmap area into vmap block.
The latter would require to:
- split alloc_vmap_area() apart
- sprinkle 'if (vmap_area_is_vmap_block(va))' all over the place
- do a lot of other nasty things
Not sure if that's worth it. There are some other options to pursue.
Thanks,
tglx
More information about the linux-arm-kernel
mailing list