Skip to contentSkip to conversation

kvm: fix crash on irqfd deassign

PATCH Applied Michael S. Tsirkin 3 participants 6 messages Mar 17, 2011 – Mar 22, 2011 KVM

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 kvm: fix crash on irqfd deassign

irqfd in kvm used flush_work incorrectly:
it assumed that work scheduled previously can't run after flush_work, but since kvm uses a non-reentrant workqueue (by means of schedule_work)
we need flush_work_sync to get that guarantee.

---

Note: this is needed for kernel 2.6.39 and earlier.

 virt/kvm/eventfd.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
virt/kvm/eventfd.c +1 -1
index 2ca4535..cdf51c9 100644
@@ -90,7 +90,7 @@ irqfd_shutdown(struct work_struct *work)
 	 * We know no new events will be scheduled at this point, so block
 	 * until all previously outstanding events have completed
 	 */
-	flush_work(&irqfd->inject);
+	flush_work_sync(&irqfd->inject);
 
 	/*
 	 * It is now safe to release the object's resources
Signature · 1 line
1.7.3.2.91.g446ac
#1 lore raw
Quoted 6 lines · Michael S. Tsirkin

irqfd in kvm used flush_work incorrectly:
it assumed that work scheduled previously can't run after flush_work, but since kvm uses a non-reentrant workqueue (by means of schedule_work)
we need flush_work_sync to get that guarantee.

Quoted 6 lines

---

Note: this is needed for kernel 2.6.39 and earlier.

This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read Documentation/stable_kernel_rules.txt for how to do this properly.

thanks,

greg k-h

#2 lore raw
Quoted 14 lines · Greg KH
Quoted 6 lines · Michael S. Tsirkin

irqfd in kvm used flush_work incorrectly:
it assumed that work scheduled previously can't run after flush_work, but since kvm uses a non-reentrant workqueue (by means of schedule_work)
we need flush_work_sync to get that guarantee.

Quoted 6 lines

---

Note: this is needed for kernel 2.6.39 and earlier.

Quoted 7 lines

This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read Documentation/stable_kernel_rules.txt for how to do this properly.

thanks,

greg k-h

What I missed is Cc: [email protected] in the text?
OK, thanks for the correction. Actually I forgot, Avi and Marcelo want to handle stable patches for kvm themselves.
Avi, Marcelo, right?
So Greg, you can forget about this one for now.

Thanks,

Signature · 1 line
MST
#3 lore raw
In reply to Michael S. Tsirkin
Quoted 6 lines · Michael S. Tsirkin

irqfd in kvm used flush_work incorrectly:
it assumed that work scheduled previously can't run after flush_work, but since kvm uses a non-reentrant workqueue (by means of schedule_work)
we need flush_work_sync to get that guarantee.

Quoted 7 lines

---

Note: this is needed for kernel 2.6.39 and earlier.

What about kvm.git master?

Signature · 1 line
error compiling committee.c: too many arguments to function
#4 lore raw
Quoted 12 lines · Avi Kivity
Quoted 11 lines · Michael S. Tsirkin

irqfd in kvm used flush_work incorrectly:
it assumed that work scheduled previously can't run after flush_work, but since kvm uses a non-reentrant workqueue (by means of schedule_work)
we need flush_work_sync to get that guarantee.

---

Quoted 4 lines
Quoted 2 lines

Note: this is needed for kernel 2.6.39 and earlier.

What about kvm.git master?

Sorry about the confusion.

Clarification: this is needed on kvm.git master,
as well as 2.6.39 and earlier.

Quoted 2 lines
Signature · 1 line
error compiling committee.c: too many arguments to function
Applied
#5 lore raw
In reply to Michael S. Tsirkin
Quoted 6 lines · Michael S. Tsirkin

irqfd in kvm used flush_work incorrectly:
it assumed that work scheduled previously can't run after flush_work, but since kvm uses a non-reentrant workqueue (by means of schedule_work)
we need flush_work_sync to get that guarantee.

Applied, and queued for 2.6.39. Thanks.

Signature · 1 line
error compiling committee.c: too many arguments to function