From: "Michael S. Tsirkin" <mst@redhat.com>
To: Michael Tokarev <mjt@tls.msk.ru>
Cc: kwolf@redhat.com, lkurusa@redhat.com,
zhanghailiang <zhang.zhanghailiang@huawei.com>,
qemu-trivial@nongnu.org, jan.kiszka@siemens.com,
riku.voipio@iki.fi, luonengjun@huawei.com, qemu-devel@nongnu.org,
peter.huangpeng@huawei.com, stefanha@redhat.com,
pbonzini@redhat.com, lcapitulino@redhat.com,
alex.bennee@linaro.org, rth@twiddle.net
Subject: Re: [Qemu-trivial] [PATCH v6 03/10] virtio-blk: fix reference a pointer which might be freed
Date: Mon, 18 Aug 2014 22:17:10 +0200 [thread overview]
Message-ID: <20140818201710.GB1121@redhat.com> (raw)
In-Reply-To: <53F1E842.60009@msgid.tls.msk.ru>
On Mon, Aug 18, 2014 at 03:49:22PM +0400, Michael Tokarev wrote:
> 14.08.2014 11:29, zhanghailiang wrote:
> > In function virtio_blk_handle_request, it may freed memory pointed by req,
> > So do not access member of req after calling this function.
> >
> > Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
> > Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com>
> > ---
> > hw/block/virtio-blk.c | 5 +++--
> > 1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
> > index c241c50..54a853a 100644
> > --- a/hw/block/virtio-blk.c
> > +++ b/hw/block/virtio-blk.c
> > @@ -458,7 +458,7 @@ static void virtio_blk_handle_output(VirtIODevice *vdev, VirtQueue *vq)
> > static void virtio_blk_dma_restart_bh(void *opaque)
> > {
> > VirtIOBlock *s = opaque;
> > - VirtIOBlockReq *req = s->rq;
> > + VirtIOBlockReq *req = s->rq, *next = NULL;
> > MultiReqBuffer mrb = {
> > .num_writes = 0,
> > };
> > @@ -469,8 +469,9 @@ static void virtio_blk_dma_restart_bh(void *opaque)
> > s->rq = NULL;
> >
> > while (req) {
> > + next = req->next;
> > virtio_blk_handle_request(req, &mrb);
> > - req = req->next;
> > + req = next;
> > }
> >
> > virtio_submit_multiwrite(s->bs, &mrb);
>
> So, finally, I've applied this patch:
>
> --- a/hw/block/virtio-blk.c
> +++ b/hw/block/virtio-blk.c
> @@ -469,8 +469,9 @@ static void virtio_blk_dma_restart_bh(void *opaque)
> s->rq = NULL;
>
> while (req) {
> + VirtIOBlockReq *next = req->next;
> virtio_blk_handle_request(req, &mrb);
> - req = req->next;
> + req = next;
> }
>
> virtio_submit_multiwrite(s->bs, &mrb);
>
> and dropped Stefan's Reviewed-by on the way ;)
>
> This is a bugfix after all ;)
>
> Thanks,
>
> /mjt
By the way, could you please add Cc qemu-stable on bugfixes
you have queued?
These are likely appopriate for 2.1.1.
--
MST
WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Michael Tokarev <mjt@tls.msk.ru>
Cc: kwolf@redhat.com, lkurusa@redhat.com,
zhanghailiang <zhang.zhanghailiang@huawei.com>,
qemu-trivial@nongnu.org, jan.kiszka@siemens.com,
riku.voipio@iki.fi, luonengjun@huawei.com, qemu-devel@nongnu.org,
peter.huangpeng@huawei.com, stefanha@redhat.com,
pbonzini@redhat.com, lcapitulino@redhat.com,
alex.bennee@linaro.org, rth@twiddle.net
Subject: Re: [Qemu-devel] [Qemu-trivial] [PATCH v6 03/10] virtio-blk: fix reference a pointer which might be freed
Date: Mon, 18 Aug 2014 22:17:10 +0200 [thread overview]
Message-ID: <20140818201710.GB1121@redhat.com> (raw)
In-Reply-To: <53F1E842.60009@msgid.tls.msk.ru>
On Mon, Aug 18, 2014 at 03:49:22PM +0400, Michael Tokarev wrote:
> 14.08.2014 11:29, zhanghailiang wrote:
> > In function virtio_blk_handle_request, it may freed memory pointed by req,
> > So do not access member of req after calling this function.
> >
> > Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
> > Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com>
> > ---
> > hw/block/virtio-blk.c | 5 +++--
> > 1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
> > index c241c50..54a853a 100644
> > --- a/hw/block/virtio-blk.c
> > +++ b/hw/block/virtio-blk.c
> > @@ -458,7 +458,7 @@ static void virtio_blk_handle_output(VirtIODevice *vdev, VirtQueue *vq)
> > static void virtio_blk_dma_restart_bh(void *opaque)
> > {
> > VirtIOBlock *s = opaque;
> > - VirtIOBlockReq *req = s->rq;
> > + VirtIOBlockReq *req = s->rq, *next = NULL;
> > MultiReqBuffer mrb = {
> > .num_writes = 0,
> > };
> > @@ -469,8 +469,9 @@ static void virtio_blk_dma_restart_bh(void *opaque)
> > s->rq = NULL;
> >
> > while (req) {
> > + next = req->next;
> > virtio_blk_handle_request(req, &mrb);
> > - req = req->next;
> > + req = next;
> > }
> >
> > virtio_submit_multiwrite(s->bs, &mrb);
>
> So, finally, I've applied this patch:
>
> --- a/hw/block/virtio-blk.c
> +++ b/hw/block/virtio-blk.c
> @@ -469,8 +469,9 @@ static void virtio_blk_dma_restart_bh(void *opaque)
> s->rq = NULL;
>
> while (req) {
> + VirtIOBlockReq *next = req->next;
> virtio_blk_handle_request(req, &mrb);
> - req = req->next;
> + req = next;
> }
>
> virtio_submit_multiwrite(s->bs, &mrb);
>
> and dropped Stefan's Reviewed-by on the way ;)
>
> This is a bugfix after all ;)
>
> Thanks,
>
> /mjt
By the way, could you please add Cc qemu-stable on bugfixes
you have queued?
These are likely appopriate for 2.1.1.
--
MST
next prev parent reply other threads:[~2014-08-18 20:17 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-14 7:29 [Qemu-trivial] [PATCH v6 00/10] fix three bugs about use-after-free and several api abuse zhanghailiang
2014-08-14 7:29 ` [Qemu-devel] " zhanghailiang
2014-08-14 7:29 ` [Qemu-trivial] [PATCH v6 01/10] l2cap: fix access freed memory zhanghailiang
2014-08-14 7:29 ` [Qemu-devel] " zhanghailiang
2014-08-14 10:19 ` [Qemu-trivial] " Michael S. Tsirkin
2014-08-14 10:19 ` [Qemu-devel] " Michael S. Tsirkin
2014-08-15 14:58 ` [Qemu-trivial] " Michael Tokarev
2014-08-15 14:58 ` [Qemu-devel] " Michael Tokarev
2014-08-14 7:29 ` [Qemu-trivial] [PATCH v6 02/10] monitor: " zhanghailiang
2014-08-14 7:29 ` [Qemu-devel] " zhanghailiang
2014-08-14 10:30 ` [Qemu-trivial] " Michael S. Tsirkin
2014-08-14 10:30 ` [Qemu-devel] " Michael S. Tsirkin
2014-08-15 18:25 ` [Qemu-trivial] " Luiz Capitulino
2014-08-15 18:25 ` [Qemu-devel] " Luiz Capitulino
2014-08-17 9:45 ` [Qemu-trivial] " Michael S. Tsirkin
2014-08-17 9:45 ` [Qemu-devel] " Michael S. Tsirkin
2014-08-17 10:55 ` [Qemu-trivial] " Michael S. Tsirkin
2014-08-17 10:55 ` [Qemu-devel] " Michael S. Tsirkin
2014-08-14 7:29 ` [Qemu-trivial] [PATCH v6 03/10] virtio-blk: fix reference a pointer which might be freed zhanghailiang
2014-08-14 7:29 ` [Qemu-devel] " zhanghailiang
2014-08-14 10:37 ` [Qemu-trivial] " Michael S. Tsirkin
2014-08-14 10:37 ` [Qemu-devel] " Michael S. Tsirkin
2014-08-14 10:39 ` [Qemu-trivial] " Michael Tokarev
2014-08-14 10:39 ` [Qemu-devel] " Michael Tokarev
2014-08-14 11:16 ` [Qemu-trivial] " Michael S. Tsirkin
2014-08-14 11:16 ` [Qemu-devel] " Michael S. Tsirkin
2014-08-18 11:49 ` [Qemu-trivial] " Michael Tokarev
2014-08-18 11:49 ` [Qemu-devel] " Michael Tokarev
2014-08-18 20:17 ` Michael S. Tsirkin [this message]
2014-08-18 20:17 ` Michael S. Tsirkin
2014-08-19 7:19 ` Michael Tokarev
2014-08-19 7:19 ` [Qemu-devel] " Michael Tokarev
2014-08-14 7:29 ` [Qemu-trivial] [PATCH v6 04/10] ivshmem: check the value returned by fstat() zhanghailiang
2014-08-14 7:29 ` [Qemu-devel] " zhanghailiang
2014-08-14 10:12 ` [Qemu-trivial] " Michael S. Tsirkin
2014-08-14 10:12 ` [Qemu-devel] " Michael S. Tsirkin
2014-08-15 14:59 ` [Qemu-trivial] " Michael Tokarev
2014-08-15 14:59 ` [Qemu-devel] " Michael Tokarev
2014-08-14 7:29 ` [Qemu-trivial] [PATCH v6 05/10] util/path: Use the GLib memory allocation routines zhanghailiang
2014-08-14 7:29 ` [Qemu-devel] " zhanghailiang
2014-08-14 10:15 ` [Qemu-trivial] " Michael S. Tsirkin
2014-08-14 10:15 ` [Qemu-devel] " Michael S. Tsirkin
2014-08-18 5:59 ` [Qemu-trivial] " zhanghailiang
2014-08-18 5:59 ` [Qemu-devel] " zhanghailiang
2014-08-14 7:29 ` [Qemu-trivial] [PATCH v6 06/10] slirp/misc: Use g_malloc() instead of malloc() zhanghailiang
2014-08-14 7:29 ` [Qemu-devel] " zhanghailiang
2014-08-14 10:31 ` [Qemu-trivial] " Michael S. Tsirkin
2014-08-14 10:31 ` [Qemu-devel] " Michael S. Tsirkin
2014-08-18 0:29 ` [Qemu-trivial] " zhanghailiang
2014-08-18 0:29 ` [Qemu-devel] " zhanghailiang
2014-08-18 5:56 ` [Qemu-trivial] " zhanghailiang
2014-08-18 5:56 ` [Qemu-devel] " zhanghailiang
2014-08-14 7:29 ` [Qemu-trivial] [PATCH v6 07/10] linux-user: check return value " zhanghailiang
2014-08-14 7:29 ` [Qemu-devel] " zhanghailiang
2014-08-14 13:31 ` [Qemu-trivial] " Riku Voipio
2014-08-14 13:31 ` Riku Voipio
2014-08-14 18:04 ` [Qemu-trivial] " Michael Tokarev
2014-08-14 18:04 ` Michael Tokarev
2014-08-18 20:17 ` [Qemu-trivial] " Michael S. Tsirkin
2014-08-18 20:17 ` Michael S. Tsirkin
2014-08-14 7:29 ` [Qemu-trivial] [PATCH v6 08/10] tests/bios-tables-test: check the value returned by fopen() zhanghailiang
2014-08-14 7:29 ` [Qemu-devel] " zhanghailiang
2014-08-14 10:32 ` [Qemu-trivial] " Michael S. Tsirkin
2014-08-14 10:32 ` [Qemu-devel] " Michael S. Tsirkin
2014-08-18 0:32 ` [Qemu-trivial] " zhanghailiang
2014-08-18 0:32 ` [Qemu-devel] " zhanghailiang
2014-08-14 7:29 ` [Qemu-trivial] [PATCH v6 09/10] tcg: check return value of fopen() zhanghailiang
2014-08-14 7:29 ` [Qemu-devel] " zhanghailiang
2014-08-14 10:33 ` [Qemu-trivial] " Michael S. Tsirkin
2014-08-14 10:33 ` [Qemu-devel] " Michael S. Tsirkin
2014-08-15 15:03 ` [Qemu-trivial] " Michael Tokarev
2014-08-15 15:03 ` [Qemu-devel] " Michael Tokarev
2014-08-15 16:53 ` Richard Henderson
2014-08-15 16:53 ` [Qemu-devel] " Richard Henderson
2014-08-18 6:21 ` zhanghailiang
2014-08-18 6:21 ` [Qemu-devel] " zhanghailiang
2014-08-14 7:29 ` [Qemu-trivial] [PATCH v6 10/10] block/vvfat: fix setbuf stream parameter may be NULL zhanghailiang
2014-08-14 7:29 ` [Qemu-devel] " zhanghailiang
2014-08-14 10:36 ` [Qemu-trivial] " Michael S. Tsirkin
2014-08-14 10:36 ` [Qemu-devel] " Michael S. Tsirkin
2014-08-18 0:55 ` [Qemu-trivial] " zhanghailiang
2014-08-18 0:55 ` [Qemu-devel] " zhanghailiang
2014-08-14 10:17 ` [Qemu-trivial] [PATCH v6 00/10] fix three bugs about use-after-free and several api abuse Michael S. Tsirkin
2014-08-14 10:17 ` [Qemu-devel] " Michael S. Tsirkin
2014-08-14 10:38 ` [Qemu-trivial] " Michael S. Tsirkin
2014-08-14 10:38 ` [Qemu-devel] " 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=20140818201710.GB1121@redhat.com \
--to=mst@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=jan.kiszka@siemens.com \
--cc=kwolf@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=lkurusa@redhat.com \
--cc=luonengjun@huawei.com \
--cc=mjt@tls.msk.ru \
--cc=pbonzini@redhat.com \
--cc=peter.huangpeng@huawei.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-trivial@nongnu.org \
--cc=riku.voipio@iki.fi \
--cc=rth@twiddle.net \
--cc=stefanha@redhat.com \
--cc=zhang.zhanghailiang@huawei.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 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.