I'm really not a fan of adding a global synchronization point for no good reason. Arnd's original patch looks fine to me, but if you really don't want it I'd suggest to use memdup_user and just dynamically allocate the structure.