From: David Rientjes <rientjes@google.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: "David Hildenbrand (Arm)" <david@kernel.org>,
Link Lin <linkl@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
Vlastimil Babka <vbabka@kernel.org>,
virtualization@lists.linux.dev, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, prasin@google.com,
duenwen@google.com, jasowang@redhat.com,
xuanzhuo@linux.alibaba.com,
Ammar Faizi <ammarfaizi2@openresty.com>,
jiaqiyan@google.com, ahwilkins@google.com,
Greg Thelen <gthelen@google.com>,
Alexander Duyck <alexander.duyck@gmail.com>,
stable@vger.kernel.org
Subject: Re: [RFC] virtio_balloon: fix Use-After-Free in page reporting during PM freeze
Date: Tue, 14 Jul 2026 11:21:33 -0700 (PDT) [thread overview]
Message-ID: <5e18d7ec-a9d7-2cc3-7741-695ec3580ffa@google.com> (raw)
In-Reply-To: <20260714092146-mutt-send-email-mst@kernel.org>
On Tue, 14 Jul 2026, Michael S. Tsirkin wrote:
> > > diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
> > > index a1b2c3d4e5f6..45a90fb3abf8 100640
> > > --- a/drivers/virtio/virtio_balloon.c
> > > +++ b/drivers/virtio/virtio_balloon.c
> > > @@ -1055,6 +1055,9 @@ static int virtballoon_freeze(struct virtio_device *vdev)
> > > * The workqueue is already frozen by the PM core before this
> > > * function is called.
> > > */
> > > + if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_REPORTING))
> > > + page_reporting_unregister(&vb->pr_dev_info);
> > > +
> > > remove_common(vb);
> > > return 0;
> > > }
> > >
> > > static int virtballoon_restore(struct virtio_device *vdev)
> > > {
> > > struct virtio_balloon *vb = vdev->priv;
> > > int ret;
> > >
> > > ret = init_vqs(vdev->priv);
> > > if (ret)
> > > return ret;
> > >
> > > virtio_device_ready(vdev);
> > >
> > > + if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_REPORTING)) {
> > > + ret = page_reporting_register(&vb->pr_dev_info);
> > > + if (ret)
> > > + goto out_remove_vqs;
> > > + }
> >
> > Hm, that failure handling is rather nasty.
> >
> >
> > In virtballoon_freeze() we document:
> >
> > "The workqueue is already frozen by the PM core before this function is called"
> >
> > Your report states:
> >
> > "Workqueue: events page_reporting_process"
> >
> >
> > I assume that workqueue is not frozen yet because ... it's not freezable :)
> >
> > So could we queue to system_freezable_wq instead, or define our own freezable
> > workqueue there? Then a driver doesn't have to worry about that.
> >
> > --
> > Cheers,
> >
> > David
>
> +1. Just system_freezable_wq will do the trick.
>
This makes sense.
I'm curious why this bug hasn't popped up earlier, presumably any VM that
has gone through suspend while reporting free pages through FPR is
vulnerable to it and could have panicked as a result. Which would suggest
maybe >99% of FPR is done by guests that never suspend? While under
pressure this issue seems reproducible.
next prev parent reply other threads:[~2026-07-14 18:21 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-09 22:43 [RFC] virtio_balloon: fix Use-After-Free in page reporting during PM freeze Link Lin
2026-07-09 23:12 ` Andrew Morton
2026-07-10 0:45 ` Link Lin
2026-07-13 19:41 ` David Rientjes
2026-07-13 19:43 ` Michael S. Tsirkin
2026-07-14 13:17 ` David Hildenbrand (Arm)
2026-07-14 13:24 ` Michael S. Tsirkin
2026-07-14 18:05 ` Link Lin
2026-07-14 18:21 ` David Rientjes [this message]
2026-07-14 18:52 ` Michael S. Tsirkin
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=5e18d7ec-a9d7-2cc3-7741-695ec3580ffa@google.com \
--to=rientjes@google.com \
--cc=ahwilkins@google.com \
--cc=akpm@linux-foundation.org \
--cc=alexander.duyck@gmail.com \
--cc=ammarfaizi2@openresty.com \
--cc=david@kernel.org \
--cc=duenwen@google.com \
--cc=gthelen@google.com \
--cc=jasowang@redhat.com \
--cc=jiaqiyan@google.com \
--cc=linkl@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mst@redhat.com \
--cc=prasin@google.com \
--cc=stable@vger.kernel.org \
--cc=vbabka@kernel.org \
--cc=virtualization@lists.linux.dev \
--cc=xuanzhuo@linux.alibaba.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox