diff options
| -rw-r--r-- | fs/ncpfs/inode.c | 9 | ||||
| -rw-r--r-- | include/linux/fs.h | 2 | ||||
| -rw-r--r-- | include/linux/ncp_fs.h | 6 | ||||
| -rw-r--r-- | include/linux/ncp_fs_sb.h | 2 |
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)) |
