Here's a trivial fix to the emc hardware handler module. The old code memset the hardware handler structure to zero AFTER it had initialized the structure's spinlock field to SPIN_LOCK_UNLOCKED. The new patch moves the memset into the hardware handler allocator. The old code would probably only have a problem if someone ran with spinlock debugging enabled, in which case SPIN_LOCK_UNLOCKED contains the value SPINLOCK_MAGIC. I have no emc hardware to test this change. However it does compile. Dave Olien diff -ur linux-2.6.11-rc3-udm2-original/drivers/md/dm-emc.c linux-2.6.11-rc3-udm2-emc/drivers/md/dm-emc.c --- linux-2.6.11-rc3-udm2-original/drivers/md/dm-emc.c 2005-03-03 13:40:55.000000000 -0800 +++ linux-2.6.11-rc3-udm2-emc/drivers/md/dm-emc.c 2005-03-03 13:44:38.000000000 -0800 @@ -227,6 +227,7 @@ struct emc_handler *h = kmalloc(sizeof(*h), GFP_KERNEL); if (h) { + memset(h, 0, sizeof(*h)); h->lock = SPIN_LOCK_UNLOCKED; } @@ -263,8 +264,6 @@ if (!h) return -ENOMEM; - memset(h, 0, sizeof(*h)); - hwh->context = h; if ((h->short_trespass = short_trespass))