Unprotected access of the vm->rebind_list
When evicting or zapping page-tables we put the evicted vmas on the rebind_list, but that list requires the vm->resv to be held. If eviction is a result of validation on the same vm, we're good but if not and, the object is external, the vm's rebind list is accessed unprotected which may lead to all sorts of interesting memory corruption.
We can solve this in two ways, I think: First, check if the vm resv is held by the same lock, if not trylock it and bail the eviction if it fails.
Second, Use a second list protected by a lower-level lock that we can grab on eviction, like userptr. The second list then needs to be scooped and spliced into the rebind list after locking for exec or rebind worker.
Also we need an IGT for this.