linux-hardened/drivers
Tomas Janousek 5cdc98b8f5 rtc-dev: stop periodic interrupts on device release
Solves http://bugzilla.kernel.org/show_bug.cgi?id=11127

The old rtc.c driver did it and some drivers (like rtc-sh) do it in their
release function, though they should not -- because they should provide
the irq_set_state op and the rtc framework itself should care about it.
This patch makes it do so.

I am aware that some drivers, like rtc-sh, handle userspace PIE sets in
their ioctl op (instead of having the framework call the op), exporting
the irq_set_state op at the same time.  The logic in rtc_irq_set_state
should make sure it doesn't matter and the driver should not need to care
stopping periodic interrupts in its release routine any more.

The correct way, in my opinion, should be this:
1) The driver provides the irq_set_state op and does not care closing the
   interrupts in its release op.
2) If the driver does not provide the op and handles PIE in the ioctl op, it's
   reponsible for closing them in its release op.
3) Something similar for other IRQs, like UIE -- if there's no in-kernel API
   like irq_set_state, handle it in ioctl and release ops. The framework will
   be responsible either for everything or for nothing. (This will probably
   change later.)

Signed-off-by: Tomas Janousek <tomi@nomi.cz>
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Alessandro Zummo <a.zummo@towertech.it>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-07-30 09:41:47 -07:00
..
accessibility
acpi acpi cpufreq cleanup: move bailing out of function before locking the mutex 2008-07-30 09:41:43 -07:00
amba
ata [ARM] 5179/1: Replace obsolete IRQT_* and __IRQT_* values with IRQ_TYPE_* 2008-07-27 09:46:18 +01:00
atm atm: [fore200e] use MODULE_FIRMWARE() and other suggested cleanups 2008-07-23 20:29:21 -07:00
auxdisplay auxdisplay: small cleanups 2008-07-24 10:47:41 -07:00
base more sysdev API change fallout - drivers/base/memory.c 2008-07-28 08:31:58 -07:00
block aoe: convert emsgs_sema into a completion 2008-07-25 10:53:45 -07:00
bluetooth Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-07-20 17:43:29 -07:00
cdrom
char Char: mxser, ratelimit ioctl warning 2008-07-30 09:41:45 -07:00
clocksource
connector
cpufreq cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called already 2008-07-30 09:41:43 -07:00
cpuidle ACPI/CPUIDLE: prevent setting pm_idle to NULL 2008-07-28 08:31:58 -07:00
crypto
dca Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 2008-07-23 12:03:18 -07:00
dio dio: use dio_match_device() in dio_bus_match() 2008-07-20 17:24:40 -07:00
dma I/OAT: I/OAT version 3.0 support 2008-07-22 17:30:57 -07:00
edac edac: mpc85xx fix pci ofdev 2nd pass 2008-07-25 10:53:49 -07:00
eisa driver core: remove DEVICE_NAME_SIZE define 2008-07-21 21:54:53 -07:00
firewire Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2008-07-27 10:24:06 -07:00
firmware iscsi_ibft_find: fix modpost warning 2008-07-30 09:41:44 -07:00
gpio gpio: max732x driver 2008-07-25 10:53:30 -07:00
gpu drm: make drm_minors_cleanup() static 2008-07-26 12:00:11 -07:00
hid Merge branches 'upstream' and 'upstream-fixes' into for-linus 2008-07-23 15:26:10 +02:00
hwmon device create: hwmon: convert device_create to device_create_drvdata 2008-07-21 21:54:42 -07:00
i2c i2c: Blackfin I2C Driver: Functional power management support 2008-07-28 12:41:03 +01:00
ide ide: use proper printk() KERN_* levels in ide-probe.c 2008-07-24 22:53:36 +02:00
ieee1394 PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
infiniband Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2008-07-26 20:40:36 -07:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2008-07-28 09:59:26 -07:00
isdn Remove deprecated virt_to_bus() 2008-07-28 12:21:25 +02:00
leds leds: Ensure led->trigger is set earlier 2008-07-23 09:49:56 +01:00
lguest lguest: use cpu capability accessors 2008-07-29 09:58:34 +10:00
macintosh device create: macintosh: convert device_create to device_create_drvdata 2008-07-21 21:54:43 -07:00
mca driver core: remove DEVICE_NAME_SIZE define 2008-07-21 21:54:53 -07:00
md [SCSI] scsi_dh: attach to hardware handler from dm-mpath 2008-07-26 15:14:53 -04:00
media V4L/DVB (8549): mxl5007: Fix an error at include file 2008-07-27 19:36:08 -03:00
memstick memstick: use fully asynchronous request processing 2008-07-26 12:00:04 -07:00
message Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2008-07-27 10:04:52 -07:00
mfd mfd: accept pure device as a parent, not only platform_device 2008-07-29 01:30:26 +02:00
misc Merge branch 'linus' into cpus4096 2008-07-28 21:14:43 +02:00
mmc avr32: some mmc/sd cleanups 2008-07-27 13:57:36 +02:00
mtd Merge git://git.infradead.org/mtd-2.6 2008-07-26 20:30:56 -07:00
net ibmveth: Fix multiple errors with dma_mapping_error conversion 2008-07-28 16:30:51 +10:00
nubus
of spi: Add OF binding support for SPI busses 2008-07-25 22:34:40 -04:00
oprofile
parisc
parport make parport_cs_release() static 2008-07-26 12:00:11 -07:00
pci PCI: add D3 power state avoidance quirk 2008-07-28 15:12:11 -07:00
pcmcia [ARM] 5179/1: Replace obsolete IRQT_* and __IRQT_* values with IRQ_TYPE_* 2008-07-27 09:46:18 +01:00
pnp make pnp_add_card_id() static 2008-07-26 12:00:11 -07:00
power drivers/power: fix platform driver hotplug/coldplug 2008-07-25 10:53:28 -07:00
ps3
rapidio
rtc rtc-dev: stop periodic interrupts on device release 2008-07-30 09:41:47 -07:00
s390 KVM: s390: Fix guest kconfig 2008-07-27 11:35:47 +03:00
sbus sparc64: fix up bus_id changes in sparc core code 2008-07-21 21:55:03 -07:00
scsi [SCSI] qla2xxx: fix msleep compile error 2008-07-28 10:13:22 -05:00
serial remove drivers/serial/v850e_uart.c 2008-07-30 09:41:46 -07:00
sh
sn
spi spi_s3c24xx: really assign busnum 2008-07-28 16:30:21 -07:00
ssb
tc
telephony ixj: push BKL into driver and wrap ioctls 2008-07-25 10:53:43 -07:00
thermal
uio UIO: add generic UIO platform driver 2008-07-21 21:54:55 -07:00
usb USB: m66592-udc: Fix up dev_set_name() badness. 2008-07-30 09:41:46 -07:00
video gbefb: cmap FIFO timeout 2008-07-30 09:41:47 -07:00
virtio virtio: Add transport feature handling stub for virtio_ring. 2008-07-25 12:06:14 +10:00
w1
watchdog hpwdt: don't use static flags 2008-07-30 09:41:45 -07:00
xen sysdev: Pass the attribute to the low level sysdev show/store function 2008-07-21 21:55:02 -07:00
zorro move memory_read_from_buffer() from fs.h to string.h 2008-07-24 10:47:13 -07:00
Kconfig
Makefile gpiolib: allow user-selection 2008-07-25 10:53:30 -07:00