Linux v4.2-4282-gae982073095a
This commit is contained in:
parent
bb4aedb375
commit
9700819ad7
@ -1,103 +0,0 @@
|
||||
From 98f07385212073536f303c07ece455acdd4d267f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=BE=D0=BB=D0=B0=D0=B9=20=D0=9A=D1=83?=
|
||||
=?UTF-8?q?=D0=B4=D1=80=D1=8F=D0=B2=D1=86=D0=B5=D0=B2?=
|
||||
<nkudriavtsev@gmail.com>
|
||||
Date: Tue, 21 Jul 2015 13:31:52 +0300
|
||||
Subject: [PATCH] HID: chicony: Add support for Acer Aspire Switch 12
|
||||
|
||||
Acer Aspire Switch 12 keyboard Chicony's controller reports too big usage
|
||||
index on the 1st interface. The patch fixes the report. The work based on
|
||||
solution from drivers/hid/hid-holtek-mouse.c
|
||||
|
||||
Bug report: https://bugzilla.kernel.org/show_bug.cgi?id=101721
|
||||
|
||||
Signed-off-by: Nicholas Kudriavtsev <nkudriavtsev@gmail.com>
|
||||
Signed-off-by: Jiri Kosina <jkosina@suse.com>
|
||||
---
|
||||
drivers/hid/hid-chicony.c | 26 ++++++++++++++++++++++++++
|
||||
drivers/hid/hid-core.c | 1 +
|
||||
drivers/hid/hid-ids.h | 1 +
|
||||
3 files changed, 28 insertions(+)
|
||||
|
||||
diff --git a/drivers/hid/hid-chicony.c b/drivers/hid/hid-chicony.c
|
||||
index b613d5a79684..bc3cec199fee 100644
|
||||
--- a/drivers/hid/hid-chicony.c
|
||||
+++ b/drivers/hid/hid-chicony.c
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <linux/input.h>
|
||||
#include <linux/hid.h>
|
||||
#include <linux/module.h>
|
||||
+#include <linux/usb.h>
|
||||
|
||||
#include "hid-ids.h"
|
||||
|
||||
@@ -57,10 +58,34 @@ static int ch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
|
||||
return 1;
|
||||
}
|
||||
|
||||
+static __u8 *ch_switch12_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
+ unsigned int *rsize)
|
||||
+{
|
||||
+ struct usb_interface *intf = to_usb_interface(hdev->dev.parent);
|
||||
+
|
||||
+ if (intf->cur_altsetting->desc.bInterfaceNumber == 1) {
|
||||
+ /* Change usage maximum and logical maximum from 0x7fff to
|
||||
+ * 0x2fff, so they don't exceed HID_MAX_USAGES */
|
||||
+ switch (hdev->product) {
|
||||
+ case USB_DEVICE_ID_CHICONY_ACER_SWITCH12:
|
||||
+ if (*rsize >= 128 && rdesc[64] == 0xff && rdesc[65] == 0x7f
|
||||
+ && rdesc[69] == 0xff && rdesc[70] == 0x7f) {
|
||||
+ hid_info(hdev, "Fixing up report descriptor\n");
|
||||
+ rdesc[65] = rdesc[70] = 0x2f;
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+ return rdesc;
|
||||
+}
|
||||
+
|
||||
+
|
||||
static const struct hid_device_id ch_devices[] = {
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_TACTICAL_PAD) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS2) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_AK1D) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_ACER_SWITCH12) },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(hid, ch_devices);
|
||||
@@ -68,6 +93,7 @@ MODULE_DEVICE_TABLE(hid, ch_devices);
|
||||
static struct hid_driver ch_driver = {
|
||||
.name = "chicony",
|
||||
.id_table = ch_devices,
|
||||
+ .report_fixup = ch_switch12_report_fixup,
|
||||
.input_mapping = ch_input_mapping,
|
||||
};
|
||||
module_hid_driver(ch_driver);
|
||||
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
|
||||
index e6fce23b121a..f90ca6574221 100644
|
||||
--- a/drivers/hid/hid-core.c
|
||||
+++ b/drivers/hid/hid-core.c
|
||||
@@ -1807,6 +1807,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS2) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_AK1D) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_ACER_SWITCH12) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CREATIVELABS, USB_DEVICE_ID_PRODIKEYS_PCMIDI) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CYGNAL, USB_DEVICE_ID_CYGNAL_CP2112) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_1) },
|
||||
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
|
||||
index b3b225b75d0a..79210ca8eff1 100644
|
||||
--- a/drivers/hid/hid-ids.h
|
||||
+++ b/drivers/hid/hid-ids.h
|
||||
@@ -233,6 +233,7 @@
|
||||
#define USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE 0x1053
|
||||
#define USB_DEVICE_ID_CHICONY_WIRELESS2 0x1123
|
||||
#define USB_DEVICE_ID_CHICONY_AK1D 0x1125
|
||||
+#define USB_DEVICE_ID_CHICONY_ACER_SWITCH12 0x1421
|
||||
|
||||
#define USB_VENDOR_ID_CHUNGHWAT 0x2247
|
||||
#define USB_DEVICE_ID_CHUNGHWAT_MULTITOUCH 0x0001
|
||||
--
|
||||
2.4.3
|
||||
|
@ -3882,6 +3882,7 @@ CONFIG_HID_EMS_FF=m
|
||||
CONFIG_HID_ELECOM=m
|
||||
CONFIG_HID_ELO=m
|
||||
CONFIG_HID_EZKEY=m
|
||||
CONFIG_HID_GEMBIRD=m
|
||||
CONFIG_HID_UCLOGIC=m
|
||||
CONFIG_HID_WALTOP=m
|
||||
CONFIG_HID_ACRUX=m
|
||||
@ -5137,6 +5138,7 @@ CONFIG_DMA_ENGINE=y
|
||||
CONFIG_DW_DMAC_CORE=m
|
||||
CONFIG_DW_DMAC=m
|
||||
CONFIG_DW_DMAC_PCI=m
|
||||
# CONFIG_IDMA64 is not set
|
||||
# CONFIG_DW_DMAC_BIG_ENDIAN_IO is not set
|
||||
# CONFIG_TIMB_DMA is not set
|
||||
# CONFIG_DMATEST is not set
|
||||
|
@ -501,10 +501,14 @@ CONFIG_NFC_MICROREAD_MEI=m
|
||||
# CONFIG_X86_GOLDFISH is not set
|
||||
|
||||
CONFIG_X86_INTEL_LPSS=y
|
||||
CONFIG_IDMA64=m
|
||||
|
||||
# CONFIG_X86_AMD_PLATFORM_DEVICE is not set
|
||||
# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set
|
||||
|
||||
CONFIG_MFD_INTEL_LPSS_ACPI=m
|
||||
CONFIG_MFD_INTEL_LPSS_PCI=m
|
||||
|
||||
CONFIG_IOSF_MBI=m
|
||||
# CONFIG_IOSF_MBI_DEBUG is not set
|
||||
CONFIG_PWM_LPSS=m
|
||||
|
10
kernel.spec
10
kernel.spec
@ -67,7 +67,7 @@ Summary: The Linux kernel
|
||||
# The rc snapshot level
|
||||
%define rcrev 0
|
||||
# The git snapshot level
|
||||
%define gitrev 3
|
||||
%define gitrev 4
|
||||
# Set rpm version accordingly
|
||||
%define rpmversion 4.%{upstream_sublevel}.0
|
||||
%endif
|
||||
@ -582,9 +582,6 @@ Patch502: firmware-Drop-WARN-from-usermodehelper_read_trylock-.patch
|
||||
|
||||
Patch503: drm-i915-turn-off-wc-mmaps.patch
|
||||
|
||||
#rhbz 1244511
|
||||
Patch507: HID-chicony-Add-support-for-Acer-Aspire-Switch-12.patch
|
||||
|
||||
Patch508: kexec-uefi-copy-secure_boot-flag-in-boot-params.patch
|
||||
|
||||
#rhbz 1239050
|
||||
@ -606,6 +603,8 @@ Patch514: drm-qxl-validate-monitors-config-modes.patch
|
||||
Patch517: vmwgfx-Rework-device-initialization.patch
|
||||
Patch518: drm-vmwgfx-Allow-dropped-masters-render-node-like-ac.patch
|
||||
|
||||
Patch519: security-device_cgroup-fix-RCU-lockdep-splat.patch
|
||||
|
||||
Patch904: kdbus.patch
|
||||
|
||||
# END OF PATCH DEFINITIONS
|
||||
@ -2053,6 +2052,9 @@ fi
|
||||
#
|
||||
#
|
||||
%changelog
|
||||
* Wed Sep 02 2015 Josh Boyer <jwboyer@fedoraproject.org> - 4.3.0-0.rc0.git4.1
|
||||
- Linux v4.2-4282-gae982073095a
|
||||
|
||||
* Wed Sep 02 2015 Josh Boyer <jwboyer@fedoraproject.org> - 4.3.0-0.rc0.git3.1
|
||||
- Linux v4.2-3986-g73b6fa8e49c2
|
||||
|
||||
|
71
security-device_cgroup-fix-RCU-lockdep-splat.patch
Normal file
71
security-device_cgroup-fix-RCU-lockdep-splat.patch
Normal file
@ -0,0 +1,71 @@
|
||||
From 28e1b4326abcc66839c6e21dd410fe983ee83fb3 Mon Sep 17 00:00:00 2001
|
||||
From: Felipe Balbi <balbi@ti.com>
|
||||
Date: Wed, 2 Sep 2015 08:12:28 -0500
|
||||
Subject: [PATCH] security: device_cgroup: fix RCU lockdep splat
|
||||
|
||||
while booting AM437x device, the following splat
|
||||
triggered:
|
||||
|
||||
[ 12.005238] ===============================
|
||||
[ 12.009749] [ INFO: suspicious RCU usage. ]
|
||||
[ 12.014116] 4.2.0-next-20150831 #1154 Not tainted
|
||||
[ 12.019050] -------------------------------
|
||||
[ 12.023408] security/device_cgroup.c:405 device_cgroup:verify_new_ex called without proper synchronization!
|
||||
[ 12.033576] other info that might help us debug this:
|
||||
|
||||
[ 12.041942] rcu_scheduler_active = 1, debug_locks = 0
|
||||
[ 12.048796] 4 locks held by systemd/1:
|
||||
[ 12.052700] #0: (sb_writers#7){.+.+.+}, at: [<c017af84>] __sb_start_write+0x8c/0xb0
|
||||
[ 12.060954] #1: (&of->mutex){+.+.+.}, at: [<c01f1600>] kernfs_fop_write+0x50/0x1b8
|
||||
[ 12.069085] #2: (s_active#30){++++.+}, at: [<c01f1608>] kernfs_fop_write+0x58/0x1b8
|
||||
[ 12.077310] #3: (devcgroup_mutex){+.+...}, at: [<c0317bfc>] devcgroup_access_write+0x20/0x658
|
||||
[ 12.086575] stack backtrace:
|
||||
[ 12.091124] CPU: 0 PID: 1 Comm: systemd Not tainted 4.2.0-next-20150831 #1154
|
||||
[ 12.098609] Hardware name: Generic AM43 (Flattened Device Tree)
|
||||
[ 12.104807] [<c001770c>] (unwind_backtrace) from [<c0013a58>] (show_stack+0x10/0x14)
|
||||
[ 12.112924] [<c0013a58>] (show_stack) from [<c034f014>] (dump_stack+0x84/0x9c)
|
||||
[ 12.120491] [<c034f014>] (dump_stack) from [<c0317a04>] (verify_new_ex+0xc4/0xdc)
|
||||
[ 12.128326] [<c0317a04>] (verify_new_ex) from [<c0317f50>] (devcgroup_access_write+0x374/0x658)
|
||||
[ 12.137426] [<c0317f50>] (devcgroup_access_write) from [<c00d2800>] (cgroup_file_write+0x28/0x1bc)
|
||||
[ 12.146796] [<c00d2800>] (cgroup_file_write) from [<c01f1670>] (kernfs_fop_write+0xc0/0x1b8)
|
||||
[ 12.155620] [<c01f1670>] (kernfs_fop_write) from [<c0177c94>] (__vfs_write+0x1c/0xd8)
|
||||
[ 12.163783] [<c0177c94>] (__vfs_write) from [<c0178594>] (vfs_write+0x90/0x16c)
|
||||
[ 12.171426] [<c0178594>] (vfs_write) from [<c0178db4>] (SyS_write+0x44/0x9c)
|
||||
[ 12.178806] [<c0178db4>] (SyS_write) from [<c000f680>] (ret_fast_syscall+0x0/0x1c)
|
||||
|
||||
Fix it by making sure rcu_read_lock() is held
|
||||
around calls to parent_has_perm().
|
||||
|
||||
Signed-off-by: Felipe Balbi <balbi@ti.com>
|
||||
---
|
||||
security/device_cgroup.c | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/security/device_cgroup.c b/security/device_cgroup.c
|
||||
index 73455089feef..dd77ed206fa4 100644
|
||||
--- a/security/device_cgroup.c
|
||||
+++ b/security/device_cgroup.c
|
||||
@@ -608,6 +608,7 @@ static int devcgroup_update_access(struct dev_cgroup *devcgroup,
|
||||
int count, rc = 0;
|
||||
struct dev_exception_item ex;
|
||||
struct dev_cgroup *parent = css_to_devcgroup(devcgroup->css.parent);
|
||||
+ int ret;
|
||||
|
||||
if (!capable(CAP_SYS_ADMIN))
|
||||
return -EPERM;
|
||||
@@ -734,7 +735,11 @@ static int devcgroup_update_access(struct dev_cgroup *devcgroup,
|
||||
break;
|
||||
}
|
||||
|
||||
- if (!parent_has_perm(devcgroup, &ex))
|
||||
+ rcu_read_lock();
|
||||
+ ret = parent_has_perm(devcgroup, &ex);
|
||||
+ rcu_read_unlock();
|
||||
+
|
||||
+ if (!ret)
|
||||
return -EPERM;
|
||||
rc = dev_exception_add(devcgroup, &ex);
|
||||
break;
|
||||
--
|
||||
2.4.3
|
||||
|
Loading…
Reference in New Issue
Block a user