summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/ncpfs/inode.c9
-rw-r--r--include/linux/fs.h2
-rw-r--r--include/linux/ncp_fs.h6
-rw-r--r--include/linux/ncp_fs_sb.h2
4 files changed, 13 insertions, 6 deletions
diff --git a/fs/ncpfs/inode.c b/fs/ncpfs/inode.c
index 8bdc5770fd91..fb535b54a070 100644
--- a/fs/ncpfs/inode.c
+++ b/fs/ncpfs/inode.c
@@ -315,6 +315,10 @@ static int ncp_fill_super(struct super_block *sb, void *raw_data, int silent)
#endif
struct ncp_entry_info finfo;
+ server = kmalloc(sizeof(struct ncp_server), GFP_KERNEL);
+ if (!server)
+ return -ENOMEM;
+ sb->u.generic_sbp = server;
error = -EFAULT;
if (raw_data == NULL)
goto out;
@@ -520,6 +524,8 @@ out_fput:
*/
fput(ncp_filp);
out:
+ sb->u.generic_sbp = NULL;
+ kfree(server);
return error;
}
@@ -553,7 +559,8 @@ static void ncp_put_super(struct super_block *sb)
if (server->auth.object_name)
ncp_kfree_s(server->auth.object_name, server->auth.object_name_len);
vfree(server->packet);
-
+ sb->u.generic_sbp = NULL;
+ kfree(server);
}
static int ncp_statfs(struct super_block *sb, struct statfs *buf)
diff --git a/include/linux/fs.h b/include/linux/fs.h
index b3a0db2d093e..74ac6c530de3 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -667,7 +667,6 @@ struct quota_mount_options
#include <linux/reiserfs_fs_sb.h>
#include <linux/bfs_fs_sb.h>
#include <linux/udf_fs_sb.h>
-#include <linux/ncp_fs_sb.h>
#include <linux/jffs2_fs_sb.h>
extern struct list_head super_blocks;
@@ -724,7 +723,6 @@ struct super_block {
struct reiserfs_sb_info reiserfs_sb;
struct bfs_sb_info bfs_sb;
struct udf_sb_info udf_sb;
- struct ncp_sb_info ncpfs_sb;
struct jffs2_sb_info jffs2_sb;
void *generic_sbp;
} u;
diff --git a/include/linux/ncp_fs.h b/include/linux/ncp_fs.h
index 0dd1c21dcee6..6597dd71259b 100644
--- a/include/linux/ncp_fs.h
+++ b/include/linux/ncp_fs.h
@@ -13,6 +13,7 @@
#include <linux/types.h>
#include <linux/ncp_fs_i.h>
+#include <linux/ncp_fs_sb.h>
#include <linux/ipx.h>
#include <linux/ncp_no.h>
@@ -190,7 +191,10 @@ struct ncp_entry_info {
#define NCP_SUPER_MAGIC 0x564c
-#define NCP_SBP(sb) (&((sb)->u.ncpfs_sb))
+static inline struct ncp_server *NCP_SBP(struct super_block *sb)
+{
+ return sb->u.generic_sbp;
+}
#define NCP_SERVER(inode) NCP_SBP((inode)->i_sb)
static inline struct ncp_inode_info *NCP_FINFO(struct inode *inode)
diff --git a/include/linux/ncp_fs_sb.h b/include/linux/ncp_fs_sb.h
index fe250aba1c59..7bc6b250cdd5 100644
--- a/include/linux/ncp_fs_sb.h
+++ b/include/linux/ncp_fs_sb.h
@@ -81,8 +81,6 @@ struct ncp_server {
unsigned int flags;
};
-#define ncp_sb_info ncp_server
-
#define NCP_FLAG_UTF8 1
#define NCP_CLR_FLAG(server, flag) ((server)->flags &= ~(flag))