• Peter Hurley's avatar
    n_tty: Fix unordered accesses to lockless read buffer · 70aca71f
    Peter Hurley authored
    Add commit_head buffer index, which the producer-side publishes
    after input processing in non-canon mode. This ensures the consumer-side
    observes correctly-ordered writes in non-canonical mode (ie., the buffer
    data is written before the buffer index is advanced). Fix consumer-side
    uses of read_cnt() to use commit_head instead.
    
    Add required memory barriers to the tail index to guarantee
    the consumer-side has completed the loads before the producer-side
    begins writing new data. Open-code the producer-side receive_room()
    into the i/o loop.
    
    Remove no-longer-referenced receive_room().
    
    Based on work by Christian Riesch <christian.riesch@omicron.at>
    
    Cc: Christian Riesch <christian.riesch@omicron.at>
    Signed-off-by: default avatarPeter Hurley <peter@hurleysoftware.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    70aca71f
n_tty.c 61.7 KB