See kernel commits
49b2868 and
d4d7b2a.
This used to resolve partly before because when CONFIG_COMPAT = "y"
there would still be a compat_sys_nfsservctl. But that was slightly
bogus because without CONFIG_NFSD that would just be:
long asmlinkage compat_sys_nfsservctl(int cmd, void *notused, void *notused2)
{
return sys_ni_syscall();
}
/*
* Return the command name for nfsservctl()
+ * nfsservctl was removed in kernel 3.0/2.6.40.
*/
+%( kernel_v < "2.6.40" && CONFIG_NFSD == "[ym]" %?
function _nfsctl_cmd_str(cmd) {
if(cmd == 0) return "NFSCTL_SVC"
if(cmd == 1) return "NFSCTL_ADDCLIENT"
if(cmd == 8) return "NFSCTL_GETFS"
return sprintf("UNRECOGNIZED VALUE: %d", cmd)
}
+%)
/*
* Return the symbolic string representation
# long compat_sys_nfsservctl(int cmd, struct compat_nfsctl_arg __user *arg,
# union compat_nfsctl_res __user *res)
#
+# nfsservctl was removed in kernel 3.0/2.6.40.
+%( kernel_v < "2.6.40" && CONFIG_NFSD == "[ym]" %?
probe nd_syscall.nfsservctl = kprobe.function("sys_nfsservctl") ?,
kprobe.function("compat_sys_nfsservctl") ?
{
name = "nfsservctl"
retstr = returnstr(1)
}
+%)
# nice _______________________________________________________
# long sys_nice(int increment)
# long compat_sys_nfsservctl(int cmd, struct compat_nfsctl_arg __user *arg,
# union compat_nfsctl_res __user *res)
#
-%( CONFIG_NFSD == "[ym]" || CONFIG_COMPAT == "y" %?
+# nfsservctl was removed in kernel 3.0/2.6.40.
+%( kernel_v < "2.6.40" && CONFIG_NFSD == "[ym]" %?
probe syscall.nfsservctl = kernel.function("sys_nfsservctl").call ?,
kernel.function("compat_sys_nfsservctl").call ?
{
print (_sigprocmask_how_str(0))
print (_itimer_which_str(0))
+
+# nfsservctl was removed in kernel 3.0/2.6.40.
+%( kernel_v < "2.6.40" && CONFIG_NFSD == "[ym]" %?
print (_nfsctl_cmd_str(0))
+%)
+
print (_get_wc_str(0))
print (_flock_cmd_str(0))
printf("%s %s\n", name, retstr)
}
+# nfsservctl was removed in kernel 3.0/2.6.40.
+%( kernel_v < "2.6.40" && CONFIG_NFSD == "[ym]" %?
probe nd_syscall.nfsservctl
{
printf("%s(%s)\n", name, argstr)
{
printf("%s %s\n", name, retstr)
}
+%)
probe nd_syscall.nice ?
{
printf("%s %s\n", name, retstr)
}
+# nfsservctl was removed in kernel 3.0/2.6.40.
+%( kernel_v < "2.6.40" && CONFIG_NFSD == "[ym]" %?
probe syscall.nfsservctl ?
{
printf("%s(%s)\n", name, argstr)
{
printf("%s %s\n", name, retstr)
}
+%)
probe syscall.nice ?
{