Two opens here, the trivial one is i think it is not good practice to explicitly inline non performance critical functions in c file, even if it will be done by compiler anyway. The critical one i have concern is whether it will introduce inconsistency if we call fd_install on a fd that is just closed by sys_close, because that fd will be set to next-to-be-allocated fd. I prefer to keep the original logic in patch 4/5 if we are not clear.
As we actually don't need to use the eventfd that is allocated in user space at all, future patch would be: directly allocate a new fd in the kernel and call fd_install on it.