Linus Torvalds writes: (Summary) You've taken
the BUG_ON() from __d_rehash() that no longe rmakes any sense (because
we just explicitly unhashed it), and replaced it with a BUG_ON() that
didn't exist before, and is also not the conditionm that __d_drop
actually had (or the condition that means that the hash liost might be
different - ie the whole IS_ROOT() case). I'm not claiming that as an optimization (it's an unusual case), I'm more thinking that it might fall out fairly naturally from the "lock both" case, since that one needs to check for the same list anyway.