Commit ea2388f2813ec7871c40a8b18afb80b5674d6e1d

Authored by Linus Torvalds

Merge branch 'akpm' (incoming from Andrew)

Merge misc fixes from Andrew Morton:
 "13 fixes"

* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
  thp: close race between split and zap huge pages
  mm: fix new kernel-doc warning in filemap.c
  mm: fix CONFIG_DEBUG_VM_RB description
  mm: use paravirt friendly ops for NUMA hinting ptes
  mips: export flush_icache_range
  mm/hugetlb.c: add cond_resched_lock() in return_unused_surplus_pages()
  wait: explain the shadowing and type inconsistencies
  Shiraz has moved
  Documentation/vm/numa_memory_policy.txt: fix wrong document in numa_memory_policy.txt
  powerpc/mm: fix ".__node_distance" undefined
  kernel/watchdog.c:touch_softlockup_watchdog(): use raw_cpu_write()
  init/Kconfig: move the trusted keyring config option to general setup
  vmscan: reclaim_clean_pages_from_list() must use mod_zone_page_state()

Showing 23 changed files Side-by-side Diff

... ... @@ -99,6 +99,7 @@
99 99 Sam Ravnborg <sam@mars.ravnborg.org>
100 100 Sascha Hauer <s.hauer@pengutronix.de>
101 101 S.Çağlar Onur <caglar@pardus.org.tr>
  102 +Shiraz Hashim <shiraz.linux.kernel@gmail.com> <shiraz.hashim@st.com>
102 103 Simon Kelley <simon@thekelleys.org.uk>
103 104 Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>
104 105 Stephen Hemminger <shemminger@osdl.org>
Documentation/vm/numa_memory_policy.txt
... ... @@ -174,7 +174,6 @@
174 174 allocation fails, the kernel will search other nodes, in order of
175 175 increasing distance from the preferred node based on information
176 176 provided by the platform firmware.
177   - containing the cpu where the allocation takes place.
178 177  
179 178 Internally, the Preferred policy uses a single node--the
180 179 preferred_node member of struct mempolicy. When the internal
181 180  
... ... @@ -275,9 +274,9 @@
275 274 For example, consider a task that is attached to a cpuset with
276 275 mems 2-5 that sets an Interleave policy over the same set with
277 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 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 281 Thanks to the consistent remapping, applications preparing
283 282 nodemasks to specify memory policies using this flag should
... ... @@ -8315,7 +8315,7 @@
8315 8315  
8316 8316 SPEAR PLATFORM SUPPORT
8317 8317 M: Viresh Kumar <viresh.linux@gmail.com>
8318   -M: Shiraz Hashim <shiraz.hashim@st.com>
  8318 +M: Shiraz Hashim <shiraz.linux.kernel@gmail.com>
8319 8319 L: spear-devel@list.st.com
8320 8320 L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
8321 8321 W: http://www.st.com/spear
arch/arm/boot/dts/spear320-hmi.dts
1 1 /*
2 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 6 * The code contained herein is licensed under the GNU General Public
7 7 * License. You may obtain a copy of the GNU General Public License
arch/arm/mach-spear/headsmp.S
... ... @@ -3,7 +3,7 @@
3 3 *
4 4 * Picked from realview
5 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 8 * This program is free software; you can redistribute it and/or modify
9 9 * it under the terms of the GNU General Public License version 2 as
arch/arm/mach-spear/platsmp.c
... ... @@ -4,7 +4,7 @@
4 4 * based upon linux/arch/arm/mach-realview/platsmp.c
5 5 *
6 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 9 * This program is free software; you can redistribute it and/or modify
10 10 * it under the terms of the GNU General Public License version 2 as
arch/arm/mach-spear/time.c
... ... @@ -2,7 +2,7 @@
2 2 * arch/arm/plat-spear/time.c
3 3 *
4 4 * Copyright (C) 2010 ST Microelectronics
5   - * Shiraz Hashim<shiraz.hashim@st.com>
  5 + * Shiraz Hashim<shiraz.linux.kernel@gmail.com>
6 6 *
7 7 * This file is licensed under the terms of the GNU General Public
8 8 * License version 2. This program is licensed "as is" without any
arch/mips/mm/cache.c
... ... @@ -29,15 +29,15 @@
29 29 void (*flush_cache_page)(struct vm_area_struct *vma, unsigned long page,
30 30 unsigned long pfn);
31 31 void (*flush_icache_range)(unsigned long start, unsigned long end);
  32 +EXPORT_SYMBOL_GPL(flush_icache_range);
32 33 void (*local_flush_icache_range)(unsigned long start, unsigned long end);
33 34  
34 35 void (*__flush_cache_vmap)(void);
35 36 void (*__flush_cache_vunmap)(void);
36 37  
37 38 void (*__flush_kernel_vmap_range)(unsigned long vaddr, int size);
38   -void (*__invalidate_kernel_vmap_range)(unsigned long vaddr, int size);
39   -
40 39 EXPORT_SYMBOL_GPL(__flush_kernel_vmap_range);
  40 +void (*__invalidate_kernel_vmap_range)(unsigned long vaddr, int size);
41 41  
42 42 /* MIPS specific cache operations */
43 43 void (*flush_cache_sigtramp)(unsigned long addr);
arch/powerpc/mm/numa.c
... ... @@ -232,6 +232,7 @@
232 232  
233 233 return distance;
234 234 }
  235 +EXPORT_SYMBOL(__node_distance);
235 236  
236 237 static void initialize_distance_lookup_table(int nid,
237 238 const __be32 *associativity)
drivers/gpio/gpio-spear-spics.c
... ... @@ -2,7 +2,7 @@
2 2 * SPEAr platform SPI chipselect abstraction over gpiolib
3 3 *
4 4 * Copyright (C) 2012 ST Microelectronics
5   - * Shiraz Hashim <shiraz.hashim@st.com>
  5 + * Shiraz Hashim <shiraz.linux.kernel@gmail.com>
6 6 *
7 7 * This file is licensed under the terms of the GNU General Public
8 8 * License version 2. This program is licensed "as is" without any
... ... @@ -205,7 +205,7 @@
205 205 }
206 206 subsys_initcall(spics_gpio_init);
207 207  
208   -MODULE_AUTHOR("Shiraz Hashim <shiraz.hashim@st.com>");
  208 +MODULE_AUTHOR("Shiraz Hashim <shiraz.linux.kernel@gmail.com>");
209 209 MODULE_DESCRIPTION("ST Microlectronics SPEAr SPI Chip Select Abstraction");
210 210 MODULE_LICENSE("GPL");
drivers/irqchip/spear-shirq.c
... ... @@ -5,7 +5,7 @@
5 5 * Viresh Kumar <viresh.linux@gmail.com>
6 6 *
7 7 * Copyright (C) 2012 ST Microelectronics
8   - * Shiraz Hashim <shiraz.hashim@st.com>
  8 + * Shiraz Hashim <shiraz.linux.kernel@gmail.com>
9 9 *
10 10 * This file is licensed under the terms of the GNU General Public
11 11 * License version 2. This program is licensed "as is" without any
drivers/mtd/devices/spear_smi.c
... ... @@ -6,7 +6,7 @@
6 6 *
7 7 * Copyright © 2010 STMicroelectronics.
8 8 * Ashish Priyadarshi
9   - * Shiraz Hashim <shiraz.hashim@st.com>
  9 + * Shiraz Hashim <shiraz.linux.kernel@gmail.com>
10 10 *
11 11 * This file is licensed under the terms of the GNU General Public
12 12 * License version 2. This program is licensed "as is" without any
... ... @@ -1089,6 +1089,6 @@
1089 1089 module_platform_driver(spear_smi_driver);
1090 1090  
1091 1091 MODULE_LICENSE("GPL");
1092   -MODULE_AUTHOR("Ashish Priyadarshi, Shiraz Hashim <shiraz.hashim@st.com>");
  1092 +MODULE_AUTHOR("Ashish Priyadarshi, Shiraz Hashim <shiraz.linux.kernel@gmail.com>");
1093 1093 MODULE_DESCRIPTION("MTD SMI driver for serial nor flash chips");
drivers/pwm/pwm-spear.c
... ... @@ -2,7 +2,7 @@
2 2 * ST Microelectronics SPEAr Pulse Width Modulator driver
3 3 *
4 4 * Copyright (C) 2012 ST Microelectronics
5   - * Shiraz Hashim <shiraz.hashim@st.com>
  5 + * Shiraz Hashim <shiraz.linux.kernel@gmail.com>
6 6 *
7 7 * This file is licensed under the terms of the GNU General Public
8 8 * License version 2. This program is licensed "as is" without any
... ... @@ -264,7 +264,7 @@
264 264 module_platform_driver(spear_pwm_driver);
265 265  
266 266 MODULE_LICENSE("GPL");
267   -MODULE_AUTHOR("Shiraz Hashim <shiraz.hashim@st.com>");
  267 +MODULE_AUTHOR("Shiraz Hashim <shiraz.linux.kernel@gmail.com>");
268 268 MODULE_AUTHOR("Viresh Kumar <viresh.kumar@linaro.com>");
269 269 MODULE_ALIAS("platform:spear-pwm");
include/asm-generic/pgtable.h
... ... @@ -693,24 +693,35 @@
693 693 #ifndef pte_mknonnuma
694 694 static inline pte_t pte_mknonnuma(pte_t pte)
695 695 {
696   - pte = pte_clear_flags(pte, _PAGE_NUMA);
697   - return pte_set_flags(pte, _PAGE_PRESENT|_PAGE_ACCESSED);
  696 + pteval_t val = pte_val(pte);
  697 +
  698 + val &= ~_PAGE_NUMA;
  699 + val |= (_PAGE_PRESENT|_PAGE_ACCESSED);
  700 + return __pte(val);
698 701 }
699 702 #endif
700 703  
701 704 #ifndef pmd_mknonnuma
702 705 static inline pmd_t pmd_mknonnuma(pmd_t pmd)
703 706 {
704   - pmd = pmd_clear_flags(pmd, _PAGE_NUMA);
705   - return pmd_set_flags(pmd, _PAGE_PRESENT|_PAGE_ACCESSED);
  707 + pmdval_t val = pmd_val(pmd);
  708 +
  709 + val &= ~_PAGE_NUMA;
  710 + val |= (_PAGE_PRESENT|_PAGE_ACCESSED);
  711 +
  712 + return __pmd(val);
706 713 }
707 714 #endif
708 715  
709 716 #ifndef pte_mknuma
710 717 static inline pte_t pte_mknuma(pte_t pte)
711 718 {
712   - pte = pte_set_flags(pte, _PAGE_NUMA);
713   - return pte_clear_flags(pte, _PAGE_PRESENT);
  719 + pteval_t val = pte_val(pte);
  720 +
  721 + val &= ~_PAGE_PRESENT;
  722 + val |= _PAGE_NUMA;
  723 +
  724 + return __pte(val);
714 725 }
715 726 #endif
716 727  
... ... @@ -729,8 +740,12 @@
729 740 #ifndef pmd_mknuma
730 741 static inline pmd_t pmd_mknuma(pmd_t pmd)
731 742 {
732   - pmd = pmd_set_flags(pmd, _PAGE_NUMA);
733   - return pmd_clear_flags(pmd, _PAGE_PRESENT);
  743 + pmdval_t val = pmd_val(pmd);
  744 +
  745 + val &= ~_PAGE_PRESENT;
  746 + val |= _PAGE_NUMA;
  747 +
  748 + return __pmd(val);
734 749 }
735 750 #endif
736 751  
include/linux/mtd/spear_smi.h
1 1 /*
2 2 * Copyright © 2010 ST Microelectronics
3   - * Shiraz Hashim <shiraz.hashim@st.com>
  3 + * Shiraz Hashim <shiraz.linux.kernel@gmail.com>
4 4 *
5 5 * This file is licensed under the terms of the GNU General Public
6 6 * License version 2. This program is licensed "as is" without any
include/linux/wait.h
... ... @@ -191,11 +191,23 @@
191 191 (!__builtin_constant_p(state) || \
192 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 206 #define ___wait_event(wq, condition, state, exclusive, ret, cmd) \
195 207 ({ \
196 208 __label__ __out; \
197 209 wait_queue_t __wait; \
198   - long __ret = ret; \
  210 + long __ret = ret; /* explicit shadow */ \
199 211 \
200 212 INIT_LIST_HEAD(&__wait.task_list); \
201 213 if (exclusive) \
... ... @@ -1646,6 +1646,18 @@
1646 1646  
1647 1647 See Documentation/nommu-mmap.txt for more information.
1648 1648  
  1649 +config 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 +
1649 1661 config PROFILING
1650 1662 bool "Profiling support"
1651 1663 help
... ... @@ -1680,18 +1692,6 @@
1680 1692 int
1681 1693 default 0 if BASE_FULL
1682 1694 default 1 if !BASE_FULL
1683   -
1684   -config 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 1695  
1696 1696 menuconfig MODULES
1697 1697 bool "Enable loadable module support"
... ... @@ -138,7 +138,11 @@
138 138  
139 139 void 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 }
143 147 EXPORT_SYMBOL(touch_softlockup_watchdog);
144 148  
... ... @@ -505,8 +505,7 @@
505 505 bool "Debug VM red-black trees"
506 506 depends on DEBUG_VM
507 507 help
508   - Enable this to turn on more extended checks in the virtual-memory
509   - system that may impact performance.
  508 + Enable VM red-black tree debugging information and extra validations.
510 509  
511 510 If unsure, say N.
512 511  
... ... @@ -2581,7 +2581,6 @@
2581 2581 * @iocb: IO state structure (file, offset, etc.)
2582 2582 * @iov: vector with data to write
2583 2583 * @nr_segs: number of segments in the vector
2584   - * @ppos: position where to write
2585 2584 *
2586 2585 * This function does all the work needed for actually writing data to a
2587 2586 * file. It does all basic checks, removes SUID from the file, updates
... ... @@ -1536,16 +1536,23 @@
1536 1536 enum page_check_address_pmd_flag flag,
1537 1537 spinlock_t **ptl)
1538 1538 {
  1539 + pgd_t *pgd;
  1540 + pud_t *pud;
1539 1541 pmd_t *pmd;
1540 1542  
1541 1543 if (address & ~HPAGE_PMD_MASK)
1542 1544 return NULL;
1543 1545  
1544   - pmd = mm_find_pmd(mm, address);
1545   - if (!pmd)
  1546 + pgd = pgd_offset(mm, address);
  1547 + if (!pgd_present(*pgd))
1546 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 1554 *ptl = pmd_lock(mm, pmd);
1548   - if (pmd_none(*pmd))
  1555 + if (!pmd_present(*pmd))
1549 1556 goto unlock;
1550 1557 if (pmd_page(*pmd) != page)
1551 1558 goto unlock;
... ... @@ -1172,6 +1172,7 @@
1172 1172 while (nr_pages--) {
1173 1173 if (!free_pool_huge_page(h, &node_states[N_MEMORY], 1))
1174 1174 break;
  1175 + cond_resched_lock(&hugetlb_lock);
1175 1176 }
1176 1177 }
1177 1178  
... ... @@ -1158,7 +1158,7 @@
1158 1158 TTU_UNMAP|TTU_IGNORE_ACCESS,
1159 1159 &dummy1, &dummy2, &dummy3, &dummy4, &dummy5, true);
1160 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 1162 return ret;
1163 1163 }
1164 1164