drop patches applied upstream
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
		
							parent
							
								
									9f7f3b58a9
								
							
						
					
					
						commit
						22fa3dbdcc
					
				@ -1,47 +0,0 @@
 | 
				
			|||||||
From 38e360ea72f11241adede7ea2b22d8d536fe490b Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Avijit Kanti Das <avijitnsec@codeaurora.org>
 | 
					 | 
				
			||||||
Date: Thu, 8 Jun 2017 15:41:00 +0200
 | 
					 | 
				
			||||||
Subject: [PATCH 5/5] net: Zeroing the structure ethtool_wolinfo in
 | 
					 | 
				
			||||||
 ethtool_get_wol()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CVE-2014-9900
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
memset() the structure ethtool_wolinfo that has padded bytes
 | 
					 | 
				
			||||||
but the padded bytes have not been zeroed out.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Change-Id: If3fd2d872a1b1ab9521d937b86a29fc468a8bbfe
 | 
					 | 
				
			||||||
Signed-off-by: Avijit Kanti Das <avijitnsec@codeaurora.org>
 | 
					 | 
				
			||||||
(cherry-picked from commit 63c317dbee97983004dffdd9f742a20d17150071
 | 
					 | 
				
			||||||
 https://source.codeaurora.org/quic/la/kernel/msm-3.10)
 | 
					 | 
				
			||||||
Signed-off-by: Brad Figg <brad.figg@canonical.com>
 | 
					 | 
				
			||||||
Acked-by: Seth Forshee <seth.forshee@canonical.com>
 | 
					 | 
				
			||||||
Acked-by: Colin King <colin.king@canonical.com>
 | 
					 | 
				
			||||||
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 net/core/ethtool.c | 4 +++-
 | 
					 | 
				
			||||||
 1 file changed, 3 insertions(+), 1 deletion(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/net/core/ethtool.c b/net/core/ethtool.c
 | 
					 | 
				
			||||||
index d92de0a1f0a4..c06c6acf78c5 100644
 | 
					 | 
				
			||||||
--- a/net/core/ethtool.c
 | 
					 | 
				
			||||||
+++ b/net/core/ethtool.c
 | 
					 | 
				
			||||||
@@ -1449,11 +1449,13 @@ static int ethtool_reset(struct net_device *dev, char __user *useraddr)
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 static int ethtool_get_wol(struct net_device *dev, char __user *useraddr)
 | 
					 | 
				
			||||||
 {
 | 
					 | 
				
			||||||
-	struct ethtool_wolinfo wol = { .cmd = ETHTOOL_GWOL };
 | 
					 | 
				
			||||||
+	struct ethtool_wolinfo wol;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 	if (!dev->ethtool_ops->get_wol)
 | 
					 | 
				
			||||||
 		return -EOPNOTSUPP;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+	memset(&wol, 0, sizeof(struct ethtool_wolinfo));
 | 
					 | 
				
			||||||
+	wol.cmd = ETHTOOL_GWOL;
 | 
					 | 
				
			||||||
 	dev->ethtool_ops->get_wol(dev, &wol);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 	if (copy_to_user(useraddr, &wol, sizeof(wol)))
 | 
					 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
2.11.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,66 +0,0 @@
 | 
				
			|||||||
From 993c7c14bbc4bf51025bb5c83c1c130417e0e823 Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Takashi Iwai <tiwai@suse.de>
 | 
					 | 
				
			||||||
Date: Wed, 21 Jun 2017 18:56:02 +0200
 | 
					 | 
				
			||||||
Subject: [PATCH 2/5] ALSA: timer: Fix missing queue indices reset at
 | 
					 | 
				
			||||||
 SNDRV_TIMER_IOCTL_SELECT
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
snd_timer_user_tselect() reallocates the queue buffer dynamically, but
 | 
					 | 
				
			||||||
it forgot to reset its indices.  Since the read may happen
 | 
					 | 
				
			||||||
concurrently with ioctl and snd_timer_user_tselect() allocates the
 | 
					 | 
				
			||||||
buffer via kmalloc(), this may lead to the leak of uninitialized
 | 
					 | 
				
			||||||
kernel-space data, as spotted via KMSAN:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  BUG: KMSAN: use of unitialized memory in snd_timer_user_read+0x6c4/0xa10
 | 
					 | 
				
			||||||
  CPU: 0 PID: 1037 Comm: probe Not tainted 4.11.0-rc5+ #2739
 | 
					 | 
				
			||||||
  Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
 | 
					 | 
				
			||||||
  Call Trace:
 | 
					 | 
				
			||||||
   __dump_stack lib/dump_stack.c:16
 | 
					 | 
				
			||||||
   dump_stack+0x143/0x1b0 lib/dump_stack.c:52
 | 
					 | 
				
			||||||
   kmsan_report+0x12a/0x180 mm/kmsan/kmsan.c:1007
 | 
					 | 
				
			||||||
   kmsan_check_memory+0xc2/0x140 mm/kmsan/kmsan.c:1086
 | 
					 | 
				
			||||||
   copy_to_user ./arch/x86/include/asm/uaccess.h:725
 | 
					 | 
				
			||||||
   snd_timer_user_read+0x6c4/0xa10 sound/core/timer.c:2004
 | 
					 | 
				
			||||||
   do_loop_readv_writev fs/read_write.c:716
 | 
					 | 
				
			||||||
   __do_readv_writev+0x94c/0x1380 fs/read_write.c:864
 | 
					 | 
				
			||||||
   do_readv_writev fs/read_write.c:894
 | 
					 | 
				
			||||||
   vfs_readv fs/read_write.c:908
 | 
					 | 
				
			||||||
   do_readv+0x52a/0x5d0 fs/read_write.c:934
 | 
					 | 
				
			||||||
   SYSC_readv+0xb6/0xd0 fs/read_write.c:1021
 | 
					 | 
				
			||||||
   SyS_readv+0x87/0xb0 fs/read_write.c:1018
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This patch adds the missing reset of queue indices.  Together with the
 | 
					 | 
				
			||||||
previous fix for the ioctl/read race, we cover the whole problem.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Reported-by: Alexander Potapenko <glider@google.com>
 | 
					 | 
				
			||||||
Tested-by: Alexander Potapenko <glider@google.com>
 | 
					 | 
				
			||||||
Cc: <stable@vger.kernel.org>
 | 
					 | 
				
			||||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CVE-2017-1000380
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(cherry-picked from commit ba3021b2c79b2fa9114f92790a99deb27a65b728)
 | 
					 | 
				
			||||||
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
 | 
					 | 
				
			||||||
Acked-by: Seth Forshee <seth.forshee@canonical.com>
 | 
					 | 
				
			||||||
Acked-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
 | 
					 | 
				
			||||||
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 sound/core/timer.c | 1 +
 | 
					 | 
				
			||||||
 1 file changed, 1 insertion(+)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/sound/core/timer.c b/sound/core/timer.c
 | 
					 | 
				
			||||||
index 3c11a6983f54..e5ddc475dca4 100644
 | 
					 | 
				
			||||||
--- a/sound/core/timer.c
 | 
					 | 
				
			||||||
+++ b/sound/core/timer.c
 | 
					 | 
				
			||||||
@@ -1622,6 +1622,7 @@ static int snd_timer_user_tselect(struct file *file,
 | 
					 | 
				
			||||||
 	if (err < 0)
 | 
					 | 
				
			||||||
 		goto __err;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+	tu->qhead = tu->qtail = tu->qused = 0;
 | 
					 | 
				
			||||||
 	kfree(tu->queue);
 | 
					 | 
				
			||||||
 	tu->queue = NULL;
 | 
					 | 
				
			||||||
 	kfree(tu->tqueue);
 | 
					 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
2.11.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,83 +0,0 @@
 | 
				
			|||||||
From 425e11483546f928109e5871a2c8b0fba3ddb3b4 Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Takashi Iwai <tiwai@suse.de>
 | 
					 | 
				
			||||||
Date: Wed, 21 Jun 2017 18:56:01 +0200
 | 
					 | 
				
			||||||
Subject: [PATCH 1/5] ALSA: timer: Fix race between read and ioctl
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The read from ALSA timer device, the function snd_timer_user_tread(),
 | 
					 | 
				
			||||||
may access to an uninitialized struct snd_timer_user fields when the
 | 
					 | 
				
			||||||
read is concurrently performed while the ioctl like
 | 
					 | 
				
			||||||
snd_timer_user_tselect() is invoked.  We have already fixed the races
 | 
					 | 
				
			||||||
among ioctls via a mutex, but we seem to have forgotten the race
 | 
					 | 
				
			||||||
between read vs ioctl.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This patch simply applies (more exactly extends the already applied
 | 
					 | 
				
			||||||
range of) tu->ioctl_lock in snd_timer_user_tread() for closing the
 | 
					 | 
				
			||||||
race window.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Reported-by: Alexander Potapenko <glider@google.com>
 | 
					 | 
				
			||||||
Tested-by: Alexander Potapenko <glider@google.com>
 | 
					 | 
				
			||||||
Cc: <stable@vger.kernel.org>
 | 
					 | 
				
			||||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CVE-2017-1000380
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(cherry-picked from commit d11662f4f798b50d8c8743f433842c3e40fe3378)
 | 
					 | 
				
			||||||
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
 | 
					 | 
				
			||||||
Acked-by: Seth Forshee <seth.forshee@canonical.com>
 | 
					 | 
				
			||||||
Acked-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
 | 
					 | 
				
			||||||
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 sound/core/timer.c | 6 ++++--
 | 
					 | 
				
			||||||
 1 file changed, 4 insertions(+), 2 deletions(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/sound/core/timer.c b/sound/core/timer.c
 | 
					 | 
				
			||||||
index ad153149b231..3c11a6983f54 100644
 | 
					 | 
				
			||||||
--- a/sound/core/timer.c
 | 
					 | 
				
			||||||
+++ b/sound/core/timer.c
 | 
					 | 
				
			||||||
@@ -1963,6 +1963,7 @@ static ssize_t snd_timer_user_read(struct file *file, char __user *buffer,
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 	tu = file->private_data;
 | 
					 | 
				
			||||||
 	unit = tu->tread ? sizeof(struct snd_timer_tread) : sizeof(struct snd_timer_read);
 | 
					 | 
				
			||||||
+	mutex_lock(&tu->ioctl_lock);
 | 
					 | 
				
			||||||
 	spin_lock_irq(&tu->qlock);
 | 
					 | 
				
			||||||
 	while ((long)count - result >= unit) {
 | 
					 | 
				
			||||||
 		while (!tu->qused) {
 | 
					 | 
				
			||||||
@@ -1978,7 +1979,9 @@ static ssize_t snd_timer_user_read(struct file *file, char __user *buffer,
 | 
					 | 
				
			||||||
 			add_wait_queue(&tu->qchange_sleep, &wait);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 			spin_unlock_irq(&tu->qlock);
 | 
					 | 
				
			||||||
+			mutex_unlock(&tu->ioctl_lock);
 | 
					 | 
				
			||||||
 			schedule();
 | 
					 | 
				
			||||||
+			mutex_lock(&tu->ioctl_lock);
 | 
					 | 
				
			||||||
 			spin_lock_irq(&tu->qlock);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 			remove_wait_queue(&tu->qchange_sleep, &wait);
 | 
					 | 
				
			||||||
@@ -1998,7 +2001,6 @@ static ssize_t snd_timer_user_read(struct file *file, char __user *buffer,
 | 
					 | 
				
			||||||
 		tu->qused--;
 | 
					 | 
				
			||||||
 		spin_unlock_irq(&tu->qlock);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-		mutex_lock(&tu->ioctl_lock);
 | 
					 | 
				
			||||||
 		if (tu->tread) {
 | 
					 | 
				
			||||||
 			if (copy_to_user(buffer, &tu->tqueue[qhead],
 | 
					 | 
				
			||||||
 					 sizeof(struct snd_timer_tread)))
 | 
					 | 
				
			||||||
@@ -2008,7 +2010,6 @@ static ssize_t snd_timer_user_read(struct file *file, char __user *buffer,
 | 
					 | 
				
			||||||
 					 sizeof(struct snd_timer_read)))
 | 
					 | 
				
			||||||
 				err = -EFAULT;
 | 
					 | 
				
			||||||
 		}
 | 
					 | 
				
			||||||
-		mutex_unlock(&tu->ioctl_lock);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 		spin_lock_irq(&tu->qlock);
 | 
					 | 
				
			||||||
 		if (err < 0)
 | 
					 | 
				
			||||||
@@ -2018,6 +2019,7 @@ static ssize_t snd_timer_user_read(struct file *file, char __user *buffer,
 | 
					 | 
				
			||||||
 	}
 | 
					 | 
				
			||||||
  _error:
 | 
					 | 
				
			||||||
 	spin_unlock_irq(&tu->qlock);
 | 
					 | 
				
			||||||
+	mutex_unlock(&tu->ioctl_lock);
 | 
					 | 
				
			||||||
 	return result > 0 ? result : err;
 | 
					 | 
				
			||||||
 }
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
2.11.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,46 +0,0 @@
 | 
				
			|||||||
From ab13cf852828060a7d9550c05197e5303de7aefb Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Vladis Dronov <vdronov@redhat.com>
 | 
					 | 
				
			||||||
Date: Wed, 14 Jun 2017 11:09:00 +0200
 | 
					 | 
				
			||||||
Subject: [PATCH 4/5] drm/vmwgfx: limit the number of mip levels in
 | 
					 | 
				
			||||||
 vmw_gb_surface_define_ioctl()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CVE-2017-7346
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The 'req->mip_levels' parameter in vmw_gb_surface_define_ioctl() is
 | 
					 | 
				
			||||||
a user-controlled 'uint32_t' value which is used as a loop count limit.
 | 
					 | 
				
			||||||
This can lead to a kernel lockup and DoS. Add check for 'req->mip_levels'.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
References:
 | 
					 | 
				
			||||||
https://bugzilla.redhat.com/show_bug.cgi?id=1437431
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Cc: <stable@vger.kernel.org>
 | 
					 | 
				
			||||||
Signed-off-by: Vladis Dronov <vdronov@redhat.com>
 | 
					 | 
				
			||||||
Reviewed-by: Sinclair Yeh <syeh@vmware.com>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(cherry picked from commit ee9c4e681ec4f58e42a83cb0c22a0289ade1aacf)
 | 
					 | 
				
			||||||
Signed-off-by: Po-Hsu Lin <po-hsu.lin@canonical.com>
 | 
					 | 
				
			||||||
Acked-by: Stefan Bader <stefan.bader@canonical.com>
 | 
					 | 
				
			||||||
Acked-by: Seth Forshee <seth.forshee@canonical.com>
 | 
					 | 
				
			||||||
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
 | 
					 | 
				
			||||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 drivers/gpu/drm/vmwgfx/vmwgfx_surface.c | 3 +++
 | 
					 | 
				
			||||||
 1 file changed, 3 insertions(+)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c b/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
 | 
					 | 
				
			||||||
index 8da50fce3b77..56b803384ea2 100644
 | 
					 | 
				
			||||||
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
 | 
					 | 
				
			||||||
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
 | 
					 | 
				
			||||||
@@ -1280,6 +1280,9 @@ int vmw_gb_surface_define_ioctl(struct drm_device *dev, void *data,
 | 
					 | 
				
			||||||
 	if (req->multisample_count != 0)
 | 
					 | 
				
			||||||
 		return -EINVAL;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+	if (req->mip_levels > DRM_VMW_MAX_MIP_LEVELS)
 | 
					 | 
				
			||||||
+		return -EINVAL;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 	if (unlikely(vmw_user_surface_size == 0))
 | 
					 | 
				
			||||||
 		vmw_user_surface_size = ttm_round_pot(sizeof(*user_srf)) +
 | 
					 | 
				
			||||||
 			128;
 | 
					 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
2.11.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,68 +0,0 @@
 | 
				
			|||||||
From a2285dfad4c68beb9a8376fa2a2df905319b11fa Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Sinclair Yeh <syeh@vmware.com>
 | 
					 | 
				
			||||||
Date: Thu, 22 Jun 2017 17:28:14 +0200
 | 
					 | 
				
			||||||
Subject: [PATCH 3/5] drm/vmwgfx: Make sure backup_handle is always valid
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
When vmw_gb_surface_define_ioctl() is called with an existing buffer,
 | 
					 | 
				
			||||||
we end up returning an uninitialized variable in the backup_handle.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The fix is to first initialize backup_handle to 0 just to be sure, and
 | 
					 | 
				
			||||||
second, when a user-provided buffer is found, we will use the
 | 
					 | 
				
			||||||
req->buffer_handle as the backup_handle.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Cc: <stable@vger.kernel.org>
 | 
					 | 
				
			||||||
Reported-by: Murray McAllister <murray.mcallister@insomniasec.com>
 | 
					 | 
				
			||||||
Signed-off-by: Sinclair Yeh <syeh@vmware.com>
 | 
					 | 
				
			||||||
Reviewed-by: Deepak Rawat <drawat@vmware.com>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CVE-2017-9605
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(cherry picked from commit 07678eca2cf9c9a18584e546c2b2a0d0c9a3150c)
 | 
					 | 
				
			||||||
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
 | 
					 | 
				
			||||||
Acked-by: Colin Ian King <colin.king@canonical.com>
 | 
					 | 
				
			||||||
Acked-by: Po-Hsu Lin <po-hsu.lin@canonical.com>
 | 
					 | 
				
			||||||
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
 | 
					 | 
				
			||||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 drivers/gpu/drm/vmwgfx/vmwgfx_surface.c | 18 +++++++++++-------
 | 
					 | 
				
			||||||
 1 file changed, 11 insertions(+), 7 deletions(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c b/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
 | 
					 | 
				
			||||||
index 05fa092c942b..8da50fce3b77 100644
 | 
					 | 
				
			||||||
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
 | 
					 | 
				
			||||||
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
 | 
					 | 
				
			||||||
@@ -1275,7 +1275,7 @@ int vmw_gb_surface_define_ioctl(struct drm_device *dev, void *data,
 | 
					 | 
				
			||||||
 	struct ttm_object_file *tfile = vmw_fpriv(file_priv)->tfile;
 | 
					 | 
				
			||||||
 	int ret;
 | 
					 | 
				
			||||||
 	uint32_t size;
 | 
					 | 
				
			||||||
-	uint32_t backup_handle;
 | 
					 | 
				
			||||||
+	uint32_t backup_handle = 0;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 	if (req->multisample_count != 0)
 | 
					 | 
				
			||||||
 		return -EINVAL;
 | 
					 | 
				
			||||||
@@ -1315,12 +1315,16 @@ int vmw_gb_surface_define_ioctl(struct drm_device *dev, void *data,
 | 
					 | 
				
			||||||
 		ret = vmw_user_dmabuf_lookup(tfile, req->buffer_handle,
 | 
					 | 
				
			||||||
 					     &res->backup,
 | 
					 | 
				
			||||||
 					     &user_srf->backup_base);
 | 
					 | 
				
			||||||
-		if (ret == 0 && res->backup->base.num_pages * PAGE_SIZE <
 | 
					 | 
				
			||||||
-		    res->backup_size) {
 | 
					 | 
				
			||||||
-			DRM_ERROR("Surface backup buffer is too small.\n");
 | 
					 | 
				
			||||||
-			vmw_dmabuf_unreference(&res->backup);
 | 
					 | 
				
			||||||
-			ret = -EINVAL;
 | 
					 | 
				
			||||||
-			goto out_unlock;
 | 
					 | 
				
			||||||
+		if (ret == 0) {
 | 
					 | 
				
			||||||
+			if (res->backup->base.num_pages * PAGE_SIZE <
 | 
					 | 
				
			||||||
+			    res->backup_size) {
 | 
					 | 
				
			||||||
+				DRM_ERROR("Surface backup buffer is too small.\n");
 | 
					 | 
				
			||||||
+				vmw_dmabuf_unreference(&res->backup);
 | 
					 | 
				
			||||||
+				ret = -EINVAL;
 | 
					 | 
				
			||||||
+				goto out_unlock;
 | 
					 | 
				
			||||||
+			} else {
 | 
					 | 
				
			||||||
+				backup_handle = req->buffer_handle;
 | 
					 | 
				
			||||||
+			}
 | 
					 | 
				
			||||||
 		}
 | 
					 | 
				
			||||||
 	} else if (req->drm_surface_flags & drm_vmw_surface_flag_create_buffer)
 | 
					 | 
				
			||||||
 		ret = vmw_user_dmabuf_alloc(dev_priv, tfile,
 | 
					 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
2.11.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
							
								
								
									
										5
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								Makefile
									
									
									
									
									
								
							@ -241,11 +241,6 @@ ${KERNEL_SRC}/README: ${KERNEL_SRC_SUBMODULE} | submodules
 | 
				
			|||||||
	cd ${KERNEL_SRC}; patch -p1 < ../kvm-dynamic-halt-polling-disable-default.patch
 | 
						cd ${KERNEL_SRC}; patch -p1 < ../kvm-dynamic-halt-polling-disable-default.patch
 | 
				
			||||||
	cd ${KERNEL_SRC}; patch -p1 < ../cgroup-cpuset-add-cpuset.remap_cpus.patch
 | 
						cd ${KERNEL_SRC}; patch -p1 < ../cgroup-cpuset-add-cpuset.remap_cpus.patch
 | 
				
			||||||
	cd ${KERNEL_SRC}; patch -p1 < ../0001-netfilter-nft_set_rbtree-handle-re-addition-element-.patch # DoS from within (unpriv) containers
 | 
						cd ${KERNEL_SRC}; patch -p1 < ../0001-netfilter-nft_set_rbtree-handle-re-addition-element-.patch # DoS from within (unpriv) containers
 | 
				
			||||||
	cd ${KERNEL_SRC}; patch -p1 <  ../CVE-2014-9900-net-Zeroing-the-structure-ethtool_wolinfo-in-ethtool.patch
 | 
					 | 
				
			||||||
	cd ${KERNEL_SRC}; patch -p1 <  ../CVE-2017-1000380-ALSA-timer-Fix-missing-queue-indices-reset-at-SNDRV_.patch
 | 
					 | 
				
			||||||
	cd ${KERNEL_SRC}; patch -p1 <  ../CVE-2017-1000380-ALSA-timer-Fix-race-between-read-and-ioctl.patch
 | 
					 | 
				
			||||||
	cd ${KERNEL_SRC}; patch -p1 <  ../CVE-2017-7346-drm-vmwgfx-limit-the-number-of-mip-levels-in-vmw_gb_.patch
 | 
					 | 
				
			||||||
	cd ${KERNEL_SRC}; patch -p1 <  ../CVE-2017-9605-drm-vmwgfx-Make-sure-backup_handle-is-always-valid.patch
 | 
					 | 
				
			||||||
	cd ${KERNEL_SRC}; patch -p1 < ../CVE-2017-1000364-mm-mmap.c-do-not-blow-on-PROT_NONE-MAP_FIXED-holes-i.patch
 | 
						cd ${KERNEL_SRC}; patch -p1 < ../CVE-2017-1000364-mm-mmap.c-do-not-blow-on-PROT_NONE-MAP_FIXED-holes-i.patch
 | 
				
			||||||
	cd ${KERNEL_SRC}; patch -p1 < ../CVE-2017-1000364-mm-mmap.c-expand_downwards-don-t-require-the-gap-if-.patch
 | 
						cd ${KERNEL_SRC}; patch -p1 < ../CVE-2017-1000364-mm-mmap.c-expand_downwards-don-t-require-the-gap-if-.patch
 | 
				
			||||||
	cd ${KERNEL_SRC}; patch -p1 < ../CVE-2017-1000365-fs-exec.c-account-for-argv-envp-pointers.patch
 | 
						cd ${KERNEL_SRC}; patch -p1 < ../CVE-2017-1000365-fs-exec.c-account-for-argv-envp-pointers.patch
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user