static DEFINE_MUTEX(graph_lock);
 
 struct ftrace_hash __rcu *ftrace_graph_hash = EMPTY_HASH;
-struct ftrace_hash *ftrace_graph_notrace_hash = EMPTY_HASH;
+struct ftrace_hash __rcu *ftrace_graph_notrace_hash = EMPTY_HASH;
 
 enum graph_filter_type {
        GRAPH_FILTER_NOTRACE    = 0,
 
 
 #ifdef CONFIG_DYNAMIC_FTRACE
 extern struct ftrace_hash __rcu *ftrace_graph_hash;
-extern struct ftrace_hash *ftrace_graph_notrace_hash;
+extern struct ftrace_hash __rcu *ftrace_graph_notrace_hash;
 
 static inline int ftrace_graph_addr(struct ftrace_graph_ent *trace)
 {
 static inline int ftrace_graph_notrace_addr(unsigned long addr)
 {
        int ret = 0;
+       struct ftrace_hash *notrace_hash;
 
        preempt_disable_notrace();
 
-       if (ftrace_lookup_ip(ftrace_graph_notrace_hash, addr))
+       notrace_hash = rcu_dereference_protected(ftrace_graph_notrace_hash,
+                                                !preemptible());
+
+       if (ftrace_lookup_ip(notrace_hash, addr))
                ret = 1;
 
        preempt_enable_notrace();