Re: [RFC][PATCH 7/7] kprobes: Replace rp->free_instance with freelist

From: peterz
Date: Fri Aug 28 2020 - 04:49:19 EST


On Thu, Aug 27, 2020 at 06:12:44PM +0200, Peter Zijlstra wrote:
> struct kretprobe_instance {
> union {
> + /*
> + * Dodgy as heck, this relies on not clobbering freelist::refs.
> + * llist: only clobbers freelist::next.
> + * rcu: clobbers both, but only after rp::freelist is gone.
> + */
> + struct freelist_node freelist;
> struct llist_node llist;
> - struct hlist_node hlist;
> struct rcu_head rcu;
> };

Masami, make sure to make this something like:

union {
struct freelist_node freelist;
struct rcu_head rcu;
};
struct llist_node llist;

for v4, because after some sleep I'm fairly sure what I wrote above was
broken.

We'll only use RCU once the freelist is gone, so sharing that storage
should still be okay.