Loading kernel/events/uprobes.c +3 −3 Original line number Diff line number Diff line Loading @@ -846,7 +846,7 @@ static void __uprobe_unregister(struct uprobe *uprobe, struct uprobe_consumer *u { int err; if (!consumer_del(uprobe, uc)) /* WARN? */ if (WARN_ON(!consumer_del(uprobe, uc))) return; err = register_for_each_vma(uprobe, NULL); Loading Loading @@ -927,7 +927,7 @@ int uprobe_apply(struct inode *inode, loff_t offset, int ret = -ENOENT; uprobe = find_uprobe(inode, offset); if (!uprobe) if (WARN_ON(!uprobe)) return ret; down_write(&uprobe->register_rwsem); Loading @@ -952,7 +952,7 @@ void uprobe_unregister(struct inode *inode, loff_t offset, struct uprobe_consume struct uprobe *uprobe; uprobe = find_uprobe(inode, offset); if (!uprobe) if (WARN_ON(!uprobe)) return; down_write(&uprobe->register_rwsem); Loading kernel/trace/trace.c +0 −2 Original line number Diff line number Diff line Loading @@ -1372,7 +1372,6 @@ void tracing_start(void) arch_spin_unlock(&global_trace.max_lock); ftrace_start(); out: raw_spin_unlock_irqrestore(&global_trace.start_lock, flags); } Loading Loading @@ -1419,7 +1418,6 @@ void tracing_stop(void) struct ring_buffer *buffer; unsigned long flags; ftrace_stop(); raw_spin_lock_irqsave(&global_trace.start_lock, flags); if (global_trace.stop_count++) goto out; Loading kernel/trace/trace_uprobe.c +27 −19 Original line number Diff line number Diff line Loading @@ -893,6 +893,9 @@ probe_event_enable(struct trace_uprobe *tu, struct ftrace_event_file *file, int ret; if (file) { if (tu->tp.flags & TP_FLAG_PROFILE) return -EINTR; link = kmalloc(sizeof(*link), GFP_KERNEL); if (!link) return -ENOMEM; Loading @@ -901,29 +904,40 @@ probe_event_enable(struct trace_uprobe *tu, struct ftrace_event_file *file, list_add_tail_rcu(&link->list, &tu->tp.files); tu->tp.flags |= TP_FLAG_TRACE; } else tu->tp.flags |= TP_FLAG_PROFILE; } else { if (tu->tp.flags & TP_FLAG_TRACE) return -EINTR; ret = uprobe_buffer_enable(); if (ret < 0) return ret; tu->tp.flags |= TP_FLAG_PROFILE; } WARN_ON(!uprobe_filter_is_empty(&tu->filter)); if (enabled) return 0; ret = uprobe_buffer_enable(); if (ret) goto err_flags; tu->consumer.filter = filter; ret = uprobe_register(tu->inode, tu->offset, &tu->consumer); if (ret) { if (ret) goto err_buffer; return 0; err_buffer: uprobe_buffer_disable(); err_flags: if (file) { list_del(&link->list); kfree(link); tu->tp.flags &= ~TP_FLAG_TRACE; } else } else { tu->tp.flags &= ~TP_FLAG_PROFILE; } return ret; } Loading Loading @@ -1201,12 +1215,6 @@ static int uprobe_dispatcher(struct uprobe_consumer *con, struct pt_regs *regs) current->utask->vaddr = (unsigned long) &udd; #ifdef CONFIG_PERF_EVENTS if ((tu->tp.flags & TP_FLAG_TRACE) == 0 && !uprobe_perf_filter(&tu->consumer, 0, current->mm)) return UPROBE_HANDLER_REMOVE; #endif if (WARN_ON_ONCE(!uprobe_cpu_buffer)) return 0; Loading Loading
kernel/events/uprobes.c +3 −3 Original line number Diff line number Diff line Loading @@ -846,7 +846,7 @@ static void __uprobe_unregister(struct uprobe *uprobe, struct uprobe_consumer *u { int err; if (!consumer_del(uprobe, uc)) /* WARN? */ if (WARN_ON(!consumer_del(uprobe, uc))) return; err = register_for_each_vma(uprobe, NULL); Loading Loading @@ -927,7 +927,7 @@ int uprobe_apply(struct inode *inode, loff_t offset, int ret = -ENOENT; uprobe = find_uprobe(inode, offset); if (!uprobe) if (WARN_ON(!uprobe)) return ret; down_write(&uprobe->register_rwsem); Loading @@ -952,7 +952,7 @@ void uprobe_unregister(struct inode *inode, loff_t offset, struct uprobe_consume struct uprobe *uprobe; uprobe = find_uprobe(inode, offset); if (!uprobe) if (WARN_ON(!uprobe)) return; down_write(&uprobe->register_rwsem); Loading
kernel/trace/trace.c +0 −2 Original line number Diff line number Diff line Loading @@ -1372,7 +1372,6 @@ void tracing_start(void) arch_spin_unlock(&global_trace.max_lock); ftrace_start(); out: raw_spin_unlock_irqrestore(&global_trace.start_lock, flags); } Loading Loading @@ -1419,7 +1418,6 @@ void tracing_stop(void) struct ring_buffer *buffer; unsigned long flags; ftrace_stop(); raw_spin_lock_irqsave(&global_trace.start_lock, flags); if (global_trace.stop_count++) goto out; Loading
kernel/trace/trace_uprobe.c +27 −19 Original line number Diff line number Diff line Loading @@ -893,6 +893,9 @@ probe_event_enable(struct trace_uprobe *tu, struct ftrace_event_file *file, int ret; if (file) { if (tu->tp.flags & TP_FLAG_PROFILE) return -EINTR; link = kmalloc(sizeof(*link), GFP_KERNEL); if (!link) return -ENOMEM; Loading @@ -901,29 +904,40 @@ probe_event_enable(struct trace_uprobe *tu, struct ftrace_event_file *file, list_add_tail_rcu(&link->list, &tu->tp.files); tu->tp.flags |= TP_FLAG_TRACE; } else tu->tp.flags |= TP_FLAG_PROFILE; } else { if (tu->tp.flags & TP_FLAG_TRACE) return -EINTR; ret = uprobe_buffer_enable(); if (ret < 0) return ret; tu->tp.flags |= TP_FLAG_PROFILE; } WARN_ON(!uprobe_filter_is_empty(&tu->filter)); if (enabled) return 0; ret = uprobe_buffer_enable(); if (ret) goto err_flags; tu->consumer.filter = filter; ret = uprobe_register(tu->inode, tu->offset, &tu->consumer); if (ret) { if (ret) goto err_buffer; return 0; err_buffer: uprobe_buffer_disable(); err_flags: if (file) { list_del(&link->list); kfree(link); tu->tp.flags &= ~TP_FLAG_TRACE; } else } else { tu->tp.flags &= ~TP_FLAG_PROFILE; } return ret; } Loading Loading @@ -1201,12 +1215,6 @@ static int uprobe_dispatcher(struct uprobe_consumer *con, struct pt_regs *regs) current->utask->vaddr = (unsigned long) &udd; #ifdef CONFIG_PERF_EVENTS if ((tu->tp.flags & TP_FLAG_TRACE) == 0 && !uprobe_perf_filter(&tu->consumer, 0, current->mm)) return UPROBE_HANDLER_REMOVE; #endif if (WARN_ON_ONCE(!uprobe_cpu_buffer)) return 0; Loading