Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1539153
| From | Greg KH <gregkh@linuxfoundation.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH] tracing: (backport) Replace kmap with copy_from_user() in trace_marker |
| Date | 2016-12-09 08:30 +0100 |
| Message-ID | <sMnMZ-nM-7@gated-at.bofh.it> (permalink) |
| References | <sMbVv-188-7@gated-at.bofh.it> <sMn0C-8kb-11@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Fri, Dec 09, 2016 at 07:34:04AM +0100, Henrik Austad wrote: > Instead of using get_user_pages_fast() and kmap_atomic() when writing > to the trace_marker file, just allocate enough space on the ring buffer > directly, and write into it via copy_from_user(). > > Writing into the trace_marker file use to allocate a temporary buffer > to perform the copy_from_user(), as we didn't want to write into the > ring buffer if the copy failed. But as a trace_marker write is suppose > to be extremely fast, and allocating memory causes other tracepoints to > trigger, Peter Zijlstra suggested using get_user_pages_fast() and > kmap_atomic() to keep the user space pages in memory and reading it > directly. > > Instead, just allocate the space in the ring buffer and use > copy_from_user() directly. If it faults, return -EFAULT and write > "<faulted>" into the ring buffer. > > On architectures without a arch-specific get_user_pages_fast(), this > will end up in the generic get_user_pages_fast() and this grabs > mm->mmap_sem. Once you do this, then suddenly writing to the > trace_marker can cause priority-inversions. > > This is a backport of Steven Rostedts patch [1] and applied to 3.10.x so the > signed-off-chain by is somewhat uncertain at this stage. > > The patch compiles, boots and does not immediately explode on impact. By > definition [2] it must therefore be perfect > > 2) https://www.spinics.net/lists/kernel/msg2400769.html > 2) http://lkml.iu.edu/hypermail/linux/kernel/9804.1/0149.html > > Cc: Ingo Molnar <mingo@kernel.org> > Cc: Henrik Austad <henrik@austad.us> > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: Steven Rostedt <rostedt@goodmis.org> > Cc: stable@vger.kernel.org > > Suggested-by: Thomas Gleixner <tglx@linutronix.de> > Used-to-be-signed-off-by: Steven Rostedt <rostedt@goodmis.org> > Backported-by: Henrik Austad <haustad@cisco.com> > Tested-by: Henrik Austad <haustad@cisco.com> > Signed-off-by: Henrik Austad <haustad@cisco.com> > --- > kernel/trace/trace.c | 78 +++++++++++++++------------------------------------- > 1 file changed, 22 insertions(+), 56 deletions(-) What is the git commit id of this patch in Linus's tree? And what stable trees do you feel it should be applied to? thanks, greg k-h
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH] tracing: Replace kmap with copy_from_user() in trace_marker writing Steven Rostedt <rostedt@goodmis.org> - 2016-12-08 18:50 +0100
[PATCH v2] tracing: Replace kmap with copy_from_user() in trace_marker writing Steven Rostedt <rostedt@goodmis.org> - 2016-12-08 19:50 +0100
[PATCH] tracing: (backport) Replace kmap with copy_from_user() in trace_marker Henrik Austad <henrik@austad.us> - 2016-12-09 07:40 +0100
Re: [PATCH] tracing: (backport) Replace kmap with copy_from_user() in trace_marker Greg KH <gregkh@linuxfoundation.org> - 2016-12-09 08:30 +0100
Re: [PATCH] tracing: (backport) Replace kmap with copy_from_user() in trace_marker Henrik Austad <haustad@cisco.com> - 2016-12-09 09:20 +0100
Re: [PATCH] tracing: (backport) Replace kmap with copy_from_user() in trace_marker Greg KH <gregkh@linuxfoundation.org> - 2016-12-09 09:30 +0100
Re: [PATCH] tracing: (backport) Replace kmap with copy_from_user() in trace_marker Steven Rostedt <rostedt@goodmis.org> - 2016-12-09 15:00 +0100
csiph-web