summaryrefslogtreecommitdiffstats
path: root/fs/proc
diff options
context:
space:
mode:
authorDexuan Cui <decui@microsoft.com>2020-01-26 06:49:41 +0100
committerSasha Levin <sashal@kernel.org>2020-01-27 04:10:10 +0100
commit9fc3c01a1fae669a2ef9f13ee1e1a26e057d79f8 (patch)
treeabfa8d6dacc777830d4c10eafbfd5497460e4402 /fs/proc
parentvideo: hyperv: hyperv_fb: Use physical memory for fb on HyperV Gen 1 VMs. (diff)
downloadlinux-9fc3c01a1fae669a2ef9f13ee1e1a26e057d79f8.tar.xz
linux-9fc3c01a1fae669a2ef9f13ee1e1a26e057d79f8.zip
Tools: hv: Reopen the devices if read() or write() returns errors
The state machine in the hv_utils driver can run out of order in some corner cases, e.g. if the kvp daemon doesn't call write() fast enough due to some reason, kvp_timeout_func() can run first and move the state to HVUTIL_READY; next, when kvp_on_msg() is called it returns -EINVAL since kvp_transaction.state is smaller than HVUTIL_USERSPACE_REQ; later, the daemon's write() gets an error -EINVAL, and the daemon will exit(). We can reproduce the issue by sending a SIGSTOP signal to the daemon, wait for 1 minute, and send a SIGCONT signal to the daemon: the daemon will exit() quickly. We can fix the issue by forcing a reset of the device (which means the daemon can close() and open() the device again) and doing extra necessary clean-up. Signed-off-by: Dexuan Cui <decui@microsoft.com> Reviewed-by: Michael Kelley <mikelley@microsoft.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'fs/proc')
0 files changed, 0 insertions, 0 deletions