|
@@ -551,6 +551,8 @@ static int hw_break_set(struct task_struct *target,
|
|
|
/* (address, ctrl) registers */
|
|
|
limit = regset->n * regset->size;
|
|
|
while (count && offset < limit) {
|
|
|
+ if (count < PTRACE_HBP_ADDR_SZ)
|
|
|
+ return -EINVAL;
|
|
|
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &addr,
|
|
|
offset, offset + PTRACE_HBP_ADDR_SZ);
|
|
|
if (ret)
|
|
@@ -560,6 +562,8 @@ static int hw_break_set(struct task_struct *target,
|
|
|
return ret;
|
|
|
offset += PTRACE_HBP_ADDR_SZ;
|
|
|
|
|
|
+ if (!count)
|
|
|
+ break;
|
|
|
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &ctrl,
|
|
|
offset, offset + PTRACE_HBP_CTRL_SZ);
|
|
|
if (ret)
|