All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rusty Russell <rusty@rustcorp.com.au>
To: Thomas Huth <thuth@linux.vnet.ibm.com>,
	Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: kvm@vger.kernel.org, virtualization@lists.linux-foundation.org,
	linux-kernel@vger.kernel.org, stable@vger.kernel.org,
	"Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [PATCH v2] virtio-balloon: do not call blocking ops when !TASK_RUNNING
Date: Tue, 10 Mar 2015 11:56:32 +1030	[thread overview]
Message-ID: <87mw3lk5h3.fsf@rustcorp.com.au> (raw)
In-Reply-To: <20150225163756.3eee5502@oc7435384737.ibm.com>

Thomas Huth <thuth@linux.vnet.ibm.com> writes:
> On Wed, 25 Feb 2015 16:11:27 +0100
> Cornelia Huck <cornelia.huck@de.ibm.com> wrote:
>
>> On Wed, 25 Feb 2015 15:36:02 +0100
>> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>> 
>> > virtio balloon has this code:
>> >         wait_event_interruptible(vb->config_change,
>> >                                  (diff = towards_target(vb)) != 0
>> >                                  || vb->need_stats_update
>> >                                  || kthread_should_stop()
>> >                                  || freezing(current));
>> > 
>> > Which is a problem because towards_target() call might block after
>> > wait_event_interruptible sets task state to TAST_INTERRUPTIBLE, causing
>> > the task_struct::state collision typical of nesting of sleeping
>> > primitives
>> > 
>> > See also http://lwn.net/Articles/628628/ or Thomas's
>> > bug report
>> > http://article.gmane.org/gmane.linux.kernel.virtualization/24846
>> > for a fuller explanation.
>> > 
>> > To fix, rewrite using wait_woken.
>> > 
>> > Cc: stable@vger.kernel.org
>> > Reported-by: Thomas Huth <thuth@linux.vnet.ibm.com>
>> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>> > ---
>> > 
>> > changes from v1:
>> > 	remove wait_event_interruptible
>> > 	noticed by Cornelia Huck <cornelia.huck@de.ibm.com>
>> > 
>> >  drivers/virtio/virtio_balloon.c | 19 ++++++++++++++-----
>> >  1 file changed, 14 insertions(+), 5 deletions(-)
>> > 
>> 
>> I was able to reproduce Thomas' original problem and can confirm that
>> it is gone with this patch.
>> 
>> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
>
> Right, I just applied the patch on my system, too, and the problem is
> indeed gone! Thanks for the quick fix!
>
> Tested-by: Thomas Huth <thuth@linux.vnet.ibm.com>

Applied.

Thanks,
Rusty.

WARNING: multiple messages have this Message-ID (diff)
From: Rusty Russell <rusty@rustcorp.com.au>
To: Thomas Huth <thuth@linux.vnet.ibm.com>,
	Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
	linux-kernel@vger.kernel.org, stable@vger.kernel.org,
	virtualization@lists.linux-foundation.org, kvm@vger.kernel.org
Subject: Re: [PATCH v2] virtio-balloon: do not call blocking ops when !TASK_RUNNING
Date: Tue, 10 Mar 2015 11:56:32 +1030	[thread overview]
Message-ID: <87mw3lk5h3.fsf@rustcorp.com.au> (raw)
In-Reply-To: <20150225163756.3eee5502@oc7435384737.ibm.com>

Thomas Huth <thuth@linux.vnet.ibm.com> writes:
> On Wed, 25 Feb 2015 16:11:27 +0100
> Cornelia Huck <cornelia.huck@de.ibm.com> wrote:
>
>> On Wed, 25 Feb 2015 15:36:02 +0100
>> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>> 
>> > virtio balloon has this code:
>> >         wait_event_interruptible(vb->config_change,
>> >                                  (diff = towards_target(vb)) != 0
>> >                                  || vb->need_stats_update
>> >                                  || kthread_should_stop()
>> >                                  || freezing(current));
>> > 
>> > Which is a problem because towards_target() call might block after
>> > wait_event_interruptible sets task state to TAST_INTERRUPTIBLE, causing
>> > the task_struct::state collision typical of nesting of sleeping
>> > primitives
>> > 
>> > See also http://lwn.net/Articles/628628/ or Thomas's
>> > bug report
>> > http://article.gmane.org/gmane.linux.kernel.virtualization/24846
>> > for a fuller explanation.
>> > 
>> > To fix, rewrite using wait_woken.
>> > 
>> > Cc: stable@vger.kernel.org
>> > Reported-by: Thomas Huth <thuth@linux.vnet.ibm.com>
>> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>> > ---
>> > 
>> > changes from v1:
>> > 	remove wait_event_interruptible
>> > 	noticed by Cornelia Huck <cornelia.huck@de.ibm.com>
>> > 
>> >  drivers/virtio/virtio_balloon.c | 19 ++++++++++++++-----
>> >  1 file changed, 14 insertions(+), 5 deletions(-)
>> > 
>> 
>> I was able to reproduce Thomas' original problem and can confirm that
>> it is gone with this patch.
>> 
>> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
>
> Right, I just applied the patch on my system, too, and the problem is
> indeed gone! Thanks for the quick fix!
>
> Tested-by: Thomas Huth <thuth@linux.vnet.ibm.com>

Applied.

Thanks,
Rusty.

  reply	other threads:[~2015-03-10  1:26 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-25 14:36 [PATCH v2] virtio-balloon: do not call blocking ops when !TASK_RUNNING Michael S. Tsirkin
2015-02-25 14:36 ` Michael S. Tsirkin
2015-02-25 15:11 ` Cornelia Huck
2015-02-25 15:11   ` Cornelia Huck
2015-02-25 15:37   ` Thomas Huth
2015-03-10  1:26     ` Rusty Russell [this message]
2015-03-10  1:26       ` Rusty Russell
2015-02-25 15:37   ` Thomas Huth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87mw3lk5h3.fsf@rustcorp.com.au \
    --to=rusty@rustcorp.com.au \
    --cc=cornelia.huck@de.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=stable@vger.kernel.org \
    --cc=thuth@linux.vnet.ibm.com \
    --cc=virtualization@lists.linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.