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.
next prev parent 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.