[PATCH 19/19] utrace: consult PT_SINGLE_STEP/PT_SINGLE_BLOCK before user_disable_single_step()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



- do not do user_enable_block_step() if PT_SINGLE_STEP is set, in this
  case ptrace has already called user_enable_single_step()

- do not do user_disable_single_step() if PT_*_STEP is set, ptrace needs
  the stepping

Unless the tracee is killed this can't race with ptrace, this is called
by the tracee itself.

Signed-off-by: Oleg Nesterov <oleg@xxxxxxxxxx>
---
 kernel/utrace.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/kernel/utrace.c b/kernel/utrace.c
index 508c13c..d6607cb 100644
--- a/kernel/utrace.c
+++ b/kernel/utrace.c
@@ -1828,7 +1828,8 @@ static void finish_resume_report(struct task_struct *task,
 
 	case UTRACE_BLOCKSTEP:
 		if (likely(arch_has_block_step())) {
-			user_enable_block_step(task);
+			if (!(current->ptrace & PT_SINGLE_STEP))
+				user_enable_block_step(task);
 			break;
 		}
 
@@ -1856,7 +1857,8 @@ static void finish_resume_report(struct task_struct *task,
 	case UTRACE_REPORT:
 	case UTRACE_RESUME:
 	default:
-		user_disable_single_step(task);
+		if (!(current->ptrace & (PT_SINGLE_STEP | PT_SINGLE_BLOCK)))
+			user_disable_single_step(task);
 		break;
 	}
 }
-- 
1.5.5.1


_______________________________________________
kernel mailing list
kernel@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/kernel


[Index of Archives]     [Fedora General Discussion]     [Older Fedora Users Archive]     [Fedora Advisory Board]     [Fedora Security]     [Fedora Devel Java]     [Fedora Legacy]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Mentors]     [Fedora Package Announce]     [Fedora Package Review]     [Fedora Music]     [Fedora Packaging]     [Centos]     [Fedora SELinux]     [Coolkey]     [Yum Users]     [Tux]     [Yosemite News]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [USB]     [Asterisk PBX]

  Powered by Linux