If a write invalidates a cache entry while a read is still in flight,
the entry is kept around until the read finishes.
When the read completed, the entry was put back on the used list and
then freed, leaving a dangling pointer on the list that caused later
panics.
Don't put invalidated entries back on the used list.