Alexander Gordeev
3003d55b59
pps: fix race in PPS_FETCH handler
...
There was a race in PPS_FETCH ioctl handler when several processes want to
obtain PPS data simultaneously using sleeping PPS_FETCH. They all sleep
most of the time in the system call.
With the old approach when the first process waiting on the pps queue is
waken up it makes new system call right away and zeroes pps->go. So other
processes continue to sleep. This is a clear race condition because of
the global 'go' variable.
With the new approach pps->last_ev holds some value increasing at each PPS
event. PPS_FETCH ioctl handler saves current value to the local variable
at the very beginning so it can safely check that there is a new event by
just comparing both variables.
Signed-off-by: Alexander Gordeev <lasaine@lvk.cs.msu.su>
Acked-by: Rodolfo Giometti <giometti@linux.it>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-01-13 08:03:19 -08:00
..
accessibility
acpi
Merge branch 'for-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
2011-01-07 17:02:58 -08:00
amba
ata
Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev
2011-01-10 08:22:33 -08:00
atm
Madge Ambassador ATM Adapter driver: Always release_firmware() in ucode_init() and don't leak memory.
2011-01-09 15:45:48 -08:00
auxdisplay
base
Merge branch 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6
2011-01-10 16:10:33 -08:00
block
Merge branch 'stable/xenbus' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
2011-01-12 08:37:35 -08:00
bluetooth
cdrom
char
cs5535: deprecate older cs5535_gpio driver
2011-01-13 08:03:13 -08:00
clk
clocksource
connector
cpufreq
cpuidle
Merge branch 'for-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
2011-01-07 17:02:58 -08:00
crypto
dca
dca: remove unneeded NULL check
2011-01-13 08:03:09 -08:00
dio
dma
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
2011-01-11 16:31:41 -08:00
edac
Merge branch 'mce-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp
2011-01-07 14:54:03 -08:00
eisa
firewire
firmware
gpio
gpio/ml_ioh_gpio: ML7213 GPIO driver
2011-01-13 08:03:14 -08:00
gpu
drm/i915/execbuffer: Reorder binding of objects to favour restrictions
2011-01-11 22:55:48 +00:00
hid
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
2011-01-10 08:15:37 -08:00
hwmon
hwmon: Support for Dallas Semiconductor DS620
2011-01-09 09:10:10 -08:00
i2c
i2c: Constify i2c_client where possible
2011-01-10 22:11:23 +01:00
ide
idle
ieee802154
infiniband
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband
2011-01-11 16:30:08 -08:00
input
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
2011-01-10 08:15:37 -08:00
isdn
Merge branch 'for-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
2011-01-07 16:58:04 -08:00
leds
leds: add output inversion option to backlight trigger
2011-01-13 08:03:06 -08:00
lguest
macintosh
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
2011-01-11 16:31:41 -08:00
mca
md
media
Merge branch 'for-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
2011-01-07 16:58:04 -08:00
memstick
message
mfd
mfd: sh_mobile_sdhi: activate SDIO IRQ for tmio_mmc
2011-01-08 23:52:31 -05:00
misc
Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6
2011-01-10 08:57:03 -08:00
mmc
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc
2011-01-11 11:01:24 -08:00
mtd
kmsg_dump: constrain mtdoops and ramoops to perform their actions only for KMSG_DUMP_PANIC
2011-01-13 08:03:07 -08:00
net
Merge branch 'stable/xenbus' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
2011-01-12 08:37:35 -08:00
nfc
NFC: Driver for NXP Semiconductors PN544 NFC chip.
2011-01-13 08:03:19 -08:00
nubus
of
Merge remote branch 'gcl/next' into next
2011-01-11 15:10:08 +11:00
oprofile
parisc
parport
pci
Merge branch 'stable/xenbus' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
2011-01-12 08:37:35 -08:00
pcmcia
Merge branch 'devel-stable' into devel
2011-01-06 22:33:32 +00:00
platform
sony-laptop: support new hotkeys on the P, Z and EC series
2011-01-10 12:00:22 -05:00
pnp
power
pps
pps: fix race in PPS_FETCH handler
2011-01-13 08:03:19 -08:00
ps3
rapidio
rapidio: add new idt sRIO switches
2011-01-13 08:03:18 -08:00
regulator
rtc
rtc: rtc-max6902 - set driver data in max6902_probe()
2011-01-13 08:03:12 -08:00
s390
headers: kobject.h redux
2011-01-10 08:51:44 -08:00
sbus
scsi
Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev
2011-01-10 08:22:33 -08:00
serial
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin
2011-01-10 17:06:08 -08:00
sfi
sh
headers: kobject.h redux
2011-01-10 08:51:44 -08:00
sn
spi
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6
2011-01-10 08:14:53 -08:00
ssb
staging
cs5535: deprecate older cs5535_gpio driver
2011-01-13 08:03:13 -08:00
tc
telephony
drivers/telephony/ixj.c: fix warning
2011-01-13 08:03:15 -08:00
thermal
tty
Merge branch 'tty-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6
2011-01-07 14:39:20 -08:00
uio
usb
Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6
2011-01-10 16:04:53 -08:00
uwb
vhost
video
vgacon: check for efi machine
2011-01-13 08:03:12 -08:00
virtio
vlynq
w1
watchdog
Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2011-01-11 11:02:13 -08:00
xen
Merge branch 'stable/xenbus' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
2011-01-12 08:37:35 -08:00
zorro
Kconfig
NFC: Driver for NXP Semiconductors PN544 NFC chip.
2011-01-13 08:03:19 -08:00
Makefile
NFC: Driver for NXP Semiconductors PN544 NFC chip.
2011-01-13 08:03:19 -08:00