diff options
author | Javier Martinez Canillas <martinez.javier@gmail.com> | 2011-03-28 12:27:31 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-03-31 01:28:14 -0400 |
commit | ab392d2d6d4e2e50502985eead545b44ee58802c (patch) | |
tree | 7a05c3726db3f95e5efe6bc6314deafa27884158 /drivers/net/niu.c | |
parent | b3abfbd2951102f5f5b8fe251a672e5223ac972b (diff) |
drivers/net: Remove IRQF_SAMPLE_RANDOM flag from network drivers
The IRQF_SAMPLE_RANDOM flag is marked as deprecated and will be removed.
Every input point to the kernel's entropy pool have to better document the
type of entropy source it is.
drivers/char/random.c now implements a set of interfaces that can be used for
devices to collect enviromental noise. IRQF_SAMPLE_RANDOM will be replaced
with these add_*_randomness exported functions.
Network drivers are not a good source of entropy. They use as a source of
entropy essentially a remote host. Which means that the source of entropy can
be potentially controlled by an attacker. Also, with heavy workloads the
entropy decreases due to less hardware interrupts happening thanks to irq
mitigation and NAPI.
If a system relies in its network interface as a entropy source it has a false
sense of security. Systems that don't have devices whose drivers are good
sources of entropy, should either use a hardware random number generator or
feed the kernel's entropy pool from userspace using other sources of entropy
such as EGD, video_entropyd, timer_entropyd and audio-entropyd.
Signed-off-by: Javier Martinez Canillas <martinez.javier@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/niu.c')
-rw-r--r-- | drivers/net/niu.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/net/niu.c b/drivers/net/niu.c index 32678b6c6b39..681a42ca5c51 100644 --- a/drivers/net/niu.c +++ b/drivers/net/niu.c | |||
@@ -6071,8 +6071,7 @@ static int niu_request_irq(struct niu *np) | |||
6071 | for (i = 0; i < np->num_ldg; i++) { | 6071 | for (i = 0; i < np->num_ldg; i++) { |
6072 | struct niu_ldg *lp = &np->ldg[i]; | 6072 | struct niu_ldg *lp = &np->ldg[i]; |
6073 | 6073 | ||
6074 | err = request_irq(lp->irq, niu_interrupt, | 6074 | err = request_irq(lp->irq, niu_interrupt, IRQF_SHARED, |
6075 | IRQF_SHARED | IRQF_SAMPLE_RANDOM, | ||
6076 | np->irq_name[i], lp); | 6075 | np->irq_name[i], lp); |
6077 | if (err) | 6076 | if (err) |
6078 | goto out_free_irqs; | 6077 | goto out_free_irqs; |