trace: add build-time check to avoid overrunning hex buffer
Remove the runtime BUG_ON and change to a compile-time check in the macro that calls the hex format routine [Noticed by Joe Perches] Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
2fbc474901
commit
ad0a3b6811
1 changed files with 3 additions and 3 deletions
|
@ -335,7 +335,8 @@ trace_seq_putmem(struct trace_seq *s, void *mem, size_t len)
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define HEX_CHARS 17
|
#define MAX_MEMHEX_BYTES 8
|
||||||
|
#define HEX_CHARS (MAX_MEMHEX_BYTES*2 + 1)
|
||||||
|
|
||||||
static int
|
static int
|
||||||
trace_seq_putmem_hex(struct trace_seq *s, void *mem, size_t len)
|
trace_seq_putmem_hex(struct trace_seq *s, void *mem, size_t len)
|
||||||
|
@ -344,8 +345,6 @@ trace_seq_putmem_hex(struct trace_seq *s, void *mem, size_t len)
|
||||||
unsigned char *data = mem;
|
unsigned char *data = mem;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
BUG_ON(len >= HEX_CHARS);
|
|
||||||
|
|
||||||
#ifdef __BIG_ENDIAN
|
#ifdef __BIG_ENDIAN
|
||||||
for (i = 0, j = 0; i < len; i++) {
|
for (i = 0, j = 0; i < len; i++) {
|
||||||
#else
|
#else
|
||||||
|
@ -1668,6 +1667,7 @@ do { \
|
||||||
|
|
||||||
#define SEQ_PUT_HEX_FIELD_RET(s, x) \
|
#define SEQ_PUT_HEX_FIELD_RET(s, x) \
|
||||||
do { \
|
do { \
|
||||||
|
BUILD_BUG_ON(sizeof(x) > MAX_MEMHEX_BYTES); \
|
||||||
if (!trace_seq_putmem_hex(s, &(x), sizeof(x))) \
|
if (!trace_seq_putmem_hex(s, &(x), sizeof(x))) \
|
||||||
return 0; \
|
return 0; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
Loading…
Reference in a new issue