--- fs/hpfs/namei.c | 74 +++++++++++++++++++++++++++++--------------------------- 1 files changed, 39 insertions(+), 35 deletions(-) diff -puN fs/hpfs/namei.c~HPFS2-hpfs_namei-RC4-rc1 fs/hpfs/namei.c --- 25/fs/hpfs/namei.c~HPFS2-hpfs_namei-RC4-rc1 2004-03-04 22:42:06.000000000 -0800 +++ 25-akpm/fs/hpfs/namei.c 2004-03-04 22:42:06.000000000 -0800 @@ -28,8 +28,13 @@ int hpfs_mkdir(struct inode *dir, struct int err; if ((err = hpfs_chk_name((char *)name, &len))) return err==-ENOENT ? -EINVAL : err; lock_kernel(); - if (!(fnode = hpfs_alloc_fnode(dir->i_sb, hpfs_i(dir)->i_dno, &fno, &bh))) goto bail; - if (!(dnode = hpfs_alloc_dnode(dir->i_sb, fno, &dno, &qbh0, 1))) goto bail1; + err = -ENOSPC; + fnode = hpfs_alloc_fnode(dir->i_sb, hpfs_i(dir)->i_dno, &fno, &bh); + if (!fnode) + goto bail; + dnode = hpfs_alloc_dnode(dir->i_sb, fno, &dno, &qbh0, 1); + if (!dnode) + goto bail1; memset(&dee, 0, sizeof dee); dee.directory = 1; if (!(mode & 0222)) dee.read_only = 1; @@ -39,15 +44,11 @@ int hpfs_mkdir(struct inode *dir, struct dee.creation_date = dee.write_date = dee.read_date = gmt_to_local(dir->i_sb, get_seconds()); hpfs_lock_inode(dir); r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0); - if (r == 1) goto bail2; + if (r == 1) + goto bail2; if (r == -1) { - brelse(bh); - hpfs_brelse4(&qbh0); - hpfs_free_sectors(dir->i_sb, fno, 1); - hpfs_free_dnode(dir->i_sb, dno); - hpfs_unlock_inode(dir); - unlock_kernel(); - return -EEXIST; + err = -EEXIST; + goto bail2; } fnode->len = len; memcpy(fnode->name, name, len > 15 ? 15 : len); @@ -103,7 +104,7 @@ bail1: hpfs_free_sectors(dir->i_sb, fno, 1); bail: unlock_kernel(); - return -ENOSPC; + return err; } int hpfs_create(struct inode *dir, struct dentry *dentry, int mode, struct nameidata *nd) @@ -120,7 +121,10 @@ int hpfs_create(struct inode *dir, struc if ((err = hpfs_chk_name((char *)name, &len))) return err==-ENOENT ? -EINVAL : err; lock_kernel(); - if (!(fnode = hpfs_alloc_fnode(dir->i_sb, hpfs_i(dir)->i_dno, &fno, &bh))) goto bail; + err = -ENOSPC; + fnode = hpfs_alloc_fnode(dir->i_sb, hpfs_i(dir)->i_dno, &fno, &bh); + if (!fnode) + goto bail; memset(&dee, 0, sizeof dee); if (!(mode & 0222)) dee.read_only = 1; dee.archive = 1; @@ -129,13 +133,11 @@ int hpfs_create(struct inode *dir, struc dee.creation_date = dee.write_date = dee.read_date = gmt_to_local(dir->i_sb, get_seconds()); hpfs_lock_inode(dir); r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0); - if (r == 1) goto bail1; + if (r == 1) + goto bail1; if (r == -1) { - brelse(bh); - hpfs_free_sectors(dir->i_sb, fno, 1); - hpfs_unlock_inode(dir); - unlock_kernel(); - return -EEXIST; + err = -EEXIST; + goto bail1; } fnode->len = len; memcpy(fnode->name, name, len > 15 ? 15 : len); @@ -178,7 +180,7 @@ bail1: hpfs_unlock_inode(dir); bail: unlock_kernel(); - return -ENOSPC; + return err; } int hpfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t rdev) @@ -197,7 +199,10 @@ int hpfs_mknod(struct inode *dir, struct if (!new_valid_dev(rdev)) return -EINVAL; lock_kernel(); - if (!(fnode = hpfs_alloc_fnode(dir->i_sb, hpfs_i(dir)->i_dno, &fno, &bh))) goto bail; + err = -ENOSPC; + fnode = hpfs_alloc_fnode(dir->i_sb, hpfs_i(dir)->i_dno, &fno, &bh); + if (!fnode) + goto bail; memset(&dee, 0, sizeof dee); if (!(mode & 0222)) dee.read_only = 1; dee.archive = 1; @@ -206,13 +211,11 @@ int hpfs_mknod(struct inode *dir, struct dee.creation_date = dee.write_date = dee.read_date = gmt_to_local(dir->i_sb, get_seconds()); hpfs_lock_inode(dir); r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0); - if (r == 1) goto bail1; + if (r == 1) + goto bail1; if (r == -1) { - brelse(bh); - hpfs_free_sectors(dir->i_sb, fno, 1); - hpfs_unlock_inode(dir); - unlock_kernel(); - return -EEXIST; + err = -EEXIST; + goto bail1; } fnode->len = len; memcpy(fnode->name, name, len > 15 ? 15 : len); @@ -248,7 +251,7 @@ bail1: hpfs_unlock_inode(dir); bail: unlock_kernel(); - return -ENOSPC; + return err; } extern struct address_space_operations hpfs_symlink_aops; @@ -270,7 +273,10 @@ int hpfs_symlink(struct inode *dir, stru unlock_kernel(); return -EPERM; } - if (!(fnode = hpfs_alloc_fnode(dir->i_sb, hpfs_i(dir)->i_dno, &fno, &bh))) goto bail; + err = -ENOSPC; + fnode = hpfs_alloc_fnode(dir->i_sb, hpfs_i(dir)->i_dno, &fno, &bh); + if (!fnode) + goto bail; memset(&dee, 0, sizeof dee); dee.archive = 1; dee.hidden = name[0] == '.'; @@ -278,13 +284,11 @@ int hpfs_symlink(struct inode *dir, stru dee.creation_date = dee.write_date = dee.read_date = gmt_to_local(dir->i_sb, get_seconds()); hpfs_lock_inode(dir); r = hpfs_add_dirent(dir, (char *)name, len, &dee, 0); - if (r == 1) goto bail1; + if (r == 1) + goto bail1; if (r == -1) { - brelse(bh); - hpfs_free_sectors(dir->i_sb, fno, 1); - hpfs_unlock_inode(dir); - unlock_kernel(); - return -EEXIST; + err = -EEXIST; + goto bail1; } fnode->len = len; memcpy(fnode->name, name, len > 15 ? 15 : len); @@ -326,7 +330,7 @@ bail1: hpfs_unlock_inode(dir); bail: unlock_kernel(); - return -ENOSPC; + return err; } int hpfs_unlink(struct inode *dir, struct dentry *dentry) _