Linux v4.15.11
This commit is contained in:
parent
756abe52f4
commit
da2f6062f4
@ -1,8 +1,8 @@
|
||||
From f5c1da991de077420fda17a236342de5a0068f5d Mon Sep 17 00:00:00 2001
|
||||
From 8c6b638bb620eef53cb83ffe88d7b528f666af10 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Wed, 22 Nov 2017 12:57:08 +0100
|
||||
Subject: [PATCH v2 1/3] HID: multitouch: Properly deal with Win8 PTP reports
|
||||
with 0 touches
|
||||
Subject: [PATCH] HID: multitouch: Properly deal with Win8 PTP reports with 0
|
||||
touches
|
||||
|
||||
The Windows Precision Touchpad spec "Figure 4 Button Only Down and Up"
|
||||
and "Table 9 Report Sequence for Button Only Down and Up" indicate
|
||||
@ -24,7 +24,7 @@ Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
||||
1 file changed, 30 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
|
||||
index 9ef24b518f12..d8b1cad74faf 100644
|
||||
index 397592959238..0a42e19d914a 100644
|
||||
--- a/drivers/hid/hid-multitouch.c
|
||||
+++ b/drivers/hid/hid-multitouch.c
|
||||
@@ -119,6 +119,9 @@ struct mt_device {
|
||||
@ -50,19 +50,20 @@ index 9ef24b518f12..d8b1cad74faf 100644
|
||||
return 1;
|
||||
case HID_DG_CONTACTCOUNT:
|
||||
/* Ignore if indexes are out of bounds. */
|
||||
@@ -855,9 +864,10 @@ static void mt_process_mt_event(struct hid_device *hid, struct hid_field *field,
|
||||
@@ -866,10 +875,11 @@ static void mt_process_mt_event(struct hid_device *hid, struct hid_field *field,
|
||||
static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
|
||||
{
|
||||
struct mt_device *td = hid_get_drvdata(hid);
|
||||
+ __s32 cls = td->mtclass.name;
|
||||
struct hid_field *field;
|
||||
bool first_packet;
|
||||
unsigned count;
|
||||
- int r, n;
|
||||
+ int r, n, scantime = 0;
|
||||
|
||||
/* sticky fingers release in progress, abort */
|
||||
if (test_and_set_bit(MT_IO_FLAGS_RUNNING, &td->mt_io_flags))
|
||||
@@ -867,12 +877,29 @@ static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
|
||||
@@ -879,12 +889,29 @@ static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
|
||||
* Includes multi-packet support where subsequent
|
||||
* packets are sent with zero contactcount.
|
||||
*/
|
||||
@ -91,9 +92,9 @@ index 9ef24b518f12..d8b1cad74faf 100644
|
||||
}
|
||||
+ td->prev_scantime = scantime;
|
||||
|
||||
first_packet = td->num_received == 0;
|
||||
for (r = 0; r < report->maxfield; r++) {
|
||||
field = report->field[r];
|
||||
@@ -1329,6 +1356,7 @@ static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
|
||||
@@ -1342,6 +1369,7 @@ static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
|
||||
td->maxcontact_report_id = -1;
|
||||
td->inputmode_value = MT_INPUTMODE_TOUCHSCREEN;
|
||||
td->cc_index = -1;
|
||||
|
@ -1,84 +0,0 @@
|
||||
From c25d877f4ee97deb92170129eee4777a5d5997d9 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Wed, 22 Nov 2017 12:57:09 +0100
|
||||
Subject: [PATCH v2 2/3] HID: multitouch: Only look at non touch fields in
|
||||
first packet of a frame
|
||||
|
||||
Devices in "single finger hybrid mode" will send one report per finger,
|
||||
on some devices only the first report of such a multi-packet frame will
|
||||
contain a value for BTN_LEFT, in subsequent reports (if multiple fingers
|
||||
are down) the value is always 0, causing hid-mt to report BTN_LEFT going
|
||||
1 - 0 - 1 - 0 when pressing a clickpad and putting down a second finger.
|
||||
This happens for example on USB 0603:0002 mt touchpads.
|
||||
|
||||
This commit fixes this by only reporting non touch fields for the first
|
||||
packet of a (possibly) multi-packet frame.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
||||
---
|
||||
drivers/hid/hid-multitouch.c | 17 +++++++++++++++--
|
||||
1 file changed, 15 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
|
||||
index d8b1cad74faf..760c4a042e6a 100644
|
||||
--- a/drivers/hid/hid-multitouch.c
|
||||
+++ b/drivers/hid/hid-multitouch.c
|
||||
@@ -787,9 +787,11 @@ static int mt_touch_event(struct hid_device *hid, struct hid_field *field,
|
||||
}
|
||||
|
||||
static void mt_process_mt_event(struct hid_device *hid, struct hid_field *field,
|
||||
- struct hid_usage *usage, __s32 value)
|
||||
+ struct hid_usage *usage, __s32 value,
|
||||
+ bool first_packet)
|
||||
{
|
||||
struct mt_device *td = hid_get_drvdata(hid);
|
||||
+ __s32 cls = td->mtclass.name;
|
||||
__s32 quirks = td->mtclass.quirks;
|
||||
struct input_dev *input = field->hidinput->input;
|
||||
|
||||
@@ -846,6 +848,15 @@ static void mt_process_mt_event(struct hid_device *hid, struct hid_field *field,
|
||||
break;
|
||||
|
||||
default:
|
||||
+ /*
|
||||
+ * For Win8 PTP touchpads we should only look at
|
||||
+ * non finger/touch events in the first_packet of
|
||||
+ * a (possible) multi-packet frame.
|
||||
+ */
|
||||
+ if ((cls == MT_CLS_WIN_8 || cls == MT_CLS_WIN_8_DUAL) &&
|
||||
+ !first_packet)
|
||||
+ return;
|
||||
+
|
||||
if (usage->type)
|
||||
input_event(input, usage->type, usage->code,
|
||||
value);
|
||||
@@ -866,6 +877,7 @@ static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
|
||||
struct mt_device *td = hid_get_drvdata(hid);
|
||||
__s32 cls = td->mtclass.name;
|
||||
struct hid_field *field;
|
||||
+ bool first_packet;
|
||||
unsigned count;
|
||||
int r, n, scantime = 0;
|
||||
|
||||
@@ -901,6 +913,7 @@ static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
|
||||
}
|
||||
td->prev_scantime = scantime;
|
||||
|
||||
+ first_packet = td->num_received == 0;
|
||||
for (r = 0; r < report->maxfield; r++) {
|
||||
field = report->field[r];
|
||||
count = field->report_count;
|
||||
@@ -910,7 +923,7 @@ static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
|
||||
|
||||
for (n = 0; n < count; n++)
|
||||
mt_process_mt_event(hid, field, &field->usage[n],
|
||||
- field->value[n]);
|
||||
+ field->value[n], first_packet);
|
||||
}
|
||||
|
||||
if (td->num_received >= td->num_expected)
|
||||
--
|
||||
2.14.3
|
||||
|
@ -1162,6 +1162,7 @@ CONFIG_DEBUG_SECTION_MISMATCH=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
CONFIG_DEBUG_SG=y
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
CONFIG_DEBUG_SLAB=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
@ -1283,6 +1284,7 @@ CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
|
||||
CONFIG_DRM_DW_HDMI_CEC=m
|
||||
CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
|
||||
CONFIG_DRM_DW_HDMI=m
|
||||
CONFIG_DRM_ETNAVIV_THERMAL=y
|
||||
CONFIG_DRM_FBDEV_EMULATION=y
|
||||
CONFIG_DRM_FBDEV_OVERALLOC=100
|
||||
CONFIG_DRM_HDLCD=m
|
||||
|
@ -1154,6 +1154,7 @@ CONFIG_DEBUG_SECTION_MISMATCH=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
|
||||
@ -1273,6 +1274,7 @@ CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
|
||||
CONFIG_DRM_DW_HDMI_CEC=m
|
||||
CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
|
||||
CONFIG_DRM_DW_HDMI=m
|
||||
CONFIG_DRM_ETNAVIV_THERMAL=y
|
||||
CONFIG_DRM_FBDEV_EMULATION=y
|
||||
CONFIG_DRM_FBDEV_OVERALLOC=100
|
||||
CONFIG_DRM_HDLCD=m
|
||||
|
@ -1216,6 +1216,7 @@ CONFIG_DEBUG_RT_MUTEXES=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
CONFIG_DEBUG_SG=y
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
CONFIG_DEBUG_SLAB=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
@ -1347,6 +1348,7 @@ CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
|
||||
CONFIG_DRM_DW_HDMI=m
|
||||
CONFIG_DRM_ETNAVIV=m
|
||||
# CONFIG_DRM_ETNAVIV_REGISTER_LOGGING is not set
|
||||
CONFIG_DRM_ETNAVIV_THERMAL=y
|
||||
CONFIG_DRM_EXYNOS5433_DECON=y
|
||||
CONFIG_DRM_EXYNOS7_DECON=y
|
||||
CONFIG_DRM_EXYNOS_DPI=y
|
||||
|
@ -1162,6 +1162,7 @@ CONFIG_DEBUG_RT_MUTEXES=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
CONFIG_DEBUG_SG=y
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
CONFIG_DEBUG_SLAB=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
@ -1290,6 +1291,7 @@ CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
|
||||
CONFIG_DRM_DW_HDMI_CEC=m
|
||||
CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
|
||||
CONFIG_DRM_DW_HDMI=m
|
||||
CONFIG_DRM_ETNAVIV_THERMAL=y
|
||||
CONFIG_DRM_EXYNOS5433_DECON=y
|
||||
CONFIG_DRM_EXYNOS7_DECON=y
|
||||
CONFIG_DRM_EXYNOS_DPI=y
|
||||
|
@ -1153,6 +1153,7 @@ CONFIG_DEBUG_RODATA_TEST=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
|
||||
@ -1280,6 +1281,7 @@ CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
|
||||
CONFIG_DRM_DW_HDMI_CEC=m
|
||||
CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
|
||||
CONFIG_DRM_DW_HDMI=m
|
||||
CONFIG_DRM_ETNAVIV_THERMAL=y
|
||||
CONFIG_DRM_EXYNOS5433_DECON=y
|
||||
CONFIG_DRM_EXYNOS7_DECON=y
|
||||
CONFIG_DRM_EXYNOS_DPI=y
|
||||
|
@ -1207,6 +1207,7 @@ CONFIG_DEBUG_RODATA_TEST=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
|
||||
@ -1337,6 +1338,7 @@ CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
|
||||
CONFIG_DRM_DW_HDMI=m
|
||||
CONFIG_DRM_ETNAVIV=m
|
||||
# CONFIG_DRM_ETNAVIV_REGISTER_LOGGING is not set
|
||||
CONFIG_DRM_ETNAVIV_THERMAL=y
|
||||
CONFIG_DRM_EXYNOS5433_DECON=y
|
||||
CONFIG_DRM_EXYNOS7_DECON=y
|
||||
CONFIG_DRM_EXYNOS_DPI=y
|
||||
|
@ -1005,6 +1005,7 @@ CONFIG_DEBUG_RODATA_TEST=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
|
@ -1014,6 +1014,7 @@ CONFIG_DEBUG_RT_MUTEXES=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
CONFIG_DEBUG_SG=y
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
CONFIG_DEBUG_SLAB=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
|
@ -1014,6 +1014,7 @@ CONFIG_DEBUG_RT_MUTEXES=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
CONFIG_DEBUG_SG=y
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
CONFIG_DEBUG_SLAB=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
|
@ -1005,6 +1005,7 @@ CONFIG_DEBUG_RODATA_TEST=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
|
@ -993,6 +993,7 @@ CONFIG_DEBUG_RT_MUTEXES=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
CONFIG_DEBUG_SG=y
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
CONFIG_DEBUG_SLAB=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
|
@ -984,6 +984,7 @@ CONFIG_DEBUG_RODATA_TEST=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
|
@ -947,6 +947,7 @@ CONFIG_DEBUG_RT_MUTEXES=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
CONFIG_DEBUG_SG=y
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
CONFIG_DEBUG_SLAB=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
|
@ -938,6 +938,7 @@ CONFIG_DEBUG_RODATA_TEST=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
|
@ -950,6 +950,7 @@ CONFIG_DEBUG_RT_MUTEXES=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
CONFIG_DEBUG_SG=y
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
CONFIG_DEBUG_SLAB=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
|
@ -941,6 +941,7 @@ CONFIG_DEBUG_RODATA_TEST=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
|
||||
|
@ -1054,6 +1054,7 @@ CONFIG_DEBUG_RT_MUTEXES=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
CONFIG_DEBUG_SG=y
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
CONFIG_DEBUG_SLAB=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
|
@ -1045,6 +1045,7 @@ CONFIG_DEBUG_RODATA_TEST=y
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DEBUG_SHOW_MEMALLOC_LINE=y
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
|
@ -54,7 +54,7 @@ Summary: The Linux kernel
|
||||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 10
|
||||
%define stable_update 11
|
||||
# Set rpm version accordingly
|
||||
%if 0%{?stable_update}
|
||||
%define stablerev %{stable_update}
|
||||
@ -636,7 +636,6 @@ Patch628: 0001-Bluetooth-btusb-Add-a-Kconfig-option-to-enable-USB-a.patch
|
||||
# Adding these suggested by Benjamin Tissoires
|
||||
# Queued in hid.git/for-4.16/hid-quirks-cleanup/multitouch for merging into 4.16
|
||||
Patch630: 0001-HID-multitouch-Properly-deal-with-Win8-PTP-reports-w.patch
|
||||
Patch631: 0002-HID-multitouch-Only-look-at-non-touch-fields-in-firs.patch
|
||||
Patch632: 0003-HID-multitouch-Combine-all-left-button-events-in-a-f.patch
|
||||
|
||||
# Make SATA link powermanagement policy configurable for:
|
||||
@ -671,6 +670,9 @@ Patch662: mm-khugepaged-Convert-VM_BUG_ON-to-collapse-fail.patch
|
||||
# CVE-2017-18232 rhbz 1558066 1558067
|
||||
Patch663: 0001-scsi-libsas-direct-call-probe-and-destruct.patch
|
||||
|
||||
# rhbz 1547037
|
||||
Patch664: mmu-ALIGN_DOWN-correct-variable.patch
|
||||
|
||||
# END OF PATCH DEFINITIONS
|
||||
|
||||
%endif
|
||||
@ -1949,6 +1951,9 @@ fi
|
||||
#
|
||||
#
|
||||
%changelog
|
||||
* Mon Mar 19 2018 Laura Abbott <labbott@redhat.com> - 4.15.11-300
|
||||
- Linux v4.15.11
|
||||
|
||||
* Mon Mar 19 2018 Justin M. Forbes <jforbes@fedoraproject.org>
|
||||
- Fix CVE-2017-18232 (rhbz 1558066 1558067)
|
||||
|
||||
|
49
mmu-ALIGN_DOWN-correct-variable.patch
Normal file
49
mmu-ALIGN_DOWN-correct-variable.patch
Normal file
@ -0,0 +1,49 @@
|
||||
From 73422d1684caa09afe011cc404477836b537ac6b Mon Sep 17 00:00:00 2001
|
||||
From: Maris Nartiss <maris.nartiss@gmail.com>
|
||||
Date: Mon, 19 Mar 2018 09:55:07 -0700
|
||||
Subject: [PATCH] mmu: ALIGN_DOWN correct variable
|
||||
|
||||
Commit 7110c89bb8852ff8b0f88ce05b332b3fe22bd11e ("mmu: swap out round
|
||||
for ALIGN") replaced two calls to round/rounddown with ALIGN/ALIGN_DOWN,
|
||||
but erroneously applied ALIGN_DOWN to a different variable (addr) and left
|
||||
intended variable (tail) not rounded/ALIGNed.
|
||||
|
||||
As a result screen corruption, X lockups are observable. An example of kernel
|
||||
log of affected system with NV98 card where it was bisected:
|
||||
|
||||
nouveau 0000:01:00.0: gr: TRAP_M2MF 00000002 [IN]
|
||||
nouveau 0000:01:00.0: gr: TRAP_M2MF 00320951 400007c0 00000000 04000000
|
||||
nouveau 0000:01:00.0: gr: 00200000 [] ch 1 [000fbbe000 DRM] subc 4 class 5039
|
||||
mthd 0100 data 00000000
|
||||
nouveau 0000:01:00.0: fb: trapped read at 0040000000 on channel 1
|
||||
[0fbbe000 DRM]
|
||||
engine 00 [PGRAPH] client 03 [DISPATCH] subclient 04 [M2M_IN] reason 00000006
|
||||
[NULL_DMAOBJ]
|
||||
|
||||
Fixes bug 105173 ("[MCP79][Regression] Unhandled NULL pointer dereference in
|
||||
nvkm_object_unmap since kernel 4.15")
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=105173
|
||||
|
||||
Fixes: 7110c89bb885 ("mmu: swap out round for ALIGN ")
|
||||
Tested-by: Pierre Moreau <pierre.morrow@free.fr>
|
||||
Reviewed-by: Pierre Moreau <pierre.morrow@free.fr>
|
||||
---
|
||||
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c
|
||||
index e35d3e17cd7c..c6e3d0dd1070 100644
|
||||
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c
|
||||
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c
|
||||
@@ -1354,7 +1354,7 @@ nvkm_vmm_get_locked(struct nvkm_vmm *vmm, bool getref, bool mapref, bool sparse,
|
||||
|
||||
tail = this->addr + this->size;
|
||||
if (vmm->func->page_block && next && next->page != p)
|
||||
- tail = ALIGN_DOWN(addr, vmm->func->page_block);
|
||||
+ tail = ALIGN_DOWN(tail, vmm->func->page_block);
|
||||
|
||||
if (addr <= tail && tail - addr >= size) {
|
||||
rb_erase(&this->tree, &vmm->free);
|
||||
--
|
||||
2.14.3
|
||||
|
2
sources
2
sources
@ -1,2 +1,2 @@
|
||||
SHA512 (linux-4.15.tar.xz) = c00d92659df815a53dcac7dde145b742b1f20867d380c07cb09ddb3295d6ff10f8931b21ef0b09d7156923a3957b39d74d87c883300173b2e20690d2b4ec35ea
|
||||
SHA512 (patch-4.15.10.xz) = 275abec91344e9409d27dc3ce801f104717730819a9d90786b0ef104525cf706291e0954a3e8d16618179a1e9603d6d12cd9cfdac3efac8783b83a0decdab94a
|
||||
SHA512 (patch-4.15.11.xz) = 6d809fdf66accfbd35db25aac230d11fb55ba5ac019a7314c67937eaf9b5a49b134bc3e36685eaf7b0605dab9a54a82da62eb1e08048c1c3a3c980fcc142dfe2
|
||||
|
Loading…
Reference in New Issue
Block a user