diff options
| -rw-r--r-- | arch/x86/mm/pageattr.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index fb2eedba76ad..4f033505127e 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c | |||
| @@ -423,8 +423,8 @@ out_unlock: | |||
| 423 | 423 | ||
| 424 | static int __change_page_attr(unsigned long address, struct cpa_data *cpa) | 424 | static int __change_page_attr(unsigned long address, struct cpa_data *cpa) |
| 425 | { | 425 | { |
| 426 | int level, do_split, err; | ||
| 426 | struct page *kpte_page; | 427 | struct page *kpte_page; |
| 427 | int level, do_split; | ||
| 428 | pte_t *kpte; | 428 | pte_t *kpte; |
| 429 | 429 | ||
| 430 | repeat: | 430 | repeat: |
| @@ -476,26 +476,24 @@ repeat: | |||
| 476 | * and just change the pte: | 476 | * and just change the pte: |
| 477 | */ | 477 | */ |
| 478 | do_split = try_preserve_large_page(kpte, address, cpa); | 478 | do_split = try_preserve_large_page(kpte, address, cpa); |
| 479 | if (do_split < 0) | ||
| 480 | return do_split; | ||
| 481 | |||
| 482 | /* | 479 | /* |
| 483 | * When the range fits into the existing large page, | 480 | * When the range fits into the existing large page, |
| 484 | * return. cp->numpages and cpa->tlbflush have been updated in | 481 | * return. cp->numpages and cpa->tlbflush have been updated in |
| 485 | * try_large_page: | 482 | * try_large_page: |
| 486 | */ | 483 | */ |
| 487 | if (do_split == 0) | 484 | if (do_split <= 0) |
| 488 | return 0; | 485 | return do_split; |
| 489 | 486 | ||
| 490 | /* | 487 | /* |
| 491 | * We have to split the large page: | 488 | * We have to split the large page: |
| 492 | */ | 489 | */ |
| 493 | do_split = split_large_page(kpte, address); | 490 | err = split_large_page(kpte, address); |
| 494 | if (do_split) | 491 | if (!err) { |
| 495 | return do_split; | 492 | cpa->flushtlb = 1; |
| 496 | cpa->flushtlb = 1; | 493 | goto repeat; |
| 494 | } | ||
| 497 | 495 | ||
| 498 | goto repeat; | 496 | return err; |
| 499 | } | 497 | } |
| 500 | 498 | ||
| 501 | /** | 499 | /** |
