aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.mailmap1
-rw-r--r--Documentation/vm/numa_memory_policy.txt5
-rw-r--r--MAINTAINERS2
-rw-r--r--arch/arm/boot/dts/spear320-hmi.dts2
-rw-r--r--arch/arm/mach-spear/headsmp.S2
-rw-r--r--arch/arm/mach-spear/platsmp.c2
-rw-r--r--arch/arm/mach-spear/time.c2
-rw-r--r--arch/mips/mm/cache.c4
-rw-r--r--arch/powerpc/mm/numa.c1
-rw-r--r--drivers/gpio/gpio-spear-spics.c4
-rw-r--r--drivers/irqchip/spear-shirq.c2
-rw-r--r--drivers/mtd/devices/spear_smi.c4
-rw-r--r--drivers/pwm/pwm-spear.c4
-rw-r--r--include/asm-generic/pgtable.h31
-rw-r--r--include/linux/mtd/spear_smi.h2
-rw-r--r--include/linux/wait.h14
-rw-r--r--init/Kconfig24
-rw-r--r--kernel/watchdog.c6
-rw-r--r--lib/Kconfig.debug3
-rw-r--r--mm/filemap.c1
-rw-r--r--mm/huge_memory.c13
-rw-r--r--mm/hugetlb.c1
-rw-r--r--mm/vmscan.c2
23 files changed, 85 insertions, 47 deletions
diff --git a/.mailmap b/.mailmap
index 658003aa9446..df1baba43a64 100644
--- a/.mailmap
+++ b/.mailmap
@@ -99,6 +99,7 @@ Sachin P Sant <ssant@in.ibm.com>
99Sam Ravnborg <sam@mars.ravnborg.org> 99Sam Ravnborg <sam@mars.ravnborg.org>
100Sascha Hauer <s.hauer@pengutronix.de> 100Sascha Hauer <s.hauer@pengutronix.de>
101S.Çağlar Onur <caglar@pardus.org.tr> 101S.Çağlar Onur <caglar@pardus.org.tr>
102Shiraz Hashim <shiraz.linux.kernel@gmail.com> <shiraz.hashim@st.com>
102Simon Kelley <simon@thekelleys.org.uk> 103Simon Kelley <simon@thekelleys.org.uk>
103Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr> 104Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>
104Stephen Hemminger <shemminger@osdl.org> 105Stephen Hemminger <shemminger@osdl.org>
diff --git a/Documentation/vm/numa_memory_policy.txt b/Documentation/vm/numa_memory_policy.txt
index 4e7da6543424..badb0507608f 100644
--- a/Documentation/vm/numa_memory_policy.txt
+++ b/Documentation/vm/numa_memory_policy.txt
@@ -174,7 +174,6 @@ Components of Memory Policies
174 allocation fails, the kernel will search other nodes, in order of 174 allocation fails, the kernel will search other nodes, in order of
175 increasing distance from the preferred node based on information 175 increasing distance from the preferred node based on information
176 provided by the platform firmware. 176 provided by the platform firmware.
177 containing the cpu where the allocation takes place.
178 177
179 Internally, the Preferred policy uses a single node--the 178 Internally, the Preferred policy uses a single node--the
180 preferred_node member of struct mempolicy. When the internal 179 preferred_node member of struct mempolicy. When the internal
@@ -275,9 +274,9 @@ Components of Memory Policies
275 For example, consider a task that is attached to a cpuset with 274 For example, consider a task that is attached to a cpuset with
276 mems 2-5 that sets an Interleave policy over the same set with 275 mems 2-5 that sets an Interleave policy over the same set with
277 MPOL_F_RELATIVE_NODES. If the cpuset's mems change to 3-7, the 276 MPOL_F_RELATIVE_NODES. If the cpuset's mems change to 3-7, the
278 interleave now occurs over nodes 3,5-6. If the cpuset's mems 277 interleave now occurs over nodes 3,5-7. If the cpuset's mems
279 then change to 0,2-3,5, then the interleave occurs over nodes 278 then change to 0,2-3,5, then the interleave occurs over nodes
280 0,3,5. 279 0,2-3,5.
281 280
282 Thanks to the consistent remapping, applications preparing 281 Thanks to the consistent remapping, applications preparing
283 nodemasks to specify memory policies using this flag should 282 nodemasks to specify memory policies using this flag should
diff --git a/MAINTAINERS b/MAINTAINERS
index 80399fff805d..e67ea2442041 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8315,7 +8315,7 @@ F: include/linux/compiler.h
8315 8315
8316SPEAR PLATFORM SUPPORT 8316SPEAR PLATFORM SUPPORT
8317M: Viresh Kumar <viresh.linux@gmail.com> 8317M: Viresh Kumar <viresh.linux@gmail.com>
8318M: Shiraz Hashim <shiraz.hashim@st.com> 8318M: Shiraz Hashim <shiraz.linux.kernel@gmail.com>
8319L: spear-devel@list.st.com 8319L: spear-devel@list.st.com
8320L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 8320L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
8321W: http://www.st.com/spear 8321W: http://www.st.com/spear
diff --git a/arch/arm/boot/dts/spear320-hmi.dts b/arch/arm/boot/dts/spear320-hmi.dts
index 3075d2d3a8be..0aa6fef5ce22 100644
--- a/arch/arm/boot/dts/spear320-hmi.dts
+++ b/arch/arm/boot/dts/spear320-hmi.dts
@@ -1,7 +1,7 @@
1/* 1/*
2 * DTS file for SPEAr320 Evaluation Baord 2 * DTS file for SPEAr320 Evaluation Baord
3 * 3 *
4 * Copyright 2012 Shiraz Hashim <shiraz.hashim@st.com> 4 * Copyright 2012 Shiraz Hashim <shiraz.linux.kernel@gmail.com>
5 * 5 *
6 * The code contained herein is licensed under the GNU General Public 6 * The code contained herein is licensed under the GNU General Public
7 * License. You may obtain a copy of the GNU General Public License 7 * License. You may obtain a copy of the GNU General Public License
diff --git a/arch/arm/mach-spear/headsmp.S b/arch/arm/mach-spear/headsmp.S
index ed85473a047f..c52192dc3d9f 100644
--- a/arch/arm/mach-spear/headsmp.S
+++ b/arch/arm/mach-spear/headsmp.S
@@ -3,7 +3,7 @@
3 * 3 *
4 * Picked from realview 4 * Picked from realview
5 * Copyright (c) 2012 ST Microelectronics Limited 5 * Copyright (c) 2012 ST Microelectronics Limited
6 * Shiraz Hashim <shiraz.hashim@st.com> 6 * Shiraz Hashim <shiraz.linux.kernel@gmail.com>
7 * 7 *
8 * This program is free software; you can redistribute it and/or modify 8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as 9 * it under the terms of the GNU General Public License version 2 as
diff --git a/arch/arm/mach-spear/platsmp.c b/arch/arm/mach-spear/platsmp.c
index 5c4a19887b2b..c19751fff2c6 100644
--- a/arch/arm/mach-spear/platsmp.c
+++ b/arch/arm/mach-spear/platsmp.c
@@ -4,7 +4,7 @@
4 * based upon linux/arch/arm/mach-realview/platsmp.c 4 * based upon linux/arch/arm/mach-realview/platsmp.c
5 * 5 *
6 * Copyright (C) 2012 ST Microelectronics Ltd. 6 * Copyright (C) 2012 ST Microelectronics Ltd.
7 * Shiraz Hashim <shiraz.hashim@st.com> 7 * Shiraz Hashim <shiraz.linux.kernel@gmail.com>
8 * 8 *
9 * This program is free software; you can redistribute it and/or modify 9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as 10 * it under the terms of the GNU General Public License version 2 as
diff --git a/arch/arm/mach-spear/time.c b/arch/arm/mach-spear/time.c
index 218ba5b67d92..64790353951f 100644
--- a/arch/arm/mach-spear/time.c
+++ b/arch/arm/mach-spear/time.c
@@ -2,7 +2,7 @@
2 * arch/arm/plat-spear/time.c 2 * arch/arm/plat-spear/time.c
3 * 3 *
4 * Copyright (C) 2010 ST Microelectronics 4 * Copyright (C) 2010 ST Microelectronics
5 * Shiraz Hashim<shiraz.hashim@st.com> 5 * Shiraz Hashim<shiraz.linux.kernel@gmail.com>
6 * 6 *
7 * This file is licensed under the terms of the GNU General Public 7 * This file is licensed under the terms of the GNU General Public
8 * License version 2. This program is licensed "as is" without any 8 * License version 2. This program is licensed "as is" without any
diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c
index e422b38d3113..9e67cdea3c74 100644
--- a/arch/mips/mm/cache.c
+++ b/arch/mips/mm/cache.c
@@ -29,15 +29,15 @@ void (*flush_cache_range)(struct vm_area_struct *vma, unsigned long start,
29void (*flush_cache_page)(struct vm_area_struct *vma, unsigned long page, 29void (*flush_cache_page)(struct vm_area_struct *vma, unsigned long page,
30 unsigned long pfn); 30 unsigned long pfn);
31void (*flush_icache_range)(unsigned long start, unsigned long end); 31void (*flush_icache_range)(unsigned long start, unsigned long end);
32EXPORT_SYMBOL_GPL(flush_icache_range);
32void (*local_flush_icache_range)(unsigned long start, unsigned long end); 33void (*local_flush_icache_range)(unsigned long start, unsigned long end);
33 34
34void (*__flush_cache_vmap)(void); 35void (*__flush_cache_vmap)(void);
35void (*__flush_cache_vunmap)(void); 36void (*__flush_cache_vunmap)(void);
36 37
37void (*__flush_kernel_vmap_range)(unsigned long vaddr, int size); 38void (*__flush_kernel_vmap_range)(unsigned long vaddr, int size);
38void (*__invalidate_kernel_vmap_range)(unsigned long vaddr, int size);
39
40EXPORT_SYMBOL_GPL(__flush_kernel_vmap_range); 39EXPORT_SYMBOL_GPL(__flush_kernel_vmap_range);
40void (*__invalidate_kernel_vmap_range)(unsigned long vaddr, int size);
41 41
42/* MIPS specific cache operations */ 42/* MIPS specific cache operations */
43void (*flush_cache_sigtramp)(unsigned long addr); 43void (*flush_cache_sigtramp)(unsigned long addr);
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index 4ebbb9e99286..3b181b22cd46 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -232,6 +232,7 @@ int __node_distance(int a, int b)
232 232
233 return distance; 233 return distance;
234} 234}
235EXPORT_SYMBOL(__node_distance);
235 236
236static void initialize_distance_lookup_table(int nid, 237static void initialize_distance_lookup_table(int nid,
237 const __be32 *associativity) 238 const __be32 *associativity)
diff --git a/drivers/gpio/gpio-spear-spics.c b/drivers/gpio/gpio-spear-spics.c
index e9a0415834ea..30bcc539425d 100644
--- a/drivers/gpio/gpio-spear-spics.c
+++ b/drivers/gpio/gpio-spear-spics.c
@@ -2,7 +2,7 @@
2 * SPEAr platform SPI chipselect abstraction over gpiolib 2 * SPEAr platform SPI chipselect abstraction over gpiolib
3 * 3 *
4 * Copyright (C) 2012 ST Microelectronics 4 * Copyright (C) 2012 ST Microelectronics
5 * Shiraz Hashim <shiraz.hashim@st.com> 5 * Shiraz Hashim <shiraz.linux.kernel@gmail.com>
6 * 6 *
7 * This file is licensed under the terms of the GNU General Public 7 * This file is licensed under the terms of the GNU General Public
8 * License version 2. This program is licensed "as is" without any 8 * License version 2. This program is licensed "as is" without any
@@ -205,6 +205,6 @@ static int __init spics_gpio_init(void)
205} 205}
206subsys_initcall(spics_gpio_init); 206subsys_initcall(spics_gpio_init);
207 207
208MODULE_AUTHOR("Shiraz Hashim <shiraz.hashim@st.com>"); 208MODULE_AUTHOR("Shiraz Hashim <shiraz.linux.kernel@gmail.com>");
209MODULE_DESCRIPTION("ST Microlectronics SPEAr SPI Chip Select Abstraction"); 209MODULE_DESCRIPTION("ST Microlectronics SPEAr SPI Chip Select Abstraction");
210MODULE_LICENSE("GPL"); 210MODULE_LICENSE("GPL");
diff --git a/drivers/irqchip/spear-shirq.c b/drivers/irqchip/spear-shirq.c
index 8527743b5cef..3fdda3a40269 100644
--- a/drivers/irqchip/spear-shirq.c
+++ b/drivers/irqchip/spear-shirq.c
@@ -5,7 +5,7 @@
5 * Viresh Kumar <viresh.linux@gmail.com> 5 * Viresh Kumar <viresh.linux@gmail.com>
6 * 6 *
7 * Copyright (C) 2012 ST Microelectronics 7 * Copyright (C) 2012 ST Microelectronics
8 * Shiraz Hashim <shiraz.hashim@st.com> 8 * Shiraz Hashim <shiraz.linux.kernel@gmail.com>
9 * 9 *
10 * This file is licensed under the terms of the GNU General Public 10 * This file is licensed under the terms of the GNU General Public
11 * License version 2. This program is licensed "as is" without any 11 * License version 2. This program is licensed "as is" without any
diff --git a/drivers/mtd/devices/spear_smi.c b/drivers/mtd/devices/spear_smi.c
index 363da96e6891..c4176b0f382d 100644
--- a/drivers/mtd/devices/spear_smi.c
+++ b/drivers/mtd/devices/spear_smi.c
@@ -6,7 +6,7 @@
6 * 6 *
7 * Copyright © 2010 STMicroelectronics. 7 * Copyright © 2010 STMicroelectronics.
8 * Ashish Priyadarshi 8 * Ashish Priyadarshi
9 * Shiraz Hashim <shiraz.hashim@st.com> 9 * Shiraz Hashim <shiraz.linux.kernel@gmail.com>
10 * 10 *
11 * This file is licensed under the terms of the GNU General Public 11 * This file is licensed under the terms of the GNU General Public
12 * License version 2. This program is licensed "as is" without any 12 * License version 2. This program is licensed "as is" without any
@@ -1089,5 +1089,5 @@ static struct platform_driver spear_smi_driver = {
1089module_platform_driver(spear_smi_driver); 1089module_platform_driver(spear_smi_driver);
1090 1090
1091MODULE_LICENSE("GPL"); 1091MODULE_LICENSE("GPL");
1092MODULE_AUTHOR("Ashish Priyadarshi, Shiraz Hashim <shiraz.hashim@st.com>"); 1092MODULE_AUTHOR("Ashish Priyadarshi, Shiraz Hashim <shiraz.linux.kernel@gmail.com>");
1093MODULE_DESCRIPTION("MTD SMI driver for serial nor flash chips"); 1093MODULE_DESCRIPTION("MTD SMI driver for serial nor flash chips");
diff --git a/drivers/pwm/pwm-spear.c b/drivers/pwm/pwm-spear.c
index 8ad26b8bf418..cb2d4f0f9711 100644
--- a/drivers/pwm/pwm-spear.c
+++ b/drivers/pwm/pwm-spear.c
@@ -2,7 +2,7 @@
2 * ST Microelectronics SPEAr Pulse Width Modulator driver 2 * ST Microelectronics SPEAr Pulse Width Modulator driver
3 * 3 *
4 * Copyright (C) 2012 ST Microelectronics 4 * Copyright (C) 2012 ST Microelectronics
5 * Shiraz Hashim <shiraz.hashim@st.com> 5 * Shiraz Hashim <shiraz.linux.kernel@gmail.com>
6 * 6 *
7 * This file is licensed under the terms of the GNU General Public 7 * This file is licensed under the terms of the GNU General Public
8 * License version 2. This program is licensed "as is" without any 8 * License version 2. This program is licensed "as is" without any
@@ -264,6 +264,6 @@ static struct platform_driver spear_pwm_driver = {
264module_platform_driver(spear_pwm_driver); 264module_platform_driver(spear_pwm_driver);
265 265
266MODULE_LICENSE("GPL"); 266MODULE_LICENSE("GPL");
267MODULE_AUTHOR("Shiraz Hashim <shiraz.hashim@st.com>"); 267MODULE_AUTHOR("Shiraz Hashim <shiraz.linux.kernel@gmail.com>");
268MODULE_AUTHOR("Viresh Kumar <viresh.kumar@linaro.com>"); 268MODULE_AUTHOR("Viresh Kumar <viresh.kumar@linaro.com>");
269MODULE_ALIAS("platform:spear-pwm"); 269MODULE_ALIAS("platform:spear-pwm");
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
index 1ec08c198b66..a8015a7a55bb 100644
--- a/include/asm-generic/pgtable.h
+++ b/include/asm-generic/pgtable.h
@@ -693,24 +693,35 @@ static inline int pmd_numa(pmd_t pmd)
693#ifndef pte_mknonnuma 693#ifndef pte_mknonnuma
694static inline pte_t pte_mknonnuma(pte_t pte) 694static inline pte_t pte_mknonnuma(pte_t pte)
695{ 695{
696 pte = pte_clear_flags(pte, _PAGE_NUMA); 696 pteval_t val = pte_val(pte);
697 return pte_set_flags(pte, _PAGE_PRESENT|_PAGE_ACCESSED); 697
698 val &= ~_PAGE_NUMA;
699 val |= (_PAGE_PRESENT|_PAGE_ACCESSED);
700 return __pte(val);
698} 701}
699#endif 702#endif
700 703
701#ifndef pmd_mknonnuma 704#ifndef pmd_mknonnuma
702static inline pmd_t pmd_mknonnuma(pmd_t pmd) 705static inline pmd_t pmd_mknonnuma(pmd_t pmd)
703{ 706{
704 pmd = pmd_clear_flags(pmd, _PAGE_NUMA); 707 pmdval_t val = pmd_val(pmd);
705 return pmd_set_flags(pmd, _PAGE_PRESENT|_PAGE_ACCESSED); 708
709 val &= ~_PAGE_NUMA;
710 val |= (_PAGE_PRESENT|_PAGE_ACCESSED);
711
712 return __pmd(val);
706} 713}
707#endif 714#endif
708 715
709#ifndef pte_mknuma 716#ifndef pte_mknuma
710static inline pte_t pte_mknuma(pte_t pte) 717static inline pte_t pte_mknuma(pte_t pte)
711{ 718{
712 pte = pte_set_flags(pte, _PAGE_NUMA); 719 pteval_t val = pte_val(pte);
713 return pte_clear_flags(pte, _PAGE_PRESENT); 720
721 val &= ~_PAGE_PRESENT;
722 val |= _PAGE_NUMA;
723
724 return __pte(val);
714} 725}
715#endif 726#endif
716 727
@@ -729,8 +740,12 @@ static inline void ptep_set_numa(struct mm_struct *mm, unsigned long addr,
729#ifndef pmd_mknuma 740#ifndef pmd_mknuma
730static inline pmd_t pmd_mknuma(pmd_t pmd) 741static inline pmd_t pmd_mknuma(pmd_t pmd)
731{ 742{
732 pmd = pmd_set_flags(pmd, _PAGE_NUMA); 743 pmdval_t val = pmd_val(pmd);
733 return pmd_clear_flags(pmd, _PAGE_PRESENT); 744
745 val &= ~_PAGE_PRESENT;
746 val |= _PAGE_NUMA;
747
748 return __pmd(val);
734} 749}
735#endif 750#endif
736 751
diff --git a/include/linux/mtd/spear_smi.h b/include/linux/mtd/spear_smi.h
index 8ae1726044c3..581603ac1277 100644
--- a/include/linux/mtd/spear_smi.h
+++ b/include/linux/mtd/spear_smi.h
@@ -1,6 +1,6 @@
1/* 1/*
2 * Copyright © 2010 ST Microelectronics 2 * Copyright © 2010 ST Microelectronics
3 * Shiraz Hashim <shiraz.hashim@st.com> 3 * Shiraz Hashim <shiraz.linux.kernel@gmail.com>
4 * 4 *
5 * This file is licensed under the terms of the GNU General Public 5 * This file is licensed under the terms of the GNU General Public
6 * License version 2. This program is licensed "as is" without any 6 * License version 2. This program is licensed "as is" without any
diff --git a/include/linux/wait.h b/include/linux/wait.h
index e7d9d9ed14f5..bd68819f0815 100644
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -191,11 +191,23 @@ wait_queue_head_t *bit_waitqueue(void *, int);
191 (!__builtin_constant_p(state) || \ 191 (!__builtin_constant_p(state) || \
192 state == TASK_INTERRUPTIBLE || state == TASK_KILLABLE) \ 192 state == TASK_INTERRUPTIBLE || state == TASK_KILLABLE) \
193 193
194/*
195 * The below macro ___wait_event() has an explicit shadow of the __ret
196 * variable when used from the wait_event_*() macros.
197 *
198 * This is so that both can use the ___wait_cond_timeout() construct
199 * to wrap the condition.
200 *
201 * The type inconsistency of the wait_event_*() __ret variable is also
202 * on purpose; we use long where we can return timeout values and int
203 * otherwise.
204 */
205
194#define ___wait_event(wq, condition, state, exclusive, ret, cmd) \ 206#define ___wait_event(wq, condition, state, exclusive, ret, cmd) \
195({ \ 207({ \
196 __label__ __out; \ 208 __label__ __out; \
197 wait_queue_t __wait; \ 209 wait_queue_t __wait; \
198 long __ret = ret; \ 210 long __ret = ret; /* explicit shadow */ \
199 \ 211 \
200 INIT_LIST_HEAD(&__wait.task_list); \ 212 INIT_LIST_HEAD(&__wait.task_list); \
201 if (exclusive) \ 213 if (exclusive) \
diff --git a/init/Kconfig b/init/Kconfig
index 765018c24cf9..9d3585bb2a7a 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1646,6 +1646,18 @@ config MMAP_ALLOW_UNINITIALIZED
1646 1646
1647 See Documentation/nommu-mmap.txt for more information. 1647 See Documentation/nommu-mmap.txt for more information.
1648 1648
1649config SYSTEM_TRUSTED_KEYRING
1650 bool "Provide system-wide ring of trusted keys"
1651 depends on KEYS
1652 help
1653 Provide a system keyring to which trusted keys can be added. Keys in
1654 the keyring are considered to be trusted. Keys may be added at will
1655 by the kernel from compiled-in data and from hardware key stores, but
1656 userspace may only add extra keys if those keys can be verified by
1657 keys already in the keyring.
1658
1659 Keys in this keyring are used by module signature checking.
1660
1649config PROFILING 1661config PROFILING
1650 bool "Profiling support" 1662 bool "Profiling support"
1651 help 1663 help
@@ -1681,18 +1693,6 @@ config BASE_SMALL
1681 default 0 if BASE_FULL 1693 default 0 if BASE_FULL
1682 default 1 if !BASE_FULL 1694 default 1 if !BASE_FULL
1683 1695
1684config SYSTEM_TRUSTED_KEYRING
1685 bool "Provide system-wide ring of trusted keys"
1686 depends on KEYS
1687 help
1688 Provide a system keyring to which trusted keys can be added. Keys in
1689 the keyring are considered to be trusted. Keys may be added at will
1690 by the kernel from compiled-in data and from hardware key stores, but
1691 userspace may only add extra keys if those keys can be verified by
1692 keys already in the keyring.
1693
1694 Keys in this keyring are used by module signature checking.
1695
1696menuconfig MODULES 1696menuconfig MODULES
1697 bool "Enable loadable module support" 1697 bool "Enable loadable module support"
1698 option modules 1698 option modules
diff --git a/kernel/watchdog.c b/kernel/watchdog.c
index e90089fd78e0..516203e665fc 100644
--- a/kernel/watchdog.c
+++ b/kernel/watchdog.c
@@ -138,7 +138,11 @@ static void __touch_watchdog(void)
138 138
139void touch_softlockup_watchdog(void) 139void touch_softlockup_watchdog(void)
140{ 140{
141 __this_cpu_write(watchdog_touch_ts, 0); 141 /*
142 * Preemption can be enabled. It doesn't matter which CPU's timestamp
143 * gets zeroed here, so use the raw_ operation.
144 */
145 raw_cpu_write(watchdog_touch_ts, 0);
142} 146}
143EXPORT_SYMBOL(touch_softlockup_watchdog); 147EXPORT_SYMBOL(touch_softlockup_watchdog);
144 148
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 140b66a874c1..819ac51202c0 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -505,8 +505,7 @@ config DEBUG_VM_RB
505 bool "Debug VM red-black trees" 505 bool "Debug VM red-black trees"
506 depends on DEBUG_VM 506 depends on DEBUG_VM
507 help 507 help
508 Enable this to turn on more extended checks in the virtual-memory 508 Enable VM red-black tree debugging information and extra validations.
509 system that may impact performance.
510 509
511 If unsure, say N. 510 If unsure, say N.
512 511
diff --git a/mm/filemap.c b/mm/filemap.c
index a82fbe4c9e8e..5020b280a771 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -2581,7 +2581,6 @@ EXPORT_SYMBOL(generic_perform_write);
2581 * @iocb: IO state structure (file, offset, etc.) 2581 * @iocb: IO state structure (file, offset, etc.)
2582 * @iov: vector with data to write 2582 * @iov: vector with data to write
2583 * @nr_segs: number of segments in the vector 2583 * @nr_segs: number of segments in the vector
2584 * @ppos: position where to write
2585 * 2584 *
2586 * This function does all the work needed for actually writing data to a 2585 * This function does all the work needed for actually writing data to a
2587 * file. It does all basic checks, removes SUID from the file, updates 2586 * file. It does all basic checks, removes SUID from the file, updates
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 64635f5278ff..b4b1feba6472 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -1536,16 +1536,23 @@ pmd_t *page_check_address_pmd(struct page *page,
1536 enum page_check_address_pmd_flag flag, 1536 enum page_check_address_pmd_flag flag,
1537 spinlock_t **ptl) 1537 spinlock_t **ptl)
1538{ 1538{
1539 pgd_t *pgd;
1540 pud_t *pud;
1539 pmd_t *pmd; 1541 pmd_t *pmd;
1540 1542
1541 if (address & ~HPAGE_PMD_MASK) 1543 if (address & ~HPAGE_PMD_MASK)
1542 return NULL; 1544 return NULL;
1543 1545
1544 pmd = mm_find_pmd(mm, address); 1546 pgd = pgd_offset(mm, address);
1545 if (!pmd) 1547 if (!pgd_present(*pgd))
1546 return NULL; 1548 return NULL;
1549 pud = pud_offset(pgd, address);
1550 if (!pud_present(*pud))
1551 return NULL;
1552 pmd = pmd_offset(pud, address);
1553
1547 *ptl = pmd_lock(mm, pmd); 1554 *ptl = pmd_lock(mm, pmd);
1548 if (pmd_none(*pmd)) 1555 if (!pmd_present(*pmd))
1549 goto unlock; 1556 goto unlock;
1550 if (pmd_page(*pmd) != page) 1557 if (pmd_page(*pmd) != page)
1551 goto unlock; 1558 goto unlock;
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index dd30f22b35e0..246192929a2d 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -1172,6 +1172,7 @@ static void return_unused_surplus_pages(struct hstate *h,
1172 while (nr_pages--) { 1172 while (nr_pages--) {
1173 if (!free_pool_huge_page(h, &node_states[N_MEMORY], 1)) 1173 if (!free_pool_huge_page(h, &node_states[N_MEMORY], 1))
1174 break; 1174 break;
1175 cond_resched_lock(&hugetlb_lock);
1175 } 1176 }
1176} 1177}
1177 1178
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 9b6497eda806..3f56c8deb3c0 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1158,7 +1158,7 @@ unsigned long reclaim_clean_pages_from_list(struct zone *zone,
1158 TTU_UNMAP|TTU_IGNORE_ACCESS, 1158 TTU_UNMAP|TTU_IGNORE_ACCESS,
1159 &dummy1, &dummy2, &dummy3, &dummy4, &dummy5, true); 1159 &dummy1, &dummy2, &dummy3, &dummy4, &dummy5, true);
1160 list_splice(&clean_pages, page_list); 1160 list_splice(&clean_pages, page_list);
1161 __mod_zone_page_state(zone, NR_ISOLATED_FILE, -ret); 1161 mod_zone_page_state(zone, NR_ISOLATED_FILE, -ret);
1162 return ret; 1162 return ret;
1163} 1163}
1164 1164