• O
    uprobes/x86: Don't use arch_uprobe_abort_xol() in arch_uprobe_post_xol() · 6ded5f38
    Oleg Nesterov 提交于
    014940ba "uprobes/x86: Send SIGILL if arch_uprobe_post_xol() fails"
    changed arch_uprobe_post_xol() to use arch_uprobe_abort_xol() if ->post_xol
    fails. This was correct and helped to avoid the additional complications,
    we need to clear X86_EFLAGS_TF in this case.
    
    However, now that we have uprobe_xol_ops->abort() hook it would be better
    to avoid arch_uprobe_abort_xol() here. ->post_xol() should likely do what
    ->abort() does anyway, we should not do the same work twice. Currently only
    handle_riprel_post_xol() can be called twice, this is unnecessary but safe.
    Still this is not clean and can lead to the problems in future.
    
    Change arch_uprobe_post_xol() to clear X86_EFLAGS_TF and restore ->ip by
    hand and avoid arch_uprobe_abort_xol(). This temporary uglifies the usage
    of autask.saved_tf, we will cleanup this later.
    Signed-off-by: NOleg Nesterov <oleg@redhat.com>
    Reviewed-by: NJim Keniston <jkenisto@us.ibm.com>
    6ded5f38
uprobes.c 27.0 KB