Ignore:
Timestamp:
Apr 21, 2017, 4:28:29 AM (5 weeks ago)
Author:
brainslayer
Message:

update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linux/universal/linux-4.9/kernel/trace/ftrace.c

    r31574 r31885  
    37373737}
    37383738
    3739 static void __disable_ftrace_function_probe(void)
     3739static bool __disable_ftrace_function_probe(void)
    37403740{
    37413741        int i;
    37423742
    37433743        if (!ftrace_probe_registered)
    3744                 return;
     3744                return false;
    37453745
    37463746        for (i = 0; i < FTRACE_FUNC_HASHSIZE; i++) {
    37473747                struct hlist_head *hhd = &ftrace_func_hash[i];
    37483748                if (hhd->first)
    3749                         return;
     3749                        return false;
    37503750        }
    37513751
     
    37543754
    37553755        ftrace_probe_registered = 0;
     3756        return true;
    37563757}
    37573758
     
    38833884                                  void *data, int flags)
    38843885{
     3886        struct ftrace_ops_hash old_hash_ops;
    38853887        struct ftrace_func_entry *rec_entry;
    38863888        struct ftrace_func_probe *entry;
     
    38943896        char str[KSYM_SYMBOL_LEN];
    38953897        int i, ret;
     3898        bool disabled;
    38963899
    38973900        if (glob && (strcmp(glob, "*") == 0 || !strlen(glob)))
     
    39113914
    39123915        mutex_lock(&trace_probe_ops.func_hash->regex_lock);
     3916
     3917        old_hash_ops.filter_hash = old_hash;
     3918        /* Probes only have filters */
     3919        old_hash_ops.notrace_hash = NULL;
    39133920
    39143921        hash = alloc_and_copy_ftrace_hash(FTRACE_HASH_DEFAULT_BITS, *orig_hash);
     
    39493956        }
    39503957        mutex_lock(&ftrace_lock);
    3951         __disable_ftrace_function_probe();
     3958        disabled = __disable_ftrace_function_probe();
    39523959        /*
    39533960         * Remove after the disable is called. Otherwise, if the last
     
    39553962         */
    39563963        ret = ftrace_hash_move(&trace_probe_ops, 1, orig_hash, hash);
     3964
     3965        /* still need to update the function call sites */
     3966        if (ftrace_enabled && !disabled)
     3967                ftrace_run_modify_code(&trace_probe_ops, FTRACE_UPDATE_CALLS,
     3968                                       &old_hash_ops);
    39573969        synchronize_sched();
    39583970        if (!ret)
     
    53905402}
    53915403
     5404void ftrace_clear_pids(struct trace_array *tr)
     5405{
     5406        mutex_lock(&ftrace_lock);
     5407
     5408        clear_ftrace_pids(tr);
     5409
     5410        mutex_unlock(&ftrace_lock);
     5411}
     5412
    53925413static void ftrace_pid_reset(struct trace_array *tr)
    53935414{
Note: See TracChangeset for help on using the changeset viewer.