]> err.no Git - linux-2.6/blobdiff - fs/gfs2/ops_fstype.c
[IA64] SN2: security hole in sn2_ptc_proc_write
[linux-2.6] / fs / gfs2 / ops_fstype.c
index 5b6a34517167f03c5c22df8edde19160456cd121..b2028c82e8d1ae53fc04672303ce4e14fa3d7276 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) Sistina Software, Inc.  1997-2003 All rights reserved.
- * Copyright (C) 2004-2007 Red Hat, Inc.  All rights reserved.
+ * Copyright (C) 2004-2008 Red Hat, Inc.  All rights reserved.
  *
  * This copyrighted material is made available to anyone wishing to use,
  * modify, copy, or redistribute it subject to the terms and conditions
@@ -142,8 +142,8 @@ static int init_names(struct gfs2_sbd *sdp, int silent)
        if (!table[0])
                table = sdp->sd_vfs->s_id;
 
-       snprintf(sdp->sd_proto_name, GFS2_FSNAME_LEN, "%s", proto);
-       snprintf(sdp->sd_table_name, GFS2_FSNAME_LEN, "%s", table);
+       strlcpy(sdp->sd_proto_name, proto, GFS2_FSNAME_LEN);
+       strlcpy(sdp->sd_table_name, table, GFS2_FSNAME_LEN);
 
        table = sdp->sd_table_name;
        while ((table = strchr(table, '/')))
@@ -548,7 +548,7 @@ static int init_inodes(struct gfs2_sbd *sdp, int undo)
        }
        ip = GFS2_I(sdp->sd_rindex);
        set_bit(GLF_STICKY, &ip->i_gl->gl_flags);
-       sdp->sd_rindex_vn = ip->i_gl->gl_vn - 1;
+       sdp->sd_rindex_uptodate = 0;
 
        /* Read in the quota inode */
        sdp->sd_quota_inode = gfs2_lookup_simple(sdp->sd_master_dir, "quota");
@@ -723,7 +723,7 @@ static int gfs2_lm_mount(struct gfs2_sbd *sdp, int silent)
 {
        char *proto = sdp->sd_proto_name;
        char *table = sdp->sd_table_name;
-       int flags = 0;
+       int flags = LM_MFLAG_CONV_NODROP;
        int error;
 
        if (sdp->sd_args.ar_spectator)
@@ -943,7 +943,6 @@ static struct super_block* get_gfs2_sb(const char *dev_name)
 {
        struct kstat stat;
        struct nameidata nd;
-       struct file_system_type *fstype;
        struct super_block *sb = NULL, *s;
        int error;
 
@@ -955,8 +954,7 @@ static struct super_block* get_gfs2_sb(const char *dev_name)
        }
        error = vfs_getattr(nd.path.mnt, nd.path.dentry, &stat);
 
-       fstype = get_fs_type("gfs2");
-       list_for_each_entry(s, &fstype->fs_supers, s_instances) {
+       list_for_each_entry(s, &gfs2_fs_type.fs_supers, s_instances) {
                if ((S_ISBLK(stat.mode) && s->s_dev == stat.rdev) ||
                    (S_ISDIR(stat.mode) &&
                     s == nd.path.dentry->d_inode->i_sb)) {
@@ -1000,7 +998,6 @@ static int gfs2_get_sb_meta(struct file_system_type *fs_type, int flags,
                error = PTR_ERR(new);
                goto error;
        }
-       module_put(fs_type->owner);
        new->s_flags = flags;
        strlcpy(new->s_id, sb->s_id, sizeof(new->s_id));
        sb_set_blocksize(new, sb->s_blocksize);