From: Luben Tuikov <luben.tuikov@amd.com>
To: "Christian König" <christian.koenig@amd.com>,
"Danilo Krummrich" <dakr@redhat.com>,
airlied@gmail.com, daniel@ffwll.ch, l.stach@pengutronix.de,
"Prosyak, Vitaly" <Vitaly.Prosyak@amd.com>
Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] drm/scheduler: set entity to NULL in drm_sched_entity_pop_job()
Date: Wed, 5 Apr 2023 13:39:25 -0400 [thread overview]
Message-ID: <ecef210b-dc7d-e385-f9b2-927d55a6777e@amd.com> (raw)
In-Reply-To: <6ad72a7f-302f-4be1-0d53-00ff9dc37ef7@amd.com>
On 2023-03-31 01:59, Christian König wrote:
> Am 31.03.23 um 02:06 schrieb Danilo Krummrich:
>> It already happend a few times that patches slipped through which
>> implemented access to an entity through a job that was already removed
>> from the entities queue. Since jobs and entities might have different
>> lifecycles, this can potentially cause UAF bugs.
>>
>> In order to make it obvious that a jobs entity pointer shouldn't be
>> accessed after drm_sched_entity_pop_job() was called successfully, set
>> the jobs entity pointer to NULL once the job is removed from the entity
>> queue.
>>
>> Moreover, debugging a potential NULL pointer dereference is way easier
>> than potentially corrupted memory through a UAF.
>>
>> Signed-off-by: Danilo Krummrich <dakr@redhat.com>
>
> In general "YES PLEASE!", but I fear that this will break amdgpus reset
> sequence.
>
> On the other hand when amdgpu still relies on that pointer it's clearly
> a bug (which I pointed out tons of times before).
>
> Luben any opinion on that? Could you drive cleaning that up as well?
I didn't find any references to scheduling entity after the job
is submitted to the hardware. (I commented the same in the other
thread, we just need to decide which way to go.)
Regards,
Luben
>
> Thanks,
> Christian.
>
>> ---
>> I'm aware that drivers could already use job->entity in arbitrary places, since
>> they in control of when the entity is actually freed. A quick grep didn't give
>> me any results where this would actually be the case, however maybe I also just
>> didn't catch it.
>>
>> If, therefore, we don't want to set job->entity to NULL I think we should at
>> least add a comment somewhere.
>> ---
>>
>> drivers/gpu/drm/scheduler/sched_entity.c | 6 ++++++
>> 1 file changed, 6 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/scheduler/sched_entity.c b/drivers/gpu/drm/scheduler/sched_entity.c
>> index 15d04a0ec623..a9c6118e534b 100644
>> --- a/drivers/gpu/drm/scheduler/sched_entity.c
>> +++ b/drivers/gpu/drm/scheduler/sched_entity.c
>> @@ -448,6 +448,12 @@ struct drm_sched_job *drm_sched_entity_pop_job(struct drm_sched_entity *entity)
>> drm_sched_rq_update_fifo(entity, next->submit_ts);
>> }
>>
>> + /* Jobs and entities might have different lifecycles. Since we're
>> + * removing the job from the entities queue, set the jobs entity pointer
>> + * to NULL to prevent any future access of the entity through this job.
>> + */
>> + sched_job->entity = NULL;
>> +
>> return sched_job;
>> }
>>
>
next prev parent reply other threads:[~2023-04-05 17:39 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-31 0:06 [PATCH] drm/scheduler: set entity to NULL in drm_sched_entity_pop_job() Danilo Krummrich
2023-03-31 5:59 ` Christian König
2023-03-31 12:57 ` Luben Tuikov
2023-04-05 17:39 ` Luben Tuikov [this message]
2023-04-11 18:13 ` Danilo Krummrich
2023-04-11 20:06 ` Luben Tuikov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ecef210b-dc7d-e385-f9b2-927d55a6777e@amd.com \
--to=luben.tuikov@amd.com \
--cc=Vitaly.Prosyak@amd.com \
--cc=airlied@gmail.com \
--cc=christian.koenig@amd.com \
--cc=dakr@redhat.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=l.stach@pengutronix.de \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox