diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-24 10:53:22 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-24 10:53:22 -0400 |
commit | db16826367fefcb0ddb93d76b66adc52eb4e6339 (patch) | |
tree | 626224c1eb1eb79c522714591f208b4fdbdcd9d4 /mm/shmem.c | |
parent | cd6045138ed1bb5d8773e940d51c34318eef3ef2 (diff) | |
parent | 465fdd97cbe16ef8727221857e96ef62dd352017 (diff) |
Merge branch 'hwpoison' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6
* 'hwpoison' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (21 commits)
HWPOISON: Enable error_remove_page on btrfs
HWPOISON: Add simple debugfs interface to inject hwpoison on arbitary PFNs
HWPOISON: Add madvise() based injector for hardware poisoned pages v4
HWPOISON: Enable error_remove_page for NFS
HWPOISON: Enable .remove_error_page for migration aware file systems
HWPOISON: The high level memory error handler in the VM v7
HWPOISON: Add PR_MCE_KILL prctl to control early kill behaviour per process
HWPOISON: shmem: call set_page_dirty() with locked page
HWPOISON: Define a new error_remove_page address space op for async truncation
HWPOISON: Add invalidate_inode_page
HWPOISON: Refactor truncate to allow direct truncating of page v2
HWPOISON: check and isolate corrupted free pages v2
HWPOISON: Handle hardware poisoned pages in try_to_unmap
HWPOISON: Use bitmask/action code for try_to_unmap behaviour
HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2
HWPOISON: Add poison check to page fault handling
HWPOISON: Add basic support for poisoned pages in fault handler v3
HWPOISON: Add new SIGBUS error codes for hardware poison signals
HWPOISON: Add support for poison swap entries v2
HWPOISON: Export some rmap vma locking to outside world
...
Diffstat (limited to 'mm/shmem.c')
-rw-r--r-- | mm/shmem.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/mm/shmem.c b/mm/shmem.c index b206a7a32e2a..98631c26c200 100644 --- a/mm/shmem.c +++ b/mm/shmem.c | |||
@@ -1633,8 +1633,8 @@ shmem_write_end(struct file *file, struct address_space *mapping, | |||
1633 | if (pos + copied > inode->i_size) | 1633 | if (pos + copied > inode->i_size) |
1634 | i_size_write(inode, pos + copied); | 1634 | i_size_write(inode, pos + copied); |
1635 | 1635 | ||
1636 | unlock_page(page); | ||
1637 | set_page_dirty(page); | 1636 | set_page_dirty(page); |
1637 | unlock_page(page); | ||
1638 | page_cache_release(page); | 1638 | page_cache_release(page); |
1639 | 1639 | ||
1640 | return copied; | 1640 | return copied; |
@@ -1971,13 +1971,13 @@ static int shmem_symlink(struct inode *dir, struct dentry *dentry, const char *s | |||
1971 | iput(inode); | 1971 | iput(inode); |
1972 | return error; | 1972 | return error; |
1973 | } | 1973 | } |
1974 | unlock_page(page); | ||
1975 | inode->i_mapping->a_ops = &shmem_aops; | 1974 | inode->i_mapping->a_ops = &shmem_aops; |
1976 | inode->i_op = &shmem_symlink_inode_operations; | 1975 | inode->i_op = &shmem_symlink_inode_operations; |
1977 | kaddr = kmap_atomic(page, KM_USER0); | 1976 | kaddr = kmap_atomic(page, KM_USER0); |
1978 | memcpy(kaddr, symname, len); | 1977 | memcpy(kaddr, symname, len); |
1979 | kunmap_atomic(kaddr, KM_USER0); | 1978 | kunmap_atomic(kaddr, KM_USER0); |
1980 | set_page_dirty(page); | 1979 | set_page_dirty(page); |
1980 | unlock_page(page); | ||
1981 | page_cache_release(page); | 1981 | page_cache_release(page); |
1982 | } | 1982 | } |
1983 | if (dir->i_mode & S_ISGID) | 1983 | if (dir->i_mode & S_ISGID) |
@@ -2420,6 +2420,7 @@ static const struct address_space_operations shmem_aops = { | |||
2420 | .write_end = shmem_write_end, | 2420 | .write_end = shmem_write_end, |
2421 | #endif | 2421 | #endif |
2422 | .migratepage = migrate_page, | 2422 | .migratepage = migrate_page, |
2423 | .error_remove_page = generic_error_remove_page, | ||
2423 | }; | 2424 | }; |
2424 | 2425 | ||
2425 | static const struct file_operations shmem_file_operations = { | 2426 | static const struct file_operations shmem_file_operations = { |