-diff -NurpP --minimal truecrypt-4.2a.clean/Linux/Kernel/Dm-target.c truecrypt-4.2a/Linux/Kernel/Dm-target.c
---- truecrypt-4.2a.clean/Linux/Kernel/Dm-target.c 2007-02-27 13:21:08.000000000 +0100
-+++ truecrypt-4.2a/Linux/Kernel/Dm-target.c 2007-02-27 13:29:03.000000000 +0100
-@@ -435,7 +435,11 @@ static int truecrypt_endio (struct bio *
+diff -NurpP --minimal truecrypt-4.2a/Linux/Kernel/Dm-target.c truecrypt-4.2a.b/Linux/Kernel/Dm-target.c
+--- truecrypt-4.2a/Linux/Kernel/Dm-target.c 2007-03-07 15:07:25.000000000 +0100
++++ truecrypt-4.2a.b/Linux/Kernel/Dm-target.c 2007-03-07 15:16:08.000000000 +0100
+@@ -380,10 +380,15 @@ static void dereference_bio_ctx (struct
+ mempool_free (bc, tc->bio_ctx_pool);
+ }
+
+-
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)
++static void work_process(struct work_struct *qdata)
++{
++ struct bio_ctx *bc = container_of(qdata, struct bio_ctx, work);
++#else
+ static void work_process (void *qdata)
+ {
+ struct bio_ctx *bc = (struct bio_ctx *) qdata;
++#endif /* LINUX_VERSION_CODE >= 2.6.20 */
+ struct target_ctx *tc = (struct target_ctx *) bc->target->private;
+ struct bio_vec *bv;
+ u64 sec_no = bc->crypto_sector;
+@@ -439,7 +444,11 @@ static int truecrypt_endio (struct bio *
bio_put (bio);
// Queue decryption to leave completion interrupt ASAP