You need to make sure that the cleanup code added with the patch matches
the loop device initialization preceding the kernel_thread() call. You
should not blindly take the cleanup code out of the 2.4 patch and apply
it to 2.6 - it might not be correct for 2.6.
No. But you won't be able to reproduce this with strace on 2.6 since
2.6's kernel_thread() uses CLONE_UNTRACED instead of failing on ptrace.
You'll probably need to temporarily replace the kernel_thread() call in
loop.c with -EAGAIN to comfortably test your cleanup code without
forcing the system to run out of resources.