forked from rpms/kernel
		
	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