Skip to content

Commit 46f8a29

Browse files
mcoquelinmstsirkin
authored andcommitted
vduse: prevent uninitialized memory accesses
If the VDUSE application provides a smaller config space than the driver expects, the driver may use uninitialized memory from the stack. This patch prevents it by initializing the buffer passed by the driver to store the config value. This fix addresses CVE-2022-2308. Cc: [email protected] # v5.15+ Fixes: c8a6153 ("vduse: Introduce VDUSE - vDPA Device in Userspace") Reviewed-by: Xie Yongji <[email protected]> Acked-by: Jason Wang <[email protected]> Signed-off-by: Maxime Coquelin <[email protected]> Message-Id: <[email protected]> Signed-off-by: Michael S. Tsirkin <[email protected]> Reviewed-by: Chaitanya Kulkarni <[email protected]>
1 parent 37fafe6 commit 46f8a29

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

drivers/vdpa/vdpa_user/vduse_dev.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -673,10 +673,15 @@ static void vduse_vdpa_get_config(struct vdpa_device *vdpa, unsigned int offset,
673673
{
674674
struct vduse_dev *dev = vdpa_to_vduse(vdpa);
675675

676-
if (offset > dev->config_size ||
677-
len > dev->config_size - offset)
676+
/* Initialize the buffer in case of partial copy. */
677+
memset(buf, 0, len);
678+
679+
if (offset > dev->config_size)
678680
return;
679681

682+
if (len > dev->config_size - offset)
683+
len = dev->config_size - offset;
684+
680685
memcpy(buf, dev->config + offset, len);
681686
}
682687

0 commit comments

Comments
 (0)