remarkable-linux/fs/xfs
Christoph Hellwig b828d8c338 xfs: sanity check attr fork size
Recently we have quite a few kerneloops reports about dereferencing a NULL
if_data in the attribute fork.  From looking over the code this can only
happen if we pass a 0 size argument to xfs_iformat_local.  This implies some
sort of corruption and in fact the only mailinglist report about this from
earlier this year was after a powerfail presumably on a system with write
cache and without barriers.

Add a quick sanity check for the attr fork size in xfs_iformat to catch
these early and without an oops.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <david@fromorbit.com>
2009-01-19 14:45:11 +11:00
..
linux-2.6 xfs: fix bad_features2 fixups for the root filesystem 2009-01-19 14:45:04 +11:00
quota xfs: add a lock class for group/project dquots 2009-01-19 14:44:59 +11:00
support [XFS] avoid memory allocations in xfs_fs_vcmn_err 2008-12-22 18:02:01 +11:00
Kconfig xfs: fix dentry aliasing issues in open_by_handle 2009-01-19 14:43:18 +11:00
Makefile move inode tracing out of xfs_vnode. 2008-12-04 15:39:25 +11:00
xfs.h [XFS] make btree tracing generic 2008-10-30 16:55:13 +11:00
xfs_acl.c CRED: Wrap task credential accesses in the XFS filesystem 2008-11-14 10:39:04 +11:00
xfs_acl.h [XFS] Remove several unused typedefs. 2009-01-09 15:46:16 +11:00
xfs_ag.h [XFS] Remove macro-to-function indirections in the mask code 2009-01-09 15:53:54 +11:00
xfs_alloc.c [XFS] factor out xfs_read_agf helper 2008-12-01 11:37:20 +11:00
xfs_alloc.h [XFS] Sync up kernel and user-space headers 2008-10-30 17:05:38 +11:00
xfs_alloc_btree.c [XFS] Always use struct xfs_btree_block instead of short / longform 2008-10-30 17:14:34 +11:00
xfs_alloc_btree.h [XFS] Always use struct xfs_btree_block instead of short / longform 2008-10-30 17:14:34 +11:00
xfs_arch.h [XFS] Sync up kernel and user-space headers 2008-10-30 17:05:38 +11:00
xfs_attr.c
xfs_attr.h
xfs_attr_leaf.c [XFS] Remove macro-to-function indirections in attr code 2009-01-09 15:46:44 +11:00
xfs_attr_leaf.h [XFS] Remove macro-to-function indirections in attr code 2009-01-09 15:46:44 +11:00
xfs_attr_sf.h
xfs_bit.c
xfs_bit.h [XFS] Remove macro-to-function indirections in the mask code 2009-01-09 15:53:54 +11:00
xfs_bmap.c [XFS] Add new getbmap flags. 2008-12-01 11:29:28 +11:00
xfs_bmap.h [XFS] convert xfs_getbmap to take formatter functions 2008-12-01 11:29:00 +11:00
xfs_bmap_btree.c [XFS] Remove macro-to-function indirections in the mask code 2009-01-09 15:53:54 +11:00
xfs_bmap_btree.h [XFS] Move XFS_BMAP_SANITY_CHECK out of line. 2008-10-30 17:14:43 +11:00
xfs_btree.c [XFS] fix compile of xfs_btree_readahead_lblock on m68k 2009-01-09 16:16:51 +11:00
xfs_btree.h [XFS] Always use struct xfs_btree_block instead of short / longform 2008-10-30 17:14:34 +11:00
xfs_btree_trace.c [XFS] make btree tracing generic 2008-10-30 16:58:50 +11:00
xfs_btree_trace.h [XFS] make btree tracing generic 2008-10-30 16:58:50 +11:00
xfs_buf_item.c [XFS] Remove XFS_BUF_SHUT() and friends 2008-12-22 17:52:58 +11:00
xfs_buf_item.h
xfs_da_btree.c [XFS] Account for allocated blocks when expanding directories 2008-11-10 17:51:14 +11:00
xfs_da_btree.h [XFS] Sync up kernel and user-space headers 2008-10-30 17:05:38 +11:00
xfs_dfrag.c [XFS] Move copy_from_user calls out of ioctl helpers into ioctl switch. 2008-12-02 17:08:01 +11:00
xfs_dfrag.h [XFS] Move copy_from_user calls out of ioctl helpers into ioctl switch. 2008-12-02 17:08:01 +11:00
xfs_dinode.h [XFS] kill XFS_DINODE_VERSION_ defines 2008-12-01 11:37:42 +11:00
xfs_dir2.c [XFS] Account for allocated blocks when expanding directories 2008-11-10 17:51:14 +11:00
xfs_dir2.h
xfs_dir2_block.c [XFS] truncate readdir offsets to signed 32 bit values 2009-01-09 16:18:24 +11:00
xfs_dir2_block.h
xfs_dir2_data.c
xfs_dir2_data.h
xfs_dir2_leaf.c [XFS] truncate readdir offsets to signed 32 bit values 2009-01-09 16:18:24 +11:00
xfs_dir2_leaf.h
xfs_dir2_node.c
xfs_dir2_node.h
xfs_dir2_sf.c [XFS] truncate readdir offsets to signed 32 bit values 2009-01-09 16:18:24 +11:00
xfs_dir2_sf.h [XFS] kill xfs_dinode_core_t 2008-12-01 11:37:35 +11:00
xfs_dir2_trace.c
xfs_dir2_trace.h
xfs_dmapi.h
xfs_dmops.c [XFS] kill struct xfs_mount_args 2008-10-30 17:53:24 +11:00
xfs_error.c [XFS] avoid memory allocations in xfs_fs_vcmn_err 2008-12-22 18:02:01 +11:00
xfs_error.h [XFS] avoid memory allocations in xfs_fs_vcmn_err 2008-12-22 18:02:01 +11:00
xfs_extfree_item.c [XFS] Finish removing the mount pointer from the AIL API 2008-10-30 17:39:58 +11:00
xfs_extfree_item.h
xfs_filestream.c
xfs_filestream.h
xfs_fs.h filesystem freeze: remove XFS specific ioctl interfaces for freeze feature 2009-01-09 16:54:42 -08:00
xfs_fsops.c filesystem freeze: add error handling of write_super_lockfs/unlockfs 2009-01-09 16:54:42 -08:00
xfs_fsops.h filesystem freeze: add error handling of write_super_lockfs/unlockfs 2009-01-09 16:54:42 -08:00
xfs_ialloc.c [XFS] kill the XFS_IMAP_BULKSTAT flag 2008-12-01 11:38:13 +11:00
xfs_ialloc.h [XFS] merge xfs_imap into xfs_dilocate 2008-12-01 11:38:03 +11:00
xfs_ialloc_btree.c [XFS] Always use struct xfs_btree_block instead of short / longform 2008-10-30 17:14:34 +11:00
xfs_ialloc_btree.h [XFS] Always use struct xfs_btree_block instead of short / longform 2008-10-30 17:14:34 +11:00
xfs_iget.c move inode tracing out of xfs_vnode. 2008-12-04 15:39:25 +11:00
xfs_inode.c xfs: sanity check attr fork size 2009-01-19 14:45:11 +11:00
xfs_inode.h [XFS] Fix merge failures 2008-12-29 16:47:18 +11:00
xfs_inode_item.c [XFS] embededd struct xfs_imap into xfs_inode 2008-12-01 11:38:08 +11:00
xfs_inode_item.h [XFS] Sync up kernel and user-space headers 2008-10-30 17:05:38 +11:00
xfs_inum.h
xfs_iomap.c [XFS] Fix speculative allocation beyond eof 2008-12-22 17:56:49 +11:00
xfs_iomap.h
xfs_itable.c [XFS] Fix xfs_bulkstat_one size checks & error handling 2008-12-02 17:16:03 +11:00
xfs_itable.h [XFS] Fix xfs_bulkstat_one size checks & error handling 2008-12-02 17:16:03 +11:00
xfs_log.c reduce l_icloglock roundtrips 2008-12-04 15:39:21 +11:00
xfs_log.h [XFS] Fix double free of log tickets 2008-11-17 17:37:10 +11:00
xfs_log_priv.h [XFS] sanitize xlog_in_core_t definition 2008-12-01 11:37:25 +11:00
xfs_log_recover.c [XFS] replace b_fspriv with b_mount 2008-12-11 13:13:33 +11:00
xfs_log_recover.h
xfs_mount.c xfs: fix bad_features2 fixups for the root filesystem 2009-01-19 14:45:04 +11:00
xfs_mount.h xfs: fix bad_features2 fixups for the root filesystem 2009-01-19 14:45:04 +11:00
xfs_mru_cache.c
xfs_mru_cache.h
xfs_qmops.c [XFS] kill struct xfs_mount_args 2008-10-30 17:53:24 +11:00
xfs_quota.h kill dead quota flags 2008-12-04 15:39:22 +11:00
xfs_refcache.h
xfs_rename.c [XFS] simplify projid check in xfs_rename 2008-12-11 13:13:52 +11:00
xfs_rtalloc.c [XFS] Move copy_from_user calls out of ioctl helpers into ioctl switch. 2008-12-02 17:08:01 +11:00
xfs_rtalloc.h
xfs_rw.c [XFS] replace b_fspriv with b_mount 2008-12-11 13:13:33 +11:00
xfs_rw.h
xfs_sb.h [XFS] resync headers with libxfs 2008-12-11 13:14:17 +11:00
xfs_trans.c [XFS] Fix double free of log tickets 2008-11-17 17:37:10 +11:00
xfs_trans.h [XFS] Finish removing the mount pointer from the AIL API 2008-10-30 17:39:58 +11:00
xfs_trans_ail.c [XFS] correctly select first log item to push 2008-10-30 18:26:51 +11:00
xfs_trans_buf.c [XFS] Finish removing the mount pointer from the AIL API 2008-10-30 17:39:58 +11:00
xfs_trans_extfree.c
xfs_trans_inode.c use xfs_trans_ijoin in xfs_trans_iget 2008-12-04 15:39:23 +11:00
xfs_trans_item.c [XFS] Add ail pointer into log items 2008-10-30 17:39:46 +11:00
xfs_trans_priv.h [XFS] Finish removing the mount pointer from the AIL API 2008-10-30 17:39:58 +11:00
xfs_trans_space.h
xfs_types.h [XFS] make xfs_ino_t an unsigned long long 2009-01-09 16:19:14 +11:00
xfs_utils.c [XFS] kill XFS_DINODE_VERSION_ defines 2008-12-01 11:37:42 +11:00
xfs_utils.h
xfs_vnodeops.c [XFS] use inode_change_ok for setattr permission checking 2008-12-11 13:15:10 +11:00
xfs_vnodeops.h [XFS] Fix merge failures 2008-12-29 16:47:18 +11:00