Commit 68b8dffc authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'akpm' (patches from Andrew)

Merge misc fixes from Andrew Morton:
 "8 fixes"

* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
  MAINTAINERS: demote ARM port to "odd fixes"
  MAINTAINERS: correct rmk's email address
  mm/kmemleak.c: wait for scan completion before disabling free
  mm/memcontrol.c: fix parameter description mismatch
  mm/vmstat.c: fix vmstat_update() preemption BUG
  mm/page_owner: fix recursion bug after changing skip entries
  ipc/shm.c: add split function to shm_vm_ops
  mm, slab: memcg_link the SLAB's kmem_cache
parents a2601d78 18bd4904
...@@ -1060,41 +1060,42 @@ ARM PORT ...@@ -1060,41 +1060,42 @@ ARM PORT
M: Russell King <linux@armlinux.org.uk> M: Russell King <linux@armlinux.org.uk>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
W: http://www.armlinux.org.uk/ W: http://www.armlinux.org.uk/
S: Maintained S: Odd Fixes
T: git git://git.armlinux.org.uk/~rmk/linux-arm.git T: git git://git.armlinux.org.uk/~rmk/linux-arm.git
F: arch/arm/ F: arch/arm/
X: arch/arm/boot/dts/
ARM PRIMECELL AACI PL041 DRIVER ARM PRIMECELL AACI PL041 DRIVER
M: Russell King <linux@armlinux.org.uk> M: Russell King <linux@armlinux.org.uk>
S: Maintained S: Odd Fixes
F: sound/arm/aaci.* F: sound/arm/aaci.*
ARM PRIMECELL BUS SUPPORT ARM PRIMECELL BUS SUPPORT
M: Russell King <linux@armlinux.org.uk> M: Russell King <linux@armlinux.org.uk>
S: Maintained S: Odd Fixes
F: drivers/amba/ F: drivers/amba/
F: include/linux/amba/bus.h F: include/linux/amba/bus.h
ARM PRIMECELL CLCD PL110 DRIVER ARM PRIMECELL CLCD PL110 DRIVER
M: Russell King <linux@armlinux.org.uk> M: Russell King <linux@armlinux.org.uk>
S: Maintained S: Odd Fixes
F: drivers/video/fbdev/amba-clcd.* F: drivers/video/fbdev/amba-clcd.*
ARM PRIMECELL KMI PL050 DRIVER ARM PRIMECELL KMI PL050 DRIVER
M: Russell King <linux@armlinux.org.uk> M: Russell King <linux@armlinux.org.uk>
S: Maintained S: Odd Fixes
F: drivers/input/serio/ambakmi.* F: drivers/input/serio/ambakmi.*
F: include/linux/amba/kmi.h F: include/linux/amba/kmi.h
ARM PRIMECELL MMCI PL180/1 DRIVER ARM PRIMECELL MMCI PL180/1 DRIVER
M: Russell King <linux@armlinux.org.uk> M: Russell King <linux@armlinux.org.uk>
S: Maintained S: Odd Fixes
F: drivers/mmc/host/mmci.* F: drivers/mmc/host/mmci.*
F: include/linux/amba/mmci.h F: include/linux/amba/mmci.h
ARM PRIMECELL UART PL010 AND PL011 DRIVERS ARM PRIMECELL UART PL010 AND PL011 DRIVERS
M: Russell King <linux@armlinux.org.uk> M: Russell King <linux@armlinux.org.uk>
S: Maintained S: Odd Fixes
F: drivers/tty/serial/amba-pl01*.c F: drivers/tty/serial/amba-pl01*.c
F: include/linux/amba/serial.h F: include/linux/amba/serial.h
...@@ -8434,7 +8435,7 @@ S: Orphan ...@@ -8434,7 +8435,7 @@ S: Orphan
F: drivers/net/wireless/marvell/libertas/ F: drivers/net/wireless/marvell/libertas/
MARVELL MACCHIATOBIN SUPPORT MARVELL MACCHIATOBIN SUPPORT
M: Russell King <rmk@armlinux.org.uk> M: Russell King <linux@armlinux.org.uk>
L: linux-arm-kernel@lists.infradead.org L: linux-arm-kernel@lists.infradead.org
S: Maintained S: Maintained
F: arch/arm64/boot/dts/marvell/armada-8040-mcbin.dts F: arch/arm64/boot/dts/marvell/armada-8040-mcbin.dts
...@@ -8447,7 +8448,7 @@ F: drivers/net/ethernet/marvell/mv643xx_eth.* ...@@ -8447,7 +8448,7 @@ F: drivers/net/ethernet/marvell/mv643xx_eth.*
F: include/linux/mv643xx.h F: include/linux/mv643xx.h
MARVELL MV88X3310 PHY DRIVER MARVELL MV88X3310 PHY DRIVER
M: Russell King <rmk@armlinux.org.uk> M: Russell King <linux@armlinux.org.uk>
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
S: Maintained S: Maintained
F: drivers/net/phy/marvell10g.c F: drivers/net/phy/marvell10g.c
...@@ -12875,6 +12876,19 @@ S: Maintained ...@@ -12875,6 +12876,19 @@ S: Maintained
F: drivers/net/ethernet/socionext/netsec.c F: drivers/net/ethernet/socionext/netsec.c
F: Documentation/devicetree/bindings/net/socionext-netsec.txt F: Documentation/devicetree/bindings/net/socionext-netsec.txt
SOLIDRUN CLEARFOG SUPPORT
M: Russell King <linux@armlinux.org.uk>
S: Maintained
F: arch/arm/boot/dts/armada-388-clearfog*
F: arch/arm/boot/dts/armada-38x-solidrun-*
SOLIDRUN CUBOX-I/HUMMINGBOARD SUPPORT
M: Russell King <linux@armlinux.org.uk>
S: Maintained
F: arch/arm/boot/dts/imx6*-cubox-i*
F: arch/arm/boot/dts/imx6*-hummingboard*
F: arch/arm/boot/dts/imx6*-sr-*
SONIC NETWORK DRIVER SONIC NETWORK DRIVER
M: Thomas Bogendoerfer <tsbogend@alpha.franken.de> M: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
......
...@@ -386,6 +386,17 @@ static int shm_fault(struct vm_fault *vmf) ...@@ -386,6 +386,17 @@ static int shm_fault(struct vm_fault *vmf)
return sfd->vm_ops->fault(vmf); return sfd->vm_ops->fault(vmf);
} }
static int shm_split(struct vm_area_struct *vma, unsigned long addr)
{
struct file *file = vma->vm_file;
struct shm_file_data *sfd = shm_file_data(file);
if (sfd->vm_ops && sfd->vm_ops->split)
return sfd->vm_ops->split(vma, addr);
return 0;
}
#ifdef CONFIG_NUMA #ifdef CONFIG_NUMA
static int shm_set_policy(struct vm_area_struct *vma, struct mempolicy *new) static int shm_set_policy(struct vm_area_struct *vma, struct mempolicy *new)
{ {
...@@ -510,6 +521,7 @@ static const struct vm_operations_struct shm_vm_ops = { ...@@ -510,6 +521,7 @@ static const struct vm_operations_struct shm_vm_ops = {
.open = shm_open, /* callback for a new vm-area open */ .open = shm_open, /* callback for a new vm-area open */
.close = shm_close, /* callback for when the vm-area is released */ .close = shm_close, /* callback for when the vm-area is released */
.fault = shm_fault, .fault = shm_fault,
.split = shm_split,
#if defined(CONFIG_NUMA) #if defined(CONFIG_NUMA)
.set_policy = shm_set_policy, .set_policy = shm_set_policy,
.get_policy = shm_get_policy, .get_policy = shm_get_policy,
......
...@@ -1657,8 +1657,7 @@ static void start_scan_thread(void) ...@@ -1657,8 +1657,7 @@ static void start_scan_thread(void)
} }
/* /*
* Stop the automatic memory scanning thread. This function must be called * Stop the automatic memory scanning thread.
* with the scan_mutex held.
*/ */
static void stop_scan_thread(void) static void stop_scan_thread(void)
{ {
...@@ -1921,12 +1920,15 @@ static void kmemleak_do_cleanup(struct work_struct *work) ...@@ -1921,12 +1920,15 @@ static void kmemleak_do_cleanup(struct work_struct *work)
{ {
stop_scan_thread(); stop_scan_thread();
mutex_lock(&scan_mutex);
/* /*
* Once the scan thread has stopped, it is safe to no longer track * Once it is made sure that kmemleak_scan has stopped, it is safe to no
* object freeing. Ordering of the scan thread stopping and the memory * longer track object freeing. Ordering of the scan thread stopping and
* accesses below is guaranteed by the kthread_stop() function. * the memory accesses below is guaranteed by the kthread_stop()
* function.
*/ */
kmemleak_free_enabled = 0; kmemleak_free_enabled = 0;
mutex_unlock(&scan_mutex);
if (!kmemleak_found_leaks) if (!kmemleak_found_leaks)
__kmemleak_do_cleanup(); __kmemleak_do_cleanup();
......
...@@ -714,9 +714,9 @@ static struct mem_cgroup *get_mem_cgroup_from_mm(struct mm_struct *mm) ...@@ -714,9 +714,9 @@ static struct mem_cgroup *get_mem_cgroup_from_mm(struct mm_struct *mm)
* invocations for reference counting, or use mem_cgroup_iter_break() * invocations for reference counting, or use mem_cgroup_iter_break()
* to cancel a hierarchy walk before the round-trip is complete. * to cancel a hierarchy walk before the round-trip is complete.
* *
* Reclaimers can specify a zone and a priority level in @reclaim to * Reclaimers can specify a node and a priority level in @reclaim to
* divide up the memcgs in the hierarchy among all concurrent * divide up the memcgs in the hierarchy among all concurrent
* reclaimers operating on the same zone and priority. * reclaimers operating on the same node and priority.
*/ */
struct mem_cgroup *mem_cgroup_iter(struct mem_cgroup *root, struct mem_cgroup *mem_cgroup_iter(struct mem_cgroup *root,
struct mem_cgroup *prev, struct mem_cgroup *prev,
...@@ -2299,7 +2299,7 @@ void memcg_kmem_put_cache(struct kmem_cache *cachep) ...@@ -2299,7 +2299,7 @@ void memcg_kmem_put_cache(struct kmem_cache *cachep)
} }
/** /**
* memcg_kmem_charge: charge a kmem page * memcg_kmem_charge_memcg: charge a kmem page
* @page: page to charge * @page: page to charge
* @gfp: reclaim mode * @gfp: reclaim mode
* @order: allocation order * @order: allocation order
......
...@@ -123,13 +123,13 @@ void __reset_page_owner(struct page *page, unsigned int order) ...@@ -123,13 +123,13 @@ void __reset_page_owner(struct page *page, unsigned int order)
static inline bool check_recursive_alloc(struct stack_trace *trace, static inline bool check_recursive_alloc(struct stack_trace *trace,
unsigned long ip) unsigned long ip)
{ {
int i, count; int i;
if (!trace->nr_entries) if (!trace->nr_entries)
return false; return false;
for (i = 0, count = 0; i < trace->nr_entries; i++) { for (i = 0; i < trace->nr_entries; i++) {
if (trace->entries[i] == ip && ++count == 2) if (trace->entries[i] == ip)
return true; return true;
} }
......
...@@ -1283,6 +1283,7 @@ void __init kmem_cache_init(void) ...@@ -1283,6 +1283,7 @@ void __init kmem_cache_init(void)
nr_node_ids * sizeof(struct kmem_cache_node *), nr_node_ids * sizeof(struct kmem_cache_node *),
SLAB_HWCACHE_ALIGN, 0, 0); SLAB_HWCACHE_ALIGN, 0, 0);
list_add(&kmem_cache->list, &slab_caches); list_add(&kmem_cache->list, &slab_caches);
memcg_link_cache(kmem_cache);
slab_state = PARTIAL; slab_state = PARTIAL;
/* /*
......
...@@ -1839,9 +1839,11 @@ static void vmstat_update(struct work_struct *w) ...@@ -1839,9 +1839,11 @@ static void vmstat_update(struct work_struct *w)
* to occur in the future. Keep on running the * to occur in the future. Keep on running the
* update worker thread. * update worker thread.
*/ */
preempt_disable();
queue_delayed_work_on(smp_processor_id(), mm_percpu_wq, queue_delayed_work_on(smp_processor_id(), mm_percpu_wq,
this_cpu_ptr(&vmstat_work), this_cpu_ptr(&vmstat_work),
round_jiffies_relative(sysctl_stat_interval)); round_jiffies_relative(sysctl_stat_interval));
preempt_enable();
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment