kernel-ark/drivers
Hugh Dickins 5fcf7bb73f [PATCH] read_zero_pagealigned() locking fix
Ramiro Voicu hits the BUG_ON(!pte_none(*pte)) in zeromap_pte_range: kernel
bugzilla 7645.  Right: read_zero_pagealigned uses down_read of mmap_sem,
but another thread's racing read of /dev/zero, or a normal fault, can
easily set that pte again, in between zap_page_range and zeromap_page_range
getting there.  It's been wrong ever since 2.4.3.

The simple fix is to use down_write instead, but that would serialize reads
of /dev/zero more than at present: perhaps some app would be badly
affected.  So instead let zeromap_page_range return the error instead of
BUG_ON, and read_zero_pagealigned break to the slower clear_user loop in
that case - there's no need to optimize for it.

Use -EEXIST for when a pte is found: BUG_ON in mmap_zero (the other user of
zeromap_page_range), though it really isn't interesting there.  And since
mmap_zero wants -EAGAIN for out-of-memory, the zeromaps better return that
than -ENOMEM.

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Cc: Ramiro Voicu: <Ramiro.Voicu@cern.ch>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-12-10 09:55:39 -08:00
..
acorn
acpi
amba
ata
atm
base
block
bluetooth
cdrom
char [PATCH] read_zero_pagealigned() locking fix 2006-12-10 09:55:39 -08:00
clocksource
connector
cpufreq
crypto
dio
dma
edac
eisa
fc4
firmware
hid [PATCH] Generic HID layer - build 2006-12-08 10:43:20 -08:00
hwmon
i2c
ide
ieee1394
infiniband
input [PATCH] ucb1400_ts depends SND_AC97_BUS 2006-12-10 09:55:39 -08:00
isdn
leds
macintosh
mca
md [PATCH] make drivers/md/dm-snap.c:ksnapd static 2006-12-08 08:29:09 -08:00
media
message
mfd
misc
mmc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc 2006-12-08 08:47:07 -08:00
mtd
net [PATCH] Amiga PCMCIA NE2000 Ethernet dev->irq init 2006-12-09 09:41:18 -08:00
nubus
oprofile
parisc
parport [PATCH] Kconfig refactoring for better menu nesting 2006-12-10 09:55:39 -08:00
pci [PATCH] Kconfig refactoring for better menu nesting 2006-12-10 09:55:39 -08:00
pcmcia
pnp
ps3
rapidio
rtc
s390 Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 2006-12-08 11:21:55 -08:00
sbus
scsi [PATCH] Sun3 SCSI: Make sun3 scsi drivers compile/work again 2006-12-09 09:41:18 -08:00
serial [PATCH] Kconfig refactoring for better menu nesting 2006-12-10 09:55:39 -08:00
sh
sn
spi
tc
telephony
usb [PATCH] Generic HID layer - build 2006-12-08 10:43:20 -08:00
video
w1
zorro
Kconfig [PATCH] Generic HID layer - build 2006-12-08 10:43:20 -08:00
Makefile [PATCH] Generic HID layer - build 2006-12-08 10:43:20 -08:00