• Heiko Carstens's avatar
    [S390] sclp_tty: Fix scheduling while atomic bug. · 5e34599f
    Heiko Carstens authored
    Finally fixes a possible scheduling while in atomic context bug. The driver
    used to wait on a waitqueue if no empty buffer was available. This could
    lead to a deadlock if the driver was called from non-schedulable context.
    So fix this. The write operation may fail now. It returns the number of
    characters accepted. put_char will never fail, since it writes characters
    to an intermediate buffer which gets flushed as soon as it is full.
    That means the driver now can busy wait if something is in the intermediate
    buffer and a write_string operation follows. Seems to be an acceptable
    compromise, since that shouldn't happen too often.
    
    Cc: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
    Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    5e34599f
sclp_tty.c 15.8 KB