Blame SOURCES/CVE-2021-0512.patch

e535d4
From cd6338e72336f073342df3b49a4d6cb7fb6cdbee Mon Sep 17 00:00:00 2001
e535d4
From: Joe Lawrence <joe.lawrence@redhat.com>
e535d4
Date: Tue, 26 Oct 2021 10:59:31 -0400
e535d4
Subject: [KPATCH CVE-2021-0512] HID: kpatch fixes for CVE-2021-0512
e535d4
e535d4
Kernels:
e535d4
4.18.0-305.el8
e535d4
4.18.0-305.3.1.el8_4
e535d4
4.18.0-305.7.1.el8_4
e535d4
4.18.0-305.10.2.el8_4
e535d4
4.18.0-305.12.1.el8_4
e535d4
4.18.0-305.17.1.el8_4
e535d4
4.18.0-305.19.1.el8_4
e535d4
e535d4
Changes since last build:
e535d4
arches: x86_64 ppc64le
e535d4
hid-core.o: changed function: hid_add_field
e535d4
---------------------------
e535d4
e535d4
Kernels:
e535d4
4.18.0-305.el8
e535d4
4.18.0-305.3.1.el8_4
e535d4
4.18.0-305.7.1.el8_4
e535d4
4.18.0-305.10.2.el8_4
e535d4
4.18.0-305.12.1.el8_4
e535d4
4.18.0-305.17.1.el8_4
e535d4
4.18.0-305.19.1.el8_4
e535d4
e535d4
Modifications: none
e535d4
Kpatch-MR: https://gitlab.com/redhat/prdsc/rhel/src/kpatch/rhel-8/-/merge_requests/5
e535d4
Approved-by: Artem Savkov (@artem.savkov)
e535d4
e535d4
Z-MR: https://gitlab.com/redhat/rhel/src/kernel/rhel-8/-/merge_requests/1350
e535d4
e535d4
KT0 test PASS: https://beaker.engineering.redhat.com/jobs/5942710
e535d4
for kpatch-patch-4_18_0-305-1-6.el8 scratch build:
e535d4
https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=40615898
e535d4
e535d4
commit 8ee375b059ce42c0c38f2593f76077d915eee89e
e535d4
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
e535d4
Date:   Tue Aug 17 09:26:20 2021 +0200
e535d4
e535d4
    HID: make arrays usage and value to be the same
e535d4
e535d4
    Bugzilla: https://bugzilla.redhat.com/1974941
e535d4
    CVE: CVE-2021-0512
e535d4
    Y-Commit: 87ed552fb937790a5d9439c179bb523cfb0efdc6
e535d4
e535d4
    O-Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1974942
e535d4
    Upstream Status: since v5.12
e535d4
    Test: me on the hid-tools test suite
e535d4
e535d4
    commit ed9be64eefe26d7d8b0b5b9fa3ffdf425d87a01f
e535d4
    Author: Will McVicker <willmcvicker@google.com>
e535d4
    Date:   Sat Dec 5 00:48:48 2020 +0000
e535d4
e535d4
        HID: make arrays usage and value to be the same
e535d4
e535d4
        The HID subsystem allows an "HID report field" to have a different
e535d4
        number of "values" and "usages" when it is allocated. When a field
e535d4
        struct is created, the size of the usage array is guaranteed to be at
e535d4
        least as large as the values array, but it may be larger. This leads to
e535d4
        a potential out-of-bounds write in
e535d4
        __hidinput_change_resolution_multipliers() and an out-of-bounds read in
e535d4
        hidinput_count_leds().
e535d4
e535d4
        To fix this, let's make sure that both the usage and value arrays are
e535d4
        the same size.
e535d4
e535d4
        Cc: stable@vger.kernel.org
e535d4
        Signed-off-by: Will McVicker <willmcvicker@google.com>
e535d4
        Signed-off-by: Jiri Kosina <jkosina@suse.cz>
e535d4
e535d4
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
e535d4
    Signed-off-by: Julio Faracco <jfaracco@redhat.com>
e535d4
e535d4
Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
e535d4
---
e535d4
 drivers/hid/hid-core.c | 6 +++---
e535d4
 1 file changed, 3 insertions(+), 3 deletions(-)
e535d4
e535d4
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
e535d4
index d2ecc9c45255..263eca119ff0 100644
e535d4
--- a/drivers/hid/hid-core.c
e535d4
+++ b/drivers/hid/hid-core.c
e535d4
@@ -90,7 +90,7 @@ EXPORT_SYMBOL_GPL(hid_register_report);
e535d4
  * Register a new field for this report.
e535d4
  */
e535d4
 
e535d4
-static struct hid_field *hid_register_field(struct hid_report *report, unsigned usages, unsigned values)
e535d4
+static struct hid_field *hid_register_field(struct hid_report *report, unsigned usages)
e535d4
 {
e535d4
 	struct hid_field *field;
e535d4
 
e535d4
@@ -101,7 +101,7 @@ static struct hid_field *hid_register_field(struct hid_report *report, unsigned
e535d4
 
e535d4
 	field = kzalloc((sizeof(struct hid_field) +
e535d4
 			 usages * sizeof(struct hid_usage) +
e535d4
-			 values * sizeof(unsigned)), GFP_KERNEL);
e535d4
+			 usages * sizeof(unsigned)), GFP_KERNEL);
e535d4
 	if (!field)
e535d4
 		return NULL;
e535d4
 
e535d4
@@ -300,7 +300,7 @@ static int hid_add_field(struct hid_parser *parser, unsigned report_type, unsign
e535d4
 	usages = max_t(unsigned, parser->local.usage_index,
e535d4
 				 parser->global.report_count);
e535d4
 
e535d4
-	field = hid_register_field(report, usages, parser->global.report_count);
e535d4
+	field = hid_register_field(report, usages);
e535d4
 	if (!field)
e535d4
 		return 0;
e535d4
 
e535d4
-- 
e535d4
2.31.1
e535d4
e535d4