summaryrefslogtreecommitdiff
path: root/fs/filesystems.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/filesystems.c')
-rw-r--r--fs/filesystems.c22
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 */