From b2edbb69a72c0b6a48caa8c895dcd0da0b4f4ebc Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 16 Oct 2018 16:05:19 +0200 Subject: [PATCH] 3.18-stable patches added patches: i2c-i2c-scmi-fix-for-i2c_smbus_write_block_data.patch xhci-don-t-print-a-warning-when-setting-link-state-for-disabled-ports.patch --- ...i-fix-for-i2c_smbus_write_block_data.patch | 60 ++++++++++++++++++ queue-3.18/series | 2 + ...etting-link-state-for-disabled-ports.patch | 61 +++++++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 queue-3.18/i2c-i2c-scmi-fix-for-i2c_smbus_write_block_data.patch create mode 100644 queue-3.18/xhci-don-t-print-a-warning-when-setting-link-state-for-disabled-ports.patch diff --git a/queue-3.18/i2c-i2c-scmi-fix-for-i2c_smbus_write_block_data.patch b/queue-3.18/i2c-i2c-scmi-fix-for-i2c_smbus_write_block_data.patch new file mode 100644 index 00000000000..3c444d77a3e --- /dev/null +++ b/queue-3.18/i2c-i2c-scmi-fix-for-i2c_smbus_write_block_data.patch @@ -0,0 +1,60 @@ +From 08d9db00fe0e300d6df976e6c294f974988226dd Mon Sep 17 00:00:00 2001 +From: Edgar Cherkasov +Date: Thu, 27 Sep 2018 11:56:03 +0300 +Subject: i2c: i2c-scmi: fix for i2c_smbus_write_block_data + +From: Edgar Cherkasov + +commit 08d9db00fe0e300d6df976e6c294f974988226dd upstream. + +The i2c-scmi driver crashes when the SMBus Write Block transaction is +executed: + +WARNING: CPU: 9 PID: 2194 at mm/page_alloc.c:3931 __alloc_pages_slowpath+0x9db/0xec0 + Call Trace: + ? get_page_from_freelist+0x49d/0x11f0 + ? alloc_pages_current+0x6a/0xe0 + ? new_slab+0x499/0x690 + __alloc_pages_nodemask+0x265/0x280 + alloc_pages_current+0x6a/0xe0 + kmalloc_order+0x18/0x40 + kmalloc_order_trace+0x24/0xb0 + ? acpi_ut_allocate_object_desc_dbg+0x62/0x10c + __kmalloc+0x203/0x220 + acpi_os_allocate_zeroed+0x34/0x36 + acpi_ut_copy_eobject_to_iobject+0x266/0x31e + acpi_evaluate_object+0x166/0x3b2 + acpi_smbus_cmi_access+0x144/0x530 [i2c_scmi] + i2c_smbus_xfer+0xda/0x370 + i2cdev_ioctl_smbus+0x1bd/0x270 + i2cdev_ioctl+0xaa/0x250 + do_vfs_ioctl+0xa4/0x600 + SyS_ioctl+0x79/0x90 + do_syscall_64+0x73/0x130 + entry_SYSCALL_64_after_hwframe+0x3d/0xa2 +ACPI Error: Evaluating _SBW: 4 (20170831/smbus_cmi-185) + +This problem occurs because the length of ACPI Buffer object is not +defined/initialized in the code before a corresponding ACPI method is +called. The obvious patch below fixes this issue. + +Signed-off-by: Edgar Cherkasov +Acked-by: Viktor Krasnov +Acked-by: Michael Brunner +Signed-off-by: Wolfram Sang +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/i2c/busses/i2c-scmi.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/i2c/busses/i2c-scmi.c ++++ b/drivers/i2c/busses/i2c-scmi.c +@@ -152,6 +152,7 @@ acpi_smbus_cmi_access(struct i2c_adapter + mt_params[3].type = ACPI_TYPE_INTEGER; + mt_params[3].integer.value = len; + mt_params[4].type = ACPI_TYPE_BUFFER; ++ mt_params[4].buffer.length = len; + mt_params[4].buffer.pointer = data->block + 1; + } + break; diff --git a/queue-3.18/series b/queue-3.18/series index 055e4e3bb5c..5cc9519feb3 100644 --- a/queue-3.18/series +++ b/queue-3.18/series @@ -2,4 +2,6 @@ selftests-efivarfs-add-required-kernel-configs.patch mfd-omap-usb-host-fix-dts-probe-of-children.patch stmmac-fix-valid-numbers-of-unicast-filter-entries.patch mach64-detect-the-dot-clock-divider-correctly-on-sparc.patch +i2c-i2c-scmi-fix-for-i2c_smbus_write_block_data.patch +xhci-don-t-print-a-warning-when-setting-link-state-for-disabled-ports.patch mm-preserve-_page_devmap-across-mprotect-calls.patch diff --git a/queue-3.18/xhci-don-t-print-a-warning-when-setting-link-state-for-disabled-ports.patch b/queue-3.18/xhci-don-t-print-a-warning-when-setting-link-state-for-disabled-ports.patch new file mode 100644 index 00000000000..980d2ce11db --- /dev/null +++ b/queue-3.18/xhci-don-t-print-a-warning-when-setting-link-state-for-disabled-ports.patch @@ -0,0 +1,61 @@ +From 1208d8a84fdcae6b395c57911cdf907450d30e70 Mon Sep 17 00:00:00 2001 +From: Mathias Nyman +Date: Mon, 12 Feb 2018 14:24:47 +0200 +Subject: xhci: Don't print a warning when setting link state for disabled ports + +From: Mathias Nyman + +commit 1208d8a84fdcae6b395c57911cdf907450d30e70 upstream. + +When disabling a USB3 port the hub driver will set the port link state to +U3 to prevent "ejected" or "safely removed" devices that are still +physically connected from immediately re-enumerating. + +If the device was really unplugged, then error messages were printed +as the hub tries to set the U3 link state for a port that is no longer +enabled. + +xhci-hcd ee000000.usb: Cannot set link state. +usb usb8-port1: cannot disable (err = -32) + +Don't print error message in xhci-hub if hub tries to set port link state +for a disabled port. Return -ENODEV instead which also silences hub driver. + +Signed-off-by: Mathias Nyman +Tested-by: Yoshihiro Shimoda +Signed-off-by: Ross Zwisler +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/xhci-hub.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +--- a/drivers/usb/host/xhci-hub.c ++++ b/drivers/usb/host/xhci-hub.c +@@ -926,17 +926,17 @@ int xhci_hub_control(struct usb_hcd *hcd + temp = readl(port_array[wIndex]); + break; + } +- +- /* Software should not attempt to set +- * port link state above '3' (U3) and the port +- * must be enabled. +- */ +- if ((temp & PORT_PE) == 0 || +- (link_state > USB_SS_PORT_LS_U3)) { +- xhci_warn(xhci, "Cannot set link state.\n"); ++ /* Port must be enabled */ ++ if (!(temp & PORT_PE)) { ++ retval = -ENODEV; ++ break; ++ } ++ /* Can't set port link state above '3' (U3) */ ++ if (link_state > USB_SS_PORT_LS_U3) { ++ xhci_warn(xhci, "Cannot set port %d link state %d\n", ++ wIndex, link_state); + goto error; + } +- + if (link_state == USB_SS_PORT_LS_U3) { + slot_id = xhci_find_slot_id_by_port(hcd, xhci, + wIndex + 1); -- 2.47.2