Once device_register() failed, we should call put_device() to decrement reference count for cleanup. Or it could cause memory leak.
device_register() includes device_add(). As comment of device_add()
…
I doubt that the information from the second description paragraph is helpful for this issue.
Found by code review.
Would you become interested to check how many similar control flows can still be detected by the means of automated advanced source code analyses?
Regards, Markus