temporary workaround for derefs on arm32
[platform/upstream/bcc.git] / tools / dbus-message-type.c
index 7b1345e..bf79e7c 100644 (file)
@@ -136,8 +136,8 @@ struct data_t {
        char comm[TASK_COMM_LEN];
 };
 
-BPF_HASH(message, struct data_t, int)
-BPF_HISTOGRAM(msg_type, int)
+BPF_HASH(message, struct data_t, int);
+BPF_HISTOGRAM(msg_type, int);
 
 int g_get_message_type(struct pt_regs *ctx, void *conn, struct GDBusMessage *message) {
        msg_type.increment(message->type);
@@ -150,8 +150,10 @@ int dbus_get_message_type(struct pt_regs *ctx, void *conn, struct DBusMessage *m
 }
 
 int message_type(struct pt_regs *ctx, void *conn, struct DBusMessage *message) {
-       const char *c = message->header.data.str;
-       c++;
-       msg_type.increment(*c);
+       char *addr = 0;
+       bpf_probe_read(&addr, sizeof(addr), (char*)message + offsetof(struct DBusMessage, header.data.str));
+       char type;
+       bpf_probe_read(&type, sizeof(type), addr + 1);
+       msg_type.increment(type);
        return 0;
 }