diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c index e19a91db9b351d3df8c3729390afb35e807040b5..96286df1bb817fff6e314fead079d40c0cb29f6c 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c @@ -787,6 +787,8 @@ static int ptrace_bts_status(struct task_struct *child, cfg.flags |= PTRACE_BTS_O_SCHED; } + cfg.bts_size = sizeof(struct bts_struct); + if (copy_to_user(ucfg, &cfg, sizeof(cfg))) return -EFAULT; diff --git a/include/asm-x86/ptrace-abi.h b/include/asm-x86/ptrace-abi.h index 08a12b790a7799c77ffe10c2c340713f161610ce..81a8ee4c55fc50a941373d5c16de01da455bdee7 100644 --- a/include/asm-x86/ptrace-abi.h +++ b/include/asm-x86/ptrace-abi.h @@ -81,16 +81,21 @@ #define PTRACE_SINGLEBLOCK 33 /* resume execution until next branch */ #ifndef __ASSEMBLY__ + +#include + /* configuration/status structure used in PTRACE_BTS_CONFIG and PTRACE_BTS_STATUS commands. */ struct ptrace_bts_config { /* requested or actual size of BTS buffer in bytes */ - unsigned int size; + u32 size; /* bitmask of below flags */ - unsigned int flags; + u32 flags; /* buffer overflow signal */ - unsigned int signal; + u32 signal; + /* actual size of bts_struct in bytes */ + u32 bts_size; }; #endif