Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7c283324 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'akpm' (Andrew's patch-bomb)

Merge misc fixes from Andrew Morton.

* emailed from Andrew Morton <akpm@linux-foundation.org>: (8 patches)
  MAINTAINERS: add maintainer for LED subsystem
  mm: nobootmem: fix sign extend problem in __free_pages_memory()
  drivers/leds: correct __devexit annotations
  memcg: free spare array to avoid memory leak
  namespaces, pid_ns: fix leakage on fork() failure
  hugetlb: prevent BUG_ON in hugetlb_fault() -> hugetlb_cow()
  mm: fix division by 0 in percpu_pagelist_fraction()
  proc/pid/pagemap: correctly report non-present ptes and holes between vmas
parents 9e5869f8 17ff3c1f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -4034,6 +4034,7 @@ F: Documentation/scsi/53c700.txt
F:	drivers/scsi/53c700*

LED SUBSYSTEM
M:	Bryan Wu <bryan.wu@canonical.com>
M:	Richard Purdie <rpurdie@rpsys.net>
S:	Maintained
F:	drivers/leds/
+2 −2
Original line number Diff line number Diff line
@@ -112,7 +112,7 @@ err_free_addr:
	return err;
}

static void __devexit gpio_ext_free(struct netxbig_gpio_ext *gpio_ext)
static void gpio_ext_free(struct netxbig_gpio_ext *gpio_ext)
{
	int i;

@@ -294,7 +294,7 @@ static ssize_t netxbig_led_sata_show(struct device *dev,

static DEVICE_ATTR(sata, 0644, netxbig_led_sata_show, netxbig_led_sata_store);

static void __devexit delete_netxbig_led(struct netxbig_led_data *led_dat)
static void delete_netxbig_led(struct netxbig_led_data *led_dat)
{
	if (led_dat->mode_val[NETXBIG_LED_SATA] != NETXBIG_LED_INVALID_MODE)
		device_remove_file(led_dat->cdev.dev, &dev_attr_sata);
+1 −1
Original line number Diff line number Diff line
@@ -255,7 +255,7 @@ err_free_cmd:
	return ret;
}

static void __devexit delete_ns2_led(struct ns2_led_data *led_dat)
static void delete_ns2_led(struct ns2_led_data *led_dat)
{
	device_remove_file(led_dat->cdev.dev, &dev_attr_sata);
	led_classdev_unregister(&led_dat->cdev);
+10 −2
Original line number Diff line number Diff line
@@ -747,6 +747,8 @@ static void pte_to_pagemap_entry(pagemap_entry_t *pme, pte_t pte)
	else if (pte_present(pte))
		*pme = make_pme(PM_PFRAME(pte_pfn(pte))
				| PM_PSHIFT(PAGE_SHIFT) | PM_PRESENT);
	else
		*pme = make_pme(PM_NOT_PRESENT);
}

#ifdef CONFIG_TRANSPARENT_HUGEPAGE
@@ -761,6 +763,8 @@ static void thp_pmd_to_pagemap_entry(pagemap_entry_t *pme,
	if (pmd_present(pmd))
		*pme = make_pme(PM_PFRAME(pmd_pfn(pmd) + offset)
				| PM_PSHIFT(PAGE_SHIFT) | PM_PRESENT);
	else
		*pme = make_pme(PM_NOT_PRESENT);
}
#else
static inline void thp_pmd_to_pagemap_entry(pagemap_entry_t *pme,
@@ -801,8 +805,10 @@ static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,

		/* check to see if we've left 'vma' behind
		 * and need a new, higher one */
		if (vma && (addr >= vma->vm_end))
		if (vma && (addr >= vma->vm_end)) {
			vma = find_vma(walk->mm, addr);
			pme = make_pme(PM_NOT_PRESENT);
		}

		/* check that 'vma' actually covers this address,
		 * and that it isn't a huge page vma */
@@ -830,6 +836,8 @@ static void huge_pte_to_pagemap_entry(pagemap_entry_t *pme,
	if (pte_present(pte))
		*pme = make_pme(PM_PFRAME(pte_pfn(pte) + offset)
				| PM_PSHIFT(PAGE_SHIFT) | PM_PRESENT);
	else
		*pme = make_pme(PM_NOT_PRESENT);
}

/* This function walks within one hugetlb entry in the single call */
@@ -839,7 +847,7 @@ static int pagemap_hugetlb_range(pte_t *pte, unsigned long hmask,
{
	struct pagemapread *pm = walk->private;
	int err = 0;
	pagemap_entry_t pme = make_pme(PM_NOT_PRESENT);
	pagemap_entry_t pme;

	for (; addr != end; addr += PAGE_SIZE) {
		int offset = (addr & ~hmask) >> PAGE_SHIFT;
+3 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@
#include <linux/audit.h>
#include <linux/memcontrol.h>
#include <linux/ftrace.h>
#include <linux/proc_fs.h>
#include <linux/profile.h>
#include <linux/rmap.h>
#include <linux/ksm.h>
@@ -1464,6 +1465,8 @@ bad_fork_cleanup_io:
	if (p->io_context)
		exit_io_context(p);
bad_fork_cleanup_namespaces:
	if (unlikely(clone_flags & CLONE_NEWPID))
		pid_ns_release_proc(p->nsproxy->pid_ns);
	exit_task_namespaces(p);
bad_fork_cleanup_mm:
	if (p->mm)
Loading