On 6/5/20 7:58 AM, Jan Kara wrote: > Mostly for historical reasons, q->blk_trace is assigned through xchg() > and cmpxchg() atomic operations. Although this is correct, sparse > complains about this because it violates rcu annotations since commit > c780e86dd48e ("blktrace: Protect q->blk_trace with RCU") which started > to use rcu for accessing q->blk_trace. Furthermore there's no real need > for atomic operations anymore since all changes to q->blk_trace happen > under q->blk_trace_mutex and since it also makes more sense to check if > q->blk_trace is set with the mutex held earlier. > > So let's just replace xchg() with rcu_replace_pointer() and cmpxchg() > with explicit check and rcu_assign_pointer(). This makes the code more > efficient and sparse happy. > > Reported-by: kbuild test robot<lkp@xxxxxxxxx> > Signed-off-by: Jan Kara<jack@xxxxxxx> Looks good. Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@xxxxxxx>