[Bug tapsets/5434] Error processing (missing) nfsservctl syscall
mjw at redhat dot com <sourceware-bugzilla <at> sourceware.org>
2008-11-02 17:03:44 GMT
------- Additional Comments From mjw at redhat dot com 2008-11-02 17:03 -------
Got another report about this.
The problem comes from this part in fs/compat.c:
#if defined(CONFIG_NFSD) || defined(CONFIG_NFSD_MODULE)
[...]
asmlinkage long compat_sys_nfsservctl(int cmd,
struct compat_nfsctl_arg __user *arg,
union compat_nfsctl_res __user *res)
{
[...]
}
#else /* !NFSD */
long asmlinkage compat_sys_nfsservctl(int cmd, void *notused, void *notused2)
{
return sys_ni_syscall();
}
#endif
So compat_sys_nfsservctl() has differently named arguments depending on whether
or not NFSD is configured in. I also don't know a nice solution for this. But it
breaks simple things like:
stap -e 'probe syscall.* {printf("%s(%s)\n", probefunc(), argstr)}' -c 'echo'
semantic error: unable to find local 'arg' near pc 0xffffffff802cce2f
(alternatives: cmd notused notused2): identifier '$arg' at
/usr/local/share/systemtap/tapset/syscalls2.stp:66:56
source: argstr = sprintf("%s, %p, %p", _nfsctl_cmd_str($cmd),
$arg, $res)
(Continue reading)