.. | .. |
---|
322 | 322 | struct page *page = NULL; |
---|
323 | 323 | LIST_HEAD(page_list); |
---|
324 | 324 | bool allow_shared = false; |
---|
| 325 | + bool abort_madvise = false; |
---|
| 326 | + bool skip = false; |
---|
325 | 327 | |
---|
326 | | - if (fatal_signal_pending(current)) |
---|
| 328 | + trace_android_vh_madvise_cold_or_pageout_abort(vma, &abort_madvise); |
---|
| 329 | + if (fatal_signal_pending(current) || abort_madvise) |
---|
327 | 330 | return -EINTR; |
---|
328 | 331 | |
---|
329 | 332 | trace_android_vh_madvise_cold_or_pageout(vma, &allow_shared); |
---|
.. | .. |
---|
417 | 420 | if (!page) |
---|
418 | 421 | continue; |
---|
419 | 422 | |
---|
| 423 | + trace_android_vh_should_end_madvise(mm, &skip, &pageout); |
---|
| 424 | + if (skip) |
---|
| 425 | + break; |
---|
| 426 | + |
---|
420 | 427 | /* |
---|
421 | 428 | * Creating a THP page is expensive so split it only if we |
---|
422 | 429 | * are sure it's worth. Split it if we are only owner. |
---|