• Jason Wang's avatar
    virtio-net: fix the race between channels setting and refill · 9b9cd802
    Jason Wang authored
    Commit 55257d72 (virtio-net: fill only rx queues
    which are being used) tries to refill on demand when changing the number of
    channels by call try_refill_recv() directly, this may race:
    
    - the refill work who may do the refill in the same time
    - the try_refill_recv() called in bh since napi was not disabled
    
    Which may led guest complain during setting channels:
    
    virtio_net virtio0: input.1:id 0 is not a head!
    
    Solve this issue by scheduling a refill work which can guarantee the
    serialization of refill.
    
    Cc: Sasha Levin <sasha.levin@oracle.com>
    Cc: Rusty Russell <rusty@rustcorp.com.au>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
    Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    9b9cd802
virtio_net.c 42.8 KB