kernel-ark/fs
Eric Sandeen 225add6196 [PATCH] udf: initialize parts of inode earlier in create
I saw an oops down this path when trying to create a new file on a UDF
filesystem which was internally marked as readonly, but mounted rw:

udf_create
        udf_new_inode
                new_inode
                        alloc_inode
                        	udf_alloc_inode
                udf_new_block
                        returns EIO due to readonlyness
                iput (on error)
                        udf_put_inode
                                udf_discard_prealloc
                                        udf_next_aext
                                                udf_current_aext
                                                        udf_get_fileshortad
                                                                OOPS

the udf_discard_prealloc() path was examining uninitialized fields of the
udf inode.

udf_discard_prealloc() already has this code to short-circuit the discard
path if no extents are preallocated:

        if (UDF_I_ALLOCTYPE(inode) == ICBTAG_FLAG_AD_IN_ICB ||
                inode->i_size == UDF_I_LENEXTENTS(inode))
        {
                return;
        }

so if we initialize UDF_I_LENEXTENTS(inode) = 0 earlier in udf_new_inode,
we won't try to free the (not) preallocated blocks, since this will match
the i_size = 0 set when the inode was initialized.

Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-08-06 08:57:49 -07:00
..
9p [PATCH] 9p: fix fid behavior on failed remove 2006-07-31 13:28:44 -07:00
adfs
affs
afs
autofs
autofs4
befs [PATCH] Fix BeFS slab corruption 2006-08-06 08:57:48 -07:00
bfs
cifs
coda [PATCH] Remove incorrect unlock_kernel from allocation failure path in coda_open() 2006-07-31 13:28:41 -07:00
configfs
cramfs
debugfs
devpts
efs [PATCH] efs: Remove incorrect unlock_kernel from failure path in efs_symlink_readpage() 2006-07-31 13:28:41 -07:00
exportfs
ext2
ext3 [PATCH] ext3 -nobh option causes oops 2006-07-31 13:28:44 -07:00
fat
freevxfs [PATCH] freevxfs: Add missing lock_kernel() to vxfs_readdir 2006-07-31 13:28:44 -07:00
fuse [PATCH] fuse: fix typo 2006-07-31 13:28:43 -07:00
hfs
hfsplus
hostfs
hpfs
hppfs
hugetlbfs
isofs
jbd
jffs
jffs2
jfs Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6 2006-07-15 14:43:30 -07:00
lockd NLM/lockd: remove b_done 2006-08-03 16:56:02 -04:00
minix
msdos
ncpfs
nfs NFS: make 2 functions static 2006-08-03 16:55:41 -04:00
nfs_common
nfsd [PATCH] knfsd: Fix stale file handle problem with subtree_checking. 2006-07-31 13:28:37 -07:00
nls
ntfs
ocfs2
openpromfs
partitions [PATCH] enable mac partition label per default on pmac 2006-07-31 13:28:41 -07:00
proc Don't allow chmod() on the /proc/<pid>/ files 2006-07-15 12:26:45 -07:00
qnx4
ramfs [PATCH] NOMMU: Fix execution off of ramfs with mmap() 2006-07-10 13:24:21 -07:00
reiserfs [PATCH] reiserfs_write_full_page() should not get_block past eof 2006-08-06 08:57:49 -07:00
romfs
smbfs
sysfs [PATCH] lockdep: annotate the sysfs i_mutex to be a separate class 2006-07-12 12:52:54 -07:00
sysv
udf [PATCH] udf: initialize parts of inode earlier in create 2006-08-06 08:57:49 -07:00
ufs [PATCH] ufs: handle truncated pages 2006-08-06 08:57:46 -07:00
vfat
xfs [XFS] Ensure bulkstat from an invalid inode number gets caught always with 2006-07-28 17:05:51 +10:00
aio.c
attr.c
bad_inode.c
binfmt_aout.c
binfmt_elf_fdpic.c [PATCH] FDPIC: Add coredump capability for the ELF-FDPIC binfmt 2006-07-10 13:24:22 -07:00
binfmt_elf.c [PATCH] FDPIC: Move roundup() into linux/kernel.h 2006-07-10 13:24:22 -07:00
binfmt_em86.c
binfmt_flat.c
binfmt_misc.c
binfmt_script.c
binfmt_som.c
bio.c
block_dev.c
buffer.c [PATCH] invalidate_bdev() speedup 2006-07-31 13:28:38 -07:00
char_dev.c [PATCH] add function documentation for register_chrdev() 2006-07-14 21:53:54 -07:00
compat_ioctl.c
compat.c
dcache.c
dcookies.c
direct-io.c
dnotify.c
dquot.c
drop_caches.c
eventpoll.c
exec.c
fcntl.c
fifo.c
file_table.c
file.c [PATCH] alloc_fdtable() expansion fix 2006-07-12 12:52:55 -07:00
filesystems.c
fs-writeback.c
inode.c
inotify_user.c [PATCH] inotify: fix deadlock found by lockdep 2006-07-31 13:28:41 -07:00
inotify.c
ioctl.c
ioprio.c
Kconfig Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 2006-07-13 16:38:58 -07:00
Kconfig.binfmt
libfs.c
locks.c
Makefile
mbcache.c
mpage.c
namei.c [PATCH] don't bother with aux entires for dummy context 2006-08-03 10:59:42 -04:00
namespace.c
nfsctl.c
open.c
pipe.c
pnode.c
pnode.h
posix_acl.c
quota_v1.c
quota_v2.c
quota.c
read_write.c
readdir.c
select.c
seq_file.c
splice.c
stat.c
super.c
sync.c
xattr_acl.c
xattr.c