drm/savage: fix integer overflows in savage_bci_cmdbuf()
Subsystems (2)
PATCH 1/1 drm/savage: fix integer overflows in savage_bci_cmdbuf()
Since cmdbuf->size and cmdbuf->nbox are from userspace, a large value would overflow the allocation size, leading to out-of-bounds access.
Signed-off-by Xi Wang <[email protected]>
--- drivers/gpu/drm/savage/savage_state.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
drivers/gpu/drm/savage/savage_state.c +3 -3
@@ -988,7 +988,7 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_* for locking on FreeBSD. */ if (cmdbuf->size) { - kcmd_addr =kmalloc (cmdbuf->size *8 ,GFP_KERNEL ); + kcmd_addr =kmalloc_array (cmdbuf->size,8 ,GFP_KERNEL );if (kcmd_addr ==NULL )return -ENOMEM ;
@@ -1015,8 +1015,8 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_ cmdbuf->vb_addr = kvb_addr; }if (cmdbuf->nbox) { - kbox_addr =kmalloc (cmdbuf->nbox *sizeof (struct drm_clip_rect ), -GFP_KERNEL ); + kbox_addr =kmalloc_array (cmdbuf->nbox,sizeof (struct drm_clip_rect ), +GFP_KERNEL );if (kbox_addr ==NULL ) { ret = -ENOMEM ; goto done;
Signature · 1 line
1.7.5.4