• Heiko Carstens's avatar
    s390/ctl_reg: make __ctl_load a full memory barrier · e991c24d
    Heiko Carstens authored
    We have quite a lot of code that depends on the order of the
    __ctl_load inline assemby and subsequent memory accesses, like
    e.g. disabling lowcore protection and the writing to lowcore.
    
    Since the __ctl_load macro does not have memory barrier semantics, nor
    any other dependencies the compiler is, theoretically, free to shuffle
    code around. Or in other words: storing to lowcore could happen before
    lowcore protection is disabled.
    
    In order to avoid this class of potential bugs simply add a full
    memory barrier to the __ctl_load macro.
    Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    e991c24d
ctl_reg.h 1.88 KB