Patch "drm/amdgpu: don't access invalid sched" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    drm/amdgpu: don't access invalid sched

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     drm-amdgpu-don-t-access-invalid-sched.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit f06891140927fc95fb38f7936c4bd93cba918d2f
Author: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@xxxxxxx>
Date:   Fri Dec 6 13:17:45 2024 +0100

    drm/amdgpu: don't access invalid sched
    
    [ Upstream commit a93b1020eb9386d7da11608477121b10079c076a ]
    
    Since 2320c9e6a768 ("drm/sched: memset() 'job' in drm_sched_job_init()")
    accessing job->base.sched can produce unexpected results as the initialisation
    of (*job)->base.sched done in amdgpu_job_alloc is overwritten by the
    memset.
    
    This commit fixes an issue when a CS would fail validation and would
    be rejected after job->num_ibs is incremented. In this case,
    amdgpu_ib_free(ring->adev, ...) will be called, which would crash the
    machine because the ring value is bogus.
    
    To fix this, pass a NULL pointer to amdgpu_ib_free(): we can do this
    because the device is actually not used in this function.
    
    The next commit will remove the ring argument completely.
    
    Fixes: 2320c9e6a768 ("drm/sched: memset() 'job' in drm_sched_job_init()")
    Signed-off-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@xxxxxxx>
    Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx>
    Reviewed-by: Christian König <christian.koenig@xxxxxxx>
    Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx>
    (cherry picked from commit 2ae520cb12831d264ceb97c61f72c59d33c0dbd7)
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
index f34bc9bb7045..7f1e92110dd1 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
@@ -150,7 +150,6 @@ void amdgpu_job_set_resources(struct amdgpu_job *job, struct amdgpu_bo *gds,
 
 void amdgpu_job_free_resources(struct amdgpu_job *job)
 {
-	struct amdgpu_ring *ring = to_amdgpu_ring(job->base.sched);
 	struct dma_fence *f;
 	unsigned i;
 
@@ -163,7 +162,7 @@ void amdgpu_job_free_resources(struct amdgpu_job *job)
 		f = NULL;
 
 	for (i = 0; i < job->num_ibs; ++i)
-		amdgpu_ib_free(ring->adev, &job->ibs[i], f);
+		amdgpu_ib_free(NULL, &job->ibs[i], f);
 }
 
 static void amdgpu_job_free_cb(struct drm_sched_job *s_job)




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux