diff options
Diffstat (limited to 'arch/x86/kernel/ptrace.c')
| -rw-r--r-- | arch/x86/kernel/ptrace.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c index 2779321046bd..017d937639fe 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c | |||
| @@ -509,14 +509,14 @@ static int genregs_get(struct task_struct *target, | |||
| 509 | { | 509 | { |
| 510 | if (kbuf) { | 510 | if (kbuf) { |
| 511 | unsigned long *k = kbuf; | 511 | unsigned long *k = kbuf; |
| 512 | while (count > 0) { | 512 | while (count >= sizeof(*k)) { |
| 513 | *k++ = getreg(target, pos); | 513 | *k++ = getreg(target, pos); |
| 514 | count -= sizeof(*k); | 514 | count -= sizeof(*k); |
| 515 | pos += sizeof(*k); | 515 | pos += sizeof(*k); |
| 516 | } | 516 | } |
| 517 | } else { | 517 | } else { |
| 518 | unsigned long __user *u = ubuf; | 518 | unsigned long __user *u = ubuf; |
| 519 | while (count > 0) { | 519 | while (count >= sizeof(*u)) { |
| 520 | if (__put_user(getreg(target, pos), u++)) | 520 | if (__put_user(getreg(target, pos), u++)) |
| 521 | return -EFAULT; | 521 | return -EFAULT; |
| 522 | count -= sizeof(*u); | 522 | count -= sizeof(*u); |
| @@ -535,14 +535,14 @@ static int genregs_set(struct task_struct *target, | |||
| 535 | int ret = 0; | 535 | int ret = 0; |
| 536 | if (kbuf) { | 536 | if (kbuf) { |
| 537 | const unsigned long *k = kbuf; | 537 | const unsigned long *k = kbuf; |
| 538 | while (count > 0 && !ret) { | 538 | while (count >= sizeof(*k) && !ret) { |
| 539 | ret = putreg(target, pos, *k++); | 539 | ret = putreg(target, pos, *k++); |
| 540 | count -= sizeof(*k); | 540 | count -= sizeof(*k); |
| 541 | pos += sizeof(*k); | 541 | pos += sizeof(*k); |
| 542 | } | 542 | } |
| 543 | } else { | 543 | } else { |
| 544 | const unsigned long __user *u = ubuf; | 544 | const unsigned long __user *u = ubuf; |
| 545 | while (count > 0 && !ret) { | 545 | while (count >= sizeof(*u) && !ret) { |
| 546 | unsigned long word; | 546 | unsigned long word; |
| 547 | ret = __get_user(word, u++); | 547 | ret = __get_user(word, u++); |
| 548 | if (ret) | 548 | if (ret) |
| @@ -1458,14 +1458,14 @@ static int genregs32_get(struct task_struct *target, | |||
| 1458 | { | 1458 | { |
| 1459 | if (kbuf) { | 1459 | if (kbuf) { |
| 1460 | compat_ulong_t *k = kbuf; | 1460 | compat_ulong_t *k = kbuf; |
| 1461 | while (count > 0) { | 1461 | while (count >= sizeof(*k)) { |
| 1462 | getreg32(target, pos, k++); | 1462 | getreg32(target, pos, k++); |
| 1463 | count -= sizeof(*k); | 1463 | count -= sizeof(*k); |
| 1464 | pos += sizeof(*k); | 1464 | pos += sizeof(*k); |
| 1465 | } | 1465 | } |
| 1466 | } else { | 1466 | } else { |
| 1467 | compat_ulong_t __user *u = ubuf; | 1467 | compat_ulong_t __user *u = ubuf; |
| 1468 | while (count > 0) { | 1468 | while (count >= sizeof(*u)) { |
| 1469 | compat_ulong_t word; | 1469 | compat_ulong_t word; |
| 1470 | getreg32(target, pos, &word); | 1470 | getreg32(target, pos, &word); |
| 1471 | if (__put_user(word, u++)) | 1471 | if (__put_user(word, u++)) |
| @@ -1486,14 +1486,14 @@ static int genregs32_set(struct task_struct *target, | |||
| 1486 | int ret = 0; | 1486 | int ret = 0; |
| 1487 | if (kbuf) { | 1487 | if (kbuf) { |
| 1488 | const compat_ulong_t *k = kbuf; | 1488 | const compat_ulong_t *k = kbuf; |
| 1489 | while (count > 0 && !ret) { | 1489 | while (count >= sizeof(*k) && !ret) { |
| 1490 | ret = putreg32(target, pos, *k++); | 1490 | ret = putreg32(target, pos, *k++); |
| 1491 | count -= sizeof(*k); | 1491 | count -= sizeof(*k); |
| 1492 | pos += sizeof(*k); | 1492 | pos += sizeof(*k); |
| 1493 | } | 1493 | } |
| 1494 | } else { | 1494 | } else { |
| 1495 | const compat_ulong_t __user *u = ubuf; | 1495 | const compat_ulong_t __user *u = ubuf; |
| 1496 | while (count > 0 && !ret) { | 1496 | while (count >= sizeof(*u) && !ret) { |
| 1497 | compat_ulong_t word; | 1497 | compat_ulong_t word; |
| 1498 | ret = __get_user(word, u++); | 1498 | ret = __get_user(word, u++); |
| 1499 | if (ret) | 1499 | if (ret) |
