• Tejun Heo's avatar
    workqueue: add missing wmb() in clear_work_data() · 23657bb1
    Tejun Heo authored
    Any operation which clears PENDING should be preceded by a wmb to
    guarantee that the next PENDING owner sees all the changes made before
    PENDING release.
    
    There are only two places where PENDING is cleared -
    set_work_cpu_and_clear_pending() and clear_work_data().  The caller of
    the former already does smp_wmb() but the latter doesn't have any.
    
    Move the wmb above set_work_cpu_and_clear_pending() into it and add
    one to clear_work_data().
    
    There hasn't been any report related to this issue, and, given how
    clear_work_data() is used, it is extremely unlikely to have caused any
    actual problems on any architecture.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    23657bb1
workqueue.c 108 KB