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: stable@vger.kernel.org # v5.15+ Fixes: c8a6153 ("vduse: Introduce VDUSE - vDPA Device in Userspace") Reviewed-by: Xie Yongji <xieyongji@bytedance.com> Acked-by: Jason Wang <jasowang@redhat.com> Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> Message-Id: <20220831154923.97809-1-maxime.coquelin@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
1 parent 37fafe6 commit 46f8a29

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

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)