| From 4b44f2d18a330565227a7348844493c59366171e Mon Sep 17 00:00:00 2001 |
| From: Stephan Mueller <smueller@chronox.de> |
| Date: Mon, 2 May 2016 02:14:34 -0400 |
| Subject: random: add interrupt callback to VMBus IRQ handler |
| |
| From: Stephan Mueller <smueller@chronox.de> |
| |
| commit 4b44f2d18a330565227a7348844493c59366171e upstream. |
| |
| The Hyper-V Linux Integration Services use the VMBus implementation for |
| communication with the Hypervisor. VMBus registers its own interrupt |
| handler that completely bypasses the common Linux interrupt handling. |
| This implies that the interrupt entropy collector is not triggered. |
| |
| This patch adds the interrupt entropy collection callback into the VMBus |
| interrupt handler function. |
| |
| Signed-off-by: Stephan Mueller <stephan.mueller@atsec.com> |
| Signed-off-by: Stephan Mueller <smueller@chronox.de> |
| Signed-off-by: Theodore Ts'o <tytso@mit.edu> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/char/random.c | 1 + |
| drivers/hv/vmbus_drv.c | 3 +++ |
| 2 files changed, 4 insertions(+) |
| |
| --- a/drivers/char/random.c |
| +++ b/drivers/char/random.c |
| @@ -948,6 +948,7 @@ void add_interrupt_randomness(int irq, i |
| /* award one bit for the contents of the fast pool */ |
| credit_entropy_bits(r, credit + 1); |
| } |
| +EXPORT_SYMBOL_GPL(add_interrupt_randomness); |
| |
| #ifdef CONFIG_BLOCK |
| void add_disk_randomness(struct gendisk *disk) |
| --- a/drivers/hv/vmbus_drv.c |
| +++ b/drivers/hv/vmbus_drv.c |
| @@ -41,6 +41,7 @@ |
| #include <linux/ptrace.h> |
| #include <linux/screen_info.h> |
| #include <linux/kdebug.h> |
| +#include <linux/random.h> |
| #include "hyperv_vmbus.h" |
| |
| static struct acpi_device *hv_acpi_dev; |
| @@ -826,6 +827,8 @@ static void vmbus_isr(void) |
| else |
| tasklet_schedule(&msg_dpc); |
| } |
| + |
| + add_interrupt_randomness(HYPERVISOR_CALLBACK_VECTOR, 0); |
| } |
| |
| |