WSL2-Linux-Kernel/drivers
Mikulas Patocka 35bf659b00 dm snapshot: avoid having two exceptions for the same chunk
We need to check if the exception was completed after dropping the lock.

After regaining the lock, __find_pending_exception checks if the exception
was already placed into &s->pending hash.

But we don't check if the exception was already completed and placed into
&s->complete hash. If the process waiting in alloc_pending_exception was
delayed at this point because of a scheduling latency and the exception
was meanwhile completed, we'd miss that and allocate another pending
exception for already completed chunk.

It would lead to a situation where two records for the same chunk exist
and potential data corruption because multiple snapshot I/Os to the
affected chunk could be redirected to different locations in the
snapshot.

Cc: stable@kernel.org
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
2009-04-02 19:55:26 +01:00
..
accessibility
acpi Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2009-04-01 09:47:12 -07:00
amba amba: struct device - replace bus_id with dev_name(), dev_set_name() 2009-03-24 16:38:22 -07:00
ata Merge branch 'origin' into devel 2009-03-28 20:29:51 +00:00
atm atm: fix non-const printk argument 2009-03-21 19:06:51 -07:00
auxdisplay auxdisplay: remove PARPORT dependency 2009-04-01 08:59:17 -07:00
base Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask 2009-03-30 18:00:26 -07:00
block loop: add ioctl to resize a loop device 2009-04-01 08:59:17 -07:00
bluetooth Bluetooth: Remove some pointless conditionals before kfree_skb() 2009-02-27 06:14:50 +01:00
cdrom
char Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 2009-04-01 09:22:24 -07:00
clocksource Merge branch 'core/percpu' into percpu-cpumask-x86-for-linus-2 2009-03-27 17:28:43 +01:00
connector connector: create connector workqueue only while needed once 2009-02-02 23:22:04 -08:00
cpufreq Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq 2009-03-26 11:04:08 -07:00
cpuidle cpuidle: Add decaying history logic to menu idle predictor 2008-12-30 18:48:01 -05:00
crypto Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2009-03-26 11:04:34 -07:00
dca Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2009-03-23 09:25:58 -07:00
dio dio: struct device - replace bus_id with dev_name(), dev_set_name() 2009-03-24 16:38:22 -07:00
dma Merge branch 'origin' into devel 2009-03-28 20:29:51 +00:00
edac edac: struct device - replace bus_id with dev_name(), dev_set_name() 2009-03-24 16:38:21 -07:00
eisa Merge branch 'core/percpu' into percpu-cpumask-x86-for-linus-2 2009-03-27 17:28:43 +01:00
firewire firewire: core: optimize propagation of BROADCAST_CHANNEL 2009-03-24 20:56:52 +01:00
firmware dmi: Let dmi_walk() users pass private data 2009-03-30 21:46:44 +02:00
gpio gpio: struct device - replace bus_id with dev_name(), dev_set_name() 2009-03-24 16:38:23 -07:00
gpu drm: detect hdmi monitor by hdmi identifier (v3) 2009-03-29 18:31:49 +10:00
hid Merge branch 'bkl-removal' of git://git.lwn.net/linux-2.6 2009-03-26 16:14:02 -07:00
hwmon lis3: SPI transport layer 2009-04-01 08:59:22 -07:00
i2c Merge branch 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 2009-03-30 17:54:32 -07:00
ide ide-floppy: do not complete rq's prematurely 2009-03-31 20:15:34 +02:00
idle i7300_idle: struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-06 10:44:39 -08:00
ieee1394 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2009-03-27 18:33:56 -07:00
infiniband Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2009-03-28 13:30:43 -07:00
input proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
isdn proc tty: remove struct tty_operations::read_proc 2009-04-01 08:59:10 -07:00
leds
lguest lguest: use bool instead of int 2009-03-30 21:55:25 +10:30
macintosh therm_adt746x: Fix signed/unsigned confusion 2009-02-11 16:00:07 +11:00
mca mca: struct device - replace bus_id with dev_name(), dev_set_name() 2009-03-24 16:38:23 -07:00
md dm snapshot: avoid having two exceptions for the same chunk 2009-04-02 19:55:26 +01:00
media proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
memstick
message proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
mfd mfd: struct device - replace bus_id with dev_name(), dev_set_name() 2009-03-24 16:38:23 -07:00
misc drivers/misc/isl29003.c: driver for the ISL29003 ambient light sensor 2009-04-01 08:59:18 -07:00
mmc proc tty: switch sdio_uart to ->proc_fops 2009-04-01 08:59:09 -07:00
mtd Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2009-03-28 14:03:14 -07:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2009-03-30 18:46:43 -07:00
nubus nubus: fix mis-indented statement 2008-10-16 11:21:30 -07:00
of powerpc: add mmc-spi-slot bindings 2009-04-01 08:59:23 -07:00
oprofile oprofile: Thou shalt not call __exit functions from __init functions 2009-03-30 22:05:18 +10:30
parisc
parport
pci Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2009-04-01 09:47:12 -07:00
pcmcia Merge branch 'origin' into devel 2009-03-28 20:29:51 +00:00
platform Merge branch 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 2009-03-30 17:54:32 -07:00
pnp Merge branch 'linus' into release 2009-01-09 03:39:43 -05:00
power
ps3 powerpc/ps3: Make ps3av_set_video_mode mode ID signed 2009-03-11 17:10:17 +11:00
rapidio rapidio: struct device - replace bus_id with dev_name(), dev_set_name() 2009-03-24 16:38:21 -07:00
regulator leds: Fix bounds checking of wm8350->pmic.led 2009-01-30 21:50:49 +00:00
rtc rtc: test before subtraction on unsigned 2009-04-01 08:59:26 -07:00
s390 qeth: properly delete empty files. 2009-04-01 12:51:33 -07:00
sbus
scsi proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
serial serial: fixup /proc/tty/driver/serial after proc_fops conversion 2009-04-01 14:50:48 -07:00
sh maple: fix Error in kernel-doc notation 2009-03-29 08:12:39 -07:00
sn
spi spi_mpc83xx: add OF platform driver bindings 2009-04-01 08:59:22 -07:00
ssb b43: Add BCM4307 PCI-ID 2009-03-27 20:13:20 -04:00
staging Merge branch 'topic/snd_card_new-err' into for-linus 2009-03-24 00:35:35 +01:00
tc tc: struct device - replace bus_id with dev_name(), dev_set_name() 2009-03-24 16:38:22 -07:00
telephony
thermal
uio UIO: Take offset into account when determining number of pages that can be mapped 2009-03-24 16:38:25 -07:00
usb proc tty: switch usb-serial to ->proc_fops 2009-04-01 08:59:10 -07:00
uwb uwb: lock rc->rsvs_lock with spin_lock_bh() 2009-01-23 12:57:20 +00:00
video efifb: dmi set video type 2009-04-01 08:59:34 -07:00
virtio virtio: more neatening of virtio_ring macros. 2009-03-30 21:55:23 +10:30
w1 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 into devel 2009-03-25 18:31:35 +00:00
watchdog Merge branch 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 2009-03-30 17:54:32 -07:00
xen PM: Rework handling of interrupts during suspend-resume 2009-03-30 21:46:54 +02:00
zorro zorro: struct device - replace bus_id with dev_name(), dev_set_name() 2009-03-24 16:38:21 -07:00
Kconfig
Makefile ide/net: flip the order of SATA and network init 2009-03-28 13:06:16 -07:00