Blame SOURCES/CVE-2021-0512.patch

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