From: rabin@rab.in (Rabin Vincent)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V7 02/24] coresight: associating path with session rather than tracer
Date: Sun, 20 Dec 2015 16:29:39 +0100 [thread overview]
Message-ID: <20151220152939.GA11552@debian> (raw)
In-Reply-To: <1450472361-426-3-git-send-email-mathieu.poirier@linaro.org>
On Fri, Dec 18, 2015 at 01:58:58PM -0700, Mathieu Poirier wrote:
> When using the Coresight framework from the sysFS interface a
> tracer is always handling a single session and as such, a path
> can be associated with a tracer. But when supporting multiple
> session per tracer there is no guarantee that sessions will always
> have the same path from source to sink.
>
> This patch is removing the automatic association between path and
> tracers. The building of a path and enablement of the components
> in the path are decoupled, allowing for the association of a path
> with a session rather than a tracer.
This patch introduces a use-after-free/double kfree() if the sink is
disabled after the source.
With this command sequence:
# echo 1 > /sys/bus/coresight/devices/54162000.etb/enable_sink
# echo 1 > /sys/bus/coresight/devices/5414c000.ptm/enable_source
...
# echo 0 > /sys/bus/coresight/devices/54162000.etb/enable_sink
# echo 0 > /sys/bus/coresight/devices/5414c000.ptm/enable_source
Before these patches, we get these messages while disabling:
[ 165.822326] coresight-etm3x 5414c000.ptm: ETM tracing disabled
[ 165.828491] coresight 5414c000.ptm: releasing path(s) failed
After these patches, we get this (with SLUB debugging enabled):
=============================================================================
BUG kmalloc-512 (Not tainted): Invalid object pointer 0xed60e164
-----------------------------------------------------------------------------
Disabling lock debugging due to kernel taint
INFO: Slab 0xeebac180 objects=23 used=23 fp=0x (null) flags=0x4081
CPU: 0 PID: 856 Comm: sh Tainted: G B 4.4.0-rc5-00224-ge461459-dirty #168
Hardware name: Generic OMAP4 (Flattened Device Tree)
Backtrace:
[<c00154d4>] (dump_backtrace) from [<c00156d0>] (show_stack+0x18/0x1c)
r7:00000001 r6:eebac180 r5:c07ae71c r4:00000000
[<c00156b8>] (show_stack) from [<c027e69c>] (dump_stack+0x98/0xc0)
[<c027e604>] (dump_stack) from [<c014f018>] (slab_err+0x78/0x80)
r5:ee0013c0 r4:eebac180
[<c014efa4>] (slab_err) from [<c0153880>] (free_debug_processing+0x234/0x34c)
r3:ed60e164 r2:c068d484
r5:ee0013c0 r4:ed60e164
[<c015364c>] (free_debug_processing) from [<c0153c34>] (__slab_free+0x29c/0x428)
r10:ee0013c0 r9:00000000 r8:20000013 r7:c041a5f4 r6:ed60e164 r5:00010d00
r4:eebac180
[<c0153998>] (__slab_free) from [<c0154770>] (kfree+0x2dc/0x2f4)
r10:eda29f80 r9:00000000 r8:20000013 r7:c041a5f4 r6:ed60e164 r5:eebac180
r4:ee0013c0
[<c0154494>] (kfree) from [<c041a5f4>] (etm_disable+0xf8/0x148)
r10:eda29f80 r9:00000000 r8:ed7ba500 r7:00000000 r6:ed60e120 r5:00000001
r4:ed60e110
[<c041a4fc>] (etm_disable) from [<c0415e64>] (coresight_disable+0xbc/0x100)
r7:00000000 r6:c0771150 r5:c076c900 r4:ed662600
[<c0415da8>] (coresight_disable) from [<c0415ef0>] (enable_source_store+0x48/0x68)
r9:ed67ec8c r8:ed7d7900 r7:00000000 r6:ed7d7900 r5:00000002 r4:ed662620
[<c0415ea8>] (enable_source_store) from [<c030b37c>] (dev_attr_store+0x20/0x2c)
r5:ed67ec80 r4:c0415ea8
[<c030b35c>] (dev_attr_store) from [<c01d55d8>] (sysfs_kf_write+0x50/0x54)
r5:ed67ec80 r4:c030b35c
[<c01d5588>] (sysfs_kf_write) from [<c01d4b98>] (kernfs_fop_write+0xc4/0x1c0)
r7:00000000 r6:00000000 r5:00000002 r4:ed67ec80
[<c01d4ad4>] (kernfs_fop_write) from [<c015b60c>] (__vfs_write+0x34/0xe4)
r10:00000000 r9:eda28000 r8:c0010964 r7:eda29f80 r6:00000002 r5:c01d4ad4
r4:ed811180
[<c015b5d8>] (__vfs_write) from [<c015bf38>] (vfs_write+0x98/0x174)
r9:eda28000 r8:c0010964 r7:eda29f80 r6:000a9e40 r5:00000002 r4:ed811180
[<c015bea0>] (vfs_write) from [<c015c7a8>] (SyS_write+0x4c/0xa8)
r8:c0010964 r7:00000002 r6:000a9e40 r5:ed811180 r4:ed811180
[<c015c75c>] (SyS_write) from [<c00107c0>] (ret_fast_syscall+0x0/0x1c)
r7:00000004 r6:00000001 r5:000a9e40 r4:00000002
FIX kmalloc-512: Object at 0xed60e164 not freed
WARNING: multiple messages have this Message-ID (diff)
From: Rabin Vincent <rabin@rab.in>
To: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: gregkh@linuxfoundation.org, alexander.shishkin@linux.intel.com,
al.grant@arm.com, linux-doc@vger.kernel.org,
fainelli@broadcom.com, linux-kernel@vger.kernel.org, tor@ti.com,
mike.leach@arm.com, zhang.chunyan@linaro.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH V7 02/24] coresight: associating path with session rather than tracer
Date: Sun, 20 Dec 2015 16:29:39 +0100 [thread overview]
Message-ID: <20151220152939.GA11552@debian> (raw)
In-Reply-To: <1450472361-426-3-git-send-email-mathieu.poirier@linaro.org>
On Fri, Dec 18, 2015 at 01:58:58PM -0700, Mathieu Poirier wrote:
> When using the Coresight framework from the sysFS interface a
> tracer is always handling a single session and as such, a path
> can be associated with a tracer. But when supporting multiple
> session per tracer there is no guarantee that sessions will always
> have the same path from source to sink.
>
> This patch is removing the automatic association between path and
> tracers. The building of a path and enablement of the components
> in the path are decoupled, allowing for the association of a path
> with a session rather than a tracer.
This patch introduces a use-after-free/double kfree() if the sink is
disabled after the source.
With this command sequence:
# echo 1 > /sys/bus/coresight/devices/54162000.etb/enable_sink
# echo 1 > /sys/bus/coresight/devices/5414c000.ptm/enable_source
...
# echo 0 > /sys/bus/coresight/devices/54162000.etb/enable_sink
# echo 0 > /sys/bus/coresight/devices/5414c000.ptm/enable_source
Before these patches, we get these messages while disabling:
[ 165.822326] coresight-etm3x 5414c000.ptm: ETM tracing disabled
[ 165.828491] coresight 5414c000.ptm: releasing path(s) failed
After these patches, we get this (with SLUB debugging enabled):
=============================================================================
BUG kmalloc-512 (Not tainted): Invalid object pointer 0xed60e164
-----------------------------------------------------------------------------
Disabling lock debugging due to kernel taint
INFO: Slab 0xeebac180 objects=23 used=23 fp=0x (null) flags=0x4081
CPU: 0 PID: 856 Comm: sh Tainted: G B 4.4.0-rc5-00224-ge461459-dirty #168
Hardware name: Generic OMAP4 (Flattened Device Tree)
Backtrace:
[<c00154d4>] (dump_backtrace) from [<c00156d0>] (show_stack+0x18/0x1c)
r7:00000001 r6:eebac180 r5:c07ae71c r4:00000000
[<c00156b8>] (show_stack) from [<c027e69c>] (dump_stack+0x98/0xc0)
[<c027e604>] (dump_stack) from [<c014f018>] (slab_err+0x78/0x80)
r5:ee0013c0 r4:eebac180
[<c014efa4>] (slab_err) from [<c0153880>] (free_debug_processing+0x234/0x34c)
r3:ed60e164 r2:c068d484
r5:ee0013c0 r4:ed60e164
[<c015364c>] (free_debug_processing) from [<c0153c34>] (__slab_free+0x29c/0x428)
r10:ee0013c0 r9:00000000 r8:20000013 r7:c041a5f4 r6:ed60e164 r5:00010d00
r4:eebac180
[<c0153998>] (__slab_free) from [<c0154770>] (kfree+0x2dc/0x2f4)
r10:eda29f80 r9:00000000 r8:20000013 r7:c041a5f4 r6:ed60e164 r5:eebac180
r4:ee0013c0
[<c0154494>] (kfree) from [<c041a5f4>] (etm_disable+0xf8/0x148)
r10:eda29f80 r9:00000000 r8:ed7ba500 r7:00000000 r6:ed60e120 r5:00000001
r4:ed60e110
[<c041a4fc>] (etm_disable) from [<c0415e64>] (coresight_disable+0xbc/0x100)
r7:00000000 r6:c0771150 r5:c076c900 r4:ed662600
[<c0415da8>] (coresight_disable) from [<c0415ef0>] (enable_source_store+0x48/0x68)
r9:ed67ec8c r8:ed7d7900 r7:00000000 r6:ed7d7900 r5:00000002 r4:ed662620
[<c0415ea8>] (enable_source_store) from [<c030b37c>] (dev_attr_store+0x20/0x2c)
r5:ed67ec80 r4:c0415ea8
[<c030b35c>] (dev_attr_store) from [<c01d55d8>] (sysfs_kf_write+0x50/0x54)
r5:ed67ec80 r4:c030b35c
[<c01d5588>] (sysfs_kf_write) from [<c01d4b98>] (kernfs_fop_write+0xc4/0x1c0)
r7:00000000 r6:00000000 r5:00000002 r4:ed67ec80
[<c01d4ad4>] (kernfs_fop_write) from [<c015b60c>] (__vfs_write+0x34/0xe4)
r10:00000000 r9:eda28000 r8:c0010964 r7:eda29f80 r6:00000002 r5:c01d4ad4
r4:ed811180
[<c015b5d8>] (__vfs_write) from [<c015bf38>] (vfs_write+0x98/0x174)
r9:eda28000 r8:c0010964 r7:eda29f80 r6:000a9e40 r5:00000002 r4:ed811180
[<c015bea0>] (vfs_write) from [<c015c7a8>] (SyS_write+0x4c/0xa8)
r8:c0010964 r7:00000002 r6:000a9e40 r5:ed811180 r4:ed811180
[<c015c75c>] (SyS_write) from [<c00107c0>] (ret_fast_syscall+0x0/0x1c)
r7:00000004 r6:00000001 r5:000a9e40 r4:00000002
FIX kmalloc-512: Object at 0xed60e164 not freed
next prev parent reply other threads:[~2015-12-20 15:29 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-18 20:58 [PATCH V7 00/24] Coresight integration with perf Mathieu Poirier
2015-12-18 20:58 ` Mathieu Poirier
2015-12-18 20:58 ` [PATCH V7 01/24] coresight: implementing 'cpu_id()' API Mathieu Poirier
2015-12-18 20:58 ` Mathieu Poirier
2015-12-18 20:58 ` [PATCH V7 02/24] coresight: associating path with session rather than tracer Mathieu Poirier
2015-12-18 20:58 ` Mathieu Poirier
2015-12-20 15:29 ` Rabin Vincent [this message]
2015-12-20 15:29 ` Rabin Vincent
2015-12-23 16:23 ` Mathieu Poirier
2015-12-23 16:23 ` Mathieu Poirier
2016-01-04 18:24 ` Mathieu Poirier
2016-01-04 18:24 ` Mathieu Poirier
2016-01-05 13:15 ` Rabin Vincent
2016-01-05 13:15 ` Rabin Vincent
[not found] ` <CANLsYkwN=SOnfDfd8oF-2Z5Ef8oTPao6H_auQhoMpVAnokYkrg@mail.gmail.com>
2016-01-10 15:43 ` Rabin Vincent
2016-01-10 15:43 ` Rabin Vincent
2016-01-13 21:47 ` Mathieu Poirier
2016-01-13 21:47 ` Mathieu Poirier
2016-01-16 13:54 ` Rabin Vincent
2016-01-16 13:54 ` Rabin Vincent
2016-01-19 23:54 ` Mathieu Poirier
2016-01-19 23:54 ` Mathieu Poirier
2015-12-18 20:58 ` [PATCH V7 03/24] coresight: add API to get sink from path Mathieu Poirier
2015-12-18 20:58 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 04/24] coresight: moving PM runtime operations to core framework Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-19 17:13 ` Rabin Vincent
2015-12-19 17:13 ` Rabin Vincent
2015-12-23 16:27 ` Mathieu Poirier
2015-12-23 16:27 ` Mathieu Poirier
2015-12-24 19:20 ` Rabin Vincent
2015-12-24 19:20 ` Rabin Vincent
2015-12-18 20:59 ` [PATCH V7 05/24] coresight: etm3x: moving etm_readl/writel to header file Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 06/24] coresight: etm3x: moving sysFS entries to dedicated file Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 07/24] coresight: etm3x: unlocking tracers in default arch init Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 08/24] coresight: etm3x: splitting struct etm_drvdata Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 09/24] coresight: etm3x: adding operation mode for etm_enable() Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 10/24] coresight: etm3x: set progbit to stop trace collection Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 11/24] coresight: etm3x: changing default trace configuration Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 12/24] coresight: etm3x: consolidating initial config Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 13/24] coresight: etm3x: implementing user/kernel mode tracing Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 14/24] coresight: etm3x: implementing perf_enable/disable() API Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 15/24] coresight: etb10: moving to local atomic operations Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 16/24] coresight: etb10: adding operation mode for sink->enable() Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 17/24] coresight: etb10: implementing AUX space API Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-19 17:23 ` Rabin Vincent
2015-12-19 17:23 ` Rabin Vincent
2015-12-23 16:33 ` Mathieu Poirier
2015-12-23 16:33 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 18/24] coresight: updating documentation to reflect integration with perf Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 19/24] coresight: etm-perf: new PMU driver for ETM tracers Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 20/24] coresight: introducing a global trace ID function Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 21/24] perf tools: making function set_max_cpu_num() non static Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 22/24] perf tools: adding perf_evlist to *info_priv_size() Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 23/24] perf tools: making coresight PMU listable Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 24/24] perf tools: adding coresight etm PMU record capabilities Mathieu Poirier
2015-12-18 20:59 ` Mathieu Poirier
2015-12-19 17:27 ` Rabin Vincent
2015-12-19 17:27 ` Rabin Vincent
2015-12-23 16:46 ` Mathieu Poirier
2015-12-23 16:46 ` Mathieu Poirier
2015-12-19 17:42 ` [PATCH V7 00/24] Coresight integration with perf Rabin Vincent
2015-12-19 17:42 ` Rabin Vincent
2015-12-23 16:29 ` Mathieu Poirier
2015-12-23 16:29 ` Mathieu Poirier
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=20151220152939.GA11552@debian \
--to=rabin@rab.in \
--cc=linux-arm-kernel@lists.infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.