So I was looking at backporting kfree_rcu(), and came up with this: #define kfree_rcu(data, rcuhead) do { \ void __kfree_rcu_fn(struct rcu_head *rcu_head) \ { \ void *___ptr; \ ___ptr = container_of(rcu_head, typeof(*(data)), rcuhead);\ kfree(___ptr); \ } \ call_rcu(&(data)->rcuhead, __kfree_rcu_fn); \ } while (0) This works, thanks to gcc supporting nested functions, but has one major issue: any module using call_rcu() must have an rcu_barrier() in its module_exit() because __kfree_rcu_fn() might be called after the module is unloaded. For kfree_rcu() this isn't needed since the function called lives in the base kernel. I played around with injecting a call to rcu_barrier() into module exit by modifying module_exit() but I couldn't make the CPP do that. Anyone else have any ideas? Another idea I had was to insert the __kfree_rcu_fn() code into the compat module instead, but I can't see how to do that short of using some source post-processing scripts. johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html