diff options
Diffstat (limited to 'drivers/gpu/drm/drm_lease.c')
| -rw-r--r-- | drivers/gpu/drm/drm_lease.c | 26 | 
1 files changed, 13 insertions, 13 deletions
| diff --git a/drivers/gpu/drm/drm_lease.c b/drivers/gpu/drm/drm_lease.c index d1eb56a1eff4..1402c0e71b03 100644 --- a/drivers/gpu/drm/drm_lease.c +++ b/drivers/gpu/drm/drm_lease.c @@ -220,17 +220,6 @@ static struct drm_master *drm_lease_create(struct drm_master *lessor, struct idr  	mutex_lock(&dev->mode_config.idr_mutex); -	/* Insert the new lessee into the tree */ -	id = idr_alloc(&(drm_lease_owner(lessor)->lessee_idr), lessee, 1, 0, GFP_KERNEL); -	if (id < 0) { -		error = id; -		goto out_lessee; -	} - -	lessee->lessee_id = id; -	lessee->lessor = drm_master_get(lessor); -	list_add_tail(&lessee->lessee_list, &lessor->lessees); -  	idr_for_each_entry(leases, entry, object) {  		error = 0;  		if (!idr_find(&dev->mode_config.crtc_idr, object)) @@ -246,6 +235,17 @@ static struct drm_master *drm_lease_create(struct drm_master *lessor, struct idr  		}  	} +	/* Insert the new lessee into the tree */ +	id = idr_alloc(&(drm_lease_owner(lessor)->lessee_idr), lessee, 1, 0, GFP_KERNEL); +	if (id < 0) { +		error = id; +		goto out_lessee; +	} + +	lessee->lessee_id = id; +	lessee->lessor = drm_master_get(lessor); +	list_add_tail(&lessee->lessee_list, &lessor->lessees); +  	/* Move the leases over */  	lessee->leases = *leases;  	DRM_DEBUG_LEASE("new lessee %d %p, lessor %d %p\n", lessee->lessee_id, lessee, lessor->lessee_id, lessor); @@ -254,10 +254,10 @@ static struct drm_master *drm_lease_create(struct drm_master *lessor, struct idr  	return lessee;  out_lessee: -	drm_master_put(&lessee); -  	mutex_unlock(&dev->mode_config.idr_mutex); +	drm_master_put(&lessee); +  	return ERR_PTR(error);  } |