diff options
author | Markus Metzger <markus.t.metzger@intel.com> | 2008-01-30 07:32:03 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 07:32:03 -0500 |
commit | cba4b65d359268c40679ca75ac92c0b93cecf6de (patch) | |
tree | 95352d42a1a51338b08b88603cd4678297d56917 /include/asm-x86 | |
parent | e6ae5d9540727b0e2e5e2fbeb683c84671ed0a31 (diff) |
x86, ptrace: add buffer size checks
Pass the buffer size for (most) ptrace commands that pass user-allocated buffers and check that size before accessing the buffer. Unfortunately, PTRACE_BTS_GET already uses all 4 parameters.
Commands that access user buffers return the number of bytes or records read or written.
Signed-off-by: Markus Metzger <markus.t.metzger@intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/asm-x86')
-rw-r--r-- | include/asm-x86/ptrace-abi.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/include/asm-x86/ptrace-abi.h b/include/asm-x86/ptrace-abi.h index 32fe137822bf..bcf67044754c 100644 --- a/include/asm-x86/ptrace-abi.h +++ b/include/asm-x86/ptrace-abi.h | |||
@@ -99,13 +99,15 @@ struct ptrace_bts_config { | |||
99 | 99 | ||
100 | #define PTRACE_BTS_CONFIG 40 | 100 | #define PTRACE_BTS_CONFIG 40 |
101 | /* Configure branch trace recording. | 101 | /* Configure branch trace recording. |
102 | DATA is ignored, ADDR points to a struct ptrace_bts_config. | 102 | ADDR points to a struct ptrace_bts_config. |
103 | DATA gives the size of that buffer. | ||
103 | A new buffer is allocated, iff the size changes. | 104 | A new buffer is allocated, iff the size changes. |
105 | Returns the number of bytes read. | ||
104 | */ | 106 | */ |
105 | #define PTRACE_BTS_STATUS 41 | 107 | #define PTRACE_BTS_STATUS 41 |
106 | /* Return the current configuration. | 108 | /* Return the current configuration in a struct ptrace_bts_config |
107 | DATA is ignored, ADDR points to a struct ptrace_bts_config | 109 | pointed to by ADDR; DATA gives the size of that buffer. |
108 | that will contain the result. | 110 | Returns the number of bytes written. |
109 | */ | 111 | */ |
110 | #define PTRACE_BTS_SIZE 42 | 112 | #define PTRACE_BTS_SIZE 42 |
111 | /* Return the number of available BTS records. | 113 | /* Return the number of available BTS records. |
@@ -123,8 +125,8 @@ struct ptrace_bts_config { | |||
123 | */ | 125 | */ |
124 | #define PTRACE_BTS_DRAIN 45 | 126 | #define PTRACE_BTS_DRAIN 45 |
125 | /* Read all available BTS records and clear the buffer. | 127 | /* Read all available BTS records and clear the buffer. |
126 | DATA is ignored. ADDR points to an array of struct bts_struct of | 128 | ADDR points to an array of struct bts_struct. |
127 | suitable size. | 129 | DATA gives the size of that buffer. |
128 | BTS records are read from oldest to newest. | 130 | BTS records are read from oldest to newest. |
129 | Returns number of BTS records drained. | 131 | Returns number of BTS records drained. |
130 | */ | 132 | */ |