diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-01-09 18:10:59 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-01-09 18:10:59 -0500 |
| commit | b3d574aec7e7aa3ed545d7faf2b2cbaa8db4ce22 (patch) | |
| tree | 087cb7711ee899b5e0bc2a071a4417fb3048b323 | |
| parent | 11c8f01b423b2d9742ce21e44cb7da7b55429ad5 (diff) | |
| parent | 9e5e3661727eaf960d3480213f8e87c8d67b6956 (diff) | |
Merge branch 'akpm' (patches from Andrew)
Merge misc fixes from Andrew Morton:
"12 fixes"
* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
mm, vmscan: prevent kswapd livelock due to pfmemalloc-throttled process being killed
memcg: fix destination cgroup leak on task charges migration
mm: memcontrol: switch soft limit default back to infinity
mm/debug_pagealloc: remove obsolete Kconfig options
vfs: renumber FMODE_NONOTIFY and add to uniqueness check
arch/blackfin/mach-bf533/boards/stamp.c: add linux/delay.h
ocfs2: fix the wrong directory passed to ocfs2_lookup_ino_from_name() when link file
MAINTAINERS: update rydberg's addresses
mm: protect set_page_dirty() from ongoing truncation
mm: prevent endless growth of anon_vma hierarchy
exit: fix race between wait_consider_task() and wait_task_zombie()
ocfs2: remove bogus check in dlm_process_recovery_data
| -rw-r--r-- | .mailmap | 1 | ||||
| -rw-r--r-- | MAINTAINERS | 12 | ||||
| -rw-r--r-- | arch/blackfin/mach-bf533/boards/stamp.c | 1 | ||||
| -rw-r--r-- | fs/fcntl.c | 5 | ||||
| -rw-r--r-- | fs/ocfs2/dlm/dlmrecovery.c | 5 | ||||
| -rw-r--r-- | fs/ocfs2/namei.c | 43 | ||||
| -rw-r--r-- | include/linux/fs.h | 2 | ||||
| -rw-r--r-- | include/linux/rmap.h | 10 | ||||
| -rw-r--r-- | include/linux/writeback.h | 1 | ||||
| -rw-r--r-- | include/uapi/asm-generic/fcntl.h | 2 | ||||
| -rw-r--r-- | kernel/exit.c | 12 | ||||
| -rw-r--r-- | mm/Kconfig.debug | 9 | ||||
| -rw-r--r-- | mm/memcontrol.c | 17 | ||||
| -rw-r--r-- | mm/memory.c | 27 | ||||
| -rw-r--r-- | mm/page-writeback.c | 43 | ||||
| -rw-r--r-- | mm/rmap.c | 42 | ||||
| -rw-r--r-- | mm/vmscan.c | 24 |
17 files changed, 155 insertions, 101 deletions
| @@ -51,6 +51,7 @@ Greg Kroah-Hartman <gregkh@suse.de> | |||
| 51 | Greg Kroah-Hartman <greg@kroah.com> | 51 | Greg Kroah-Hartman <greg@kroah.com> |
| 52 | Henk Vergonet <Henk.Vergonet@gmail.com> | 52 | Henk Vergonet <Henk.Vergonet@gmail.com> |
| 53 | Henrik Kretzschmar <henne@nachtwindheim.de> | 53 | Henrik Kretzschmar <henne@nachtwindheim.de> |
| 54 | Henrik Rydberg <rydberg@bitmath.org> | ||
| 54 | Herbert Xu <herbert@gondor.apana.org.au> | 55 | Herbert Xu <herbert@gondor.apana.org.au> |
| 55 | Jacob Shin <Jacob.Shin@amd.com> | 56 | Jacob Shin <Jacob.Shin@amd.com> |
| 56 | James Bottomley <jejb@mulgrave.(none)> | 57 | James Bottomley <jejb@mulgrave.(none)> |
diff --git a/MAINTAINERS b/MAINTAINERS index ddb9ac8d32b3..79b2e4ba78ee 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -724,15 +724,15 @@ F: include/uapi/linux/apm_bios.h | |||
| 724 | F: drivers/char/apm-emulation.c | 724 | F: drivers/char/apm-emulation.c |
| 725 | 725 | ||
| 726 | APPLE BCM5974 MULTITOUCH DRIVER | 726 | APPLE BCM5974 MULTITOUCH DRIVER |
| 727 | M: Henrik Rydberg <rydberg@euromail.se> | 727 | M: Henrik Rydberg <rydberg@bitmath.org> |
| 728 | L: linux-input@vger.kernel.org | 728 | L: linux-input@vger.kernel.org |
| 729 | S: Maintained | 729 | S: Odd fixes |
| 730 | F: drivers/input/mouse/bcm5974.c | 730 | F: drivers/input/mouse/bcm5974.c |
| 731 | 731 | ||
| 732 | APPLE SMC DRIVER | 732 | APPLE SMC DRIVER |
| 733 | M: Henrik Rydberg <rydberg@euromail.se> | 733 | M: Henrik Rydberg <rydberg@bitmath.org> |
| 734 | L: lm-sensors@lm-sensors.org | 734 | L: lm-sensors@lm-sensors.org |
| 735 | S: Maintained | 735 | S: Odd fixes |
| 736 | F: drivers/hwmon/applesmc.c | 736 | F: drivers/hwmon/applesmc.c |
| 737 | 737 | ||
| 738 | APPLETALK NETWORK LAYER | 738 | APPLETALK NETWORK LAYER |
| @@ -4940,10 +4940,10 @@ F: include/uapi/linux/input.h | |||
| 4940 | F: include/linux/input/ | 4940 | F: include/linux/input/ |
| 4941 | 4941 | ||
| 4942 | INPUT MULTITOUCH (MT) PROTOCOL | 4942 | INPUT MULTITOUCH (MT) PROTOCOL |
| 4943 | M: Henrik Rydberg <rydberg@euromail.se> | 4943 | M: Henrik Rydberg <rydberg@bitmath.org> |
| 4944 | L: linux-input@vger.kernel.org | 4944 | L: linux-input@vger.kernel.org |
| 4945 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/rydberg/input-mt.git | 4945 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/rydberg/input-mt.git |
| 4946 | S: Maintained | 4946 | S: Odd fixes |
| 4947 | F: Documentation/input/multi-touch-protocol.txt | 4947 | F: Documentation/input/multi-touch-protocol.txt |
| 4948 | F: drivers/input/input-mt.c | 4948 | F: drivers/input/input-mt.c |
| 4949 | K: \b(ABS|SYN)_MT_ | 4949 | K: \b(ABS|SYN)_MT_ |
diff --git a/arch/blackfin/mach-bf533/boards/stamp.c b/arch/blackfin/mach-bf533/boards/stamp.c index 6f4bac969bf7..23eada79439c 100644 --- a/arch/blackfin/mach-bf533/boards/stamp.c +++ b/arch/blackfin/mach-bf533/boards/stamp.c | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | */ | 7 | */ |
| 8 | 8 | ||
| 9 | #include <linux/device.h> | 9 | #include <linux/device.h> |
| 10 | #include <linux/delay.h> | ||
| 10 | #include <linux/platform_device.h> | 11 | #include <linux/platform_device.h> |
| 11 | #include <linux/mtd/mtd.h> | 12 | #include <linux/mtd/mtd.h> |
| 12 | #include <linux/mtd/partitions.h> | 13 | #include <linux/mtd/partitions.h> |
diff --git a/fs/fcntl.c b/fs/fcntl.c index 99d440a4a6ba..ee85cd4e136a 100644 --- a/fs/fcntl.c +++ b/fs/fcntl.c | |||
| @@ -740,14 +740,15 @@ static int __init fcntl_init(void) | |||
| 740 | * Exceptions: O_NONBLOCK is a two bit define on parisc; O_NDELAY | 740 | * Exceptions: O_NONBLOCK is a two bit define on parisc; O_NDELAY |
| 741 | * is defined as O_NONBLOCK on some platforms and not on others. | 741 | * is defined as O_NONBLOCK on some platforms and not on others. |
| 742 | */ | 742 | */ |
| 743 | BUILD_BUG_ON(20 - 1 /* for O_RDONLY being 0 */ != HWEIGHT32( | 743 | BUILD_BUG_ON(21 - 1 /* for O_RDONLY being 0 */ != HWEIGHT32( |
| 744 | O_RDONLY | O_WRONLY | O_RDWR | | 744 | O_RDONLY | O_WRONLY | O_RDWR | |
| 745 | O_CREAT | O_EXCL | O_NOCTTY | | 745 | O_CREAT | O_EXCL | O_NOCTTY | |
| 746 | O_TRUNC | O_APPEND | /* O_NONBLOCK | */ | 746 | O_TRUNC | O_APPEND | /* O_NONBLOCK | */ |
| 747 | __O_SYNC | O_DSYNC | FASYNC | | 747 | __O_SYNC | O_DSYNC | FASYNC | |
| 748 | O_DIRECT | O_LARGEFILE | O_DIRECTORY | | 748 | O_DIRECT | O_LARGEFILE | O_DIRECTORY | |
| 749 | O_NOFOLLOW | O_NOATIME | O_CLOEXEC | | 749 | O_NOFOLLOW | O_NOATIME | O_CLOEXEC | |
| 750 | __FMODE_EXEC | O_PATH | __O_TMPFILE | 750 | __FMODE_EXEC | O_PATH | __O_TMPFILE | |
| 751 | __FMODE_NONOTIFY | ||
| 751 | )); | 752 | )); |
| 752 | 753 | ||
| 753 | fasync_cache = kmem_cache_create("fasync_cache", | 754 | fasync_cache = kmem_cache_create("fasync_cache", |
diff --git a/fs/ocfs2/dlm/dlmrecovery.c b/fs/ocfs2/dlm/dlmrecovery.c index 79b5af5e6a7b..cecd875653e4 100644 --- a/fs/ocfs2/dlm/dlmrecovery.c +++ b/fs/ocfs2/dlm/dlmrecovery.c | |||
| @@ -2023,11 +2023,8 @@ leave: | |||
| 2023 | dlm_lockres_drop_inflight_ref(dlm, res); | 2023 | dlm_lockres_drop_inflight_ref(dlm, res); |
| 2024 | spin_unlock(&res->spinlock); | 2024 | spin_unlock(&res->spinlock); |
| 2025 | 2025 | ||
| 2026 | if (ret < 0) { | 2026 | if (ret < 0) |
| 2027 | mlog_errno(ret); | 2027 | mlog_errno(ret); |
| 2028 | if (newlock) | ||
| 2029 | dlm_lock_put(newlock); | ||
| 2030 | } | ||
| 2031 | 2028 | ||
| 2032 | return ret; | 2029 | return ret; |
| 2033 | } | 2030 | } |
diff --git a/fs/ocfs2/namei.c b/fs/ocfs2/namei.c index b931e04e3388..914c121ec890 100644 --- a/fs/ocfs2/namei.c +++ b/fs/ocfs2/namei.c | |||
| @@ -94,6 +94,14 @@ static int ocfs2_create_symlink_data(struct ocfs2_super *osb, | |||
| 94 | struct inode *inode, | 94 | struct inode *inode, |
| 95 | const char *symname); | 95 | const char *symname); |
| 96 | 96 | ||
| 97 | static int ocfs2_double_lock(struct ocfs2_super *osb, | ||
| 98 | struct buffer_head **bh1, | ||
| 99 | struct inode *inode1, | ||
| 100 | struct buffer_head **bh2, | ||
| 101 | struct inode *inode2, | ||
| 102 | int rename); | ||
| 103 | |||
| 104 | static void ocfs2_double_unlock(struct inode *inode1, struct inode *inode2); | ||
| 97 | /* An orphan dir name is an 8 byte value, printed as a hex string */ | 105 | /* An orphan dir name is an 8 byte value, printed as a hex string */ |
| 98 | #define OCFS2_ORPHAN_NAMELEN ((int)(2 * sizeof(u64))) | 106 | #define OCFS2_ORPHAN_NAMELEN ((int)(2 * sizeof(u64))) |
| 99 | 107 | ||
| @@ -678,8 +686,10 @@ static int ocfs2_link(struct dentry *old_dentry, | |||
| 678 | { | 686 | { |
| 679 | handle_t *handle; | 687 | handle_t *handle; |
| 680 | struct inode *inode = old_dentry->d_inode; | 688 | struct inode *inode = old_dentry->d_inode; |
| 689 | struct inode *old_dir = old_dentry->d_parent->d_inode; | ||
| 681 | int err; | 690 | int err; |
| 682 | struct buffer_head *fe_bh = NULL; | 691 | struct buffer_head *fe_bh = NULL; |
| 692 | struct buffer_head *old_dir_bh = NULL; | ||
| 683 | struct buffer_head *parent_fe_bh = NULL; | 693 | struct buffer_head *parent_fe_bh = NULL; |
| 684 | struct ocfs2_dinode *fe = NULL; | 694 | struct ocfs2_dinode *fe = NULL; |
| 685 | struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); | 695 | struct ocfs2_super *osb = OCFS2_SB(dir->i_sb); |
| @@ -696,19 +706,33 @@ static int ocfs2_link(struct dentry *old_dentry, | |||
| 696 | 706 | ||
| 697 | dquot_initialize(dir); | 707 | dquot_initialize(dir); |
| 698 | 708 | ||
| 699 | err = ocfs2_inode_lock_nested(dir, &parent_fe_bh, 1, OI_LS_PARENT); | 709 | err = ocfs2_double_lock(osb, &old_dir_bh, old_dir, |
| 710 | &parent_fe_bh, dir, 0); | ||
| 700 | if (err < 0) { | 711 | if (err < 0) { |
| 701 | if (err != -ENOENT) | 712 | if (err != -ENOENT) |
| 702 | mlog_errno(err); | 713 | mlog_errno(err); |
| 703 | return err; | 714 | return err; |
| 704 | } | 715 | } |
| 705 | 716 | ||
| 717 | /* make sure both dirs have bhs | ||
| 718 | * get an extra ref on old_dir_bh if old==new */ | ||
| 719 | if (!parent_fe_bh) { | ||
| 720 | if (old_dir_bh) { | ||
| 721 | parent_fe_bh = old_dir_bh; | ||
| 722 | get_bh(parent_fe_bh); | ||
| 723 | } else { | ||
| 724 | mlog(ML_ERROR, "%s: no old_dir_bh!\n", osb->uuid_str); | ||
| 725 | err = -EIO; | ||
