X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=mm%2Fbacking-dev.c;h=67a33a5a1a93846bda0ce57ee37fe8d39486f60a;hb=cd79bf7b1c061752dbee723bccf60c85d6c2d45d;hp=11aee09dd2a611ea7529d4f1b863d383d533b7b7;hpb=931ed94430e36b9bea3904572424116092ba5663;p=karo-tx-linux.git diff --git a/mm/backing-dev.c b/mm/backing-dev.c index 11aee09dd2a6..67a33a5a1a93 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c @@ -604,10 +604,14 @@ static void bdi_wb_shutdown(struct backing_dev_info *bdi) /* * Finally, kill the kernel threads. We don't need to be RCU - * safe anymore, since the bdi is gone from visibility. + * safe anymore, since the bdi is gone from visibility. Force + * unfreeze of the thread before calling kthread_stop(), otherwise + * it would never exet if it is currently stuck in the refrigerator. */ - list_for_each_entry(wb, &bdi->wb_list, list) + list_for_each_entry(wb, &bdi->wb_list, list) { + wb->task->flags &= ~PF_FROZEN; kthread_stop(wb->task); + } } /*