Skip to content

Commit

Permalink
random: remove rand_initialize_irq()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Theodore Ts'o committed Jul 19, 2012
1 parent 27130f0 commit c5857cc
Show file tree
Hide file tree
Showing 6 changed files with 0 additions and 79 deletions.
1 change: 0 additions & 1 deletion arch/ia64/kernel/irq_ia64.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
55 changes: 0 additions & 55 deletions drivers/char/random.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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)
{
Expand Down
3 changes: 0 additions & 3 deletions drivers/mfd/ab3100-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
1 change: 0 additions & 1 deletion include/linux/irqdesc.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 0 additions & 2 deletions include/linux/random.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
17 changes: 0 additions & 17 deletions kernel/irq/manage.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
*
*/
Expand Down

0 comments on commit c5857cc

Please sign in to comment.