Commit a79b53a
committed
KVM: x86: fix deadlock for KVM_XEN_EVTCHN_RESET
While KVM_XEN_EVTCHN_RESET is usually called with no vCPUs running,
if that happened it could cause a deadlock. This is due to
kvm_xen_eventfd_reset() doing a synchronize_srcu() inside
a kvm->lock critical section.
To avoid this, first collect all the evtchnfd objects in an
array and free all of them once the kvm->lock critical section
is over and th SRCU grace period has expired.
Reported-by: Michal Luczaj <[email protected]>
Cc: David Woodhouse <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>1 parent af28089 commit a79b53a
File tree
2 files changed
+33
-3
lines changed- arch/x86/kvm
- tools/testing/selftests/kvm/x86_64
2 files changed
+33
-3
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1942 | 1942 | | |
1943 | 1943 | | |
1944 | 1944 | | |
1945 | | - | |
| 1945 | + | |
1946 | 1946 | | |
| 1947 | + | |
1947 | 1948 | | |
1948 | 1949 | | |
| 1950 | + | |
| 1951 | + | |
| 1952 | + | |
| 1953 | + | |
| 1954 | + | |
| 1955 | + | |
| 1956 | + | |
| 1957 | + | |
| 1958 | + | |
| 1959 | + | |
| 1960 | + | |
| 1961 | + | |
| 1962 | + | |
| 1963 | + | |
| 1964 | + | |
| 1965 | + | |
1949 | 1966 | | |
| 1967 | + | |
1950 | 1968 | | |
1951 | | - | |
| 1969 | + | |
| 1970 | + | |
| 1971 | + | |
| 1972 | + | |
| 1973 | + | |
| 1974 | + | |
| 1975 | + | |
1952 | 1976 | | |
1953 | 1977 | | |
1954 | 1978 | | |
1955 | 1979 | | |
1956 | | - | |
| 1980 | + | |
1957 | 1981 | | |
1958 | 1982 | | |
1959 | 1983 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
962 | 962 | | |
963 | 963 | | |
964 | 964 | | |
| 965 | + | |
| 966 | + | |
| 967 | + | |
| 968 | + | |
| 969 | + | |
| 970 | + | |
965 | 971 | | |
966 | 972 | | |
967 | 973 | | |
| |||
0 commit comments