• Michael Kelley's avatar
    Drivers: hv: vmbus: Fix ring buffer signaling · 655296c8
    Michael Kelley authored
    Fix bugs in signaling the Hyper-V host when freeing space in the
    host->guest ring buffer:
    
    1. The interrupt_mask must not be used to determine whether to signal
       on the host->guest ring buffer
    2. The ring buffer write_index must be read (via hv_get_bytes_to_write)
       *after* pending_send_sz is read in order to avoid a race condition
    3. Comparisons with pending_send_sz must treat the "equals" case as
       not-enough-space
    4. Don't signal if the pending_send_sz feature is not present. Older
       versions of Hyper-V that don't implement this feature will poll.
    
    Fixes: 03bad714 ("vmbus: more host signalling avoidance")
    
    Cc: Stable <stable@vger.kernel.org> # 4.14 and above
    Signed-off-by: default avatarMichael Kelley <mhkelley@outlook.com>
    Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    655296c8
ring_buffer.c 13.5 KB