kernel-ark/fs/xfs
Christoph Hellwig ab596ad897 xfs: fix dentry aliasing issues in open_by_handle
Open by handle just grabs an inode by handle and then creates itself
a dentry for it.  While this works for regular files it is horribly
broken for directories, where the VFS locking relies on the fact that
there is only just one single dentry for a given inode, and that
these are always connected to the root of the filesystem so that
it's locking algorithms work (see Documentations/filesystems/Locking)

Remove all the existing open by handle code and replace it with a small
wrapper around the exportfs code which deals with all these issues.
At the same time we also make the checks for a valid handle strict
enough to reject all not perfectly well formed handles - given that
we never hand out others that's okay and simplifies the code.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <david@fromorbit.com>
2009-01-19 14:43:18 +11:00
..
linux-2.6 xfs: fix dentry aliasing issues in open_by_handle 2009-01-19 14:43:18 +11:00
quota no explicit xfs_iflush for special inodes during unmount 2008-12-04 15:39:23 +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_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_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_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_arch.h [XFS] Sync up kernel and user-space headers 2008-10-30 17:05:38 +11:00
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_attr.c
xfs_attr.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_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_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_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_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_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_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_dir2.c [XFS] Account for allocated blocks when expanding directories 2008-11-10 17:51:14 +11:00
xfs_dir2.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_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_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_iget.c move inode tracing out of xfs_vnode. 2008-12-04 15:39:25 +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_inode.c [XFS] Remove XFS_BUF_SHUT() and friends 2008-12-22 17:52:58 +11:00
xfs_inode.h [XFS] Fix merge failures 2008-12-29 16:47:18 +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_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_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_mount.c kill xfs_unmount_flush 2008-12-04 15:39:24 +11:00
xfs_mount.h [XFS] resync headers with libxfs 2008-12-11 13:14:17 +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_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_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_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
xfs.h [XFS] make btree tracing generic 2008-10-30 16:55:13 +11:00