random: remove rand_initialize_irq()
With the new interrupt sampling system, we are no longer using the timer_rand_state structure in the irq descriptor, so we can stop initializing it now. [ Merged in fixes from Sedat to find some last missing references to rand_initialize_irq() ] Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Signed-off-by: Sedat Dilek <sedat.dilek@gmail.com>
This commit is contained in:
parent
27130f0cc3
commit
c5857ccf29
|
@ -23,7 +23,6 @@
|
|||
#include <linux/ioport.h>
|
||||
#include <linux/kernel_stat.h>
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/random.h> /* for rand_initialize_irq() */
|
||||
#include <linux/signal.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/threads.h>
|
||||
|
|
|
@ -634,43 +634,6 @@ struct timer_rand_state {
|
|||
unsigned dont_count_entropy:1;
|
||||
};
|
||||
|
||||
#ifndef CONFIG_GENERIC_HARDIRQS
|
||||
|
||||
static struct timer_rand_state *irq_timer_state[NR_IRQS];
|
||||
|
||||
static struct timer_rand_state *get_timer_rand_state(unsigned int irq)
|
||||
{
|
||||
return irq_timer_state[irq];
|
||||
}
|
||||
|
||||
static void set_timer_rand_state(unsigned int irq,
|
||||
struct timer_rand_state *state)
|
||||
{
|
||||
irq_timer_state[irq] = state;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static struct timer_rand_state *get_timer_rand_state(unsigned int irq)
|
||||
{
|
||||
struct irq_desc *desc;
|
||||
|
||||
desc = irq_to_desc(irq);
|
||||
|
||||
return desc->timer_rand_state;
|
||||
}
|
||||
|
||||
static void set_timer_rand_state(unsigned int irq,
|
||||
struct timer_rand_state *state)
|
||||
{
|
||||
struct irq_desc *desc;
|
||||
|
||||
desc = irq_to_desc(irq);
|
||||
|
||||
desc->timer_rand_state = state;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Add device- or boot-specific data to the input and nonblocking
|
||||
* pools to help initialize them to unique values.
|
||||
|
@ -1133,24 +1096,6 @@ static int rand_initialize(void)
|
|||
}
|
||||
module_init(rand_initialize);
|
||||
|
||||
void rand_initialize_irq(int irq)
|
||||
{
|
||||
struct timer_rand_state *state;
|
||||
|
||||
state = get_timer_rand_state(irq);
|
||||
|
||||
if (state)
|
||||
return;
|
||||
|
||||
/*
|
||||
* If kzalloc returns null, we just won't use that entropy
|
||||
* source.
|
||||
*/
|
||||
state = kzalloc(sizeof(struct timer_rand_state), GFP_KERNEL);
|
||||
if (state)
|
||||
set_timer_rand_state(irq, state);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLOCK
|
||||
void rand_initialize_disk(struct gendisk *disk)
|
||||
{
|
||||
|
|
|
@ -931,9 +931,6 @@ static int __devinit ab3100_probe(struct i2c_client *client,
|
|||
|
||||
err = request_threaded_irq(client->irq, NULL, ab3100_irq_handler,
|
||||
IRQF_ONESHOT, "ab3100-core", ab3100);
|
||||
/* This real unpredictable IRQ is of course sampled for entropy */
|
||||
rand_initialize_irq(client->irq);
|
||||
|
||||
if (err)
|
||||
goto exit_no_irq;
|
||||
|
||||
|
|
|
@ -39,7 +39,6 @@ struct module;
|
|||
*/
|
||||
struct irq_desc {
|
||||
struct irq_data irq_data;
|
||||
struct timer_rand_state *timer_rand_state;
|
||||
unsigned int __percpu *kstat_irqs;
|
||||
irq_flow_handler_t handle_irq;
|
||||
#ifdef CONFIG_IRQ_PREFLOW_FASTEOI
|
||||
|
|
|
@ -48,8 +48,6 @@ struct rnd_state {
|
|||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
extern void rand_initialize_irq(int irq);
|
||||
|
||||
extern void add_device_randomness(const void *, unsigned int);
|
||||
extern void add_input_randomness(unsigned int type, unsigned int code,
|
||||
unsigned int value);
|
||||
|
|
|
@ -893,22 +893,6 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
|
|||
return -ENOSYS;
|
||||
if (!try_module_get(desc->owner))
|
||||
return -ENODEV;
|
||||
/*
|
||||
* Some drivers like serial.c use request_irq() heavily,
|
||||
* so we have to be careful not to interfere with a
|
||||
* running system.
|
||||
*/
|
||||
if (new->flags & IRQF_SAMPLE_RANDOM) {
|
||||
/*
|
||||
* This function might sleep, we want to call it first,
|
||||
* outside of the atomic block.
|
||||
* Yes, this might clear the entropy pool if the wrong
|
||||
* driver is attempted to be loaded, without actually
|
||||
* installing a new handler, but is this really a problem,
|
||||
* only the sysadmin is able to do this.
|
||||
*/
|
||||
rand_initialize_irq(irq);
|
||||
}
|
||||
|
||||
/*
|
||||
* Check whether the interrupt nests into another interrupt
|
||||
|
@ -1354,7 +1338,6 @@ EXPORT_SYMBOL(free_irq);
|
|||
* Flags:
|
||||
*
|
||||
* IRQF_SHARED Interrupt is shared
|
||||
* IRQF_SAMPLE_RANDOM The interrupt can be used for entropy
|
||||
* IRQF_TRIGGER_* Specify active edge(s) or level
|
||||
*
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue