Al Viro
d311d79de3
fix O_SYNC|O_APPEND syncing the wrong range on write()
...
It actually goes back to 2004 ([PATCH] Concurrent O_SYNC write support)
when sync_page_range() had been introduced; generic_file_write{,v}() correctly
synced
pos_after_write - written .. pos_after_write - 1
but generic_file_aio_write() synced
pos_before_write .. pos_before_write + written - 1
instead. Which is not the same thing with O_APPEND, obviously.
A couple of years later correct variant had been killed off when
everything switched to use of generic_file_aio_write().
All users of generic_file_aio_write() are affected, and the same bug
has been copied into other instances of ->aio_write().
The fix is trivial; the only subtle point is that generic_write_sync()
ought to be inlined to avoid calculations useless for the majority of
calls.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2014-02-09 15:18:09 -05:00
..
acl.c
ext2/3/4: use generic posix ACL infrastructure
2014-01-25 23:58:19 -05:00
acl.h
ext2/3/4: use generic posix ACL infrastructure
2014-01-25 23:58:19 -05:00
balloc.c
ext4: don't count free clusters from a corrupt block group
2013-10-31 11:46:31 -04:00
bitmap.c
block_validity.c
fs/ext4: use rbtree postorder iteration helper instead of opencoding
2014-01-23 16:37:03 -08:00
dir.c
fs/ext4: use rbtree postorder iteration helper instead of opencoding
2014-01-23 16:37:03 -08:00
ext4.h
ext4: add explicit casts when masking cluster sizes
2013-12-20 09:29:35 -05:00
ext4_extents.h
ext4: isolate ext4_extents.h file
2013-08-28 14:47:06 -04:00
ext4_jbd2.c
ext4: call ext4_error_inode() if jbd2_journal_dirty_metadata() fails
2013-12-02 09:31:36 -05:00
ext4_jbd2.h
ext4: Fix misspellings using 'codespell' tool
2013-08-28 14:40:12 -04:00
extents.c
ext4: fix a typo in extents.c
2014-01-06 14:05:23 -05:00
extents_status.c
fs: convert fs shrinkers to new scan/count API
2013-09-10 18:56:31 -04:00
extents_status.h
ext4: isolate ext4_extents.h file
2013-08-28 14:47:06 -04:00
file.c
fix O_SYNC|O_APPEND syncing the wrong range on write()
2014-02-09 15:18:09 -05:00
fsync.c
ext4: Fix fsync error handling after filesystem abort
2013-06-12 22:38:04 -04:00
hash.c
ialloc.c
ext4: use prandom_u32() instead of get_random_bytes()
2013-11-08 00:14:53 -05:00
indirect.c
ext4: isolate ext4_extents.h file
2013-08-28 14:47:06 -04:00
inline.c
ext4: delete "set but not used" variables
2014-01-11 13:26:56 -05:00
inode.c
Bug fixes and cleanups for ext4. We also enable the punch hole
2014-01-28 08:54:16 -08:00
ioctl.c
ext4: delete "set but not used" variables
2014-01-11 13:26:56 -05:00
Kconfig
ext4: fix Kconfig documentation for CONFIG_EXT4_DEBUG
2013-04-21 20:32:03 -04:00
Makefile
mballoc.c
ext4: add explicit casts when masking cluster sizes
2013-12-20 09:29:35 -05:00
mballoc.h
migrate.c
ext4: Fix misspellings using 'codespell' tool
2013-08-28 14:40:12 -04:00
mmp.c
ext4: use prandom_u32() instead of get_random_bytes()
2013-11-08 00:14:53 -05:00
move_extent.c
vfs: pull ext4's double-i_mutex-locking into common code
2013-11-09 00:16:39 -05:00
namei.c
Bug fixes and cleanups for ext4. We also enable the punch hole
2014-01-28 08:54:16 -08:00
page-io.c
block: Abstract out bvec iterator
2013-11-23 22:33:47 -08:00
resize.c
ext4: fix corruption when online resizing a fs with 1K block size
2013-07-01 08:12:08 -04:00
super.c
ext4: Do not reserve clusters when fs doesn't support extents
2013-12-08 21:11:59 -05:00
symlink.c
truncate.h
xattr.c
ext2/3/4: use generic posix ACL infrastructure
2014-01-25 23:58:19 -05:00
xattr.h
ext2/3/4: use generic posix ACL infrastructure
2014-01-25 23:58:19 -05:00
xattr_security.c
xattr_trusted.c
xattr_user.c