Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
[linux-2.6-block.git] / fs / udf / super.c
index a522c15a0bfd7e5e9e0d758bfbc59185a8cb2609..fa92fe839fda2f989e3d52c368cc7520b80679e5 100644 (file)
@@ -887,18 +887,14 @@ static int udf_find_fileset(struct super_block *sb,
 static int udf_load_pvoldesc(struct super_block *sb, sector_t block)
 {
        struct primaryVolDesc *pvoldesc;
-       struct ustr *instr, *outstr;
+       uint8_t *outstr;
        struct buffer_head *bh;
        uint16_t ident;
        int ret = -ENOMEM;
 
-       instr = kmalloc(sizeof(struct ustr), GFP_NOFS);
-       if (!instr)
-               return -ENOMEM;
-
-       outstr = kmalloc(sizeof(struct ustr), GFP_NOFS);
+       outstr = kmalloc(128, GFP_NOFS);
        if (!outstr)
-               goto out1;
+               return -ENOMEM;
 
        bh = udf_read_tagged(sb, block, block, &ident);
        if (!bh) {
@@ -923,31 +919,25 @@ static int udf_load_pvoldesc(struct super_block *sb, sector_t block)
 #endif
        }
 
-       if (!udf_build_ustr(instr, pvoldesc->volIdent, 32)) {
-               ret = udf_CS0toUTF8(outstr, instr);
-               if (ret < 0)
-                       goto out_bh;
+       ret = udf_CS0toUTF8(outstr, 31, pvoldesc->volIdent, 32);
+       if (ret < 0)
+               goto out_bh;
 
-               strncpy(UDF_SB(sb)->s_volume_ident, outstr->u_name,
-                       outstr->u_len > 31 ? 31 : outstr->u_len);
-               udf_debug("volIdent[] = '%s'\n", UDF_SB(sb)->s_volume_ident);
-       }
+       strncpy(UDF_SB(sb)->s_volume_ident, outstr, ret);
+       udf_debug("volIdent[] = '%s'\n", UDF_SB(sb)->s_volume_ident);
 
-       if (!udf_build_ustr(instr, pvoldesc->volSetIdent, 128)) {
-               ret = udf_CS0toUTF8(outstr, instr);
-               if (ret < 0)
-                       goto out_bh;
+       ret = udf_CS0toUTF8(outstr, 127, pvoldesc->volSetIdent, 128);
+       if (ret < 0)
+               goto out_bh;
 
-               udf_debug("volSetIdent[] = '%s'\n", outstr->u_name);
-       }
+       outstr[ret] = 0;
+       udf_debug("volSetIdent[] = '%s'\n", outstr);
 
        ret = 0;
 out_bh:
        brelse(bh);
 out2:
        kfree(outstr);
-out1:
-       kfree(instr);
        return ret;
 }
 
@@ -2358,7 +2348,7 @@ static int udf_statfs(struct dentry *dentry, struct kstatfs *buf)
                                          le32_to_cpu(lvidiu->numDirs)) : 0)
                        + buf->f_bfree;
        buf->f_ffree = buf->f_bfree;
-       buf->f_namelen = UDF_NAME_LEN - 2;
+       buf->f_namelen = UDF_NAME_LEN;
        buf->f_fsid.val[0] = (u32)id;
        buf->f_fsid.val[1] = (u32)(id >> 32);