diff options
Diffstat (limited to 'drivers/gpu/drm/scheduler/sched_entity.c')
| -rw-r--r-- | drivers/gpu/drm/scheduler/sched_entity.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpu/drm/scheduler/sched_entity.c b/drivers/gpu/drm/scheduler/sched_entity.c index 5a4697f636f2..c8e949f4a568 100644 --- a/drivers/gpu/drm/scheduler/sched_entity.c +++ b/drivers/gpu/drm/scheduler/sched_entity.c @@ -70,6 +70,7 @@ int drm_sched_entity_init(struct drm_sched_entity *entity,  	entity->guilty = guilty;  	entity->num_sched_list = num_sched_list;  	entity->priority = priority; +	entity->last_user = current->group_leader;  	/*  	 * It's perfectly valid to initialize an entity without having a valid  	 * scheduler attached. It's just not valid to use the scheduler before it @@ -302,7 +303,7 @@ long drm_sched_entity_flush(struct drm_sched_entity *entity, long timeout)  	/* For a killed process disallow further enqueueing of jobs. */  	last_user = cmpxchg(&entity->last_user, current->group_leader, NULL); -	if ((!last_user || last_user == current->group_leader) && +	if (last_user == current->group_leader &&  	    (current->flags & PF_EXITING) && (current->exit_code == SIGKILL))  		drm_sched_entity_kill(entity); @@ -552,10 +553,11 @@ void drm_sched_entity_select_rq(struct drm_sched_entity *entity)  		drm_sched_rq_remove_entity(entity->rq, entity);  		entity->rq = rq;  	} -	spin_unlock(&entity->lock);  	if (entity->num_sched_list == 1)  		entity->sched_list = NULL; + +	spin_unlock(&entity->lock);  }  /**  | 
