Merge branch 'akpm' (patches from Andrew)
Merge misc fixes from Andrew Morton: "9 patches. Subsystems affected by this patch series: mm (kfence, mempolicy, memory-failure, pagemap, pagealloc, damon, and memory-failure), core-kernel, and MAINTAINERS" * emailed patches from Andrew Morton <akpm@linux-foundation.org>: mm/hwpoison: clear MF_COUNT_INCREASED before retrying get_any_page() mm/damon/dbgfs: protect targets destructions with kdamond_lock mm/page_alloc: fix __alloc_size attribute for alloc_pages_exact_nid mm: delete unsafe BUG from page_cache_add_speculative() mm, hwpoison: fix condition in free hugetlb page path MAINTAINERS: mark more list instances as moderated kernel/crash_core: suppress unknown crashkernel parameter warning mm: mempolicy: fix THP allocations escaping mempolicy restrictions kfence: fix memory leak when cat kfence objects
This commit is contained in:
commit
d0cc67b278
@ -14845,7 +14845,7 @@ PCIE DRIVER FOR MEDIATEK
|
||||
M: Ryder Lee <ryder.lee@mediatek.com>
|
||||
M: Jianjun Wang <jianjun.wang@mediatek.com>
|
||||
L: linux-pci@vger.kernel.org
|
||||
L: linux-mediatek@lists.infradead.org
|
||||
L: linux-mediatek@lists.infradead.org (moderated for non-subscribers)
|
||||
S: Supported
|
||||
F: Documentation/devicetree/bindings/pci/mediatek*
|
||||
F: drivers/pci/controller/*mediatek*
|
||||
@ -17423,7 +17423,7 @@ F: drivers/video/fbdev/sm712*
|
||||
SILVACO I3C DUAL-ROLE MASTER
|
||||
M: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
M: Conor Culhane <conor.culhane@silvaco.com>
|
||||
L: linux-i3c@lists.infradead.org
|
||||
L: linux-i3c@lists.infradead.org (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/i3c/silvaco,i3c-master.yaml
|
||||
F: drivers/i3c/master/svc-i3c-master.c
|
||||
|
@ -624,7 +624,7 @@ extern unsigned long get_zeroed_page(gfp_t gfp_mask);
|
||||
|
||||
void *alloc_pages_exact(size_t size, gfp_t gfp_mask) __alloc_size(1);
|
||||
void free_pages_exact(void *virt, size_t size);
|
||||
__meminit void *alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask) __alloc_size(1);
|
||||
__meminit void *alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask) __alloc_size(2);
|
||||
|
||||
#define __get_free_page(gfp_mask) \
|
||||
__get_free_pages((gfp_mask), 0)
|
||||
|
@ -285,7 +285,6 @@ static inline struct inode *folio_inode(struct folio *folio)
|
||||
|
||||
static inline bool page_cache_add_speculative(struct page *page, int count)
|
||||
{
|
||||
VM_BUG_ON_PAGE(PageTail(page), page);
|
||||
return folio_ref_try_add_rcu((struct folio *)page, count);
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@
|
||||
|
||||
#include <linux/buildid.h>
|
||||
#include <linux/crash_core.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/utsname.h>
|
||||
#include <linux/vmalloc.h>
|
||||
|
||||
@ -295,6 +296,16 @@ int __init parse_crashkernel_low(char *cmdline,
|
||||
"crashkernel=", suffix_tbl[SUFFIX_LOW]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Add a dummy early_param handler to mark crashkernel= as a known command line
|
||||
* parameter and suppress incorrect warnings in init/main.c.
|
||||
*/
|
||||
static int __init parse_crashkernel_dummy(char *arg)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
early_param("crashkernel", parse_crashkernel_dummy);
|
||||
|
||||
Elf_Word *append_elf_note(Elf_Word *buf, char *name, unsigned int type,
|
||||
void *data, size_t data_len)
|
||||
{
|
||||
|
@ -650,10 +650,12 @@ static void dbgfs_before_terminate(struct damon_ctx *ctx)
|
||||
if (!targetid_is_pid(ctx))
|
||||
return;
|
||||
|
||||
mutex_lock(&ctx->kdamond_lock);
|
||||
damon_for_each_target_safe(t, next, ctx) {
|
||||
put_pid((struct pid *)t->id);
|
||||
damon_destroy_target(t);
|
||||
}
|
||||
mutex_unlock(&ctx->kdamond_lock);
|
||||
}
|
||||
|
||||
static struct damon_ctx *dbgfs_new_ctx(void)
|
||||
|
@ -683,6 +683,7 @@ static const struct file_operations objects_fops = {
|
||||
.open = open_objects,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
|
||||
static int __init kfence_debugfs_init(void)
|
||||
|
@ -1470,17 +1470,12 @@ static int memory_failure_hugetlb(unsigned long pfn, int flags)
|
||||
if (!(flags & MF_COUNT_INCREASED)) {
|
||||
res = get_hwpoison_page(p, flags);
|
||||
if (!res) {
|
||||
/*
|
||||
* Check "filter hit" and "race with other subpage."
|
||||
*/
|
||||
lock_page(head);
|
||||
if (PageHWPoison(head)) {
|
||||
if ((hwpoison_filter(p) && TestClearPageHWPoison(p))
|
||||
|| (p != head && TestSetPageHWPoison(head))) {
|
||||
if (hwpoison_filter(p)) {
|
||||
if (TestClearPageHWPoison(head))
|
||||
num_poisoned_pages_dec();
|
||||
unlock_page(head);
|
||||
return 0;
|
||||
}
|
||||
unlock_page(head);
|
||||
return 0;
|
||||
}
|
||||
unlock_page(head);
|
||||
res = MF_FAILED;
|
||||
@ -2239,6 +2234,7 @@ int soft_offline_page(unsigned long pfn, int flags)
|
||||
} else if (ret == 0) {
|
||||
if (soft_offline_free_page(page) && try_again) {
|
||||
try_again = false;
|
||||
flags &= ~MF_COUNT_INCREASED;
|
||||
goto retry;
|
||||
}
|
||||
}
|
||||
|
@ -2140,8 +2140,7 @@ struct page *alloc_pages_vma(gfp_t gfp, int order, struct vm_area_struct *vma,
|
||||
* memory with both reclaim and compact as well.
|
||||
*/
|
||||
if (!page && (gfp & __GFP_DIRECT_RECLAIM))
|
||||
page = __alloc_pages_node(hpage_node,
|
||||
gfp, order);
|
||||
page = __alloc_pages(gfp, order, hpage_node, nmask);
|
||||
|
||||
goto out;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user