| .. | .. |
|---|
| 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. |
|---|