Yes, it does, we found this internally last night and been debating what to do about it.
Fundamentally what it points out is that prior to this patch CRIU could get the host into an inconsistent state. It inserts all the sockets into the hashtables with SO_REUSEADDR set, and then (potentially) clears it on some of them... But the tb cache still thinks it's set on all of them. So later attempts to bind() a socket with SO_REUSEADDR set can then succeed even though they should fail (or something like that). I wonder if we instead need a socket option to basically say 'ignore all conflicts' that CRIU could set, and then clear post bind/listen/connect hash table insertion... Or maybe the transition from 1->0 is valid, but from 0->1 isn't?? Or we need special per-protocol code in the SO_REUSE{ADDR,PORT} setsockopt handler to recalculate the tb cache? Anyone have any smart ideas?