linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org,
	"Steven Rostedt (VMware)" <rostedt@goodmis.org>
Subject: [PATCH 4.16 18/47] tracing: Fix crash when freeing instances with event triggers
Date: Mon,  4 Jun 2018 08:58:30 +0200	[thread overview]
Message-ID: <20180604065550.251210878@linuxfoundation.org> (raw)
In-Reply-To: <20180604065549.468488465@linuxfoundation.org>

4.16-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Steven Rostedt (VMware) <rostedt@goodmis.org>

commit 86b389ff22bd6ad8fd3cb98e41cd271886c6d023 upstream.

If a instance has an event trigger enabled when it is freed, it could cause
an access of free memory. Here's the case that crashes:

 # cd /sys/kernel/tracing
 # mkdir instances/foo
 # echo snapshot > instances/foo/events/initcall/initcall_start/trigger
 # rmdir instances/foo

Would produce:

 general protection fault: 0000 [#1] PREEMPT SMP PTI
 Modules linked in: tun bridge ...
 CPU: 5 PID: 6203 Comm: rmdir Tainted: G        W         4.17.0-rc4-test+ #933
 Hardware name: Hewlett-Packard HP Compaq Pro 6300 SFF/339A, BIOS K01 v03.03 07/14/2016
 RIP: 0010:clear_event_triggers+0x3b/0x70
 RSP: 0018:ffffc90003783de0 EFLAGS: 00010286
 RAX: 0000000000000000 RBX: 6b6b6b6b6b6b6b2b RCX: 0000000000000000
 RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff8800c7130ba0
 RBP: ffffc90003783e00 R08: ffff8801131993f8 R09: 0000000100230016
 R10: ffffc90003783d80 R11: 0000000000000000 R12: ffff8800c7130ba0
 R13: ffff8800c7130bd8 R14: ffff8800cc093768 R15: 00000000ffffff9c
 FS:  00007f6f4aa86700(0000) GS:ffff88011eb40000(0000) knlGS:0000000000000000
 CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
 CR2: 00007f6f4a5aed60 CR3: 00000000cd552001 CR4: 00000000001606e0
 Call Trace:
  event_trace_del_tracer+0x2a/0xc5
  instance_rmdir+0x15c/0x200
  tracefs_syscall_rmdir+0x52/0x90
  vfs_rmdir+0xdb/0x160
  do_rmdir+0x16d/0x1c0
  __x64_sys_rmdir+0x17/0x20
  do_syscall_64+0x55/0x1a0
  entry_SYSCALL_64_after_hwframe+0x49/0xbe

This was due to the call the clears out the triggers when an instance is
being deleted not removing the trigger from the link list.

Cc: stable@vger.kernel.org
Fixes: 85f2b08268c01 ("tracing: Add basic event trigger framework")
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 kernel/trace/trace_events_trigger.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

--- a/kernel/trace/trace_events_trigger.c
+++ b/kernel/trace/trace_events_trigger.c
@@ -482,9 +482,10 @@ clear_event_triggers(struct trace_array
 	struct trace_event_file *file;
 
 	list_for_each_entry(file, &tr->events, list) {
-		struct event_trigger_data *data;
-		list_for_each_entry_rcu(data, &file->triggers, list) {
+		struct event_trigger_data *data, *n;
+		list_for_each_entry_safe(data, n, &file->triggers, list) {
 			trace_event_trigger_enable_disable(file, 0);
+			list_del_rcu(&data->list);
 			if (data->ops->free)
 				data->ops->free(data->ops, data);
 		}

  parent reply	other threads:[~2018-06-04  7:03 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-04  6:58 [PATCH 4.16 00/47] 4.16.14-stable review Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 01/47] objtool: Support GCC 8s cold subfunctions Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 02/47] objtool: Support GCC 8 switch tables Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 03/47] objtool: Detect RIP-relative switch table references Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 04/47] objtool: Detect RIP-relative switch table references, part 2 Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 05/47] objtool: Fix "noreturn" detection for recursive sibling calls Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 06/47] x86/mce/AMD: Carve out SMCA get_block_address() code Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 07/47] x86/MCE/AMD: Cache SMCA MISC block addresses Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 08/47] drm/vmwgfx: Use kasprintf Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 09/47] drm/vmwgfx: Fix host logging / guestinfo reading error paths Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 10/47] Revert "pinctrl: msm: Use dynamic GPIO numbering" Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 11/47] xfs: convert XFS_AGFL_SIZE to a helper function Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 12/47] xfs: detect agfl count corruption and reset agfl Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 13/47] Input: synaptics - Lenovo Carbon X1 Gen5 (2017) devices should use RMI Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 14/47] Input: synaptics - Lenovo Thinkpad X1 Carbon G5 (2017) with Elantech trackpoints " Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 15/47] Input: synaptics - add Intertouch support on X1 Carbon 6th and X280 Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 16/47] Input: synaptics - add Lenovo 80 series ids to SMBus Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 17/47] Input: elan_i2c_smbus - fix corrupted stack Greg Kroah-Hartman
2018-06-04  6:58 ` Greg Kroah-Hartman [this message]
2018-06-04  6:58 ` [PATCH 4.16 19/47] tracing: Make the snapshot trigger work with instances Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 20/47] nvme: fix extended data LBA supported setting Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 21/47] selinux: KASAN: slab-out-of-bounds in xattr_getsecurity Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 22/47] cfg80211: further limit wiphy names to 64 bytes Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 23/47] drm/amd/powerplay: Fix enum mismatch Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 24/47] rtlwifi: rtl8192cu: Remove variable self-assignment in rf.c Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 25/47] iio: ad7793: implement IIO_CHAN_INFO_SAMP_FREQ Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 26/47] iio: hid-sensor-trigger: Fix sometimes not powering up the sensor after resume Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 27/47] iio:buffer: make length types match kfifo types Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 28/47] iio:kfifo_buf: check for uint overflow Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 29/47] iio: adc: stm32-dfsdm: fix successive oversampling settings Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 30/47] iio: adc: stm32-dfsdm: fix sample rate for div2 spi clock Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 31/47] iio: adc: at91-sama5d2_adc: fix channel configuration for differential channels Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 32/47] iio: adc: select buffer for at91-sama5d2_adc Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 33/47] MIPS: lantiq: gphy: Drop reboot/remove reset asserts Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 34/47] MIPS: ptrace: Fix PTRACE_PEEKUSR requests for 64-bit FGRs Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 35/47] MIPS: prctl: Disallow FRE without FR with PR_SET_FP_MODE requests Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 36/47] scsi: scsi_transport_srp: Fix shost to rport translation Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 37/47] stm class: Use vmalloc for the master map Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 38/47] hwtracing: stm: fix build error on some arches Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 39/47] IB/core: Fix error code for invalid GID entry Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 40/47] mm/huge_memory.c: __split_huge_page() use atomic ClearPageDirty() Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 41/47] Revert "rt2800: use TXOP_BACKOFF for probe frames" Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 42/47] intel_th: Use correct device when freeing buffers Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 46/47] fix io_destroy()/aio_complete() race Greg Kroah-Hartman
2018-06-04  6:58 ` [PATCH 4.16 47/47] mm: fix the NULL mapping case in __isolate_lru_page() Greg Kroah-Hartman
2018-06-04 13:20 ` [PATCH 4.16 00/47] 4.16.14-stable review Guenter Roeck
2018-06-05  8:15   ` Greg Kroah-Hartman
2018-06-04 19:47 ` Shuah Khan
2018-06-05  8:15   ` Greg Kroah-Hartman
2018-06-05  6:47 ` Naresh Kamboju
2018-06-05  8:28   ` Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180604065550.251210878@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).