lkml.org 
[lkml]   [2020]   [Mar]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: general protection fault in __queue_work (2)
From
Date
On 3/8/20 3:44 AM, Hillf Danton wrote:
> @@ -1208,8 +1211,16 @@ static int __loop_clr_fd(struct loop_dev
> *
> * 3) unlock, del_timer_sync so if timer raced it will be a no-op
> */
> - loop_unprepare_queue(lo);
> spin_lock_irq(&lo->lo_lock);
> + do {
> + struct workqueue_struct *wq = lo->workqueue;
> +
> + lo->workqueue = ERR_PTR(-EINVAL);
> + spin_unlock_irq(&lo->lo_lock);
> + destroy_workqueue(wq);
> + spin_lock_irq(&lo->lo_lock);
> + } while (0);

This looks highly suspicious, what's the point of this loop?

Also think this series a) might not be fully cooked, and b) really
should have gone through the block tree.

--
Jens Axboe

\
 
 \ /
  Last update: 2020-03-08 17:19    [W:0.031 / U:0.736 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site