|
@@ -277,19 +277,22 @@ static int ptrace_hbp_set_event(unsigned int note_type,
|
|
|
|
|
|
switch (note_type) {
|
|
|
case NT_ARM_HW_BREAK:
|
|
|
- if (idx < ARM_MAX_BRP) {
|
|
|
- tsk->thread.debug.hbp_break[idx] = bp;
|
|
|
- err = 0;
|
|
|
- }
|
|
|
+ if (idx >= ARM_MAX_BRP)
|
|
|
+ goto out;
|
|
|
+ idx = array_index_nospec(idx, ARM_MAX_BRP);
|
|
|
+ tsk->thread.debug.hbp_break[idx] = bp;
|
|
|
+ err = 0;
|
|
|
break;
|
|
|
case NT_ARM_HW_WATCH:
|
|
|
- if (idx < ARM_MAX_WRP) {
|
|
|
- tsk->thread.debug.hbp_watch[idx] = bp;
|
|
|
- err = 0;
|
|
|
- }
|
|
|
+ if (idx >= ARM_MAX_WRP)
|
|
|
+ goto out;
|
|
|
+ idx = array_index_nospec(idx, ARM_MAX_WRP);
|
|
|
+ tsk->thread.debug.hbp_watch[idx] = bp;
|
|
|
+ err = 0;
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
+out:
|
|
|
return err;
|
|
|
}
|
|
|
|