You are 100% correct. kref_init starts with refcount 1, and its up to my_data_handler thread to kref_put() it. kref_get() increase the refcount to 2 in order to keep the data alive for "more_data_handling" thread. Its "more_data_handling" thread responsibility to kref_put() that.
In the edge case where the thread failed to open and thus can not take care of its responsibilities, Its my_data_handler() responsibility to kref_put() once for the failed "more_data_handling" thread and again for itself.
I urge you to send an email, to the original author, the person removing the needed kref_put, and to kernel mailing list.