Skip to content

Commit 670ae9c

Browse files
committed
vhost: fix info leak due to uninitialized memory
struct vhost_msg within struct vhost_msg_node is copied to userspace. Unfortunately it turns out on 64 bit systems vhost_msg has padding after type which gcc doesn't initialize, leaking 4 uninitialized bytes to userspace. This padding also unfortunately means 32 bit users of this interface are broken on a 64 bit kernel which will need to be fixed separately. Fixes: CVE-2018-1118 Cc: [email protected] Reported-by: Kevin Easton <[email protected]> Signed-off-by: Michael S. Tsirkin <[email protected]> Reported-by: [email protected] Signed-off-by: Michael S. Tsirkin <[email protected]>
1 parent 55e49dc commit 670ae9c

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

drivers/vhost/vhost.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2345,6 +2345,9 @@ struct vhost_msg_node *vhost_new_msg(struct vhost_virtqueue *vq, int type)
23452345
struct vhost_msg_node *node = kmalloc(sizeof *node, GFP_KERNEL);
23462346
if (!node)
23472347
return NULL;
2348+
2349+
/* Make sure all padding within the structure is initialized. */
2350+
memset(&node->msg, 0, sizeof node->msg);
23482351
node->vq = vq;
23492352
node->msg.type = type;
23502353
return node;

0 commit comments

Comments
 (0)