Linux kernel -stable discussions
 help / color / mirror / Atom feed
* Patch "loop: fix LO_FLAGS_PARTSCAN hang" has been added to the 4.10-stable tree
@ 2017-03-08 15:39 gregkh
  2017-03-08 15:47 ` Jens Axboe
  0 siblings, 1 reply; 6+ messages in thread
From: gregkh @ 2017-03-08 15:39 UTC (permalink / raw)
  To: osandov, axboe, gregkh, tj, tom.leiming; +Cc: stable, stable-commits


This is a note to let you know that I've just added the patch titled

    loop: fix LO_FLAGS_PARTSCAN hang

to the 4.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     loop-fix-lo_flags_partscan-hang.patch
and it can be found in the queue-4.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@vger.kernel.org> know about it.


>From e02898b423802b1f3a3aaa7f16e896da069ba8f7 Mon Sep 17 00:00:00 2001
From: Omar Sandoval <osandov@fb.com>
Date: Wed, 1 Mar 2017 10:42:38 -0800
Subject: loop: fix LO_FLAGS_PARTSCAN hang

From: Omar Sandoval <osandov@fb.com>

commit e02898b423802b1f3a3aaa7f16e896da069ba8f7 upstream.

loop_reread_partitions() needs to do I/O, but we just froze the queue,
so we end up waiting forever. This can easily be reproduced with losetup
-P. Fix it by moving the reread to after we unfreeze the queue.

Fixes: ecdd09597a57 ("block/loop: fix race between I/O and set_status")
Reported-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Omar Sandoval <osandov@fb.com>
Reviewed-by: Ming Lei <tom.leiming@gmail.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/block/loop.c |   15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -1142,13 +1142,6 @@ loop_set_status(struct loop_device *lo,
 	     (info->lo_flags & LO_FLAGS_AUTOCLEAR))
 		lo->lo_flags ^= LO_FLAGS_AUTOCLEAR;
 
-	if ((info->lo_flags & LO_FLAGS_PARTSCAN) &&
-	     !(lo->lo_flags & LO_FLAGS_PARTSCAN)) {
-		lo->lo_flags |= LO_FLAGS_PARTSCAN;
-		lo->lo_disk->flags &= ~GENHD_FL_NO_PART_SCAN;
-		loop_reread_partitions(lo, lo->lo_device);
-	}
-
 	lo->lo_encrypt_key_size = info->lo_encrypt_key_size;
 	lo->lo_init[0] = info->lo_init[0];
 	lo->lo_init[1] = info->lo_init[1];
@@ -1163,6 +1156,14 @@ loop_set_status(struct loop_device *lo,
 
  exit:
 	blk_mq_unfreeze_queue(lo->lo_queue);
+
+	if (!err && (info->lo_flags & LO_FLAGS_PARTSCAN) &&
+	     !(lo->lo_flags & LO_FLAGS_PARTSCAN)) {
+		lo->lo_flags |= LO_FLAGS_PARTSCAN;
+		lo->lo_disk->flags &= ~GENHD_FL_NO_PART_SCAN;
+		loop_reread_partitions(lo, lo->lo_device);
+	}
+
 	return err;
 }
 


Patches currently in stable-queue which might be from osandov@fb.com are

queue-4.10/loop-fix-lo_flags_partscan-hang.patch

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Patch "loop: fix LO_FLAGS_PARTSCAN hang" has been added to the 4.10-stable tree
  2017-03-08 15:39 Patch "loop: fix LO_FLAGS_PARTSCAN hang" has been added to the 4.10-stable tree gregkh
@ 2017-03-08 15:47 ` Jens Axboe
  2017-03-08 15:52   ` Omar Sandoval
  2017-03-08 15:55   ` Greg KH
  0 siblings, 2 replies; 6+ messages in thread
From: Jens Axboe @ 2017-03-08 15:47 UTC (permalink / raw)
  To: gregkh, osandov, tj, tom.leiming; +Cc: stable, stable-commits

On 03/08/2017 08:39 AM, gregkh@linuxfoundation.org wrote:
> 
> This is a note to let you know that I've just added the patch titled
> 
>     loop: fix LO_FLAGS_PARTSCAN hang
> 
> to the 4.10-stable tree which can be found at:
>     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
> 
> The filename of the patch is:
>      loop-fix-lo_flags_partscan-hang.patch
> and it can be found in the queue-4.10 subdirectory.
> 
> If you, or anyone else, feels it should not be added to the stable tree,
> please let <stable@vger.kernel.org> know about it.
> 
> 
> From e02898b423802b1f3a3aaa7f16e896da069ba8f7 Mon Sep 17 00:00:00 2001
> From: Omar Sandoval <osandov@fb.com>
> Date: Wed, 1 Mar 2017 10:42:38 -0800
> Subject: loop: fix LO_FLAGS_PARTSCAN hang
> 
> From: Omar Sandoval <osandov@fb.com>
> 
> commit e02898b423802b1f3a3aaa7f16e896da069ba8f7 upstream.
> 
> loop_reread_partitions() needs to do I/O, but we just froze the queue,
> so we end up waiting forever. This can easily be reproduced with losetup
> -P. Fix it by moving the reread to after we unfreeze the queue.
> 
> Fixes: ecdd09597a57 ("block/loop: fix race between I/O and set_status")
> Reported-by: Tejun Heo <tj@kernel.org>
> Signed-off-by: Omar Sandoval <osandov@fb.com>
> Reviewed-by: Ming Lei <tom.leiming@gmail.com>
> Signed-off-by: Jens Axboe <axboe@fb.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Why is this being added to a bunch of trees that don't have the commit
that it fixes? It should not go into any of these.

-- 
Jens Axboe

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Patch "loop: fix LO_FLAGS_PARTSCAN hang" has been added to the 4.10-stable tree
  2017-03-08 15:47 ` Jens Axboe
@ 2017-03-08 15:52   ` Omar Sandoval
  2017-03-08 15:55     ` Jens Axboe
  2017-03-08 15:55   ` Greg KH
  1 sibling, 1 reply; 6+ messages in thread
From: Omar Sandoval @ 2017-03-08 15:52 UTC (permalink / raw)
  To: Jens Axboe, gregkh, tj, tom.leiming; +Cc: stable, stable-commits

On 03/08/2017 07:47 AM, Jens Axboe wrote:
> On 03/08/2017 08:39 AM, gregkh@linuxfoundation.org wrote:
>>
>> This is a note to let you know that I've just added the patch titled
>>
>>     loop: fix LO_FLAGS_PARTSCAN hang
>>
>> to the 4.10-stable tree which can be found at:
>>     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
>>
>> The filename of the patch is:
>>      loop-fix-lo_flags_partscan-hang.patch
>> and it can be found in the queue-4.10 subdirectory.
>>
>> If you, or anyone else, feels it should not be added to the stable tree,
>> please let <stable@vger.kernel.org> know about it.
>>
>>
>> From e02898b423802b1f3a3aaa7f16e896da069ba8f7 Mon Sep 17 00:00:00 2001
>> From: Omar Sandoval <osandov@fb.com>
>> Date: Wed, 1 Mar 2017 10:42:38 -0800
>> Subject: loop: fix LO_FLAGS_PARTSCAN hang
>>
>> From: Omar Sandoval <osandov@fb.com>
>>
>> commit e02898b423802b1f3a3aaa7f16e896da069ba8f7 upstream.
>>
>> loop_reread_partitions() needs to do I/O, but we just froze the queue,
>> so we end up waiting forever. This can easily be reproduced with losetup
>> -P. Fix it by moving the reread to after we unfreeze the queue.
>>
>> Fixes: ecdd09597a57 ("block/loop: fix race between I/O and set_status")
>> Reported-by: Tejun Heo <tj@kernel.org>
>> Signed-off-by: Omar Sandoval <osandov@fb.com>
>> Reviewed-by: Ming Lei <tom.leiming@gmail.com>
>> Signed-off-by: Jens Axboe <axboe@fb.com>
>> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> 
> Why is this being added to a bunch of trees that don't have the commit
> that it fixes? It should not go into any of these.
> 

The commit it fixes was marked for stable, which is why I also marked this
one for stable. And it looks like that commit is also queued up for these
stable releases:

http://git.kernel.org/cgit/linux/kernel/git/stable/stable-queue.git/tree/queue-4.10/block-loop-fix-race-between-i-o-and-set_status.patch
http://git.kernel.org/cgit/linux/kernel/git/stable/stable-queue.git/tree/queue-4.9/block-loop-fix-race-between-i-o-and-set_status.patch
http://git.kernel.org/cgit/linux/kernel/git/stable/stable-queue.git/tree/queue-4.4/block-loop-fix-race-between-i-o-and-set_status.patch

So it should be okay.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Patch "loop: fix LO_FLAGS_PARTSCAN hang" has been added to the 4.10-stable tree
  2017-03-08 15:52   ` Omar Sandoval
@ 2017-03-08 15:55     ` Jens Axboe
  0 siblings, 0 replies; 6+ messages in thread
From: Jens Axboe @ 2017-03-08 15:55 UTC (permalink / raw)
  To: Omar Sandoval, gregkh, tj, tom.leiming; +Cc: stable, stable-commits

On 03/08/2017 08:52 AM, Omar Sandoval wrote:
> On 03/08/2017 07:47 AM, Jens Axboe wrote:
>> On 03/08/2017 08:39 AM, gregkh@linuxfoundation.org wrote:
>>>
>>> This is a note to let you know that I've just added the patch titled
>>>
>>>     loop: fix LO_FLAGS_PARTSCAN hang
>>>
>>> to the 4.10-stable tree which can be found at:
>>>     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
>>>
>>> The filename of the patch is:
>>>      loop-fix-lo_flags_partscan-hang.patch
>>> and it can be found in the queue-4.10 subdirectory.
>>>
>>> If you, or anyone else, feels it should not be added to the stable tree,
>>> please let <stable@vger.kernel.org> know about it.
>>>
>>>
>>> From e02898b423802b1f3a3aaa7f16e896da069ba8f7 Mon Sep 17 00:00:00 2001
>>> From: Omar Sandoval <osandov@fb.com>
>>> Date: Wed, 1 Mar 2017 10:42:38 -0800
>>> Subject: loop: fix LO_FLAGS_PARTSCAN hang
>>>
>>> From: Omar Sandoval <osandov@fb.com>
>>>
>>> commit e02898b423802b1f3a3aaa7f16e896da069ba8f7 upstream.
>>>
>>> loop_reread_partitions() needs to do I/O, but we just froze the queue,
>>> so we end up waiting forever. This can easily be reproduced with losetup
>>> -P. Fix it by moving the reread to after we unfreeze the queue.
>>>
>>> Fixes: ecdd09597a57 ("block/loop: fix race between I/O and set_status")
>>> Reported-by: Tejun Heo <tj@kernel.org>
>>> Signed-off-by: Omar Sandoval <osandov@fb.com>
>>> Reviewed-by: Ming Lei <tom.leiming@gmail.com>
>>> Signed-off-by: Jens Axboe <axboe@fb.com>
>>> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>>
>> Why is this being added to a bunch of trees that don't have the commit
>> that it fixes? It should not go into any of these.
>>
> 
> The commit it fixes was marked for stable, which is why I also marked this
> one for stable. And it looks like that commit is also queued up for these
> stable releases:
> 
> http://git.kernel.org/cgit/linux/kernel/git/stable/stable-queue.git/tree/queue-4.10/block-loop-fix-race-between-i-o-and-set_status.patch
> http://git.kernel.org/cgit/linux/kernel/git/stable/stable-queue.git/tree/queue-4.9/block-loop-fix-race-between-i-o-and-set_status.patch
> http://git.kernel.org/cgit/linux/kernel/git/stable/stable-queue.git/tree/queue-4.4/block-loop-fix-race-between-i-o-and-set_status.patch
> 
> So it should be okay.

Ah yes, that makes sense, I missed that.

-- 
Jens Axboe

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Patch "loop: fix LO_FLAGS_PARTSCAN hang" has been added to the 4.10-stable tree
  2017-03-08 15:47 ` Jens Axboe
  2017-03-08 15:52   ` Omar Sandoval
@ 2017-03-08 15:55   ` Greg KH
  2017-03-08 15:58     ` Jens Axboe
  1 sibling, 1 reply; 6+ messages in thread
From: Greg KH @ 2017-03-08 15:55 UTC (permalink / raw)
  To: Jens Axboe; +Cc: osandov, tj, tom.leiming, stable, stable-commits

On Wed, Mar 08, 2017 at 08:47:39AM -0700, Jens Axboe wrote:
> On 03/08/2017 08:39 AM, gregkh@linuxfoundation.org wrote:
> > 
> > This is a note to let you know that I've just added the patch titled
> > 
> >     loop: fix LO_FLAGS_PARTSCAN hang
> > 
> > to the 4.10-stable tree which can be found at:
> >     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
> > 
> > The filename of the patch is:
> >      loop-fix-lo_flags_partscan-hang.patch
> > and it can be found in the queue-4.10 subdirectory.
> > 
> > If you, or anyone else, feels it should not be added to the stable tree,
> > please let <stable@vger.kernel.org> know about it.
> > 
> > 
> > From e02898b423802b1f3a3aaa7f16e896da069ba8f7 Mon Sep 17 00:00:00 2001
> > From: Omar Sandoval <osandov@fb.com>
> > Date: Wed, 1 Mar 2017 10:42:38 -0800
> > Subject: loop: fix LO_FLAGS_PARTSCAN hang
> > 
> > From: Omar Sandoval <osandov@fb.com>
> > 
> > commit e02898b423802b1f3a3aaa7f16e896da069ba8f7 upstream.
> > 
> > loop_reread_partitions() needs to do I/O, but we just froze the queue,
> > so we end up waiting forever. This can easily be reproduced with losetup
> > -P. Fix it by moving the reread to after we unfreeze the queue.
> > 
> > Fixes: ecdd09597a57 ("block/loop: fix race between I/O and set_status")
> > Reported-by: Tejun Heo <tj@kernel.org>
> > Signed-off-by: Omar Sandoval <osandov@fb.com>
> > Reviewed-by: Ming Lei <tom.leiming@gmail.com>
> > Signed-off-by: Jens Axboe <axboe@fb.com>
> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> 
> Why is this being added to a bunch of trees that don't have the commit
> that it fixes? It should not go into any of these.

Because the commit this fixes just got added to all of those trees.  Is
that not the correct thing needed here?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Patch "loop: fix LO_FLAGS_PARTSCAN hang" has been added to the 4.10-stable tree
  2017-03-08 15:55   ` Greg KH
@ 2017-03-08 15:58     ` Jens Axboe
  0 siblings, 0 replies; 6+ messages in thread
From: Jens Axboe @ 2017-03-08 15:58 UTC (permalink / raw)
  To: Greg KH; +Cc: osandov, tj, tom.leiming, stable, stable-commits

On 03/08/2017 08:55 AM, Greg KH wrote:
> On Wed, Mar 08, 2017 at 08:47:39AM -0700, Jens Axboe wrote:
>> On 03/08/2017 08:39 AM, gregkh@linuxfoundation.org wrote:
>>>
>>> This is a note to let you know that I've just added the patch titled
>>>
>>>     loop: fix LO_FLAGS_PARTSCAN hang
>>>
>>> to the 4.10-stable tree which can be found at:
>>>     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
>>>
>>> The filename of the patch is:
>>>      loop-fix-lo_flags_partscan-hang.patch
>>> and it can be found in the queue-4.10 subdirectory.
>>>
>>> If you, or anyone else, feels it should not be added to the stable tree,
>>> please let <stable@vger.kernel.org> know about it.
>>>
>>>
>>> From e02898b423802b1f3a3aaa7f16e896da069ba8f7 Mon Sep 17 00:00:00 2001
>>> From: Omar Sandoval <osandov@fb.com>
>>> Date: Wed, 1 Mar 2017 10:42:38 -0800
>>> Subject: loop: fix LO_FLAGS_PARTSCAN hang
>>>
>>> From: Omar Sandoval <osandov@fb.com>
>>>
>>> commit e02898b423802b1f3a3aaa7f16e896da069ba8f7 upstream.
>>>
>>> loop_reread_partitions() needs to do I/O, but we just froze the queue,
>>> so we end up waiting forever. This can easily be reproduced with losetup
>>> -P. Fix it by moving the reread to after we unfreeze the queue.
>>>
>>> Fixes: ecdd09597a57 ("block/loop: fix race between I/O and set_status")
>>> Reported-by: Tejun Heo <tj@kernel.org>
>>> Signed-off-by: Omar Sandoval <osandov@fb.com>
>>> Reviewed-by: Ming Lei <tom.leiming@gmail.com>
>>> Signed-off-by: Jens Axboe <axboe@fb.com>
>>> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>>
>> Why is this being added to a bunch of trees that don't have the commit
>> that it fixes? It should not go into any of these.
> 
> Because the commit this fixes just got added to all of those trees.  Is
> that not the correct thing needed here?

It is, I forgot/missed that the original commit was marked for stable,
which should of course pull this one in as well.


-- 
Jens Axboe

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-03-08 16:15 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-08 15:39 Patch "loop: fix LO_FLAGS_PARTSCAN hang" has been added to the 4.10-stable tree gregkh
2017-03-08 15:47 ` Jens Axboe
2017-03-08 15:52   ` Omar Sandoval
2017-03-08 15:55     ` Jens Axboe
2017-03-08 15:55   ` Greg KH
2017-03-08 15:58     ` Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox