flusher: Fix PF_FROZEN race
OGAWA Hirofumi [Thu, 3 Dec 2009 12:49:43 +0000 (13:49 +0100)]
To touch task->flags directly is racy. thaw_process() still has race
(changing non_current->flags, but this is another issue) though, I think
it's much better off.

So, use thaw_process() instead.

Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>

mm/backing-dev.c

index 67a33a5..0e8ca03 100644 (file)
@@ -609,7 +609,7 @@ static void bdi_wb_shutdown(struct backing_dev_info *bdi)
         * it would never exet if it is currently stuck in the refrigerator.
         */
        list_for_each_entry(wb, &bdi->wb_list, list) {
-               wb->task->flags &= ~PF_FROZEN;
+               thaw_process(wb->task);
                kthread_stop(wb->task);
        }
 }