[lttng-dev] [PATCH lttng-modules] Add support for i2c tracepoints

Simon Marchi simon.marchi at ericsson.com
Tue Oct 4 19:48:34 UTC 2016


On 16-10-04 01:37 PM, Mathieu Desnoyers wrote:
> Perhaps we could rename the option to "trace_sensitive_payload" ?

Of all those:

- trace_sensitive_data
- trace_sensitive_payload
- allow_sensitive_payload_extraction
- extract_sensitive_payload

I prefer "extract_sensitive_payload".  But it's your call, just tell me which
one you prefer.

> I think we should keep it at the probe level, like you do in your prototype.
> 
>>
>>
>> From 69aa1c3d73b5b0dbf031b90c6e38d4b2a0ad8699 Mon Sep 17 00:00:00 2001
>> From: Simon Marchi <simon.marchi at ericsson.com>
>> Date: Tue, 4 Oct 2016 11:38:19 -0400
>> Subject: [PATCH] Provide knob to control tracing of i2c buffer contents
>>
>> ---
>> instrumentation/events/lttng-module/i2c.h | 6 ++++--
>> probes/lttng-probe-i2c.c                  | 7 +++++++
>> 2 files changed, 11 insertions(+), 2 deletions(-)
>>
>> diff --git a/instrumentation/events/lttng-module/i2c.h
>> b/instrumentation/events/lttng-module/i2c.h
>> index 68ce80d..1ede276 100644
>> --- a/instrumentation/events/lttng-module/i2c.h
>> +++ b/instrumentation/events/lttng-module/i2c.h
>> @@ -26,7 +26,8 @@ LTTNG_TRACEPOINT_EVENT(i2c_write,
>> 		ctf_integer(__u16, addr, msg->addr)
>> 		ctf_integer(__u16, flags, msg->flags)
>> 		ctf_integer(__u16, len, msg->len)
>> -		ctf_sequence_hex(__u8, buf, msg->buf, __u16, msg->len)
>> +		ctf_sequence_hex(__u8, buf, trace_sensitive_data ? msg->buf : NULL,
>> +				 __u16, trace_sensitive_data ? msg->len : 0)
> 
> Since "trace_sensitive_data" can be changed at runtime concurrently
> with tracing, we should load it with LOAD_ONCE(), keep it in a local
> variable (TRACEPOINT_EVENT_CODE, TP_locvar and TP_code), and use that
> in as argument. Otherwise the compiler can perform two fetch of that
> variable, and its value may change in between, thus leading to a
> NULL pointer dereference (OOPS).

Ahh good catch.  I'll look up those things you mentioned, but do you
have a usage pattern in mind that we could use here?  Where would the
local variable be?  I know of gcc's statement expression, we could use
that, but do you have something else in mind?

>> 	)
>> )
>>
>> @@ -63,7 +64,8 @@ LTTNG_TRACEPOINT_EVENT(i2c_reply,
>> 		ctf_integer(__u16, addr, msg->addr)
>> 		ctf_integer(__u16, flags, msg->flags)
>> 		ctf_integer(__u16, len, msg->len)
>> -		ctf_sequence_hex(__u8, buf, msg->buf, __u16, msg->len)
>> +		ctf_sequence_hex(__u8, buf, trace_sensitive_data ? msg->buf : NULL,
>> +				 __u16, trace_sensitive_data ? msg->len : 0)
>> 	)
>> )
>>
> 
> Same here.
> 
> Can you also fold it with your i2c patch ?

I'll send a v2 of the original patch once it's clear how to do the load once thingy.

Thanks!

Simon



More information about the lttng-dev mailing list