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

update

File:
1 edited

Legend:

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

    r26639 r31885  
    34093409}
    34103410
    3411 static void __disable_ftrace_function_probe(void)
     3411static bool __disable_ftrace_function_probe(void)
    34123412{
    34133413        int i;
    34143414
    34153415        if (!ftrace_probe_registered)
    3416                 return;
     3416                return false;
    34173417
    34183418        for (i = 0; i < FTRACE_FUNC_HASHSIZE; i++) {
    34193419                struct hlist_head *hhd = &ftrace_func_hash[i];
    34203420                if (hhd->first)
    3421                         return;
     3421                        return false;
    34223422        }
    34233423
     
    34263426
    34273427        ftrace_probe_registered = 0;
     3428        return true;
    34283429}
    34293430
     
    35513552                                  void *data, int flags)
    35523553{
     3554        struct ftrace_ops_hash old_hash_ops;
    35533555        struct ftrace_func_entry *rec_entry;
    35543556        struct ftrace_func_probe *entry;
     
    35643566        char *search;
    35653567        int ret;
     3568        bool disabled;
    35663569
    35673570        if (glob && (strcmp(glob, "*") == 0 || !strlen(glob)))
     
    35793582
    35803583        mutex_lock(&trace_probe_ops.func_hash->regex_lock);
     3584
     3585        old_hash_ops.filter_hash = old_hash;
     3586        /* Probes only have filters */
     3587        old_hash_ops.notrace_hash = NULL;
    35813588
    35823589        hash = alloc_and_copy_ftrace_hash(FTRACE_HASH_DEFAULT_BITS, *orig_hash);
     
    36173624        }
    36183625        mutex_lock(&ftrace_lock);
    3619         __disable_ftrace_function_probe();
     3626        disabled = __disable_ftrace_function_probe();
    36203627        /*
    36213628         * Remove after the disable is called. Otherwise, if the last
     
    36233630         */
    36243631        ret = ftrace_hash_move(&trace_probe_ops, 1, orig_hash, hash);
     3632
     3633        /* still need to update the function call sites */
     3634        if (ftrace_enabled && !disabled)
     3635                ftrace_run_modify_code(&trace_probe_ops, FTRACE_UPDATE_CALLS,
     3636                                       &old_hash_ops);
    36253637        synchronize_sched();
    36263638        if (!ret)
Note: See TracChangeset for help on using the changeset viewer.