[PATCH] drm/amdgpu: Handle null atom context in VBIOS info ioctl

Francis, David David.Francis at amd.com
Tue Sep 5 15:38:19 UTC 2023


[AMD Official Use Only - General]


[AMD Official Use Only - General]

Yeah we've had JIRAs (e.g. https://ontrack-internal.amd.com/browse/SWDEV-409711 ) raised that ASAN can't compile the thunk due to using = {0} . Using memset is definitely preferred to save trouble later.

 Kent

This is kernel code, not thunk. {} and {0} are extensively used throughout
the kernel in general and our driver in particular, so I don't see this causing problems.

 David


-----Original Message-----
From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org><mailto:amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Alex
Deucher
Sent: Tuesday, September 5, 2023 10:53 AM
To: Francis, David <David.Francis at amd.com><mailto:David.Francis at amd.com>
Cc: amd-gfx at lists.freedesktop.org<mailto:amd-gfx at lists.freedesktop.org>
Subject: Re: [PATCH] drm/amdgpu: Handle null atom context in VBIOS info ioctl

On Tue, Sep 5, 2023 at 10:50 AM David Francis <David.Francis at amd.com><mailto:David.Francis at amd.com> wrote:


On some APU systems, there is no atom context and so the
atom_context struct is null.

Add a check to the VBIOS_INFO branch of amdgpu_info_ioctl
to handle this case, returning all zeroes.

Signed-off-by: David Francis <David.Francis at amd.com><mailto:David.Francis at amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c


b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c


index 3a48bec10aea..86748290ead7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -947,16 +947,21 @@ int amdgpu_info_ioctl(struct drm_device *dev, void


*data, struct drm_file *filp)


                                        ? -EFAULT : 0;
                }
                case AMDGPU_INFO_VBIOS_INFO: {
-                       struct drm_amdgpu_info_vbios vbios_info = {};
+                       struct drm_amdgpu_info_vbios vbios_info = {0};


IIRC, these should be equivalent.  That said, I believe memset is
generally preferred as not all compilers seem to handle these cases
correctly.

Alex



                        struct atom_context *atom_context;

                        atom_context = adev->mode_info.atom_context;
-                       memcpy(vbios_info.name, atom_context->name,


sizeof(atom_context->name));


-                       memcpy(vbios_info.vbios_pn, atom_context->vbios_pn,


sizeof(atom_context->vbios_pn));


-                       vbios_info.version = atom_context->version;
-                       memcpy(vbios_info.vbios_ver_str, atom_context->vbios_ver_str,
-                                               sizeof(atom_context->vbios_ver_str));
-                       memcpy(vbios_info.date, atom_context->date,


sizeof(atom_context->date));


+                       if (atom_context) {
+                               memcpy(vbios_info.name, atom_context->name,
+                                      sizeof(atom_context->name));
+                               memcpy(vbios_info.vbios_pn, atom_context->vbios_pn,
+                                      sizeof(atom_context->vbios_pn));
+                               vbios_info.version = atom_context->version;
+                               memcpy(vbios_info.vbios_ver_str, atom_context-
vbios_ver_str,
+                                      sizeof(atom_context->vbios_ver_str));
+                               memcpy(vbios_info.date, atom_context->date,
+                                      sizeof(atom_context->date));
+                       }

                        return copy_to_user(out, &vbios_info,
                                                min((size_t)size, sizeof(vbios_info))) ? -EFAULT : 0;
--
2.34.1


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20230905/4dd46949/attachment.htm>


More information about the amd-gfx mailing list