Except that things are weird in a kernel, one cannot guarantee that language behavior is enforceable. Even with a RAII/drop style solution there is a possibility that kernel weirdness will prevent it from running correctly.
The issue with forgetting function calls like this are the edge cases, and the kernel has a lot more of those.