Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cc8744e1 authored by Amit Shah's avatar Amit Shah Committed by Rusty Russell
Browse files

virtio: rng: allow tasks to be killed that are waiting for rng input



Use wait_for_completion_killable() instead of wait_for_completion() when
waiting for the host to send us entropy.  Without this,

  # cat /dev/hwrng
  ^C

just hangs.

Signed-off-by: default avatarAmit Shah <amit.shah@redhat.com>
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent ddcc2869
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ static void register_buffer(u8 *buf, size_t size)

static int virtio_read(struct hwrng *rng, void *buf, size_t size, bool wait)
{
	int ret;

	if (!busy) {
		busy = true;
@@ -65,7 +66,9 @@ static int virtio_read(struct hwrng *rng, void *buf, size_t size, bool wait)
	if (!wait)
		return 0;

	wait_for_completion(&have_data);
	ret = wait_for_completion_killable(&have_data);
	if (ret < 0)
		return ret;

	busy = false;