linux/drivers/mfd
Theodore Ts'o 775f4b297b random: make 'add_interrupt_randomness()' do something sane
We've been moving away from add_interrupt_randomness() for various
reasons: it's too expensive to do on every interrupt, and flooding the
CPU with interrupts could theoretically cause bogus floods of entropy
from a somewhat externally controllable source.

This solves both problems by limiting the actual randomness addition
to just once a second or after 64 interrupts, whicever comes first.
During that time, the interrupt cycle data is buffered up in a per-cpu
pool.  Also, we make sure the the nonblocking pool used by urandom is
initialized before we start feeding the normal input pool.  This
assures that /dev/urandom is returning unpredictable data as soon as
possible.

(Based on an original patch by Linus, but significantly modified by
tytso.)

Tested-by: Eric Wustrow <ewust@umich.edu>
Reported-by: Eric Wustrow <ewust@umich.edu>
Reported-by: Nadia Heninger <nadiah@cs.ucsd.edu>
Reported-by: Zakir Durumeric <zakir@umich.edu>
Reported-by: J. Alex Halderman <jhalderm@umich.edu>.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Cc: stable@vger.kernel.org
2012-07-14 20:17:28 -04:00
..
88pm860x-core.c mfd: Fix pm8606 build failure 2012-03-06 18:46:57 +01:00
88pm860x-i2c.c mfd: Add ability to wake the system for 88pm860x 2012-03-06 18:46:49 +01:00
aat2870-core.c simple_open: automatically convert to simple_open() 2012-04-05 15:25:50 -07:00
ab3100-core.c random: make 'add_interrupt_randomness()' do something sane 2012-07-14 20:17:28 -04:00
ab3100-otp.c mfd: Fix memory leak in ab3100_otp_probe 2010-08-12 11:27:17 +02:00
ab5500-core.h mfd: Break out ab5500 debugfs code 2011-10-24 14:09:16 +02:00
ab8500-core.c mfd: Enable Device Tree for ab8500-core driver 2012-05-20 17:27:10 +02:00
ab8500-debugfs.c mfd: Enable ab8500-debug when Device Tree is enabled 2012-05-20 17:27:10 +02:00
ab8500-gpadc.c mfd: Enable ab8500-gpadc driver for Device Tree 2012-05-20 17:27:11 +02:00
ab8500-sysctrl.c mfd: Enable Device Tree support in the ab8500-sysctrl driver 2012-05-20 17:27:13 +02:00
abx500-core.c mfd: Add module.h to the implicit drivers/mfd users 2011-10-31 19:32:04 -04:00
adp5520.c mfd: Set adp5520 bits if new value is different from the old one 2011-12-20 18:50:55 +01:00
anatop-mfd.c mfd: Make anatop register accessor more flexible and rename meaningfully 2012-05-20 17:27:07 +02:00
asic3.c mfd: No need to check for the GPIO offset from asic3_gpio_to_irq 2012-05-01 12:00:23 +02:00
cs5535-mfd.c mfd: Use module_pci_driver 2012-05-01 12:00:21 +02:00
da903x.c mfd: Set da903x bits if new value is different from the old one 2011-12-20 18:50:56 +01:00
da9052-core.c MFD changes for 3.5 2012-05-29 11:53:11 -07:00
da9052-i2c.c mfd: Convert da9052 to use devm_* APIs 2012-05-20 17:27:03 +02:00
da9052-spi.c mfd: Convert da9052 to use devm_* APIs 2012-05-20 17:27:03 +02:00
davinci_voicecodec.c mfd: Use mfd cell platform_data for davinci cells platform bits 2011-05-26 19:45:13 +02:00
db8500-prcmu.c ARM: ux500: Provide regulator support for SMSC911x via Device Tree 2012-06-01 02:04:46 +02:00
dbx500-prcmu-regs.h mfd : Check if the other db8500 core is in WFI 2012-03-06 18:46:56 +01:00
dm355evm_msp.c mfd: Use gpio_request_one from dm355evm_msp 2012-01-09 00:37:38 +01:00
ezx-pcap.c Fix common misspellings 2011-03-31 11:26:23 -03:00
htc-egpio.c mfd: Fold irq_set_chip/irq_set_handler 2011-03-27 00:09:52 +01:00
htc-i2cpld.c mfd: Fold irq_set_chip/irq_set_handler 2011-03-27 00:09:52 +01:00
htc-pasic3.c w1: ds1wm: add a reset recovery parameter 2011-07-08 21:14:44 -07:00
intel_msic.c mfd: Convert Intel MSIC driver to use devm_* interfaces. 2012-05-01 12:00:23 +02:00
janz-cmodio.c mfd: Use module_pci_driver 2012-05-01 12:00:21 +02:00
jz4740-adc.c mfd: Don't declare jz4740_adc_cells const 2012-01-09 00:37:36 +01:00
Kconfig MFD changes for 3.5 2012-05-29 11:53:11 -07:00
lm3533-core.c mfd: Mark two lm3533 zone registers as volatile 2012-05-20 17:27:14 +02:00
lm3533-ctrlbank.c mfd: Use SI-units for the lm3533 max-current interface 2012-05-20 17:27:02 +02:00
lpc_ich.c watchdog: Convert iTCO_wdt driver to mfd model 2012-05-09 17:20:09 +02:00
lpc_sch.c mfd: Change tunnelcreek watchdog name on the lpc_sch subdevices array 2012-05-20 17:27:03 +02:00
Makefile MFD changes for 3.5 2012-05-29 11:53:11 -07:00
max8925-core.c max8925_power: Remove support for irq bits that do not exist 2011-11-25 23:24:45 +04:00
max8925-i2c.c mfd: Add pm ops to max8925 2012-01-09 01:03:34 +01:00
max8997-irq.c mfd: Revert "mfd: add irq domain support for max8997 interrupts" 2012-04-17 14:51:47 +01:00
max8997.c mfd: Revert "mfd: add irq domain support for max8997 interrupts" 2012-04-17 14:51:47 +01:00
max8998-irq.c mfd: Cleanup irq namespace 2011-03-27 00:09:51 +01:00
max8998.c mfd: Use standard device wakeup for handling max8998 wakeup device 2012-01-09 00:37:36 +01:00
max77693-irq.c mfd: Add MAX77693 irq handler 2012-05-20 17:27:06 +02:00
max77693.c mfd: Add MAX77693 irq handler 2012-05-20 17:27:06 +02:00
mc13xxx-core.c MFD changes for 3.5 2012-05-29 11:53:11 -07:00
mc13xxx-i2c.c mfd: Add mc13xxx i2c driver 2012-05-01 12:35:41 +02:00
mc13xxx-spi.c mfd: Move the mc13xxx-core spi specific code into a separate module 2012-05-01 12:35:40 +02:00
mc13xxx.h mfd: Move the mc13xxx-core spi specific code into a separate module 2012-05-01 12:35:40 +02:00
mcp-core.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
mcp-sa11x0.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
menelaus.c Merge branch 'for-next' of git://git.infradead.org/users/sameo/mfd-2.6 2011-11-03 09:40:51 -07:00
mfd-core.c mfd: Fix ACPI conflict check 2012-03-06 18:46:47 +01:00
omap-usb-host.c mfd: Fix build breakage in omap-usb-host.c 2012-05-01 12:00:24 +02:00
palmas.c mfd: palmas PMIC device support 2012-05-18 16:54:47 +01:00
pcf50633-adc.c mfd: Convert MFD drivers to use module_platform_driver 2012-01-09 00:37:31 +01:00
pcf50633-core.c mfd: Convert pcf50633-core to use devm_* APIs 2012-05-20 17:27:04 +02:00
pcf50633-gpio.c mfd: Include linux/mfd/pcf50633/pmic.h in pcf50633-gpio.c 2012-03-06 18:46:51 +01:00
pcf50633-irq.c mfd: Include linux/mfd/pcf50633/mbc.h in pcf50633-irq.c 2012-03-06 18:46:51 +01:00
pm8xxx-irq.c mfd: Add pm8xxx irq support 2011-05-26 19:45:28 +02:00
pm8921-core.c mfd: Add pm8xxx irq support 2011-05-26 19:45:28 +02:00
rc5t583-irq.c mfd: Add support for RICOH PMIC RC5T583 2012-03-16 20:05:45 +01:00
rc5t583.c mfd: Convert rc5t583 to devm_regmap_init_i2c() 2012-05-09 17:50:29 +02:00
rdc321x-southbridge.c mfd: Use module_pci_driver 2012-05-01 12:00:21 +02:00
s5m-core.c mfd: Convert s5m-core to devm_regmap_init_i2c() 2012-05-09 17:50:53 +02:00
s5m-irq.c mfd: Fix s5m error handling for invalid device type 2012-03-06 18:46:35 +01:00
sm501.c mfd: Use DIV_ROUND_CLOSEST for sm501 clock 2012-03-16 20:37:47 +01:00
sta2x11-mfd.c mfd: Add driver for STA2X11 MFD block 2012-05-09 15:34:28 +02:00
stmpe-i2c.c Viresh has moved 2012-06-20 14:39:36 -07:00
stmpe-spi.c Viresh has moved 2012-06-20 14:39:36 -07:00
stmpe.c mfd: Add support for no-interrupt stmpe config 2012-03-06 18:46:38 +01:00
stmpe.h mfd: Add support for stmpe variant 801 2012-01-09 00:37:44 +01:00
t7l66xb.c mfd: Convert MFD drivers to use module_platform_driver 2012-01-09 00:37:31 +01:00
tc3589x.c mfd: Add missing #ifdef around tc3589x PM block 2011-10-24 14:09:09 +02:00
tc6387xb.c mfd: Convert MFD drivers to use module_platform_driver 2012-01-09 00:37:31 +01:00
tc6393xb.c mtd: Use platform_data to retrieve tmio_nand platform bits 2011-05-26 19:45:04 +02:00
ti-ssp.c mfd: Convert MFD drivers to use module_platform_driver 2012-01-09 00:37:31 +01:00
timberdale.c mfd: Convert to DEFINE_PCI_DEVICE_TABLE 2012-01-09 00:37:37 +01:00
timberdale.h [media] mfd: Add timberdale video-in driver to timberdale 2010-12-29 08:16:46 -02:00
tmio_core.c mfd: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:32:05 -04:00
tps6105x.c mfd: Use mfd cell platform_data for tps6105x cells platform bits 2011-05-26 19:45:11 +02:00
tps6507x.c mfd: Fix off-by-one value range checking for tps6507x 2010-10-29 00:30:29 +02:00
tps6586x.c tps6586x: Add device tree support 2012-05-04 13:25:16 +01:00
tps65010.c mfd: Include <linux/gpio.h> instead of <asm/gpio.h> 2011-01-14 12:37:36 +01:00
tps65090.c MFD changes for 3.5 2012-05-29 11:53:11 -07:00
tps65217.c mfd: Staticise non-exported tps65217_update_bits() 2012-05-20 17:27:00 +02:00
tps65910-irq.c mfd: Add tps65910-irq devicetree init and irqdomain support 2012-05-20 17:27:08 +02:00
tps65910.c mfd: Remove the parsing of dt info for tps65910 gpio 2012-05-22 23:49:52 +02:00
tps65911-comparator.c Fix typo milivolt => millivolt 2012-04-05 16:58:23 -07:00
tps65912-core.c mfd: Initialize tps65912 irq platform data properly 2012-03-06 18:46:47 +01:00
tps65912-i2c.c mfd: Fix off-by-one value range checking for tps65912_i2c_write 2011-07-31 23:28:25 +02:00
tps65912-irq.c tps65912: irq: add interrupt controller 2011-07-31 23:28:22 +02:00
tps65912-spi.c mfd: Remove redundant spi driver bus initialization 2012-01-09 00:37:31 +01:00
twl4030-audio.c mfd: Convert MFD drivers to use module_platform_driver 2012-01-09 00:37:31 +01:00
twl4030-irq.c mfd: enable wakeup on twl4030 IRQ. 2012-05-09 18:02:51 +02:00
twl4030-madc.c mfd: Convert MFD drivers to use module_platform_driver 2012-01-09 00:37:31 +01:00
twl4030-power.c ARM: omap: fix section mismatch errors in TWL PMIC driver 2012-02-13 10:00:35 +00:00
twl6030-irq.c mfd: Replace twl-* pr_ macros by the dev_ equivalent and do various cleanups 2012-03-22 13:05:34 +01:00
twl6030-pwm.c mfd: twl6030-pwm.c needs MODULE_LICENSE 2011-07-31 23:28:27 +02:00
twl6040-core.c mfd: Fix twl6040 build failure 2012-05-23 16:24:14 +02:00
twl6040-irq.c mfd: Add support for Device Tree to twl6040 2012-05-20 17:27:12 +02:00
twl-core.c mfd: Define all twl-regulator feature flags in one place 2012-05-20 17:26:58 +02:00
twl-core.h mfd: Move twl-core IRQ allocation into twl[4030|6030]-irq files 2012-03-22 13:04:33 +01:00
ucb1x00-assabet.c MFD: ucb1x00-assabet: add support for UCB1x00 GPIO switches 2012-02-18 23:15:44 +00:00
ucb1x00-core.c MFD: ucb1x00-core: add wakeup support 2012-02-18 23:15:43 +00:00
ucb1x00-ts.c MFD: ucb1x00: convert to use genirq 2012-02-18 23:15:43 +00:00
ucb1400_core.c Fix common misspellings 2011-03-31 11:26:23 -03:00
vx855.c mfd: Use module_pci_driver 2012-05-01 12:00:21 +02:00
wl1273-core.c mfd: Add module.h to the implicit drivers/mfd users 2011-10-31 19:32:04 -04:00
wm831x-auxadc.c mfd: Convert wm831x to irq_domain 2012-05-20 17:27:07 +02:00
wm831x-core.c mfd: Convert wm831x to irq_domain 2012-05-20 17:27:07 +02:00
wm831x-i2c.c mfd: wm831x: Convert to devm_regmap_init() 2012-02-22 13:57:05 +00:00
wm831x-irq.c mfd: Emulate active low IRQs as well as active high IRQs for wm831x 2012-05-20 17:27:14 +02:00
wm831x-otp.c
wm831x-spi.c MFD changes for 3.4 2012-03-28 13:56:35 -07:00
wm8350-core.c mfd: Convert wm8350 physical I/O to regmap API 2012-05-07 11:32:08 +02:00
wm8350-gpio.c mfd: Rename wm8350 static gpio_set_debounce() 2011-09-06 16:37:58 +02:00
wm8350-i2c.c mfd: Fix double free in wm8350 error path 2012-05-20 17:27:09 +02:00
wm8350-irq.c mfd: wm8350 variable dereferenced before check 2012-03-06 18:46:34 +01:00
wm8350-regmap.c
wm8400-core.c mfd: Export wm8400_block_read() 2012-05-20 17:27:05 +02:00
wm8994-core.c mfd: Convert wm8994 to module_i2c_driver() 2012-05-07 11:32:09 +02:00
wm8994-irq.c mfd: wm8994: Update to fully use irq_domain 2012-05-15 18:57:25 +01:00
wm8994-regmap.c mfd: Cache wm8994 chip revision 2012-05-01 12:00:21 +02:00
wm8994.h mfd: Initialise WM8994 register cache after reading chip ID registers 2011-12-13 00:11:13 +08:00