• Eric W. Biederman's avatar
    [PATCH] vt: Make vt_pid a struct pid (making it pid wrap around safe). · bde0d2c9
    Eric W. Biederman authored
    I took a good hard look at the locking and it appears the locking on vt_pid
    is the console semaphore.  Every modified path is called under the console
    semaphore except reset_vc when it is called from fn_SAK or do_SAK both of
    which appear to be in interrupt context.  In addition I need to be careful
    because in the presence of an oops the console_sem may be arbitrarily
    dropped.
    
    Which leads me to conclude the current locking is inadequate for my needs.
    
    Given the weird cases we could hit because of oops printing instead of
    introducing an extra spin lock to protect the data and keep the pid to
    signal and the signal to send in sync, I have opted to use xchg on just the
    struct pid * pointer instead.
    
    Due to console_sem we will stay in sync between vt_pid and vt_mode except
    for a small window during a SAK, or oops handling.  SAK handling should
    kill any user space process that care, and oops handling we are broken
    anyway.  Besides the worst that can happen is that I try to send the wrong
    signal.
    Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
    Cc: Oleg Nesterov <oleg@tv-sign.ru>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    bde0d2c9
vt_ioctl.c 28.3 KB