drm/amdgpu: Handle null atom context in VBIOS info ioctl
authorjsg <jsg@openbsd.org>
Mon, 9 Oct 2023 02:33:44 +0000 (02:33 +0000)
committerjsg <jsg@openbsd.org>
Mon, 9 Oct 2023 02:33:44 +0000 (02:33 +0000)
From David Francis
91b6845ef387ab9ae2c6f3f8d43655be955e444b in linux-6.1.y/6.1.56
5e7e82254270c8cf8b107451c5de01cee2f135ae in mainline linux

sys/dev/pci/drm/amd/amdgpu/amdgpu_kms.c

index 85b69a0..e34aa05 100644 (file)
@@ -900,12 +900,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;