linux/drivers
David Brownell 5ad31a5751 rtc: remove BKL for ioctl()
Remove implicit use of BKL in ioctl() from the RTC framework.

Instead, the rtc->ops_lock is used.  That's the same lock that already
protects the RTC operations when they're issued through the exported
rtc_*() calls in drivers/rtc/interface.c ...  making this a bugfix, not
just a cleanup, since both ioctl calls and set_alarm() need to update IRQ
enable flags and that implies a common lock (which RTC drivers as a rule
do not provide on their own).

A new comment at the declaration of "struct rtc_class_ops" summarizes
current locking rules.  It's not clear to me that the exceptions listed
there should exist ...  if not, those are pre-existing problems which can
be fixed in a patch that doesn't relate to BKL removal.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Jonathan Corbet <corbet@lwn.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-24 10:47:33 -07:00
..
accessibility
acpi pm: acpi pm: add DMI quirk list for ACPI 1.0 suspend ordering 2008-07-24 10:47:24 -07:00
amba
ata
atm Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-07-18 02:39:39 -07:00
auxdisplay
base memory-hotplug: add sysfs removable attribute for hotplug memory remove 2008-07-24 10:47:21 -07:00
block device create: block: convert device_create to device_create_drvdata 2008-07-21 21:54:41 -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 rtc: push the BKL down into the driver ioctl method 2008-07-24 10:47:33 -07:00
clocksource
connector
cpufreq Merge branch 'cpus4096-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-07-23 18:37:44 -07:00
cpuidle sysdev: Pass the attribute to the low level sysdev show/store function 2008-07-21 21:55:02 -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 powerpc/cell/edac: Log a syndrome code in case of correctable error 2008-07-22 10:39:36 +10:00
eisa driver core: remove DEVICE_NAME_SIZE define 2008-07-21 21:54:53 -07:00
firewire
firmware cpumask: Replace cpumask_of_cpu with cpumask_of_cpu_ptr 2008-07-18 22:02:57 +02:00
gpio gpio: pcf857x: add lock and handle more chips 2008-07-22 09:59:41 -07:00
gpu
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 Driver Core: add ability for class_for_each_device to start in middle of list 2008-07-21 21:54:47 -07:00
ide ide: small whitespace fixes 2008-07-23 19:56:02 +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 'cpus4096-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-07-23 18:37:44 -07:00
input Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2008-07-23 18:24:08 -07:00
isdn gigaset: gigaset_isowbuf_getbytes() may return signed unnoticed 2008-07-24 10:47:22 -07:00
leds
lguest
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 Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm 2008-07-21 10:30:10 -07:00
media PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
memstick driver core: remove DEVICE_ID_SIZE define 2008-07-21 21:54:53 -07:00
message I2O: handle sysfs_create_link() failures 2008-07-24 10:47:30 -07:00
mfd Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2008-07-23 18:24:08 -07:00
misc atmel_pwm: set up only one PWM clock when allocating a clock 2008-07-24 10:47:25 -07:00
mmc sdhci: highmem capable PIO routines 2008-07-23 14:42:09 +02:00
mtd PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
net PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
nubus
of
oprofile
parisc
parport
pci driver core: remove KOBJ_NAME_LEN define 2008-07-21 21:54:52 -07:00
pcmcia PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
pnp PNPACPI: add support for HP vendor-specific CCSR descriptors 2008-07-16 23:27:07 +02:00
power Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2008-07-23 18:24:08 -07:00
ps3
rapidio
rtc rtc: remove BKL for ioctl() 2008-07-24 10:47:33 -07:00
s390 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-07-22 19:09:51 -07:00
sbus sparc64: fix up bus_id changes in sparc core code 2008-07-21 21:55:03 -07:00
scsi PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
serial cpm1: don't send break on TX_STOP, don't interrupt RX/TX when adjusting termios parameters 2008-07-24 10:47:30 -07:00
sh
sn
spi spi: au1550_spi: improve pio transfer mode 2008-07-24 10:47:30 -07:00
ssb
tc
telephony
thermal
uio UIO: add generic UIO platform driver 2008-07-21 21:54:55 -07:00
usb Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2008-07-23 18:24:08 -07:00
video PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
virtio
w1
watchdog remove the v850 port 2008-07-24 10:47:24 -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 gpu: re-order GPU subdirectory vs char for AGP vs DRM startup. 2008-07-21 08:42:49 +10:00