You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'akpm'
* akpm: mm: compaction: check pfn_valid when entering a new MAX_ORDER_NR_PAGES block during isolation for migration readahead: fix pipeline break caused by block plug kprobes: fix a memory leak in function pre_handler_kretprobe() drivers/tty/vt/vt_ioctl.c: fix KDFONTOP 32bit compatibility layer lkdtm: avoid calling lkdtm_do_action() with spinlock held mm/filemap_xip.c: fix race condition in xip_file_fault() mm/memcontrol.c: fix warning with CONFIG_NUMA=n avr32: select generic atomic64_t support mm: postpone migrated page mapping reset xtensa: fix memscan() MAINTAINERS: update lguest F: patterns MAINTAINERS: remove staging sections MAINTAINERS: remove iMX5 section MAINTAINERS: update partitions block F: patterns
This commit is contained in:
@@ -313,6 +313,19 @@ static isolate_migrate_t isolate_migratepages(struct zone *zone,
|
||||
} else if (!locked)
|
||||
spin_lock_irq(&zone->lru_lock);
|
||||
|
||||
/*
|
||||
* migrate_pfn does not necessarily start aligned to a
|
||||
* pageblock. Ensure that pfn_valid is called when moving
|
||||
* into a new MAX_ORDER_NR_PAGES range in case of large
|
||||
* memory holes within the zone
|
||||
*/
|
||||
if ((low_pfn & (MAX_ORDER_NR_PAGES - 1)) == 0) {
|
||||
if (!pfn_valid(low_pfn)) {
|
||||
low_pfn += MAX_ORDER_NR_PAGES - 1;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (!pfn_valid_within(low_pfn))
|
||||
continue;
|
||||
nr_scanned++;
|
||||
|
||||
+4
-4
@@ -1400,15 +1400,12 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov,
|
||||
unsigned long seg = 0;
|
||||
size_t count;
|
||||
loff_t *ppos = &iocb->ki_pos;
|
||||
struct blk_plug plug;
|
||||
|
||||
count = 0;
|
||||
retval = generic_segment_checks(iov, &nr_segs, &count, VERIFY_WRITE);
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
blk_start_plug(&plug);
|
||||
|
||||
/* coalesce the iovecs and go direct-to-BIO for O_DIRECT */
|
||||
if (filp->f_flags & O_DIRECT) {
|
||||
loff_t size;
|
||||
@@ -1424,8 +1421,12 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov,
|
||||
retval = filemap_write_and_wait_range(mapping, pos,
|
||||
pos + iov_length(iov, nr_segs) - 1);
|
||||
if (!retval) {
|
||||
struct blk_plug plug;
|
||||
|
||||
blk_start_plug(&plug);
|
||||
retval = mapping->a_ops->direct_IO(READ, iocb,
|
||||
iov, pos, nr_segs);
|
||||
blk_finish_plug(&plug);
|
||||
}
|
||||
if (retval > 0) {
|
||||
*ppos = pos + retval;
|
||||
@@ -1481,7 +1482,6 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov,
|
||||
break;
|
||||
}
|
||||
out:
|
||||
blk_finish_plug(&plug);
|
||||
return retval;
|
||||
}
|
||||
EXPORT_SYMBOL(generic_file_aio_read);
|
||||
|
||||
+6
-1
@@ -263,7 +263,12 @@ found:
|
||||
xip_pfn);
|
||||
if (err == -ENOMEM)
|
||||
return VM_FAULT_OOM;
|
||||
BUG_ON(err);
|
||||
/*
|
||||
* err == -EBUSY is fine, we've raced against another thread
|
||||
* that faulted-in the same page
|
||||
*/
|
||||
if (err != -EBUSY)
|
||||
BUG_ON(err);
|
||||
return VM_FAULT_NOPAGE;
|
||||
} else {
|
||||
int err, ret = VM_FAULT_OOM;
|
||||
|
||||
+2
-1
@@ -776,7 +776,8 @@ static void memcg_check_events(struct mem_cgroup *memcg, struct page *page)
|
||||
/* threshold event is triggered in finer grain than soft limit */
|
||||
if (unlikely(mem_cgroup_event_ratelimit(memcg,
|
||||
MEM_CGROUP_TARGET_THRESH))) {
|
||||
bool do_softlimit, do_numainfo;
|
||||
bool do_softlimit;
|
||||
bool do_numainfo __maybe_unused;
|
||||
|
||||
do_softlimit = mem_cgroup_event_ratelimit(memcg,
|
||||
MEM_CGROUP_TARGET_SOFTLIMIT);
|
||||
|
||||
+1
-1
@@ -445,7 +445,6 @@ void migrate_page_copy(struct page *newpage, struct page *page)
|
||||
ClearPageSwapCache(page);
|
||||
ClearPagePrivate(page);
|
||||
set_page_private(page, 0);
|
||||
page->mapping = NULL;
|
||||
|
||||
/*
|
||||
* If any waiters have accumulated on the new page then
|
||||
@@ -667,6 +666,7 @@ static int move_to_new_page(struct page *newpage, struct page *page,
|
||||
} else {
|
||||
if (remap_swapcache)
|
||||
remove_migration_ptes(page, newpage);
|
||||
page->mapping = NULL;
|
||||
}
|
||||
|
||||
unlock_page(newpage);
|
||||
|
||||
Reference in New Issue
Block a user