diff options
| author | Ingo Molnar <[email protected]> | 2014-07-28 10:03:00 +0200 | 
|---|---|---|
| committer | Ingo Molnar <[email protected]> | 2014-07-28 10:03:00 +0200 | 
| commit | ca5bc6cd5de5b53eb8fd6fea39aa3fe2a1e8c3d9 (patch) | |
| tree | 75beaae2d4b6bc654eb28994dd5906d8dcf5ef46 /drivers/char/hw_random/virtio-rng.c | |
| parent | c1221321b7c25b53204447cff9949a6d5a7ddddc (diff) | |
| parent | d8d28c8f00e84a72e8bee39a85835635417bee49 (diff) | |
Merge branch 'sched/urgent' into sched/core, to merge fixes before applying new changes
Signed-off-by: Ingo Molnar <[email protected]>
Diffstat (limited to 'drivers/char/hw_random/virtio-rng.c')
| -rw-r--r-- | drivers/char/hw_random/virtio-rng.c | 10 | 
1 files changed, 10 insertions, 0 deletions
| diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c index f3e71501de54..e9b15bc18b4d 100644 --- a/drivers/char/hw_random/virtio-rng.c +++ b/drivers/char/hw_random/virtio-rng.c @@ -38,6 +38,8 @@ struct virtrng_info {  	int index;  }; +static bool probe_done; +  static void random_recv_done(struct virtqueue *vq)  {  	struct virtrng_info *vi = vq->vdev->priv; @@ -67,6 +69,13 @@ static int virtio_read(struct hwrng *rng, void *buf, size_t size, bool wait)  	int ret;  	struct virtrng_info *vi = (struct virtrng_info *)rng->priv; +	/* +	 * Don't ask host for data till we're setup.  This call can +	 * happen during hwrng_register(), after commit d9e7972619. +	 */ +	if (unlikely(!probe_done)) +		return 0; +  	if (!vi->busy) {  		vi->busy = true;  		init_completion(&vi->have_data); @@ -137,6 +146,7 @@ static int probe_common(struct virtio_device *vdev)  		return err;  	} +	probe_done = true;  	return 0;  } |