/* * Check for virtual address in kernel space. */ static int arch_check_va_in_kernelspace(unsigned long va, u8 hbp_len) { unsigned int len; len = get_hbp_len(hbp_len); return (va >= TASK_SIZE) && ((va + len - 1) >= TASK_SIZE); }
/* * Check for virtual address in user space. */ int arch_check_va_in_userspace(unsigned long va, u16 hbp_len) { unsigned int len; len = get_hbp_len(hbp_len); return (va <= TASK_SIZE - len); }
int arch_check_bp_in_kernelspace(struct perf_event *bp) { unsigned int len; unsigned long va; struct arch_hw_breakpoint *info = counter_arch_bp(bp); va = info->address; len = get_hbp_len(info->len); return (va >= TASK_SIZE) && ((va + len - 1) >= TASK_SIZE); }