• Oleg Nesterov's avatar
    uprobes/x86: Move UPROBE_FIX_SETF logic from arch_uprobe_post_xol() to default_post_xol_op() · 220ef8dc
    Oleg Nesterov authored
    UPROBE_FIX_SETF is only needed to handle "popf" correctly but it is
    processed by the generic arch_uprobe_post_xol() code. This doesn't
    allows us to make ->fixups private for default_xol_ops.
    
    1 Change default_post_xol_op(UPROBE_FIX_SETF) to set ->saved_tf = T.
    
       "popf" always reads the flags from stack, it doesn't matter if TF
       was set or not before single-step. Ignoring the naming, this is
       even more logical, "saved_tf" means "owned by application" and we
       do not own this flag after "popf".
    
    2. Change arch_uprobe_post_xol() to save ->saved_tf into the local
       "bool send_sigtrap" before ->post_xol().
    
    3. Change arch_uprobe_post_xol() to ignore UPROBE_FIX_SETF and just
       check ->saved_tf after ->post_xol().
    
    With this patch ->fixups and ->rip_rela_target_address are only used
    by default_xol_ops hooks, we are ready to remove them from the common
    part of arch_uprobe.
    Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
    Reviewed-by: default avatarJim Keniston <jkenisto@us.ibm.com>
    220ef8dc
uprobes.c 27.1 KB