On 2024-09-25 15:20, Mathieu Desnoyers wrote: [...]
static inline bool same_ptr(void *a, void *b) { asm goto ( "cmpq %[a], %[b]\n\t" "jne %l[ne]\n\t" : : [a] "r" (a), [b] "r" (b) : : ne); return true; ne: return false; }
Based on the information provided in this email thread, it appears the only concern when it comes to comparing a pointer loaded by rcu_dereference() with another pointer is the possibility of compiler optimizations. In the specific case of hazard pointer hpref_hp_get(), this function does both loads which are then compared with one another. Therefore, it is not possible for the user to provide a comparison value known at compile-time, except in the unlikely scenario where the hazard pointer would be const, which does not really make much sense. Therefore, just using rcu_dereference() for the second load should be fine. Thanks, Mathieu -- Mathieu Desnoyers EfficiOS Inc. https://www.efficios.com