Skip to contentSkip to conversation

drm/qxl: integer overflow in qxl_process_single_command()

PATCH Superseded Dan Carpenter 2 participants 2 messages Sep 17, 2015 – Sep 18, 2015

Subsystems (3)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/4 drm/qxl: integer overflow in qxl_process_single_command()

This size calculation can overflow on 32 bit systems leading to memory corruption.

drivers/gpu/drm/qxl/qxl_ioctl.c +1 -1
index bda5c5f..eda6f30 100644
@@ -168,7 +168,7 @@ static int qxl_process_single_command(struct qxl_device *qdev,
 		       cmd->command_size))
 		return -EFAULT;
 
-	reloc_info = kmalloc(sizeof(struct qxl_reloc_info) * cmd->relocs_num, GFP_KERNEL);
+	reloc_info = kmalloc_array(cmd->relocs_num, sizeof(struct qxl_reloc_info), GFP_KERNEL);
 	if (!reloc_info)
 		return -ENOMEM;
 

_______________________________________________
dri-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/dri-devel

#1 lore raw
Quoted 23 lines

This size calculation can overflow on 32 bit systems leading to memory corruption.

drivers/gpu/drm/qxl/qxl_ioctl.c +1 -1
index bda5c5f..eda6f30 100644
@@ -168,7 +168,7 @@ static int qxl_process_single_command(struct qxl_device
 *qdev,
 		       cmd->command_size))
 		return -EFAULT;
 
-	reloc_info = kmalloc(sizeof(struct qxl_reloc_info) * cmd->relocs_num,
 GFP_KERNEL);
+	reloc_info = kmalloc_array(cmd->relocs_num, sizeof(struct qxl_reloc_info),
 GFP_KERNEL);

drivers/gpu/drm/qxl/qxl_ioctl.c static int qxl_process_single_command(struct qxl_device *qdev, · line 173

Quoted 2 lines
drivers/gpu/drm/qxl/qxl_ioctl.c +0 -0
 	if (!reloc_info)
 		return -ENOMEM;

Looks fine.

Acked.

Frediano
_______________________________________________
dri-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/dri-devel