Messages in this thread Patch in this message | | | Subject | RE: futex question | Date | Thu, 1 Oct 2009 16:46:16 -0700 | From | "Anirban Sinha" <> |
| |
> Should we not just clear the pointer (and >> it's compat version) within do_execve()?
In our private repository, applying the following patch resolved the issues I mentioned. I no longer see messages like this:
[futex] ("ifconfig")(pid=2509) exit_robust_list:unable to fetch robust entry. uaddr=0x000000002abbc4f0
from my instrumented kernel within exit_robust_list(). My instrumentation looked something like this:
if (fetch_robust_entry(...)) { printk(...); return; }
Just tossing the patch in the community in case someone is interested ...
Signed-off-by: Anirban Sinha <asinha@zeugmasystems.com> --- fs/compat.c | 3 +++ fs/exec.c | 3 +++ 2 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/fs/compat.c b/fs/compat.c index 6d6f98f..c3d117c 100644 --- a/fs/compat.c +++ b/fs/compat.c @@ -1510,6 +1510,9 @@ int compat_do_execve(char * filename, if (retval) goto out_file;
+#ifdef CONFIG_FUTEX + current->compat_robust_list = NULL; +#endif bprm->argc = compat_count(argv, MAX_ARG_STRINGS); if ((retval = bprm->argc) < 0) goto out; diff --git a/fs/exec.c b/fs/exec.c index 172ceb6..e9334b8 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -1323,6 +1323,9 @@ int do_execve(char * filename, retval = bprm_mm_init(bprm); if (retval) goto out_file; +#ifdef CONFIG_FUTEX + current->robust_list = NULL; +#endif
bprm->argc = count(argv, MAX_ARG_STRINGS); if ((retval = bprm->argc) < 0)
| |