return code;
}
-
+#ifndef LINUX_KEYRING_SUPPORT
/* Intercept the standard system call. */
extern asmlinkage long (*sys_setgroupsp) (int gidsetsize, gid_t * grouplist);
asmlinkage long
return (-code);
}
-#if defined(AFS_PPC64_LINUX20_ENV)
+# if defined(AFS_PPC64_LINUX20_ENV)
/* Intercept the uid16 system call as used by 32bit programs. */
extern asmlinkage long (*sys32_setgroupsp)(int gidsetsize, gid_t *grouplist);
asmlinkage long afs32_xsetgroups(int gidsetsize, gid_t *grouplist)
/* Linux syscall ABI returns errno as negative */
return (-code);
}
-#endif
+# endif
-#if defined(AFS_SPARC64_LINUX20_ENV) || defined(AFS_AMD64_LINUX20_ENV)
+# if defined(AFS_SPARC64_LINUX20_ENV) || defined(AFS_AMD64_LINUX20_ENV)
/* Intercept the uid16 system call as used by 32bit programs. */
-#ifdef AFS_AMD64_LINUX20_ENV
+# ifdef AFS_AMD64_LINUX20_ENV
extern asmlinkage long (*sys32_setgroupsp) (int gidsetsize, u16 * grouplist);
-#endif /* AFS_AMD64_LINUX20_ENV */
-#ifdef AFS_SPARC64_LINUX26_ENV
+# endif /* AFS_AMD64_LINUX20_ENV */
+# ifdef AFS_SPARC64_LINUX26_ENV
extern asmlinkage int (*sys32_setgroupsp) (int gidsetsize,
__kernel_gid32_t * grouplist);
-#endif /* AFS_SPARC64_LINUX26_ENV */
+# endif /* AFS_SPARC64_LINUX26_ENV */
asmlinkage long
afs32_xsetgroups(int gidsetsize, u16 * grouplist)
{
}
/* Intercept the uid32 system call as used by 32bit programs. */
-#ifdef AFS_AMD64_LINUX20_ENV
+# ifdef AFS_AMD64_LINUX20_ENV
extern asmlinkage long (*sys32_setgroups32p) (int gidsetsize, gid_t * grouplist);
-#endif /* AFS_AMD64_LINUX20_ENV */
-#ifdef AFS_SPARC64_LINUX26_ENV
+# endif /* AFS_AMD64_LINUX20_ENV */
+# ifdef AFS_SPARC64_LINUX26_ENV
extern asmlinkage int (*sys32_setgroups32p) (int gidsetsize,
__kernel_gid32_t * grouplist);
-#endif /* AFS_SPARC64_LINUX26_ENV */
+# endif /* AFS_SPARC64_LINUX26_ENV */
asmlinkage long
afs32_xsetgroups32(int gidsetsize, gid_t * grouplist)
{
/* Linux syscall ABI returns errno as negative */
return (-code);
}
-#endif
-
+# endif
+#endif /* !LINUX_KEYRING_SUPPORT */
#ifdef LINUX_KEYRING_SUPPORT
static void afs_pag_describe(const struct key *key, struct seq_file *m)
osi_linux_nfssrv_init();
#endif
-#ifndef LINUX_KEYRING_SUPPORT
err = osi_syscall_init();
if (err)
return err;
-#endif
err = afs_init_inodecache();
if (err) {
-#ifndef LINUX_KEYRING_SUPPORT
osi_syscall_clean();
-#endif
return err;
}
err = register_filesystem(&afs_fs_type);
if (err) {
afs_destroy_inodecache();
-#ifndef LINUX_KEYRING_SUPPORT
osi_syscall_clean();
-#endif
return err;
}
osi_keyring_shutdown();
#endif
osi_sysctl_clean();
-#ifndef LINUX_KEYRING_SUPPORT
osi_syscall_clean();
-#endif
unregister_filesystem(&afs_fs_type);
afs_destroy_inodecache();
#include <afsconfig.h>
#include "afs/param.h"
+#ifdef LINUX_KEYRING_SUPPORT
+/* The syscall probing stuff is unnecessary (and is never called) if we have
+ * keyrings support; we rely on keyrings instead of group ids to track PAGs.
+ * So if we have keyrings, just stub out the syscall functions to do nothing. */
+int
+osi_syscall_init(void)
+{
+ return 0;
+}
+void
+osi_syscall_clean(void)
+{
+ return;
+}
+
+#else /* LINUX_KEYRING_SUPPORT */
#include <linux/module.h> /* early to avoid printf->printk mapping */
#include "afs/sysincludes.h"
}
#endif
}
+
+#endif /* !LINUX_KEYRING_SUPPORT */