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

update

File:
1 edited

Legend:

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

    r28606 r31885  
    36783678}
    36793679
    3680 static void __disable_ftrace_function_probe(void)
     3680static bool __disable_ftrace_function_probe(void)
    36813681{
    36823682        int i;
    36833683
    36843684        if (!ftrace_probe_registered)
    3685                 return;
     3685                return false;
    36863686
    36873687        for (i = 0; i < FTRACE_FUNC_HASHSIZE; i++) {
    36883688                struct hlist_head *hhd = &ftrace_func_hash[i];
    36893689                if (hhd->first)
    3690                         return;
     3690                        return false;
    36913691        }
    36923692
     
    36953695
    36963696        ftrace_probe_registered = 0;
     3697        return true;
    36973698}
    36983699
     
    38213822                                  void *data, int flags)
    38223823{
     3824        struct ftrace_ops_hash old_hash_ops;
    38233825        struct ftrace_func_entry *rec_entry;
    38243826        struct ftrace_func_probe *entry;
     
    38323834        char str[KSYM_SYMBOL_LEN];
    38333835        int i, ret;
     3836        bool disabled;
    38343837
    38353838        if (glob && (strcmp(glob, "*") == 0 || !strlen(glob)))
     
    38493852
    38503853        mutex_lock(&trace_probe_ops.func_hash->regex_lock);
     3854
     3855        old_hash_ops.filter_hash = old_hash;
     3856        /* Probes only have filters */
     3857        old_hash_ops.notrace_hash = NULL;
    38513858
    38523859        hash = alloc_and_copy_ftrace_hash(FTRACE_HASH_DEFAULT_BITS, *orig_hash);
     
    38873894        }
    38883895        mutex_lock(&ftrace_lock);
    3889         __disable_ftrace_function_probe();
     3896        disabled = __disable_ftrace_function_probe();
    38903897        /*
    38913898         * Remove after the disable is called. Otherwise, if the last
     
    38933900         */
    38943901        ret = ftrace_hash_move(&trace_probe_ops, 1, orig_hash, hash);
     3902
     3903        /* still need to update the function call sites */
     3904        if (ftrace_enabled && !disabled)
     3905                ftrace_run_modify_code(&trace_probe_ops, FTRACE_UPDATE_CALLS,
     3906                                       &old_hash_ops);
    38953907        synchronize_sched();
    38963908        if (!ret)
Note: See TracChangeset for help on using the changeset viewer.