From: David Lin Date: Sat, 19 Mar 2016 01:30:50 +0000 (-0700) Subject: greybus: greybus_trace: Fix broken greybus ftrace X-Git-Tag: v4.9-rc1~119^2~378^2~21^2~575 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=30b442b385c199b3f8e1df26fd6f0c07b61b32a2;p=karo-tx-linux.git greybus: greybus_trace: Fix broken greybus ftrace Enabling greybus ftrace event causes null pointer access due to that gb_message to SVC has no Bundle. Fix it by handling this in the trace header. Testing Done: $ echo 1 > /d/tracing/event/greybus/enable [002] ...1 54.504426: gb_message_send: greybus:1-svc op=0023 if_id=0 hd_id=0 l=0 [002] ...1 54.504461: gb_host_device_send: greybus:greybus1 if_id=0 l=8 Signed-off-by: David Lin Reviewed-by: Bryan O'Donoghue Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/greybus/greybus_trace.h b/drivers/staging/greybus/greybus_trace.h index 96c515113b98..6f3e10164e3c 100644 --- a/drivers/staging/greybus/greybus_trace.h +++ b/drivers/staging/greybus/greybus_trace.h @@ -17,6 +17,11 @@ struct gb_message; struct gb_host_device; +#define gb_bundle_name(message) \ + (message->operation->connection->bundle ? \ + dev_name(&message->operation->connection->bundle->dev) : \ + dev_name(&message->operation->connection->hd->svc->dev)) + DECLARE_EVENT_CLASS(gb_message, TP_PROTO(struct gb_message *message), @@ -24,7 +29,7 @@ DECLARE_EVENT_CLASS(gb_message, TP_ARGS(message), TP_STRUCT__entry( - __string(name, dev_name(&message->operation->connection->bundle->dev)) + __string(name, gb_bundle_name(message)) __field(u16, op_id) __field(u16, intf_cport_id) __field(u16, hd_cport_id) @@ -32,7 +37,7 @@ DECLARE_EVENT_CLASS(gb_message, ), TP_fast_assign( - __assign_str(name, dev_name(&message->operation->connection->bundle->dev)) + __assign_str(name, gb_bundle_name(message)) __entry->op_id = message->operation->id; __entry->intf_cport_id = message->operation->connection->intf_cport_id;