lkml.org 
[lkml]   [2019]   [Aug]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V4 6/9] vhost: don't do synchronize_rcu() in vhost_uninit_vq_maps()
    Date
    There's no need for RCU synchronization in vhost_uninit_vq_maps()
    since we've already serialized with readers (memory accessors). This
    also avoid the possible userspace DOS through ioctl() because of the
    possible high latency caused by synchronize_rcu().

    Reported-by: Michael S. Tsirkin <mst@redhat.com>
    Fixes: 7f466032dc9e ("vhost: access vq metadata through kernel virtual address")
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    ---
    drivers/vhost/vhost.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
    index c12cdadb0855..cfc11f9ed9c9 100644
    --- a/drivers/vhost/vhost.c
    +++ b/drivers/vhost/vhost.c
    @@ -333,7 +333,9 @@ static void vhost_uninit_vq_maps(struct vhost_virtqueue *vq)
    }
    spin_unlock(&vq->mmu_lock);

    - synchronize_rcu();
    + /* No need for synchronize_rcu() or kfree_rcu() since we are
    + * serialized with memory accessors (e.g vq mutex held).
    + */

    for (i = 0; i < VHOST_NUM_ADDRS; i++)
    if (map[i])
    --
    2.18.1
    \
     
     \ /
      Last update: 2019-08-07 09:08    [W:2.888 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site