diff -Nuar old/drivers/md/lvm.c new/drivers/md/lvm.c
--- old/drivers/md/lvm.c	2003-11-18 02:45:25.000000000 +0100
+++ new/drivers/md/lvm.c	2003-11-18 02:40:24.000000000 +0100
@@ -2594,8 +2594,9 @@
 				      new_lv->lv_block_exception[e].
 				      rsector_org, new_lv);
 
-		vg_ptr->pe_allocated -= old_lv->lv_allocated_le;
+		vg_ptr->pe_allocated -= old_lv->lv_allocated_snapshot_le;
 		vg_ptr->pe_allocated += new_lv->lv_allocated_le;
+		old_lv->lv_allocated_snapshot_le = new_lv->lv_allocated_le;
 	} else {
 		vfree(old_lv->lv_current_pe);
 		vfree(old_lv->lv_snapshot_hash_table);
diff -Nuar old/drivers/md/lvm-snap.c new/drivers/md/lvm-snap.c
--- old/drivers/md/lvm-snap.c	2003-11-18 02:45:25.000000000 +0100
+++ new/drivers/md/lvm-snap.c	2003-11-18 02:50:37.000000000 +0100
@@ -44,6 +44,7 @@
  *    26/06/2002 - support for new list_move macro [patch@luckynet.dynu.com]
  *    26/07/2002 - removed conditional list_move macro because we will
  *                 discontinue LVM1 before 2.6 anyway
+ *    27/08/2003 - fixed unsafe list handling in lvm_find_exception_table() [HM]
  *
  */
 
@@ -114,7 +115,7 @@
 							     org_start,
 							     lv_t * lv)
 {
-	struct list_head *hash_table = lv->lv_snapshot_hash_table, *next;
+	struct list_head *hash_table = lv->lv_snapshot_hash_table, *next, *n;
 	unsigned long mask = lv->lv_snapshot_hash_mask;
 	int chunk_size = lv->lv_chunk_size;
 	lv_block_exception_t *ret;
@@ -123,8 +124,9 @@
 	hash_table =
 	    &hash_table[hashfn(org_dev, org_start, mask, chunk_size)];
 	ret = NULL;
-	for (next = hash_table->next; next != hash_table;
-	     next = next->next) {
+
+	for (next = hash_table->next, n = next->next; next != hash_table;
+             next = n, n = next->next) {
 		lv_block_exception_t *exception;
 
 		exception = list_entry(next, lv_block_exception_t, hash);
diff -Nuar old/include/linux/lvm.h new/include/linux/lvm.h
--- old/include/linux/lvm.h	2003-11-18 02:45:19.000000000 +0100
+++ new/include/linux/lvm.h	2003-11-18 02:41:05.000000000 +0100
@@ -80,8 +80,8 @@
 #ifndef _LVM_H_INCLUDE
 #define _LVM_H_INCLUDE
 
-#define LVM_RELEASE_NAME "1.0.7"
-#define LVM_RELEASE_DATE "28/03/2003"
+#define LVM_RELEASE_NAME "1.0.8"
+#define LVM_RELEASE_DATE "17/11/2003"
 
 #define	_LVM_KERNEL_H_VERSION	"LVM "LVM_RELEASE_NAME" ("LVM_RELEASE_DATE")"
 


