linked list within a kernel probe

Billie Alsup (balsup) balsup at cisco.com
Mon Jan 9 11:15:31 EST 2023


>
> static __u8 _kprobe_setup_cache_elements( struct kprobe_head *pHead,
> __u16 elements, __u32 size)
> {
…
>      struct list_head local_head;
>
>      INIT_LIST_HEAD(&local_head);
>
…
>          pHead->p_mem_cache = &local_head;
…
> }

just from a quick look at this code, my guess is that you should not be using stack addresses in your list.
Your local_head is on the stack, therefore it gets corrupted after you exit your function and invoke other functions.
Did you really mean to store a pointer to local_head, or was your intention to point to the first element on local_head?


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20230109/c5786230/attachment.html>


More information about the Kernelnewbies mailing list