Re: 2.6.21-rc5-mm4: ia64: scheduling while atomic - utrace?

From: Roland McGrath
Date: Thu Apr 05 2007 - 15:40:43 EST


Thanks for the report. I introduced this bug recently when I changed
around some of the locking but forgot about the writeback issue. I don't
think this is directly related to any other crash you might have seen.

I've moved the call out of the lock-holding region, where it didn't need to
be. I'm updating my patch series now; I've appended the incremental patch.


Thanks,
Roland

---
kernel/ptrace.c | 20 ++++++++++----------
1 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/kernel/ptrace.c b/kernel/ptrace.c
index fb6c3fb..c31d744 100644
--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -1473,16 +1473,6 @@ ptrace_report(struct utrace_attached_eng
*/
utrace_set_flags(tsk, engine, engine->flags | UTRACE_ACTION_QUIESCE);

- /*
- * If regset 0 has a writeback call, do it now. On register window
- * machines, this makes sure the user memory backing the register
- * data is up to date by the time wait_task_inactive returns to
- * ptrace_start in our tracer doing a PTRACE_PEEKDATA or the like.
- */
- regset = utrace_regset(tsk, engine, utrace_native_view(tsk), 0);
- if (regset->writeback)
- (*regset->writeback)(tsk, regset, 0);
-
BUG_ON(code == 0);
tsk->exit_code = code;
do_notify(tsk, state->parent, CLD_TRAPPED);
@@ -1494,6 +1484,16 @@ ptrace_report(struct utrace_attached_eng

NO_LOCKS;

+ /*
+ * If regset 0 has a writeback call, do it now. On register window
+ * machines, this makes sure the user memory backing the register
+ * data is up to date by the time wait_task_inactive returns to
+ * ptrace_start in our tracer doing a PTRACE_PEEKDATA or the like.
+ */
+ regset = utrace_regset(tsk, engine, utrace_native_view(tsk), 0);
+ if (regset->writeback)
+ (*regset->writeback)(tsk, regset, 0);
+
return UTRACE_ACTION_RESUME;
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/