diff options
author | Chris Metcalf <cmetcalf@tilera.com> | 2011-02-28 21:08:32 +0300 |
---|---|---|
committer | Chris Metcalf <cmetcalf@tilera.com> | 2011-03-02 00:19:58 +0300 |
commit | 04f7a3f12e10032ee3d44df1a509dbf5b2001fce (patch) | |
tree | 2e9281f10f1dffc9fc6b470e823b02bb720ecc4c /arch/tile/kernel/process.c | |
parent | 2cb82400719e085a3c226cf7cce8950208f09a06 (diff) | |
download | linux-04f7a3f12e10032ee3d44df1a509dbf5b2001fce.tar.xz |
arch/tile: bug fix: exec'ed task thought it was still single-stepping
To handle single-step, tile mmap's a page of memory in the process
space for each thread and uses it to construct a version of the
instruction that we want to single step. If the process exec's,
though, we lose that mapping, and the kernel needs to be aware that
it will need to recreate it if the exec'ed process than tries to
single-step as well.
Also correct some int32_t to s32 for better kernel style.
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Diffstat (limited to 'arch/tile/kernel/process.c')
-rw-r--r-- | arch/tile/kernel/process.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c index e90eb53173b0..5db8b5b63cea 100644 --- a/arch/tile/kernel/process.c +++ b/arch/tile/kernel/process.c @@ -574,6 +574,8 @@ SYSCALL_DEFINE4(execve, const char __user *, path, goto out; error = do_execve(filename, argv, envp, regs); putname(filename); + if (error == 0) + single_step_execve(); out: return error; } @@ -593,6 +595,8 @@ long compat_sys_execve(const char __user *path, goto out; error = compat_do_execve(filename, argv, envp, regs); putname(filename); + if (error == 0) + single_step_execve(); out: return error; } |