1
Identify buffer addresses using vma offsets instead of full user
1
Identify buffer addresses using vma offsets instead of full user
2
addresses in debug logs.
2
addresses in debug logs or drop them if they are not useful.
3
3
4
Signed-off-by: Tiffany Y. Yang <ynaffit@google.com>
4
Signed-off-by: Tiffany Y. Yang <ynaffit@google.com>
5
---
5
---
6
drivers/android/binder.c | 31 ++++++++++++++++---------------
6
7
1 file changed, 16 insertions(+), 15 deletions(-)
7
V3 -> V4: Replace alloc.buffer with alloc.vm_start
8
V2 -> V3: Drop transaction data addresses
9
V1 -> V2: Resend to mailing lists
10
11
drivers/android/binder.c | 27 +++++++++++----------------
12
1 file changed, 11 insertions(+), 16 deletions(-)
8
13
9
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
14
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
10
index XXXXXXX..XXXXXXX 100644
15
index XXXXXXX..XXXXXXX 100644
11
--- a/drivers/android/binder.c
16
--- a/drivers/android/binder.c
12
+++ b/drivers/android/binder.c
17
+++ b/drivers/android/binder.c
13
@@ -XXX,XX +XXX,XX @@ static void binder_transaction(struct binder_proc *proc,
18
@@ -XXX,XX +XXX,XX @@ static void binder_transaction(struct binder_proc *proc,
14
19
15
    if (reply)
20
    if (reply)
16
        binder_debug(BINDER_DEBUG_TRANSACTION,
21
        binder_debug(BINDER_DEBUG_TRANSACTION,
17
-             "%d:%d BC_REPLY %d -> %d:%d, data %016llx-%016llx size %lld-%lld-%lld\n",
22
-             "%d:%d BC_REPLY %d -> %d:%d, data %016llx-%016llx size %lld-%lld-%lld\n",
18
+             "%d:%d BC_REPLY %d -> %d:%d, buffer offset %lx-%lx size %lld-%lld-%lld\n",
23
+             "%d:%d BC_REPLY %d -> %d:%d, data size %lld-%lld-%lld\n",
19
             proc->pid, thread->pid, t->debug_id,
24
             proc->pid, thread->pid, t->debug_id,
20
             target_proc->pid, target_thread->pid,
25
             target_proc->pid, target_thread->pid,
21
-             (u64)tr->data.ptr.buffer,
26
-             (u64)tr->data.ptr.buffer,
22
-             (u64)tr->data.ptr.offsets,
27
-             (u64)tr->data.ptr.offsets,
23
+             (unsigned long)tr->data.ptr.buffer - proc->alloc.buffer,
24
+             (unsigned long)tr->data.ptr.offsets - proc->alloc.buffer,
25
             (u64)tr->data_size, (u64)tr->offsets_size,
28
             (u64)tr->data_size, (u64)tr->offsets_size,
26
             (u64)extra_buffers_size);
29
             (u64)extra_buffers_size);
27
    else
30
    else
28
        binder_debug(BINDER_DEBUG_TRANSACTION,
31
        binder_debug(BINDER_DEBUG_TRANSACTION,
29
-             "%d:%d BC_TRANSACTION %d -> %d - node %d, data %016llx-%016llx size %lld-%lld-%lld\n",
32
-             "%d:%d BC_TRANSACTION %d -> %d - node %d, data %016llx-%016llx size %lld-%lld-%lld\n",
30
+             "%d:%d BC_TRANSACTION %d -> %d - node %d, buffer offset %lx-%lx size %lld-%lld-%lld\n",
33
+             "%d:%d BC_TRANSACTION %d -> %d - node %d, data size %lld-%lld-%lld\n",
31
             proc->pid, thread->pid, t->debug_id,
34
             proc->pid, thread->pid, t->debug_id,
32
             target_proc->pid, target_node->debug_id,
35
             target_proc->pid, target_node->debug_id,
33
-             (u64)tr->data.ptr.buffer,
36
-             (u64)tr->data.ptr.buffer,
34
-             (u64)tr->data.ptr.offsets,
37
-             (u64)tr->data.ptr.offsets,
35
+             (unsigned long)tr->data.ptr.buffer - proc->alloc.buffer,
36
+             (unsigned long)tr->data.ptr.offsets - proc->alloc.buffer,
37
             (u64)tr->data_size, (u64)tr->offsets_size,
38
             (u64)tr->data_size, (u64)tr->offsets_size,
38
             (u64)extra_buffers_size);
39
             (u64)extra_buffers_size);
39
40
40
@@ -XXX,XX +XXX,XX @@ static int binder_thread_write(struct binder_proc *proc,
41
@@ -XXX,XX +XXX,XX @@ static int binder_thread_write(struct binder_proc *proc,
41
            if (IS_ERR_OR_NULL(buffer)) {
42
            if (IS_ERR_OR_NULL(buffer)) {
42
                if (PTR_ERR(buffer) == -EPERM) {
43
                if (PTR_ERR(buffer) == -EPERM) {
43
                    binder_user_error(
44
                    binder_user_error(
44
-                        "%d:%d BC_FREE_BUFFER u%016llx matched unreturned or currently freeing buffer\n",
45
-                        "%d:%d BC_FREE_BUFFER u%016llx matched unreturned or currently freeing buffer\n",
45
+                        "%d:%d BC_FREE_BUFFER matched unreturned or currently freeing buffer at offset %lx\n",
46
+                        "%d:%d BC_FREE_BUFFER matched unreturned or currently freeing buffer at offset %lx\n",
46
                        proc->pid, thread->pid,
47
                        proc->pid, thread->pid,
47
-                        (u64)data_ptr);
48
-                        (u64)data_ptr);
48
+                        (unsigned long)data_ptr - proc->alloc.buffer);
49
+                        (unsigned long)data_ptr - proc->alloc.vm_start);
49
                } else {
50
                } else {
50
                    binder_user_error(
51
                    binder_user_error(
51
-                        "%d:%d BC_FREE_BUFFER u%016llx no match\n",
52
-                        "%d:%d BC_FREE_BUFFER u%016llx no match\n",
52
+                        "%d:%d BC_FREE_BUFFER no match for buffer at offset %lx\n",
53
+                        "%d:%d BC_FREE_BUFFER no match for buffer at offset %lx\n",
53
                        proc->pid, thread->pid,
54
                        proc->pid, thread->pid,
54
-                        (u64)data_ptr);
55
-                        (u64)data_ptr);
55
+                        (unsigned long)data_ptr - proc->alloc.buffer);
56
+                        (unsigned long)data_ptr - proc->alloc.vm_start);
56
                }
57
                }
57
                break;
58
                break;
58
            }
59
            }
59
            binder_debug(BINDER_DEBUG_FREE_BUFFER,
60
            binder_debug(BINDER_DEBUG_FREE_BUFFER,
60
-                 "%d:%d BC_FREE_BUFFER u%016llx found buffer %d for %s transaction\n",
61
-                 "%d:%d BC_FREE_BUFFER u%016llx found buffer %d for %s transaction\n",
61
-                 proc->pid, thread->pid, (u64)data_ptr,
62
-                 proc->pid, thread->pid, (u64)data_ptr,
62
+                 "%d:%d BC_FREE_BUFFER at offset %lx found buffer %d for %s transaction\n",
63
+                 "%d:%d BC_FREE_BUFFER at offset %lx found buffer %d for %s transaction\n",
63
+                 proc->pid, thread->pid,
64
+                 proc->pid, thread->pid,
64
+                 (unsigned long)data_ptr - proc->alloc.buffer,
65
+                 (unsigned long)data_ptr - proc->alloc.vm_start,
65
                 buffer->debug_id,
66
                 buffer->debug_id,
66
                 buffer->transaction ? "active" : "finished");
67
                 buffer->transaction ? "active" : "finished");
67
            binder_free_buf(proc, thread, buffer, false);
68
            binder_free_buf(proc, thread, buffer, false);
68
@@ -XXX,XX +XXX,XX @@ static int binder_thread_read(struct binder_proc *proc,
69
@@ -XXX,XX +XXX,XX @@ static int binder_thread_read(struct binder_proc *proc,
69
        trace_binder_transaction_received(t);
70
        trace_binder_transaction_received(t);
70
        binder_stat_br(proc, thread, cmd);
71
        binder_stat_br(proc, thread, cmd);
71
        binder_debug(BINDER_DEBUG_TRANSACTION,
72
        binder_debug(BINDER_DEBUG_TRANSACTION,
72
-             "%d:%d %s %d %d:%d, cmd %u size %zd-%zd ptr %016llx-%016llx\n",
73
-             "%d:%d %s %d %d:%d, cmd %u size %zd-%zd ptr %016llx-%016llx\n",
73
+             "%d:%d %s %d %d:%d, cmd %u size %zd-%zd ptr offset %lx-%lx\n",
74
+             "%d:%d %s %d %d:%d, cmd %u size %zd-%zd\n",
74
             proc->pid, thread->pid,
75
             proc->pid, thread->pid,
75
             (cmd == BR_TRANSACTION) ? "BR_TRANSACTION" :
76
             (cmd == BR_TRANSACTION) ? "BR_TRANSACTION" :
76
                (cmd == BR_TRANSACTION_SEC_CTX) ?
77
                (cmd == BR_TRANSACTION_SEC_CTX) ?
77
@@ -XXX,XX +XXX,XX @@ static int binder_thread_read(struct binder_proc *proc,
78
                 "BR_TRANSACTION_SEC_CTX" : "BR_REPLY",
78
             t->debug_id, t_from ? t_from->proc->pid : 0,
79
             t->debug_id, t_from ? t_from->proc->pid : 0,
79
             t_from ? t_from->pid : 0, cmd,
80
             t_from ? t_from->pid : 0, cmd,
80
             t->buffer->data_size, t->buffer->offsets_size,
81
-             t->buffer->data_size, t->buffer->offsets_size,
81
-             (u64)trd->data.ptr.buffer,
82
-             (u64)trd->data.ptr.buffer,
82
-             (u64)trd->data.ptr.offsets);
83
-             (u64)trd->data.ptr.offsets);
83
+             (unsigned long)trd->data.ptr.buffer - proc->alloc.buffer,
84
+             t->buffer->data_size, t->buffer->offsets_size);
84
+             (unsigned long)trd->data.ptr.offsets - proc->alloc.buffer);
85
85
86
        if (t_from)
86
        if (t_from)
87
            binder_thread_dec_tmpref(t_from);
87
            binder_thread_dec_tmpref(t_from);
88
--
88
--
89
2.49.0.395.g12beb8f557-goog
89
2.49.0.504.g3bcea36a83-goog
diff view generated by jsdifflib