Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

+26 -10
+1
MAINTAINERS
··· 4034 4034 F: drivers/scsi/53c700* 4035 4035 4036 4036 LED SUBSYSTEM 4037 + M: Bryan Wu <bryan.wu@canonical.com> 4037 4038 M: Richard Purdie <rpurdie@rpsys.net> 4038 4039 S: Maintained 4039 4040 F: drivers/leds/
+2 -2
drivers/leds/leds-netxbig.c
··· 112 112 return err; 113 113 } 114 114 115 - static void __devexit gpio_ext_free(struct netxbig_gpio_ext *gpio_ext) 115 + static void gpio_ext_free(struct netxbig_gpio_ext *gpio_ext) 116 116 { 117 117 int i; 118 118 ··· 294 294 295 295 static DEVICE_ATTR(sata, 0644, netxbig_led_sata_show, netxbig_led_sata_store); 296 296 297 - static void __devexit delete_netxbig_led(struct netxbig_led_data *led_dat) 297 + static void delete_netxbig_led(struct netxbig_led_data *led_dat) 298 298 { 299 299 if (led_dat->mode_val[NETXBIG_LED_SATA] != NETXBIG_LED_INVALID_MODE) 300 300 device_remove_file(led_dat->cdev.dev, &dev_attr_sata);
+1 -1
drivers/leds/leds-ns2.c
··· 255 255 return ret; 256 256 } 257 257 258 - static void __devexit delete_ns2_led(struct ns2_led_data *led_dat) 258 + static void delete_ns2_led(struct ns2_led_data *led_dat) 259 259 { 260 260 device_remove_file(led_dat->cdev.dev, &dev_attr_sata); 261 261 led_classdev_unregister(&led_dat->cdev);
+10 -2
fs/proc/task_mmu.c
··· 747 747 else if (pte_present(pte)) 748 748 *pme = make_pme(PM_PFRAME(pte_pfn(pte)) 749 749 | PM_PSHIFT(PAGE_SHIFT) | PM_PRESENT); 750 + else 751 + *pme = make_pme(PM_NOT_PRESENT); 750 752 } 751 753 752 754 #ifdef CONFIG_TRANSPARENT_HUGEPAGE ··· 763 761 if (pmd_present(pmd)) 764 762 *pme = make_pme(PM_PFRAME(pmd_pfn(pmd) + offset) 765 763 | PM_PSHIFT(PAGE_SHIFT) | PM_PRESENT); 764 + else 765 + *pme = make_pme(PM_NOT_PRESENT); 766 766 } 767 767 #else 768 768 static inline void thp_pmd_to_pagemap_entry(pagemap_entry_t *pme, ··· 805 801 806 802 /* check to see if we've left 'vma' behind 807 803 * and need a new, higher one */ 808 - if (vma && (addr >= vma->vm_end)) 804 + if (vma && (addr >= vma->vm_end)) { 809 805 vma = find_vma(walk->mm, addr); 806 + pme = make_pme(PM_NOT_PRESENT); 807 + } 810 808 811 809 /* check that 'vma' actually covers this address, 812 810 * and that it isn't a huge page vma */ ··· 836 830 if (pte_present(pte)) 837 831 *pme = make_pme(PM_PFRAME(pte_pfn(pte) + offset) 838 832 | PM_PSHIFT(PAGE_SHIFT) | PM_PRESENT); 833 + else 834 + *pme = make_pme(PM_NOT_PRESENT); 839 835 } 840 836 841 837 /* This function walks within one hugetlb entry in the single call */ ··· 847 839 { 848 840 struct pagemapread *pm = walk->private; 849 841 int err = 0; 850 - pagemap_entry_t pme = make_pme(PM_NOT_PRESENT); 842 + pagemap_entry_t pme; 851 843 852 844 for (; addr != end; addr += PAGE_SIZE) { 853 845 int offset = (addr & ~hmask) >> PAGE_SHIFT;
+3
kernel/fork.c
··· 47 47 #include <linux/audit.h> 48 48 #include <linux/memcontrol.h> 49 49 #include <linux/ftrace.h> 50 + #include <linux/proc_fs.h> 50 51 #include <linux/profile.h> 51 52 #include <linux/rmap.h> 52 53 #include <linux/ksm.h> ··· 1465 1464 if (p->io_context) 1466 1465 exit_io_context(p); 1467 1466 bad_fork_cleanup_namespaces: 1467 + if (unlikely(clone_flags & CLONE_NEWPID)) 1468 + pid_ns_release_proc(p->nsproxy->pid_ns); 1468 1469 exit_task_namespaces(p); 1469 1470 bad_fork_cleanup_mm: 1470 1471 if (p->mm)
-1
mm/hugetlb.c
··· 2498 2498 if (outside_reserve) { 2499 2499 BUG_ON(huge_pte_none(pte)); 2500 2500 if (unmap_ref_private(mm, vma, old_page, address)) { 2501 - BUG_ON(page_count(old_page) != 1); 2502 2501 BUG_ON(huge_pte_none(pte)); 2503 2502 spin_lock(&mm->page_table_lock); 2504 2503 ptep = huge_pte_offset(mm, address & huge_page_mask(h));
+6
mm/memcontrol.c
··· 4507 4507 swap_buffers: 4508 4508 /* Swap primary and spare array */ 4509 4509 thresholds->spare = thresholds->primary; 4510 + /* If all events are unregistered, free the spare array */ 4511 + if (!new) { 4512 + kfree(thresholds->spare); 4513 + thresholds->spare = NULL; 4514 + } 4515 + 4510 4516 rcu_assign_pointer(thresholds->primary, new); 4511 4517 4512 4518 /* To be sure that nobody uses thresholds */
+1 -2
mm/nobootmem.c
··· 82 82 83 83 static void __init __free_pages_memory(unsigned long start, unsigned long end) 84 84 { 85 - int i; 86 - unsigned long start_aligned, end_aligned; 85 + unsigned long i, start_aligned, end_aligned; 87 86 int order = ilog2(BITS_PER_LONG); 88 87 89 88 start_aligned = (start + (BITS_PER_LONG - 1)) & ~(BITS_PER_LONG - 1);
+2 -2
mm/page_alloc.c
··· 105 105 */ 106 106 unsigned long dirty_balance_reserve __read_mostly; 107 107 108 - int percpu_pagelist_fraction; 108 + int percpu_pagelist_fraction = 8; 109 109 gfp_t gfp_allowed_mask __read_mostly = GFP_BOOT_MASK; 110 110 111 111 #ifdef CONFIG_PM_SLEEP ··· 5203 5203 int ret; 5204 5204 5205 5205 ret = proc_dointvec_minmax(table, write, buffer, length, ppos); 5206 - if (!write || (ret == -EINVAL)) 5206 + if (!write || (ret < 0)) 5207 5207 return ret; 5208 5208 for_each_populated_zone(zone) { 5209 5209 for_each_possible_cpu(cpu) {