diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-22 00:32:38 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-22 00:32:38 -0500 |
commit | a5d6e63323fe7799eb0e6fd0a41fbfad10fca258 (patch) | |
tree | ca52285fc4ac7fa25a8e1621782a5a51130ac08b /include | |
parent | 78dc53c422172a317adb0776dfb687057ffa28b7 (diff) | |
parent | 7aa555bf26763b86332c7a3689701c999834b87a (diff) |
Merge branch 'akpm' (fixes from Andrew)
Merge patches from Andrew Morton:
"13 fixes"
* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
mm: place page->pmd_huge_pte to right union
MAINTAINERS: add keyboard driver to Hyper-V file list
x86, mm: do not leak page->ptl for pmd page tables
ipc,shm: correct error return value in shmctl (SHM_UNLOCK)
mm, mempolicy: silence gcc warning
block/partitions/efi.c: fix bound check
ARM: drivers/rtc/rtc-at91rm9200.c: disable interrupts at shutdown
mm: hugetlbfs: fix hugetlbfs optimization
kernel: remove CONFIG_USE_GENERIC_SMP_HELPERS cleanly
ipc,shm: fix shm_file deletion races
mm: thp: give transparent hugepage code a separate copy_page
checkpatch: fix "Use of uninitialized value" warnings
configfs: fix race between dentry put and lookup
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/hugetlb.h | 10 | ||||
-rw-r--r-- | include/linux/mm_types.h | 6 |
2 files changed, 9 insertions, 7 deletions
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index acd2010328f3..9649ff0c63f8 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h | |||
@@ -31,6 +31,7 @@ struct hugepage_subpool *hugepage_new_subpool(long nr_blocks); | |||
31 | void hugepage_put_subpool(struct hugepage_subpool *spool); | 31 | void hugepage_put_subpool(struct hugepage_subpool *spool); |
32 | 32 | ||
33 | int PageHuge(struct page *page); | 33 | int PageHuge(struct page *page); |
34 | int PageHeadHuge(struct page *page_head); | ||
34 | 35 | ||
35 | void reset_vma_resv_huge_pages(struct vm_area_struct *vma); | 36 | void reset_vma_resv_huge_pages(struct vm_area_struct *vma); |
36 | int hugetlb_sysctl_handler(struct ctl_table *, int, void __user *, size_t *, loff_t *); | 37 | int hugetlb_sysctl_handler(struct ctl_table *, int, void __user *, size_t *, loff_t *); |
@@ -69,7 +70,6 @@ int dequeue_hwpoisoned_huge_page(struct page *page); | |||
69 | bool isolate_huge_page(struct page *page, struct list_head *list); | 70 | bool isolate_huge_page(struct page *page, struct list_head *list); |
70 | void putback_active_hugepage(struct page *page); | 71 | void putback_active_hugepage(struct page *page); |
71 | bool is_hugepage_active(struct page *page); | 72 | bool is_hugepage_active(struct page *page); |
72 | void copy_huge_page(struct page *dst, struct page *src); | ||
73 | 73 | ||
74 | #ifdef CONFIG_ARCH_WANT_HUGE_PMD_SHARE | 74 | #ifdef CONFIG_ARCH_WANT_HUGE_PMD_SHARE |
75 | pte_t *huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud); | 75 | pte_t *huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud); |
@@ -104,6 +104,11 @@ static inline int PageHuge(struct page *page) | |||
104 | return 0; | 104 | return 0; |
105 | } | 105 | } |
106 | 106 | ||
107 | static inline int PageHeadHuge(struct page *page_head) | ||
108 | { | ||
109 | return 0; | ||
110 | } | ||
111 | |||
107 | static inline void reset_vma_resv_huge_pages(struct vm_area_struct *vma) | 112 | static inline void reset_vma_resv_huge_pages(struct vm_area_struct *vma) |
108 | { | 113 | { |
109 | } | 114 | } |
@@ -140,9 +145,6 @@ static inline int dequeue_hwpoisoned_huge_page(struct page *page) | |||
140 | #define isolate_huge_page(p, l) false | 145 | #define isolate_huge_page(p, l) false |
141 | #define putback_active_hugepage(p) do {} while (0) | 146 | #define putback_active_hugepage(p) do {} while (0) |
142 | #define is_hugepage_active(x) false | 147 | #define is_hugepage_active(x) false |
143 | static inline void copy_huge_page(struct page *dst, struct page *src) | ||
144 | { | ||
145 | } | ||
146 | 148 | ||
147 | static inline unsigned long hugetlb_change_protection(struct vm_area_struct *vma, | 149 | static inline unsigned long hugetlb_change_protection(struct vm_area_struct *vma, |
148 | unsigned long address, unsigned long end, pgprot_t newprot) | 150 | unsigned long address, unsigned long end, pgprot_t newprot) |
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 10f5a7272b80..011eb85d7b0f 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h | |||
@@ -65,9 +65,6 @@ struct page { | |||
65 | * this page is only used to | 65 | * this page is only used to |
66 | * free other pages. | 66 | * free other pages. |
67 | */ | 67 | */ |
68 | #if defined(CONFIG_TRANSPARENT_HUGEPAGE) && USE_SPLIT_PMD_PTLOCKS | ||
69 | pgtable_t pmd_huge_pte; /* protected by page->ptl */ | ||
70 | #endif | ||
71 | }; | 68 | }; |
72 | 69 | ||
73 | union { | 70 | union { |
@@ -135,6 +132,9 @@ struct page { | |||
135 | 132 | ||
136 | struct list_head list; /* slobs list of pages */ | 133 | struct list_head list; /* slobs list of pages */ |
137 | struct slab *slab_page; /* slab fields */ | 134 | struct slab *slab_page; /* slab fields */ |
135 | #if defined(CONFIG_TRANSPARENT_HUGEPAGE) && USE_SPLIT_PMD_PTLOCKS | ||
136 | pgtable_t pmd_huge_pte; /* protected by page->ptl */ | ||
137 | #endif | ||
138 | }; | 138 | }; |
139 | 139 | ||
140 | /* Remainder is not double word aligned */ | 140 | /* Remainder is not double word aligned */ |