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")"