diff -urp linux-3.10.11-100.fc18.x86_64.ORG/include/uapi/linux/perf_event.h linux-3.10.11-100.fc18.x86_64.clean2/include/uapi/linux/perf_event.h
--- linux-3.10.11-100.fc18.x86_64.ORG/include/uapi/linux/perf_event.h	2013-07-01 00:13:29.000000000 +0200
+++ linux-3.10.11-100.fc18.x86_64.clean2/include/uapi/linux/perf_event.h	2013-09-25 23:41:31.265576897 +0200
@@ -273,7 +273,9 @@ struct perf_event_attr {
 				exclude_callchain_kernel : 1, /* exclude kernel callchains */
 				exclude_callchain_user   : 1, /* exclude user callchains */
 
-				__reserved_1   : 41;
+				sysexit_stop   : 1,
+
+				__reserved_1   : 40;
 
 	union {
 		__u32		wakeup_events;	  /* wakeup every n events */
diff -urp linux-3.10.11-100.fc18.x86_64.ORG/kernel/events/core.c linux-3.10.11-100.fc18.x86_64.clean2/kernel/events/core.c
--- linux-3.10.11-100.fc18.x86_64.ORG/kernel/events/core.c	2013-09-23 12:03:25.719253908 +0200
+++ linux-3.10.11-100.fc18.x86_64.clean2/kernel/events/core.c	2013-09-25 23:43:00.376621584 +0200
@@ -5026,6 +5026,10 @@ static int __perf_event_overflow(struct
 		irq_work_queue(&event->pending);
 	}
 
+	if (!in_interrupt() && event->attr.sysexit_stop && current->ptrace) {
+		set_tsk_thread_flag(current, TIF_SYSCALL_TRACE);
+	}
+
 	return ret;
 }
 
