Sheng Yang wrote:
This will call cancel_work_sync(), which may wait upon kvm->lock, which
I think we hold here -> deadlock.

I think that the current code has even bigger problems (races), since a
scheduled work can arrive after the interrupt has been freed and
reallocated.

For the race problem, how about put a cancel_work_sync() for all devices at the beginning of kvm_destroy_vm? Something named kvm_arch_cancel_work_sync...

There is no race at destroy time since the work_struct has a reference on struct kvm. So destruction is only triggered after the last interrupt.

(but what if we get another interrupt immediately afterwards?!)

--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to