• A
    [PATCH] fix broken vm86 interrupt/signal handling · 4031ff38
    Aleksey Gorelov 提交于
    Commit c3ff8ec3 ("[PATCH] i386: Don't
    miss pending signals returning to user mode after signal processing")
    meant that vm86 interrupt/signal handling got broken for the case when
    vm86 is called from kernel space.
    
    In this scenario, if signal is pending because of vm86 interrupt,
    do_notify_resume/do_signal exits immediately due to user_mode() check,
    without processing any signals.  Thus, resume_userspace handler is spinning
    in a tight loop with signal pending and TIF_SIGPENDING is set.  Previously
    everything worked Ok.
    
    No in-tree usage of vm86() from kernel space exists, but I've heard
    about a number of projects out there which use vm86 calls from kernel,
    one of them being this, for instance:
    
    	http://dev.gentoo.org/~spock/projects/vesafb-tng/
    
    The following patch fixes the issue.
    Signed-off-by: NAleksey Gorelov <aleksey_gorelov@phoenix.com>
    Cc: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
    Cc: Roland McGrath <roland@redhat.com>
    Signed-off-by: NAndrew Morton <akpm@osdl.org>
    Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
    4031ff38
entry.S 20.2 KB