The main exception is that odd parent_fp = ksmbd_lookup_fd_inode(old_parent->d_inode); if (parent_fp) { ... sequence, but that looks like it could have been done before the __lookup_hash() too. I'd be even happier if we could actually hjave some common helper starting at that trap = lock_rename(...); because that whole locking and 'trap' logic is kind of a big deal, and the locking is the only thing that makes __lookup_hash() work. Adding Al to the cc in case he has any ideas. Maybe he's ok with this whole thing, and with his blessing I'll take this pull as-is, but as it is I'm not comfortable with it. Linus