diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_cs.c')
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_cs.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c index 70ba02ed772..f9b0fe002c0 100644 --- a/drivers/gpu/drm/radeon/radeon_cs.c +++ b/drivers/gpu/drm/radeon/radeon_cs.c @@ -193,9 +193,11 @@ static void radeon_cs_parser_fini(struct radeon_cs_parser *parser, int error)  		radeon_bo_list_fence(&parser->validated, parser->ib->fence);  	}  	radeon_bo_list_unreserve(&parser->validated); -	for (i = 0; i < parser->nrelocs; i++) { -		if (parser->relocs[i].gobj) -			drm_gem_object_unreference_unlocked(parser->relocs[i].gobj); +	if (parser->relocs != NULL) { +		for (i = 0; i < parser->nrelocs; i++) { +			if (parser->relocs[i].gobj) +				drm_gem_object_unreference_unlocked(parser->relocs[i].gobj); +		}  	}  	kfree(parser->track);  	kfree(parser->relocs); @@ -243,7 +245,8 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)  	}  	r = radeon_cs_parser_relocs(&parser);  	if (r) { -		DRM_ERROR("Failed to parse relocation !\n"); +		if (r != -ERESTARTSYS) +			DRM_ERROR("Failed to parse relocation %d!\n", r);  		radeon_cs_parser_fini(&parser, r);  		mutex_unlock(&rdev->cs_mutex);  		return r;  |