diff options
| -rw-r--r-- | arch/mips/kernel/smp.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c index 54464fd36198..432f2e376aea 100644 --- a/arch/mips/kernel/smp.c +++ b/arch/mips/kernel/smp.c | |||
| @@ -407,11 +407,12 @@ void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned l | |||
| 407 | 407 | ||
| 408 | preempt_disable(); | 408 | preempt_disable(); |
| 409 | if ((atomic_read(&mm->mm_users) != 1) || (current->mm != mm)) { | 409 | if ((atomic_read(&mm->mm_users) != 1) || (current->mm != mm)) { |
| 410 | struct flush_tlb_data fd; | 410 | struct flush_tlb_data fd = { |
| 411 | .vma = vma, | ||
| 412 | .addr1 = start, | ||
| 413 | .addr2 = end, | ||
| 414 | }; | ||
| 411 | 415 | ||
| 412 | fd.vma = vma; | ||
| 413 | fd.addr1 = start; | ||
| 414 | fd.addr2 = end; | ||
| 415 | smp_on_other_tlbs(flush_tlb_range_ipi, &fd); | 416 | smp_on_other_tlbs(flush_tlb_range_ipi, &fd); |
| 416 | } else { | 417 | } else { |
| 417 | cpumask_t mask = cpu_online_map; | 418 | cpumask_t mask = cpu_online_map; |
| @@ -435,10 +436,11 @@ static void flush_tlb_kernel_range_ipi(void *info) | |||
| 435 | 436 | ||
| 436 | void flush_tlb_kernel_range(unsigned long start, unsigned long end) | 437 | void flush_tlb_kernel_range(unsigned long start, unsigned long end) |
| 437 | { | 438 | { |
| 438 | struct flush_tlb_data fd; | 439 | struct flush_tlb_data fd = { |
| 440 | .addr1 = start, | ||
| 441 | .addr2 = end, | ||
| 442 | }; | ||
| 439 | 443 | ||
| 440 | fd.addr1 = start; | ||
| 441 | fd.addr2 = end; | ||
| 442 | on_each_cpu(flush_tlb_kernel_range_ipi, &fd, 1, 1); | 444 | on_each_cpu(flush_tlb_kernel_range_ipi, &fd, 1, 1); |
| 443 | } | 445 | } |
| 444 | 446 | ||
| @@ -453,10 +455,11 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long page) | |||
| 453 | { | 455 | { |
| 454 | preempt_disable(); | 456 | preempt_disable(); |
| 455 | if ((atomic_read(&vma->vm_mm->mm_users) != 1) || (current->mm != vma->vm_mm)) { | 457 | if ((atomic_read(&vma->vm_mm->mm_users) != 1) || (current->mm != vma->vm_mm)) { |
| 456 | struct flush_tlb_data fd; | 458 | struct flush_tlb_data fd = { |
| 459 | .vma = vma, | ||
| 460 | .addr1 = page, | ||
| 461 | }; | ||
| 457 | 462 | ||
| 458 | fd.vma = vma; | ||
| 459 | fd.addr1 = page; | ||
| 460 | smp_on_other_tlbs(flush_tlb_page_ipi, &fd); | 463 | smp_on_other_tlbs(flush_tlb_page_ipi, &fd); |
| 461 | } else { | 464 | } else { |
| 462 | cpumask_t mask = cpu_online_map; | 465 | cpumask_t mask = cpu_online_map; |
