diff options
Diffstat (limited to 'fs/filesystems.c')
| -rw-r--r-- | fs/filesystems.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/fs/filesystems.c b/fs/filesystems.c index beb785f3cc3d..a465ff2dc0bf 100644 --- a/fs/filesystems.c +++ b/fs/filesystems.c @@ -3,7 +3,7 @@ * * Copyright (C) 1991, 1992 Linus Torvalds * - * table of configured filesystems + * nfsservctl system-call when nfsd is not compiled in. */ #include <linux/config.h> @@ -14,28 +14,28 @@ #include <linux/nfsd/interface.h> #include <linux/linkage.h> -#if defined(CONFIG_NFSD_MODULE) -struct nfsd_linkage *nfsd_linkage = NULL; +#if ! defined(CONFIG_NFSD) +struct nfsd_linkage *nfsd_linkage; long asmlinkage sys_nfsservctl(int cmd, void *argp, void *resp) { int ret = -ENOSYS; +#if defined(CONFIG_MODULES) lock_kernel(); if (nfsd_linkage || - (request_module ("nfsd") == 0 && nfsd_linkage)) + (request_module ("nfsd") == 0 && nfsd_linkage)) { + __MOD_INC_USE_COUNT(nfsd_linkage->owner); + unlock_kernel(); ret = nfsd_linkage->do_nfsservctl(cmd, argp, resp); - - unlock_kernel(); + __MOD_DEC_USE_COUNT(nfsd_linkage->owner); + } else + unlock_kernel(); +#endif return ret; } EXPORT_SYMBOL(nfsd_linkage); -#elif ! defined (CONFIG_NFSD) -asmlinkage int sys_nfsservctl(int cmd, void *argp, void *resp) -{ - return -ENOSYS; -} #endif /* CONFIG_NFSD */ |
