Sure, I get that. But if you get an opaque id that takes 64 bits, and you don't preserve all 64 bits, you've broken the API, not the kernel. Don't mumble things about offsets and your constraints; it's your fault. At the very least, it never would have got into an infinite loop if they'd checked their assumption on every offset they got from the kernel.