From: Tuo Li <islituo@gmail.com>
To: harry.wentland@amd.com, sunpeng.li@amd.com,
Rodrigo.Siqueira@amd.com, alexander.deucher@amd.com,
christian.koenig@amd.com, Xinhui.Pan@amd.com, airlied@gmail.com,
simona@ffwll.ch, alex.hung@amd.com, hamza.mahfooz@amd.com,
Roman.Li@amd.com, chiahsuan.chung@amd.com,
aurabindo.pillai@amd.com, Wayne.Lin@amd.com, hersenxs.wu@amd.com
Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
linux-kernel@vger.kernel.org, baijiaju1990@gmail.com
Subject: [BUG] drm/amd/display: possible null-pointer dereference or redundant null check in amdgpu_dm.c
Date: Thu, 17 Oct 2024 16:43:04 +0800 [thread overview]
Message-ID: <65fe0dd4-e7bb-40d1-9b89-7b330984268a@gmail.com> (raw)
Hello,
Our static analysis tool has identified a potential null-pointer dereference or
redundant null check related to the wait-completion synchronization mechanism in
amdgpu_dm.c in Linux 6.11.
Consider the following execution scenario:
dmub_aux_setconfig_callback() //731
if (adev->dm.dmub_notify) //734
complete(&adev->dm.dmub_aux_transfer_done); //737
The variable adev->dm.dmub_notify is checked by an if statement at Line 734,
which indicates that adev->dm.dmub_notify can NULL. Then, complete() is called
at Line 737 which wakes up the wait_for_completion().
Consider the wait_for_completion()
amdgpu_dm_process_dmub_aux_transfer_sync() //12271
p_notify = adev->dm.dmub_notify; //12278
wait_for_completion_timeout(&adev->dm.dmub_aux_transfer_done, ...); // 12287
if (p_notify->result != AUX_RET_SUCCESS) //12293
The value of adev->dm.dmub_notify is assigned to p_notify at Line 12278. If
adev->dm.dmub_notify at Line 734 is checked to be NULL, the value p_notify after
the wait_for_completion_timeout() at Line 12278 can also be NULL. However, it is
dereferenced at Line 12293 without rechecking, causing a possible null dereference.
In fact, dmub_aux_setconfig_callback() is registered only if
adev->dm.dmub_notify is checked to be not NULL:
adev->dm.dmub_notify = kzalloc(...); //2006
if (!adev->dm.dmub_notify) { //2007
......
goto error; //2009
} //2010
......
register_dmub_notify_callback(..., dmub_aux_setconfig_callback, ...) //2019
I am not sure if adev->dm.dmub_notify is assigned with NULL elsewhere. If not,
the if check at Line 734 can be redundant.
Any feedback would be appreciated, thanks!
Sincerely,
Tuo Li
reply other threads:[~2024-10-18 7:35 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=65fe0dd4-e7bb-40d1-9b89-7b330984268a@gmail.com \
--to=islituo@gmail.com \
--cc=Rodrigo.Siqueira@amd.com \
--cc=Roman.Li@amd.com \
--cc=Wayne.Lin@amd.com \
--cc=Xinhui.Pan@amd.com \
--cc=airlied@gmail.com \
--cc=alex.hung@amd.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=aurabindo.pillai@amd.com \
--cc=baijiaju1990@gmail.com \
--cc=chiahsuan.chung@amd.com \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=hamza.mahfooz@amd.com \
--cc=harry.wentland@amd.com \
--cc=hersenxs.wu@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=simona@ffwll.ch \
--cc=sunpeng.li@amd.com \
/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