• Tony Luck's avatar
    [IA64] fix siglock · f574c843
    Tony Luck authored
    When ia64 converted to using ticket locks, an inline implementation
    of trylock/unlock in fsys.S was missed.  This was not noticed because
    in most circumstances it simply resulted in using the slow path because
    the siglock was apparently not available (under old spinlock rules).
    
    Problems occur when the ticket spinlock has value 0x0 (when first
    initialised, or when it wraps around). At this point the fsys.S
    code acquires the lock (changing the 0x0 to 0x1. If another process
    attempts to get the lock at this point, it will change the value from
    0x1 to 0x2 (using new ticket lock rules). Then the fsys.S code will
    free the lock using old spinlock rules by writing 0x0 to it. From
    here a variety of bad things can happen.
    Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
    f574c843
fsys.S 30.2 KB