On Fri, Jan 08, 2016 at 08:25:07PM +0000, Chris Wilson wrote: > Whilst calling back into the driver, we have to drop the > file->table_lock spinlock and so to prevent reusing the closed handle we > mark that handle as stale in the idr, perform the callback and then > remove the handle. It is then possible for a lookup on that handle to > return an error object and so all callers of idr_find(file->object_idr) > need to check against IS_ERR_OR_NULL() instead. > > - obj = idr_find(&filp->object_idr, handle); > - if (obj == NULL) { > + obj = idr_replace(&filp->object_idr, ERR_PTR(-ENOENT), handle); > + if (IS_ERR(obj)) { Setting ERR_PTR(-ENOENT) is superfluous. We can just set the entry to NULL as idr_alloc() uses a bitmap to find the new handle. This avoids having to change the callers elsewhere, as idr_find() will then return NULL for the stale handle and the invalid handle. -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx