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 |