diff options
| -rw-r--r-- | arch/x86/kernel/kvm.c | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c index b8ba6e4a27e4..e554e5ad2fe8 100644 --- a/arch/x86/kernel/kvm.c +++ b/arch/x86/kernel/kvm.c | |||
| @@ -79,7 +79,6 @@ struct kvm_task_sleep_node { | |||
| 79 | u32 token; | 79 | u32 token; |
| 80 | int cpu; | 80 | int cpu; |
| 81 | bool halted; | 81 | bool halted; |
| 82 | struct mm_struct *mm; | ||
| 83 | }; | 82 | }; |
| 84 | 83 | ||
| 85 | static struct kvm_task_sleep_head { | 84 | static struct kvm_task_sleep_head { |
| @@ -126,9 +125,7 @@ void kvm_async_pf_task_wait(u32 token) | |||
| 126 | 125 | ||
| 127 | n.token = token; | 126 | n.token = token; |
| 128 | n.cpu = smp_processor_id(); | 127 | n.cpu = smp_processor_id(); |
| 129 | n.mm = current->active_mm; | ||
| 130 | n.halted = idle || preempt_count() > 1; | 128 | n.halted = idle || preempt_count() > 1; |
| 131 | atomic_inc(&n.mm->mm_count); | ||
| 132 | init_waitqueue_head(&n.wq); | 129 | init_waitqueue_head(&n.wq); |
| 133 | hlist_add_head(&n.link, &b->list); | 130 | hlist_add_head(&n.link, &b->list); |
| 134 | spin_unlock(&b->lock); | 131 | spin_unlock(&b->lock); |
| @@ -161,9 +158,6 @@ EXPORT_SYMBOL_GPL(kvm_async_pf_task_wait); | |||
| 161 | static void apf_task_wake_one(struct kvm_task_sleep_node *n) | 158 | static void apf_task_wake_one(struct kvm_task_sleep_node *n) |
| 162 | { | 159 | { |
| 163 | hlist_del_init(&n->link); | 160 | hlist_del_init(&n->link); |
| 164 | if (!n->mm) | ||
| 165 | return; | ||
| 166 | mmdrop(n->mm); | ||
| 167 | if (n->halted) | 161 | if (n->halted) |
| 168 | smp_send_reschedule(n->cpu); | 162 | smp_send_reschedule(n->cpu); |
| 169 | else if (waitqueue_active(&n->wq)) | 163 | else if (waitqueue_active(&n->wq)) |
| @@ -207,7 +201,7 @@ again: | |||
| 207 | * async PF was not yet handled. | 201 | * async PF was not yet handled. |
| 208 | * Add dummy entry for the token. | 202 | * Add dummy entry for the token. |
| 209 | */ | 203 | */ |
| 210 | n = kmalloc(sizeof(*n), GFP_ATOMIC); | 204 | n = kzalloc(sizeof(*n), GFP_ATOMIC); |
| 211 | if (!n) { | 205 | if (!n) { |
| 212 | /* | 206 | /* |
| 213 | * Allocation failed! Busy wait while other cpu | 207 | * Allocation failed! Busy wait while other cpu |
| @@ -219,7 +213,6 @@ again: | |||
| 219 | } | 213 | } |
| 220 | n->token = token; | 214 | n->token = token; |
| 221 | n->cpu = smp_processor_id(); | 215 | n->cpu = smp_processor_id(); |
| 222 | n->mm = NULL; | ||
| 223 | init_waitqueue_head(&n->wq); | 216 | init_waitqueue_head(&n->wq); |
| 224 | hlist_add_head(&n->link, &b->list); | 217 | hlist_add_head(&n->link, &b->list); |
| 225 | } else | 218 | } else |
