diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-28 12:58:03 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-28 12:58:03 -0500 |
commit | e9738946fcb2e23c3bbf0d1bbed8ee2ed8a69038 (patch) | |
tree | a117477cca26b8610b4797aacd1e902430a4ee23 | |
parent | 895c8b7b4623d4f55e260e5dee2574b4f7113105 (diff) | |
parent | c07af4f1ce413d009ea76ee69099f06f73ce75b2 (diff) |
Merge branch 'akpm' (patches from Andrew)
Merge misc fixes from Andrew Morton:
"13 fixes"
* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
mm: add missing __PAGETABLE_{PUD,PMD}_FOLDED defines
mm: page_alloc: revert inadvertent !__GFP_FS retry behavior change
kernel/sys.c: fix UNAME26 for 4.0
mm: memcontrol: use "max" instead of "infinity" in control knobs
zram: use proper type to update max_used_pages
drivers/rtc/rtc-ds1685.c: fix conditional in ds1685_rtc_sysfs_time_regs_{show,store}
nilfs2: fix potential memory overrun on inode
scripts/gdb: add empty package initialization script
rtc: ds1685: remove superfluous checks for out-of-range u8 values
rtc: ds1685: fix ds1685_rtc_alarm_irq_enable build error
memcg: fix low limit calculation
mm/nommu: fix memory leak
ocfs2: update web page + git tree in documentation
-rw-r--r-- | Documentation/cgroups/unified-hierarchy.txt | 4 | ||||
-rw-r--r-- | Documentation/filesystems/dlmfs.txt | 4 | ||||
-rw-r--r-- | Documentation/filesystems/ocfs2.txt | 4 | ||||
-rw-r--r-- | MAINTAINERS | 3 | ||||
-rw-r--r-- | arch/frv/include/asm/pgtable.h | 2 | ||||
-rw-r--r-- | arch/m32r/include/asm/pgtable-2level.h | 1 | ||||
-rw-r--r-- | arch/m68k/include/asm/pgtable_mm.h | 2 | ||||
-rw-r--r-- | arch/mn10300/include/asm/pgtable.h | 2 | ||||
-rw-r--r-- | arch/parisc/include/asm/pgtable.h | 1 | ||||
-rw-r--r-- | arch/s390/include/asm/pgtable.h | 2 | ||||
-rw-r--r-- | drivers/block/zram/zram_drv.c | 2 | ||||
-rw-r--r-- | drivers/rtc/rtc-ds1685.c | 18 | ||||
-rw-r--r-- | fs/nilfs2/btree.c | 47 | ||||
-rw-r--r-- | kernel/sys.c | 3 | ||||
-rw-r--r-- | mm/memcontrol.c | 16 | ||||
-rw-r--r-- | mm/nommu.c | 4 | ||||
-rw-r--r-- | mm/page_alloc.c | 9 | ||||
-rw-r--r-- | scripts/gdb/linux/__init__.py | 1 |
18 files changed, 90 insertions, 35 deletions
diff --git a/Documentation/cgroups/unified-hierarchy.txt b/Documentation/cgroups/unified-hierarchy.txt index 71daa35ec2d9..eb102fb72213 100644 --- a/Documentation/cgroups/unified-hierarchy.txt +++ b/Documentation/cgroups/unified-hierarchy.txt | |||
@@ -404,8 +404,8 @@ supported and the interface files "release_agent" and | |||
404 | be understood as an underflow into the highest possible value, -2 or | 404 | be understood as an underflow into the highest possible value, -2 or |
405 | -10M etc. do not work, so it's not consistent. | 405 | -10M etc. do not work, so it's not consistent. |
406 | 406 | ||
407 | memory.low, memory.high, and memory.max will use the string | 407 | memory.low, memory.high, and memory.max will use the string "max" to |
408 | "infinity" to indicate and set the highest possible value. | 408 | indicate and set the highest possible value. |
409 | 409 | ||
410 | 5. Planned Changes | 410 | 5. Planned Changes |
411 | 411 | ||
diff --git a/Documentation/filesystems/dlmfs.txt b/Documentation/filesystems/dlmfs.txt index 1b528b2ad809..fcf4d509d118 100644 --- a/Documentation/filesystems/dlmfs.txt +++ b/Documentation/filesystems/dlmfs.txt | |||
@@ -5,8 +5,8 @@ system. | |||
5 | 5 | ||
6 | dlmfs is built with OCFS2 as it requires most of its infrastructure. | 6 | dlmfs is built with OCFS2 as it requires most of its infrastructure. |
7 | 7 | ||
8 | Project web page: http://oss.oracle.com/projects/ocfs2 | 8 | Project web page: http://ocfs2.wiki.kernel.org |
9 | Tools web page: http://oss.oracle.com/projects/ocfs2-tools | 9 | Tools web page: https://github.com/markfasheh/ocfs2-tools |
10 | OCFS2 mailing lists: http://oss.oracle.com/projects/ocfs2/mailman/ | 10 | OCFS2 mailing lists: http://oss.oracle.com/projects/ocfs2/mailman/ |
11 | 11 | ||
12 | All code copyright 2005 Oracle except when otherwise noted. | 12 | All code copyright 2005 Oracle except when otherwise noted. |
diff --git a/Documentation/filesystems/ocfs2.txt b/Documentation/filesystems/ocfs2.txt index 28f8c08201e2..4c49e5410595 100644 --- a/Documentation/filesystems/ocfs2.txt +++ b/Documentation/filesystems/ocfs2.txt | |||
@@ -8,8 +8,8 @@ also make it attractive for non-clustered use. | |||
8 | You'll want to install the ocfs2-tools package in order to at least | 8 | You'll want to install the ocfs2-tools package in order to at least |
9 | get "mount.ocfs2" and "ocfs2_hb_ctl". | 9 | get "mount.ocfs2" and "ocfs2_hb_ctl". |
10 | 10 | ||
11 | Project web page: http://oss.oracle.com/projects/ocfs2 | 11 | Project web page: http://ocfs2.wiki.kernel.org |
12 | Tools web page: http://oss.oracle.com/projects/ocfs2-tools | 12 | Tools git tree: https://github.com/markfasheh/ocfs2-tools |
13 | OCFS2 mailing lists: http://oss.oracle.com/projects/ocfs2/mailman/ | 13 | OCFS2 mailing lists: http://oss.oracle.com/projects/ocfs2/mailman/ |
14 | 14 | ||
15 | All code copyright 2005 Oracle except when otherwise noted. | 15 | All code copyright 2005 Oracle except when otherwise noted. |
diff --git a/MAINTAINERS b/MAINTAINERS index ddc5a8cf9a8a..eaf999638a65 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -7213,8 +7213,7 @@ ORACLE CLUSTER FILESYSTEM 2 (OCFS2) | |||
7213 | M: Mark Fasheh <mfasheh@suse.com> | 7213 | M: Mark Fasheh <mfasheh@suse.com> |
7214 | M: Joel Becker <jlbec@evilplan.org> | 7214 | M: Joel Becker <jlbec@evilplan.org> |
7215 | L: ocfs2-devel@oss.oracle.com (moderated for non-subscribers) | 7215 | L: ocfs2-devel@oss.oracle.com (moderated for non-subscribers) |
7216 | W: http://oss.oracle.com/projects/ocfs2/ | 7216 | W: http://ocfs2.wiki.kernel.org |
7217 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2.git | ||
7218 | S: Supported | 7217 | S: Supported |
7219 | F: Documentation/filesystems/ocfs2.txt | 7218 | F: Documentation/filesystems/ocfs2.txt |
7220 | F: Documentation/filesystems/dlmfs.txt | 7219 | F: Documentation/filesystems/dlmfs.txt |
diff --git a/arch/frv/include/asm/pgtable.h b/arch/frv/include/asm/pgtable.h index 93bcf2abd1a1..07d7a7ef8bd5 100644 --- a/arch/frv/include/asm/pgtable.h +++ b/arch/frv/include/asm/pgtable.h | |||
@@ -123,12 +123,14 @@ extern unsigned long empty_zero_page; | |||
123 | #define PGDIR_MASK (~(PGDIR_SIZE - 1)) | 123 | #define PGDIR_MASK (~(PGDIR_SIZE - 1)) |
124 | #define PTRS_PER_PGD 64 | 124 | #define PTRS_PER_PGD 64 |
125 | 125 | ||
126 | #define __PAGETABLE_PUD_FOLDED | ||
126 | #define PUD_SHIFT 26 | 127 | #define PUD_SHIFT 26 |
127 | #define PTRS_PER_PUD 1 | 128 | #define PTRS_PER_PUD 1 |
128 | #define PUD_SIZE (1UL << PUD_SHIFT) | 129 | #define PUD_SIZE (1UL << PUD_SHIFT) |
129 | #define PUD_MASK (~(PUD_SIZE - 1)) | 130 | #define PUD_MASK (~(PUD_SIZE - 1)) |
130 | #define PUE_SIZE 256 | 131 | #define PUE_SIZE 256 |
131 | 132 | ||
133 | #define __PAGETABLE_PMD_FOLDED | ||
132 | #define PMD_SHIFT 26 | 134 | #define PMD_SHIFT 26 |
133 | #define PMD_SIZE (1UL << PMD_SHIFT) | 135 | #define PMD_SIZE (1UL << PMD_SHIFT) |
134 | #define PMD_MASK (~(PMD_SIZE - 1)) | 136 | #define PMD_MASK (~(PMD_SIZE - 1)) |
diff --git a/arch/m32r/include/asm/pgtable-2level.h b/arch/m32r/include/asm/pgtable-2level.h index 8fd8ee70266a..421e6ba3a173 100644 --- a/arch/m32r/include/asm/pgtable-2level.h +++ b/arch/m32r/include/asm/pgtable-2level.h | |||
@@ -13,6 +13,7 @@ | |||
13 | * the M32R is two-level, so we don't really have any | 13 | * the M32R is two-level, so we don't really have any |
14 | * PMD directory physically. | 14 | * PMD directory physically. |
15 | */ | 15 | */ |
16 | #define __PAGETABLE_PMD_FOLDED | ||
16 | #define PMD_SHIFT 22 | 17 | #define PMD_SHIFT 22 |
17 | #define PTRS_PER_PMD 1 | 18 | #define PTRS_PER_PMD 1 |
18 | 19 | ||
diff --git a/arch/m68k/include/asm/pgtable_mm.h b/arch/m68k/include/asm/pgtable_mm.h index 28a145bfbb71..35ed4a9981ae 100644 --- a/arch/m68k/include/asm/pgtable_mm.h +++ b/arch/m68k/include/asm/pgtable_mm.h | |||
@@ -54,10 +54,12 @@ | |||
54 | */ | 54 | */ |
55 | #ifdef CONFIG_SUN3 | 55 | #ifdef CONFIG_SUN3 |
56 | #define PTRS_PER_PTE 16 | 56 | #define PTRS_PER_PTE 16 |
57 | #define __PAGETABLE_PMD_FOLDED | ||
57 | #define PTRS_PER_PMD 1 | 58 | #define PTRS_PER_PMD 1 |
58 | #define PTRS_PER_PGD 2048 | 59 | #define PTRS_PER_PGD 2048 |
59 | #elif defined(CONFIG_COLDFIRE) | 60 | #elif defined(CONFIG_COLDFIRE) |
60 | #define PTRS_PER_PTE 512 | 61 | #define PTRS_PER_PTE 512 |
62 | #define __PAGETABLE_PMD_FOLDED | ||
61 | #define PTRS_PER_PMD 1 | 63 | #define PTRS_PER_PMD 1 |
62 | #define PTRS_PER_PGD 1024 | 64 | #define PTRS_PER_PGD 1024 |
63 | #else | 65 | #else |
diff --git a/arch/mn10300/include/asm/pgtable.h b/arch/mn10300/include/asm/pgtable.h index afab728ab65e..96d3f9deb59c 100644 --- a/arch/mn10300/include/asm/pgtable.h +++ b/arch/mn10300/include/asm/pgtable.h | |||
@@ -56,7 +56,9 @@ extern void paging_init(void); | |||
56 | #define PGDIR_SHIFT 22 | 56 | #define PGDIR_SHIFT 22 |
57 | #define PTRS_PER_PGD 1024 | 57 | #define PTRS_PER_PGD 1024 |
58 | #define PTRS_PER_PUD 1 /* we don't really have any PUD physically */ | 58 | #define PTRS_PER_PUD 1 /* we don't really have any PUD physically */ |
59 | #define __PAGETABLE_PUD_FOLDED | ||
59 | #define PTRS_PER_PMD 1 /* we don't really have any PMD physically */ | 60 | #define PTRS_PER_PMD 1 /* we don't really have any PMD physically */ |
61 | #define __PAGETABLE_PMD_FOLDED | ||
60 | #define PTRS_PER_PTE 1024 | 62 | #define PTRS_PER_PTE 1024 |
61 | 63 | ||
62 | #define PGD_SIZE PAGE_SIZE | 64 | #define PGD_SIZE PAGE_SIZE |
diff --git a/arch/parisc/include/asm/pgtable.h b/arch/parisc/include/asm/pgtable.h index 8c966b2270aa..15207b9362bf 100644 --- a/arch/parisc/include/asm/pgtable.h +++ b/arch/parisc/include/asm/pgtable.h | |||
@@ -96,6 +96,7 @@ extern void purge_tlb_entries(struct mm_struct *, unsigned long); | |||
96 | #if PT_NLEVELS == 3 | 96 | #if PT_NLEVELS == 3 |
97 | #define BITS_PER_PMD (PAGE_SHIFT + PMD_ORDER - BITS_PER_PMD_ENTRY) | 97 | #define BITS_PER_PMD (PAGE_SHIFT + PMD_ORDER - BITS_PER_PMD_ENTRY) |
98 | #else | 98 | #else |
99 | #define __PAGETABLE_PMD_FOLDED | ||
99 | #define BITS_PER_PMD 0 | 100 | #define BITS_PER_PMD 0 |
100 | #endif | 101 | #endif |
101 | #define PTRS_PER_PMD (1UL << BITS_PER_PMD) | 102 | #define PTRS_PER_PMD (1UL << BITS_PER_PMD) |
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h index fbb5ee3ae57c..e08ec38f8c6e 100644 --- a/arch/s390/include/asm/pgtable.h +++ b/arch/s390/include/asm/pgtable.h | |||
@@ -91,7 +91,9 @@ extern unsigned long zero_page_mask; | |||
91 | */ | 91 | */ |
92 | #define PTRS_PER_PTE 256 | 92 | #define PTRS_PER_PTE 256 |
93 | #ifndef CONFIG_64BIT | 93 | #ifndef CONFIG_64BIT |
94 | #define __PAGETABLE_PUD_FOLDED | ||
94 | #define PTRS_PER_PMD 1 | 95 | #define PTRS_PER_PMD 1 |
96 | #define __PAGETABLE_PMD_FOLDED | ||
95 | #define PTRS_PER_PUD 1 | 97 | #define PTRS_PER_PUD 1 |
96 | #else /* CONFIG_64BIT */ | 98 | #else /* CONFIG_64BIT */ |
97 | #define PTRS_PER_PMD 2048 | 99 | #define PTRS_PER_PMD 2048 |
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index 8e233edd7a09..871bd3550cb0 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c | |||
@@ -528,7 +528,7 @@ out_cleanup: | |||
528 | static inline void update_used_max(struct zram *zram, | 528 | static inline void update_used_max(struct zram *zram, |
529 | const unsigned long pages) | 529 | const unsigned long pages) |
530 | { | 530 | { |
531 | int old_max, cur_max; | 531 | unsigned long old_max, cur_max; |
532 | 532 | ||
533 | old_max = atomic_long_read(&zram->stats.max_used_pages); | 533 | old_max = atomic_long_read(&zram->stats.max_used_pages); |
534 | 534 | ||
diff --git a/drivers/rtc/rtc-ds1685.c b/drivers/rtc/rtc-ds1685.c index 8c3bfcb115b7..803869c7d7c2 100644 --- a/drivers/rtc/rtc-ds1685.c +++ b/drivers/rtc/rtc-ds1685.c | |||
@@ -399,21 +399,21 @@ ds1685_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm) | |||
399 | * of this RTC chip. We check for it anyways in case support is | 399 | * of this RTC chip. We check for it anyways in case support is |
400 | * added in the future. | 400 | * added in the future. |
401 | */ | 401 | */ |
402 | if (unlikely((seconds >= 0xc0) && (seconds <= 0xff))) | 402 | if (unlikely(seconds >= 0xc0)) |
403 | alrm->time.tm_sec = -1; | 403 | alrm->time.tm_sec = -1; |
404 | else | 404 | else |
405 | alrm->time.tm_sec = ds1685_rtc_bcd2bin(rtc, seconds, | 405 | alrm->time.tm_sec = ds1685_rtc_bcd2bin(rtc, seconds, |
406 | RTC_SECS_BCD_MASK, | 406 | RTC_SECS_BCD_MASK, |
407 | RTC_SECS_BIN_MASK); | 407 | RTC_SECS_BIN_MASK); |
408 | 408 | ||
409 | if (unlikely((minutes >= 0xc0) && (minutes <= 0xff))) | 409 | if (unlikely(minutes >= 0xc0)) |
410 | alrm->time.tm_min = -1; | 410 | alrm->time.tm_min = -1; |
411 | else | 411 | else |
412 | alrm->time.tm_min = ds1685_rtc_bcd2bin(rtc, minutes, | 412 | alrm->time.tm_min = ds1685_rtc_bcd2bin(rtc, minutes, |
413 | RTC_MINS_BCD_MASK, | 413 | RTC_MINS_BCD_MASK, |
414 | RTC_MINS_BIN_MASK); | 414 | RTC_MINS_BIN_MASK); |
415 | 415 | ||
416 | if (unlikely((hours >= 0xc0) && (hours <= 0xff))) | 416 | if (unlikely(hours >= 0xc0)) |
417 | alrm->time.tm_hour = -1; | 417 | alrm->time.tm_hour = -1; |
418 | else | 418 | else |
419 | alrm->time.tm_hour = ds1685_rtc_bcd2bin(rtc, hours, | 419 | alrm->time.tm_hour = ds1685_rtc_bcd2bin(rtc, hours, |
@@ -472,13 +472,13 @@ ds1685_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) | |||
472 | * field, and we only support four fields. We put the support | 472 | * field, and we only support four fields. We put the support |
473 | * here anyways for the future. | 473 | * here anyways for the future. |
474 | */ | 474 | */ |
475 | if (unlikely((seconds >= 0xc0) && (seconds <= 0xff))) | 475 | if (unlikely(seconds >= 0xc0)) |
476 | seconds = 0xff; | 476 | seconds = 0xff; |
477 | 477 | ||
478 | if (unlikely((minutes >= 0xc0) && (minutes <= 0xff))) | 478 | if (unlikely(minutes >= 0xc0)) |
479 | minutes = 0xff; | 479 | minutes = 0xff; |
480 | 480 | ||
481 | if (unlikely((hours >= 0xc0) && (hours <= 0xff))) | 481 | if (unlikely(hours >= 0xc0)) |
482 | hours = 0xff; | 482 | hours = 0xff; |
483 | 483 | ||
484 | alrm->time.tm_mon = -1; | 484 | alrm->time.tm_mon = -1; |
@@ -528,7 +528,6 @@ ds1685_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) | |||
528 | /* ----------------------------------------------------------------------- */ | 528 | /* ----------------------------------------------------------------------- */ |
529 | /* /dev/rtcX Interface functions */ | 529 | /* /dev/rtcX Interface functions */ |
530 | 530 | ||
531 | #ifdef CONFIG_RTC_INTF_DEV | ||
532 | /** | 531 | /** |
533 | * ds1685_rtc_alarm_irq_enable - replaces ioctl() RTC_AIE on/off. | 532 | * ds1685_rtc_alarm_irq_enable - replaces ioctl() RTC_AIE on/off. |
534 | * @dev: pointer to device structure. | 533 | * @dev: pointer to device structure. |
@@ -557,7 +556,6 @@ ds1685_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled) | |||
557 | 556 | ||
558 | return 0; | 557 | return 0; |
559 | } | 558 | } |
560 | #endif | ||
561 | /* ----------------------------------------------------------------------- */ | 559 | /* ----------------------------------------------------------------------- */ |
562 | 560 | ||
563 | 561 | ||
@@ -1612,7 +1610,7 @@ ds1685_rtc_sysfs_time_regs_show(struct device *dev, | |||
1612 | ds1685_rtc_sysfs_time_regs_lookup(attr->attr.name, false); | 1610 | ds1685_rtc_sysfs_time_regs_lookup(attr->attr.name, false); |
1613 | 1611 | ||
1614 | /* Make sure we actually matched something. */ | 1612 | /* Make sure we actually matched something. */ |
1615 | if (!bcd_reg_info && !bin_reg_info) | 1613 | if (!bcd_reg_info || !bin_reg_info) |
1616 | return -EINVAL; | 1614 | return -EINVAL; |
1617 | 1615 | ||
1618 | /* bcd_reg_info->reg == bin_reg_info->reg. */ | 1616 | /* bcd_reg_info->reg == bin_reg_info->reg. */ |
@@ -1650,7 +1648,7 @@ ds1685_rtc_sysfs_time_regs_store(struct device *dev, | |||
1650 | return -EINVAL; | 1648 | return -EINVAL; |
1651 | 1649 | ||
1652 | /* Make sure we actually matched something. */ | 1650 | /* Make sure we actually matched something. */ |
1653 | if (!bcd_reg_info && !bin_reg_info) | 1651 | if (!bcd_reg_info || !bin_reg_info) |
1654 | return -EINVAL; | 1652 | return -EINVAL; |
1655 | 1653 | ||
1656 | /* Check for a valid range. */ | 1654 | /* Check for a valid range. */ |
diff --git a/fs/nilfs2/btree.c b/fs/nilfs2/btree.c index b2e3ff347620..ecdbae19a766 100644 --- a/fs/nilfs2/btree.c +++ b/fs/nilfs2/btree.c | |||
@@ -31,6 +31,8 @@ | |||
31 | #include "alloc.h" | 31 | #include "alloc.h" |
32 | #include "dat.h" | 32 | #include "dat.h" |
33 | 33 | ||
34 | static void __nilfs_btree_init(struct nilfs_bmap *bmap); | ||
35 | |||
34 | static struct nilfs_btree_path *nilfs_btree_alloc_path(void) | 36 | static struct nilfs_btree_path *nilfs_btree_alloc_path(void) |
35 | { | 37 | { |
36 | struct nilfs_btree_path *path; | 38 | struct nilfs_btree_path *path; |
@@ -368,6 +370,34 @@ static int nilfs_btree_node_broken(const struct nilfs_btree_node *node, | |||
368 | return ret; | 370 | return ret; |
369 | } | 371 | } |
370 | 372 | ||
373 | /** | ||
374 | * nilfs_btree_root_broken - verify consistency of btree root node | ||
375 | * @node: btree root node to be examined | ||
376 | * @ino: inode number | ||
377 | * | ||
378 | * Return Value: If node is broken, 1 is returned. Otherwise, 0 is returned. | ||
379 | */ | ||
380 | static int nilfs_btree_root_broken(const struct nilfs_btree_node *node, | ||
381 | unsigned long ino) | ||
382 | { | ||
383 | int level, flags, nchildren; | ||
384 | int ret = 0; | ||
385 | |||
386 | level = nilfs_btree_node_get_level(node); | ||
387 | flags = nilfs_btree_node_get_flags(node); | ||
388 | nchildren = nilfs_btree_node_get_nchildren(node); | ||
389 | |||
390 | if (unlikely(level < NILFS_BTREE_LEVEL_NODE_MIN || | ||
391 | level > NILFS_BTREE_LEVEL_MAX || | ||
392 | nchildren < 0 || | ||
393 | nchildren > NILFS_BTREE_ROOT_NCHILDREN_MAX)) { | ||
394 | pr_crit("NILFS: bad btree root (inode number=%lu): level = %d, flags = 0x%x, nchildren = %d\n", | ||
395 | ino, level, flags, nchildren); | ||
396 | ret = 1; | ||
397 | } | ||
398 | return ret; | ||
399 | } | ||
400 | |||
371 | int nilfs_btree_broken_node_block(struct buffer_head *bh) | 401 | int nilfs_btree_broken_node_block(struct buffer_head *bh) |
372 | { | 402 | { |
373 | int ret; | 403 | int ret; |
@@ -1713,7 +1743,7 @@ nilfs_btree_commit_convert_and_insert(struct nilfs_bmap *btree, | |||
1713 | 1743 | ||
1714 | /* convert and insert */ | 1744 | /* convert and insert */ |
1715 | dat = NILFS_BMAP_USE_VBN(btree) ? nilfs_bmap_get_dat(btree) : NULL; | 1745 | dat = NILFS_BMAP_USE_VBN(btree) ? nilfs_bmap_get_dat(btree) : NULL; |
1716 | nilfs_btree_init(btree); | 1746 | __nilfs_btree_init(btree); |
1717 | if (nreq != NULL) { | 1747 | if (nreq != NULL) { |
1718 | nilfs_bmap_commit_alloc_ptr(btree, dreq, dat); | 1748 | nilfs_bmap_commit_alloc_ptr(btree, dreq, dat); |
1719 | nilfs_bmap_commit_alloc_ptr(btree, nreq, dat); | 1749 | nilfs_bmap_commit_alloc_ptr(btree, nreq, dat); |
@@ -2294,12 +2324,23 @@ static const struct nilfs_bmap_operations nilfs_btree_ops_gc = { | |||
2294 | .bop_gather_data = NULL, | 2324 | .bop_gather_data = NULL, |
2295 | }; | 2325 | }; |
2296 | 2326 | ||
2297 | int nilfs_btree_init(struct nilfs_bmap *bmap) | 2327 | static void __nilfs_btree_init(struct nilfs_bmap *bmap) |
2298 | { | 2328 | { |
2299 | bmap->b_ops = &nilfs_btree_ops; | 2329 | bmap->b_ops = &nilfs_btree_ops; |
2300 | bmap->b_nchildren_per_block = | 2330 | bmap->b_nchildren_per_block = |
2301 | NILFS_BTREE_NODE_NCHILDREN_MAX(nilfs_btree_node_size(bmap)); | 2331 | NILFS_BTREE_NODE_NCHILDREN_MAX(nilfs_btree_node_size(bmap)); |
2302 | return 0; | 2332 | } |
2333 | |||
2334 | int nilfs_btree_init(struct nilfs_bmap *bmap) | ||
2335 | { | ||
2336 | int ret = 0; | ||
2337 | |||
2338 | __nilfs_btree_init(bmap); | ||
2339 | |||
2340 | if (nilfs_btree_root_broken(nilfs_btree_get_root(bmap), | ||
2341 | bmap->b_inode->i_ino)) | ||
2342 | ret = -EIO; | ||
2343 | return ret; | ||
2303 | } | 2344 | } |
2304 | 2345 | ||
2305 | void nilfs_btree_init_gc(struct nilfs_bmap *bmap) | 2346 | void nilfs_btree_init_gc(struct nilfs_bmap *bmap) |
diff --git a/kernel/sys.c b/kernel/sys.c index 667b2e62fad2..a03d9cd23ed7 100644 --- a/kernel/sys.c +++ b/kernel/sys.c | |||
@@ -1108,6 +1108,7 @@ DECLARE_RWSEM(uts_sem); | |||
1108 | /* | 1108 | /* |
1109 | * Work around broken programs that cannot handle "Linux 3.0". | 1109 | * Work around broken programs that cannot handle "Linux 3.0". |
1110 | * Instead we map 3.x to 2.6.40+x, so e.g. 3.0 would be 2.6.40 | 1110 | * Instead we map 3.x to 2.6.40+x, so e.g. 3.0 would be 2.6.40 |
1111 | * And we map 4.x to 2.6.60+x, so 4.0 would be 2.6.60. | ||
1111 | */ | 1112 | */ |
1112 | static int override_release(char __user *release, size_t len) | 1113 | static int override_release(char __user *release, size_t len) |
1113 | { | 1114 | { |
@@ -1127,7 +1128,7 @@ static int override_release(char __user *release, size_t len) | |||
1127 | break; | 1128 | break; |
1128 | rest++; | 1129 | rest++; |
1129 | } | 1130 | } |
1130 | v = ((LINUX_VERSION_CODE >> 8) & 0xff) + 40; | 1131 | v = ((LINUX_VERSION_CODE >> 8) & 0xff) + 60; |
1131 | copy = clamp_t(size_t, len, 1, sizeof(buf)); | 1132 | copy = clamp_t(size_t, len, 1, sizeof(buf)); |
1132 | copy = scnprintf(buf, copy, "2.6.%u%s", v, rest); | 1133 | copy = scnprintf(buf, copy, "2.6.%u%s", v, rest); |
1133 | ret = copy_to_user(release, buf, copy + 1); | 1134 | ret = copy_to_user(release, buf, copy + 1); |
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index d18d3a6e7337..9fe07692eaad 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c | |||
@@ -5247,7 +5247,7 @@ static int memory_low_show(struct seq_file *m, void *v) | |||
5247 | unsigned long low = ACCESS_ONCE(memcg->low); | 5247 | unsigned long low = ACCESS_ONCE(memcg->low); |
5248 | 5248 | ||
5249 | if (low == PAGE_COUNTER_MAX) | 5249 | if (low == PAGE_COUNTER_MAX) |
5250 | seq_puts(m, "infinity\n"); | 5250 | seq_puts(m, "max\n"); |
5251 | else | 5251 | else |
5252 | seq_printf(m, "%llu\n", (u64)low * PAGE_SIZE); | 5252 | seq_printf(m, "%llu\n", (u64)low * PAGE_SIZE); |
5253 | 5253 | ||
@@ -5262,7 +5262,7 @@ static ssize_t memory_low_write(struct kernfs_open_file *of, | |||
5262 | int err; | 5262 | int err; |
5263 | 5263 | ||
5264 | buf = strstrip(buf); | 5264 | buf = strstrip(buf); |
5265 | err = page_counter_memparse(buf, "infinity", &low); | 5265 | err = page_counter_memparse(buf, "max", &low); |
5266 | if (err) | 5266 | if (err) |
5267 | return err; | 5267 | return err; |
5268 | 5268 | ||
@@ -5277,7 +5277,7 @@ static int memory_high_show(struct seq_file *m, void *v) | |||
5277 | unsigned long high = ACCESS_ONCE(memcg->high); | 5277 | unsigned long high = ACCESS_ONCE(memcg->high); |
5278 | 5278 | ||
5279 | if (high == PAGE_COUNTER_MAX) | 5279 | if (high == PAGE_COUNTER_MAX) |
5280 | seq_puts(m, "infinity\n"); | 5280 | seq_puts(m, "max\n"); |
5281 | else | 5281 | else |
5282 | seq_printf(m, "%llu\n", (u64)high * PAGE_SIZE); | 5282 | seq_printf(m, "%llu\n", (u64)high * PAGE_SIZE); |
5283 | 5283 | ||
@@ -5292,7 +5292,7 @@ static ssize_t memory_high_write(struct kernfs_open_file *of, | |||
5292 | int err; | 5292 | int err; |
5293 | 5293 | ||
5294 | buf = strstrip(buf); | 5294 | buf = strstrip(buf); |
5295 | err = page_counter_memparse(buf, "infinity", &high); | 5295 | err = page_counter_memparse(buf, "max", &high); |
5296 | if (err) | 5296 | if (err) |
5297 | return err; | 5297 | return err; |
5298 | 5298 | ||
@@ -5307,7 +5307,7 @@ static int memory_max_show(struct seq_file *m, void *v) | |||
5307 | unsigned long max = ACCESS_ONCE(memcg->memory.limit); | 5307 | unsigned long max = ACCESS_ONCE(memcg->memory.limit); |
5308 | 5308 | ||
5309 | if (max == PAGE_COUNTER_MAX) | 5309 | if (max == PAGE_COUNTER_MAX) |
5310 | seq_puts(m, "infinity\n"); | 5310 | seq_puts(m, "max\n"); |
5311 | else | 5311 | else |
5312 | seq_printf(m, "%llu\n", (u64)max * PAGE_SIZE); | 5312 | seq_printf(m, "%llu\n", (u64)max * PAGE_SIZE); |
5313 | 5313 | ||
@@ -5322,7 +5322,7 @@ static ssize_t memory_max_write(struct kernfs_open_file *of, | |||
5322 | int err; | 5322 | int err; |
5323 | 5323 | ||
5324 | buf = strstrip(buf); | 5324 | buf = strstrip(buf); |
5325 | err = page_counter_memparse(buf, "infinity", &max); | 5325 | err = page_counter_memparse(buf, "max", &max); |
5326 | if (err) | 5326 | if (err) |
5327 | return err; | 5327 | return err; |
5328 | 5328 | ||
@@ -5426,7 +5426,7 @@ bool mem_cgroup_low(struct mem_cgroup *root, struct mem_cgroup *memcg) | |||
5426 | if (memcg == root_mem_cgroup) | 5426 | if (memcg == root_mem_cgroup) |
5427 | return false; | 5427 | return false; |
5428 | 5428 | ||
5429 | if (page_counter_read(&memcg->memory) > memcg->low) | 5429 | if (page_counter_read(&memcg->memory) >= memcg->low) |
5430 | return false; | 5430 | return false; |
5431 | 5431 | ||
5432 | while (memcg != root) { | 5432 | while (memcg != root) { |
@@ -5435,7 +5435,7 @@ bool mem_cgroup_low(struct mem_cgroup *root, struct mem_cgroup *memcg) | |||
5435 | if (memcg == root_mem_cgroup) | 5435 | if (memcg == root_mem_cgroup) |
5436 | break; | 5436 | break; |
5437 | 5437 | ||
5438 | if (page_counter_read(&memcg->memory) > memcg->low) | 5438 | if (page_counter_read(&memcg->memory) >= memcg->low) |
5439 | return false; | 5439 | return false; |
5440 | } | 5440 | } |
5441 | return true; | 5441 | return true; |
diff --git a/mm/nommu.c b/mm/nommu.c index 7296360fc057..3e67e7538ecf 100644 --- a/mm/nommu.c +++ b/mm/nommu.c | |||
@@ -1213,11 +1213,9 @@ static int do_mmap_private(struct vm_area_struct *vma, | |||
1213 | if (sysctl_nr_trim_pages && total - point >= sysctl_nr_trim_pages) { | 1213 | if (sysctl_nr_trim_pages && total - point >= sysctl_nr_trim_pages) { |
1214 | total = point; | 1214 | total = point; |
1215 | kdebug("try to alloc exact %lu pages", total); | 1215 | kdebug("try to alloc exact %lu pages", total); |
1216 | base = alloc_pages_exact(len, GFP_KERNEL); | ||
1217 | } else { | ||
1218 | base = (void *)__get_free_pages(GFP_KERNEL, order); | ||
1219 | } | 1216 | } |
1220 | 1217 | ||
1218 | base = alloc_pages_exact(total << PAGE_SHIFT, GFP_KERNEL); | ||
1221 | if (!base) | 1219 | if (!base) |
1222 | goto enomem; | 1220 | goto enomem; |
1223 | 1221 | ||
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index a47f0b229a1a..7abfa70cdc1a 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -2353,8 +2353,15 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order, | |||
2353 | if (ac->high_zoneidx < ZONE_NORMAL) | 2353 | if (ac->high_zoneidx < ZONE_NORMAL) |
2354 | goto out; | 2354 | goto out; |
2355 | /* The OOM killer does not compensate for light reclaim */ | 2355 | /* The OOM killer does not compensate for light reclaim */ |
2356 | if (!(gfp_mask & __GFP_FS)) | 2356 | if (!(gfp_mask & __GFP_FS)) { |
2357 | /* | ||
2358 | * XXX: Page reclaim didn't yield anything, | ||
2359 | * and the OOM killer can't be invoked, but | ||
2360 | * keep looping as per should_alloc_retry(). | ||
2361 | */ | ||
2362 | *did_some_progress = 1; | ||
2357 | goto out; | 2363 | goto out; |
2364 | } | ||
2358 | /* | 2365 | /* |
2359 | * GFP_THISNODE contains __GFP_NORETRY and we never hit this. | 2366 | * GFP_THISNODE contains __GFP_NORETRY and we never hit this. |
2360 | * Sanity check for bare calls of __GFP_THISNODE, not real OOM. | 2367 | * Sanity check for bare calls of __GFP_THISNODE, not real OOM. |
diff --git a/scripts/gdb/linux/__init__.py b/scripts/gdb/linux/__init__.py new file mode 100644 index 000000000000..4680fb176337 --- /dev/null +++ b/scripts/gdb/linux/__init__.py | |||
@@ -0,0 +1 @@ | |||
# nothing to do for the initialization of this package | |||