Messages in this thread | | | Date | Tue, 27 Mar 2018 10:28:11 +0100 | From | Darren Kenny <> | Subject | Re: [PATCH net] vhost: correctly remove wait queue during poll failure |
| |
Hi Jason,
On Tue, Mar 27, 2018 at 11:47:22AM +0800, Jason Wang wrote: >We tried to remove vq poll from wait queue, but do not check whether >or not it was in a list before. This will lead double free. Fixing >this by checking poll->wqh to make sure it was in a list.
This text seems at odds with the code below, instead of checking poll-whq, you are removing that check...
Maybe the text needs rewording?
Thanks,
Darren.
> >Reported-by: syzbot+c0272972b01b872e604a@syzkaller.appspotmail.com >Fixes: 2b8b328b61c79 ("vhost_net: handle polling errors when setting backend") >Signed-off-by: Jason Wang <jasowang@redhat.com> >--- > drivers/vhost/vhost.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > >diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c >index 1b3e8d2d..5d5a9d9 100644 >--- a/drivers/vhost/vhost.c >+++ b/drivers/vhost/vhost.c >@@ -212,8 +212,7 @@ int vhost_poll_start(struct vhost_poll *poll, struct file *file) > if (mask) > vhost_poll_wakeup(&poll->wait, 0, 0, poll_to_key(mask)); > if (mask & EPOLLERR) { >- if (poll->wqh) >- remove_wait_queue(poll->wqh, &poll->wait); >+ vhost_poll_stop(poll); > ret = -EINVAL; > } > >-- >2.7.4 >
| |