Hi Julien,
On Wed, Sep 25, 2024 at 03:13:56PM +0200, Julien Meunier wrote:
The previous implementation limited the tracing capabilities when perf was run in the init PID namespace, making it impossible to trace applications in non-init PID namespaces.
This update improves the tracing process by verifying the event owner. This allows us to determine whether the user has the necessary permissions to trace the application.
The original commit aab473867fed is not for constraint permission. It is about PID namespace mismatching issue.
E.g. Perf runs in non-root namespace, thus it records process info in the non-root PID namespace. On the other hand, Arm CoreSight traces PID for root namespace, as a result, it will lead mess when decoding.
With this change, I am not convinced that Arm CoreSight can trace PID for non-root PID namespace. Seems to me, the concerned issue is still existed - it might cause PID mismatching issue between hardware trace data and Perf's process info.
I think we need to check using the software context switch event. With more clear idea, I will get back at here.
Thanks, Leo
Cc: stable@vger.kernel.org Fixes: aab473867fed ("coresight: etm4x: Don't trace PID for non-root PID namespace") Signed-off-by: Julien Meunier julien.meunier@nokia.com
drivers/hwtracing/coresight/coresight-etm4x-core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c index bf01f01964cf..8365307b1aec 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x-core.c +++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c @@ -695,7 +695,7 @@ static int etm4_parse_event_config(struct coresight_device *csdev, /* Only trace contextID when runs in root PID namespace */ if ((attr->config & BIT(ETM_OPT_CTXTID)) &&
task_is_in_init_pid_ns(current))
/* bit[6], Context ID tracing bit */ config->cfg |= TRCCONFIGR_CID;task_is_in_init_pid_ns(event->owner))
@@ -710,7 +710,7 @@ static int etm4_parse_event_config(struct coresight_device *csdev, goto out; } /* Only trace virtual contextID when runs in root PID namespace */
if (task_is_in_init_pid_ns(current))
}if (task_is_in_init_pid_ns(event->owner)) config->cfg |= TRCCONFIGR_VMID | TRCCONFIGR_VMIDOPT;
2.34.1