Let's try this one. Patch is against 2.5.41. The device is no longer unregistered in the disconnect but in the vicam_free_memory function. This introduced a race with the open call, which I believe I've taken care of. I also implemented the mechanism that I talked about in my previous email for deciding whether to free or defer freeing the memory.
I've been plugging and unplugging my camera. Obviously, it's difficult to create races on demand, but the driver successfully withstands plug/unplugs with and without users using the camera during those plug/unplugs. Thanks, John
vicam-2.5.41.patch.gz
Description: GNU Zip compressed data