• Tejun Heo's avatar
    [SCSI] pm8001: simplify workqueue usage · 429305e4
    Tejun Heo authored
    pm8001 manages its own list of pending works and cancel them on device
    free.  It is unnecessarily complex and has a race condition - the
    works are canceled but not synced, so the work could still be running
    during and after the data structures are freed.
    
    This patch simplifies workqueue usage.
    
    * A driver specific workqueue pm8001_wq is created to serve these
      work items.
    
    * To avoid confusion, the "queue" suffixes are dropped from work items
      and functions.
    
    * Delayed queueing was never used.  pm8001_work now uses work_struct
      instead.
    
    * The driver no longer keeps track of pending works.  All pm8001_works
      are queued to pm8001_wq and the workqueue is flushed as necessary.
    
    flush_scheduled_work() usage is removed during conversion.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarJack Wang <jack_wang@usish.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
    429305e4
pm8001_init.c 25.5 KB