From: David Francis <david.fran...@amd.com>

[ Upstream commit 5e7e82254270c8cf8b107451c5de01cee2f135ae ]

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.

Reviewed-by: Alex Deucher <alexander.deuc...@amd.com>
Signed-off-by: David Francis <david.fran...@amd.com>
Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index f678bdd5f353d..b9fc7e2db5e59 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -940,12 +940,17 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, 
struct drm_file *filp)
                        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.40.1

Reply via email to