From 320db32b25ea0ab2d943852602d178c926446ac8 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Sun, 23 Jun 2019 20:33:20 -0400 Subject: [PATCH] fixes for 4.4 Signed-off-by: Sasha Levin --- ...-treat-parameters-as-paged-if-on-mul.patch | 100 ++++++++++++++++++ ...reeze_work-work_struct-is-canceled-o.patch | 38 +++++++ ...remove-set-but-not-used-variable-epc.patch | 43 ++++++++ ...loopback-test-failed-at-copper-ports.patch | 45 ++++++++ ...ler-warnings-in-float-emulation-code.patch | 53 ++++++++++ ...m-leak-in-parport_register_dev_model.patch | 67 ++++++++++++ ...an-attribute-in-bridge_hostnotify-ud.patch | 51 +++++++++ ...ck.pl-fix-arm64-wrong-or-unknown-arc.patch | 42 ++++++++ ...hat-space-was-properly-alloced-in-co.patch | 42 ++++++++ queue-4.4/series | 10 ++ ...pdated-event-period-in-response-to-p.patch | 44 ++++++++ 11 files changed, 535 insertions(+) create mode 100644 queue-4.4/hwmon-pmbus-core-treat-parameters-as-paged-if-on-mul.patch create mode 100644 queue-4.4/ib-hfi1-insure-freeze_work-work_struct-is-canceled-o.patch create mode 100644 queue-4.4/mips-uprobes-remove-set-but-not-used-variable-epc.patch create mode 100644 queue-4.4/net-hns-fix-loopback-test-failed-at-copper-ports.patch create mode 100644 queue-4.4/parisc-fix-compiler-warnings-in-float-emulation-code.patch create mode 100644 queue-4.4/parport-fix-mem-leak-in-parport_register_dev_model.patch create mode 100644 queue-4.4/s390-qeth-fix-vlan-attribute-in-bridge_hostnotify-ud.patch create mode 100644 queue-4.4/scripts-checkstack.pl-fix-arm64-wrong-or-unknown-arc.patch create mode 100644 queue-4.4/scsi-ufs-check-that-space-was-properly-alloced-in-co.patch create mode 100644 queue-4.4/sparc-perf-fix-updated-event-period-in-response-to-p.patch diff --git a/queue-4.4/hwmon-pmbus-core-treat-parameters-as-paged-if-on-mul.patch b/queue-4.4/hwmon-pmbus-core-treat-parameters-as-paged-if-on-mul.patch new file mode 100644 index 0000000000..2812387407 --- /dev/null +++ b/queue-4.4/hwmon-pmbus-core-treat-parameters-as-paged-if-on-mul.patch @@ -0,0 +1,100 @@ +From ca0d99491c954bee7ae77ce71370b696bafb4231 Mon Sep 17 00:00:00 2001 +From: Robert Hancock +Date: Wed, 5 Jun 2019 13:49:00 -0600 +Subject: hwmon: (pmbus/core) Treat parameters as paged if on multiple pages + +[ Upstream commit 4a60570dce658e3f8885bbcf852430b99f65aca5 ] + +Some chips have attributes which exist on more than one page but the +attribute is not presently marked as paged. This causes the attributes +to be generated with the same label, which makes it impossible for +userspace to tell them apart. + +Marking all such attributes as paged would result in the page suffix +being added regardless of whether they were present on more than one +page or not, which might break existing setups. Therefore, we add a +second check which treats the attribute as paged, even if not marked as +such, if it is present on multiple pages. + +Fixes: b4ce237b7f7d ("hwmon: (pmbus) Introduce infrastructure to detect sensors and limit registers") +Signed-off-by: Robert Hancock +Signed-off-by: Guenter Roeck +Signed-off-by: Sasha Levin +--- + drivers/hwmon/pmbus/pmbus_core.c | 34 ++++++++++++++++++++++++++++---- + 1 file changed, 30 insertions(+), 4 deletions(-) + +diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c +index c00bad02761a..0d75bc7b5065 100644 +--- a/drivers/hwmon/pmbus/pmbus_core.c ++++ b/drivers/hwmon/pmbus/pmbus_core.c +@@ -1028,14 +1028,15 @@ static int pmbus_add_sensor_attrs_one(struct i2c_client *client, + const struct pmbus_driver_info *info, + const char *name, + int index, int page, +- const struct pmbus_sensor_attr *attr) ++ const struct pmbus_sensor_attr *attr, ++ bool paged) + { + struct pmbus_sensor *base; + int ret; + + if (attr->label) { + ret = pmbus_add_label(data, name, index, attr->label, +- attr->paged ? page + 1 : 0); ++ paged ? page + 1 : 0); + if (ret) + return ret; + } +@@ -1067,6 +1068,30 @@ static int pmbus_add_sensor_attrs_one(struct i2c_client *client, + return 0; + } + ++static bool pmbus_sensor_is_paged(const struct pmbus_driver_info *info, ++ const struct pmbus_sensor_attr *attr) ++{ ++ int p; ++ ++ if (attr->paged) ++ return true; ++ ++ /* ++ * Some attributes may be present on more than one page despite ++ * not being marked with the paged attribute. If that is the case, ++ * then treat the sensor as being paged and add the page suffix to the ++ * attribute name. ++ * We don't just add the paged attribute to all such attributes, in ++ * order to maintain the un-suffixed labels in the case where the ++ * attribute is only on page 0. ++ */ ++ for (p = 1; p < info->pages; p++) { ++ if (info->func[p] & attr->func) ++ return true; ++ } ++ return false; ++} ++ + static int pmbus_add_sensor_attrs(struct i2c_client *client, + struct pmbus_data *data, + const char *name, +@@ -1080,14 +1105,15 @@ static int pmbus_add_sensor_attrs(struct i2c_client *client, + index = 1; + for (i = 0; i < nattrs; i++) { + int page, pages; ++ bool paged = pmbus_sensor_is_paged(info, attrs); + +- pages = attrs->paged ? info->pages : 1; ++ pages = paged ? info->pages : 1; + for (page = 0; page < pages; page++) { + if (!(info->func[page] & attrs->func)) + continue; + ret = pmbus_add_sensor_attrs_one(client, data, info, + name, index, page, +- attrs); ++ attrs, paged); + if (ret) + return ret; + index++; +-- +2.20.1 + diff --git a/queue-4.4/ib-hfi1-insure-freeze_work-work_struct-is-canceled-o.patch b/queue-4.4/ib-hfi1-insure-freeze_work-work_struct-is-canceled-o.patch new file mode 100644 index 0000000000..d776586df6 --- /dev/null +++ b/queue-4.4/ib-hfi1-insure-freeze_work-work_struct-is-canceled-o.patch @@ -0,0 +1,38 @@ +From b889516e9c8c709579a6ae16327bb6fdbbd954f5 Mon Sep 17 00:00:00 2001 +From: Mike Marciniszyn +Date: Fri, 24 May 2019 11:44:45 -0400 +Subject: IB/hfi1: Insure freeze_work work_struct is canceled on shutdown + +[ Upstream commit 6d517353c70bb0818b691ca003afdcb5ee5ea44e ] + +By code inspection, the freeze_work is never canceled. + +Fix by adding a cancel_work_sync in the shutdown path to insure it is no +longer running. + +Fixes: 7724105686e7 ("IB/hfi1: add driver files") +Reviewed-by: Michael J. Ruhl +Reviewed-by: Dennis Dalessandro +Signed-off-by: Mike Marciniszyn +Signed-off-by: Dennis Dalessandro +Signed-off-by: Jason Gunthorpe +Signed-off-by: Sasha Levin +--- + drivers/staging/rdma/hfi1/chip.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/staging/rdma/hfi1/chip.c b/drivers/staging/rdma/hfi1/chip.c +index e48981994b10..e1531feb6c5d 100644 +--- a/drivers/staging/rdma/hfi1/chip.c ++++ b/drivers/staging/rdma/hfi1/chip.c +@@ -5906,6 +5906,7 @@ void hfi1_quiet_serdes(struct hfi1_pportdata *ppd) + + /* disable the port */ + clear_rcvctrl(dd, RCV_CTRL_RCV_PORT_ENABLE_SMASK); ++ cancel_work_sync(&ppd->freeze_work); + } + + static inline int init_cpu_counters(struct hfi1_devdata *dd) +-- +2.20.1 + diff --git a/queue-4.4/mips-uprobes-remove-set-but-not-used-variable-epc.patch b/queue-4.4/mips-uprobes-remove-set-but-not-used-variable-epc.patch new file mode 100644 index 0000000000..386092a8e0 --- /dev/null +++ b/queue-4.4/mips-uprobes-remove-set-but-not-used-variable-epc.patch @@ -0,0 +1,43 @@ +From 0b2a9d50d66ba4b5426f9d764db079e3bd882692 Mon Sep 17 00:00:00 2001 +From: YueHaibing +Date: Sat, 25 May 2019 20:20:24 +0800 +Subject: MIPS: uprobes: remove set but not used variable 'epc' + +[ Upstream commit f532beeeff0c0a3586cc15538bc52d249eb19e7c ] + +Fixes gcc '-Wunused-but-set-variable' warning: + +arch/mips/kernel/uprobes.c: In function 'arch_uprobe_pre_xol': +arch/mips/kernel/uprobes.c:115:17: warning: variable 'epc' set but not used [-Wunused-but-set-variable] + +It's never used since introduction in +commit 40e084a506eb ("MIPS: Add uprobes support.") + +Signed-off-by: YueHaibing +Signed-off-by: Paul Burton +Cc: +Cc: +Cc: +Cc: +Signed-off-by: Sasha Levin +--- + arch/mips/kernel/uprobes.c | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/arch/mips/kernel/uprobes.c b/arch/mips/kernel/uprobes.c +index 4e7b89f2e244..1363d705cc8c 100644 +--- a/arch/mips/kernel/uprobes.c ++++ b/arch/mips/kernel/uprobes.c +@@ -164,9 +164,6 @@ int arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs) + */ + aup->resume_epc = regs->cp0_epc + 4; + if (insn_has_delay_slot((union mips_instruction) aup->insn[0])) { +- unsigned long epc; +- +- epc = regs->cp0_epc; + __compute_return_epc_for_insn(regs, + (union mips_instruction) aup->insn[0]); + aup->resume_epc = regs->cp0_epc; +-- +2.20.1 + diff --git a/queue-4.4/net-hns-fix-loopback-test-failed-at-copper-ports.patch b/queue-4.4/net-hns-fix-loopback-test-failed-at-copper-ports.patch new file mode 100644 index 0000000000..d7bf74ef87 --- /dev/null +++ b/queue-4.4/net-hns-fix-loopback-test-failed-at-copper-ports.patch @@ -0,0 +1,45 @@ +From ab412c91b091a1141a9c8036b888d46e69e79a07 Mon Sep 17 00:00:00 2001 +From: Yonglong Liu +Date: Fri, 31 May 2019 16:59:50 +0800 +Subject: net: hns: Fix loopback test failed at copper ports + +[ Upstream commit 2e1f164861e500f4e068a9d909bbd3fcc7841483 ] + +When doing a loopback test at copper ports, the serdes loopback +and the phy loopback will fail, because of the adjust link had +not finished, and phy not ready. + +Adds sleep between adjust link and test process to fix it. + +Signed-off-by: Yonglong Liu +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/hisilicon/hns/hns_ethtool.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c +index 4b91eb70c683..a2f2db58b5ab 100644 +--- a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c ++++ b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c +@@ -351,6 +351,7 @@ static int __lb_setup(struct net_device *ndev, + static int __lb_up(struct net_device *ndev, + enum hnae_loop loop_mode) + { ++#define NIC_LB_TEST_WAIT_PHY_LINK_TIME 300 + struct hns_nic_priv *priv = netdev_priv(ndev); + struct hnae_handle *h = priv->ae_handle; + int speed, duplex; +@@ -389,6 +390,9 @@ static int __lb_up(struct net_device *ndev, + + h->dev->ops->adjust_link(h, speed, duplex); + ++ /* wait adjust link done and phy ready */ ++ msleep(NIC_LB_TEST_WAIT_PHY_LINK_TIME); ++ + return 0; + } + +-- +2.20.1 + diff --git a/queue-4.4/parisc-fix-compiler-warnings-in-float-emulation-code.patch b/queue-4.4/parisc-fix-compiler-warnings-in-float-emulation-code.patch new file mode 100644 index 0000000000..1a27494f57 --- /dev/null +++ b/queue-4.4/parisc-fix-compiler-warnings-in-float-emulation-code.patch @@ -0,0 +1,53 @@ +From 775c24b68bc41ba95cbb665ab7c5cf9ce53c8602 Mon Sep 17 00:00:00 2001 +From: Helge Deller +Date: Fri, 24 May 2019 23:16:25 +0200 +Subject: parisc: Fix compiler warnings in float emulation code +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +[ Upstream commit 6b98d9134e14f5ef4bcf64b27eedf484ed19a1ec ] + +Avoid such compiler warnings: +arch/parisc/math-emu/cnv_float.h:71:27: warning: ‘<<’ in boolean context, did you mean ‘<’ ? [-Wint-in-bool-context] + ((Dintp1(dint_valueA) << 33 - SGL_EXP_LENGTH) || Dintp2(dint_valueB)) +arch/parisc/math-emu/fcnvxf.c:257:6: note: in expansion of macro ‘Dint_isinexact_to_sgl’ + if (Dint_isinexact_to_sgl(srcp1,srcp2)) { + +Signed-off-by: Helge Deller +Signed-off-by: Sasha Levin +--- + arch/parisc/math-emu/cnv_float.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/arch/parisc/math-emu/cnv_float.h b/arch/parisc/math-emu/cnv_float.h +index 933423fa5144..b0db61188a61 100644 +--- a/arch/parisc/math-emu/cnv_float.h ++++ b/arch/parisc/math-emu/cnv_float.h +@@ -60,19 +60,19 @@ + ((exponent < (SGL_P - 1)) ? \ + (Sall(sgl_value) << (SGL_EXP_LENGTH + 1 + exponent)) : FALSE) + +-#define Int_isinexact_to_sgl(int_value) (int_value << 33 - SGL_EXP_LENGTH) ++#define Int_isinexact_to_sgl(int_value) ((int_value << 33 - SGL_EXP_LENGTH) != 0) + + #define Sgl_roundnearest_from_int(int_value,sgl_value) \ + if (int_value & 1<<(SGL_EXP_LENGTH - 2)) /* round bit */ \ +- if ((int_value << 34 - SGL_EXP_LENGTH) || Slow(sgl_value)) \ ++ if (((int_value << 34 - SGL_EXP_LENGTH) != 0) || Slow(sgl_value)) \ + Sall(sgl_value)++ + + #define Dint_isinexact_to_sgl(dint_valueA,dint_valueB) \ +- ((Dintp1(dint_valueA) << 33 - SGL_EXP_LENGTH) || Dintp2(dint_valueB)) ++ (((Dintp1(dint_valueA) << 33 - SGL_EXP_LENGTH) != 0) || Dintp2(dint_valueB)) + + #define Sgl_roundnearest_from_dint(dint_valueA,dint_valueB,sgl_value) \ + if (Dintp1(dint_valueA) & 1<<(SGL_EXP_LENGTH - 2)) \ +- if ((Dintp1(dint_valueA) << 34 - SGL_EXP_LENGTH) || \ ++ if (((Dintp1(dint_valueA) << 34 - SGL_EXP_LENGTH) != 0) || \ + Dintp2(dint_valueB) || Slow(sgl_value)) Sall(sgl_value)++ + + #define Dint_isinexact_to_dbl(dint_value) \ +-- +2.20.1 + diff --git a/queue-4.4/parport-fix-mem-leak-in-parport_register_dev_model.patch b/queue-4.4/parport-fix-mem-leak-in-parport_register_dev_model.patch new file mode 100644 index 0000000000..03eb536069 --- /dev/null +++ b/queue-4.4/parport-fix-mem-leak-in-parport_register_dev_model.patch @@ -0,0 +1,67 @@ +From d80a49ce4e7868fadee25b3d494b96f0c2e267aa Mon Sep 17 00:00:00 2001 +From: YueHaibing +Date: Tue, 14 May 2019 23:24:37 +0800 +Subject: parport: Fix mem leak in parport_register_dev_model + +[ Upstream commit 1c7ebeabc9e5ee12e42075a597de40fdb9059530 ] + +BUG: memory leak +unreferenced object 0xffff8881df48cda0 (size 16): + comm "syz-executor.0", pid 5077, jiffies 4295994670 (age 22.280s) + hex dump (first 16 bytes): + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + backtrace: + [<00000000d2d0d5fe>] parport_register_dev_model+0x141/0x6e0 [parport] + [<00000000782f6dab>] 0xffffffffc15d1196 + [<00000000d2ca6ae4>] platform_drv_probe+0x7e/0x100 + [<00000000628c2a94>] really_probe+0x342/0x4d0 + [<000000006874f5da>] driver_probe_device+0x8c/0x170 + [<00000000424de37a>] __device_attach_driver+0xda/0x100 + [<000000002acab09a>] bus_for_each_drv+0xfe/0x170 + [<000000003d9e5f31>] __device_attach+0x190/0x230 + [<0000000035d32f80>] bus_probe_device+0x123/0x140 + [<00000000a05ba627>] device_add+0x7cc/0xce0 + [<000000003f7560bf>] platform_device_add+0x230/0x3c0 + [<000000002a0be07d>] 0xffffffffc15d0949 + [<000000007361d8d2>] port_check+0x3b/0x50 [parport] + [<000000004d67200f>] bus_for_each_dev+0x115/0x180 + [<000000003ccfd11c>] __parport_register_driver+0x1f0/0x210 [parport] + [<00000000987f06fc>] 0xffffffffc15d803e + +After commit 4e5a74f1db8d ("parport: Revert "parport: fix +memory leak""), free_pardevice do not free par_dev->state, +we should free it in error path of parport_register_dev_model +before return. + +Reported-by: Hulk Robot +Fixes: 4e5a74f1db8d ("parport: Revert "parport: fix memory leak"") +Signed-off-by: YueHaibing +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Sasha Levin +--- + drivers/parport/share.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/parport/share.c b/drivers/parport/share.c +index 754f21fd9768..f26af0214ab3 100644 +--- a/drivers/parport/share.c ++++ b/drivers/parport/share.c +@@ -892,6 +892,7 @@ parport_register_dev_model(struct parport *port, const char *name, + par_dev->devmodel = true; + ret = device_register(&par_dev->dev); + if (ret) { ++ kfree(par_dev->state); + put_device(&par_dev->dev); + goto err_put_port; + } +@@ -909,6 +910,7 @@ parport_register_dev_model(struct parport *port, const char *name, + spin_unlock(&port->physport->pardevice_lock); + pr_debug("%s: cannot grant exclusive access for device %s\n", + port->name, name); ++ kfree(par_dev->state); + device_unregister(&par_dev->dev); + goto err_put_port; + } +-- +2.20.1 + diff --git a/queue-4.4/s390-qeth-fix-vlan-attribute-in-bridge_hostnotify-ud.patch b/queue-4.4/s390-qeth-fix-vlan-attribute-in-bridge_hostnotify-ud.patch new file mode 100644 index 0000000000..e474f0e00f --- /dev/null +++ b/queue-4.4/s390-qeth-fix-vlan-attribute-in-bridge_hostnotify-ud.patch @@ -0,0 +1,51 @@ +From aa224c5273a1808545d16e3117a9ab58b07e692e Mon Sep 17 00:00:00 2001 +From: Alexandra Winter +Date: Wed, 5 Jun 2019 13:48:50 +0200 +Subject: s390/qeth: fix VLAN attribute in bridge_hostnotify udev event + +[ Upstream commit 335726195e460cb6b3f795b695bfd31f0ea70ef0 ] + +Enabling sysfs attribute bridge_hostnotify triggers a series of udev events +for the MAC addresses of all currently connected peers. In case no VLAN is +set for a peer, the device reports the corresponding MAC addresses with +VLAN ID 4096. This currently results in attribute VLAN=4096 for all +non-VLAN interfaces in the initial series of events after host-notify is +enabled. + +Instead, no VLAN attribute should be reported in the udev event for +non-VLAN interfaces. + +Only the initial events face this issue. For dynamic changes that are +reported later, the device uses a validity flag. + +This also changes the code so that it now sets the VLAN attribute for +MAC addresses with VID 0. On Linux, no qeth interface will ever be +registered with VID 0: Linux kernel registers VID 0 on all network +interfaces initially, but qeth will drop .ndo_vlan_rx_add_vid for VID 0. +Peers with other OSs could register MACs with VID 0. + +Fixes: 9f48b9db9a22 ("qeth: bridgeport support - address notifications") +Signed-off-by: Alexandra Winter +Signed-off-by: Julian Wiedmann +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +--- + drivers/s390/net/qeth_l2_main.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c +index 34d3b7aff513..22045e7d78ac 100644 +--- a/drivers/s390/net/qeth_l2_main.c ++++ b/drivers/s390/net/qeth_l2_main.c +@@ -2112,7 +2112,7 @@ static void qeth_bridgeport_an_set_cb(void *priv, + + l2entry = (struct qdio_brinfo_entry_l2 *)entry; + code = IPA_ADDR_CHANGE_CODE_MACADDR; +- if (l2entry->addr_lnid.lnid) ++ if (l2entry->addr_lnid.lnid < VLAN_N_VID) + code |= IPA_ADDR_CHANGE_CODE_VLANID; + qeth_bridge_emit_host_event(card, anev_reg_unreg, code, + (struct net_if_token *)&l2entry->nit, +-- +2.20.1 + diff --git a/queue-4.4/scripts-checkstack.pl-fix-arm64-wrong-or-unknown-arc.patch b/queue-4.4/scripts-checkstack.pl-fix-arm64-wrong-or-unknown-arc.patch new file mode 100644 index 0000000000..0dcd5d8c49 --- /dev/null +++ b/queue-4.4/scripts-checkstack.pl-fix-arm64-wrong-or-unknown-arc.patch @@ -0,0 +1,42 @@ +From 302927c8daaf6a058c0ccb122c2d8f6565950971 Mon Sep 17 00:00:00 2001 +From: "George G. Davis" +Date: Mon, 3 Jun 2019 10:30:39 -0400 +Subject: scripts/checkstack.pl: Fix arm64 wrong or unknown architecture + +[ Upstream commit 4f45d62a52297b10ded963412a158685647ecdec ] + +The following error occurs for the `make ARCH=arm64 checkstack` case: + +aarch64-linux-gnu-objdump -d vmlinux $(find . -name '*.ko') | \ +perl ./scripts/checkstack.pl arm64 +wrong or unknown architecture "arm64" + +As suggested by Masahiro Yamada, fix the above error using regular +expressions in the same way it was fixed for the `ARCH=x86` case via +commit fda9f9903be6 ("scripts/checkstack.pl: automatically handle +32-bit and 64-bit mode for ARCH=x86"). + +Suggested-by: Masahiro Yamada +Signed-off-by: George G. Davis +Signed-off-by: Masahiro Yamada +Signed-off-by: Sasha Levin +--- + scripts/checkstack.pl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/scripts/checkstack.pl b/scripts/checkstack.pl +index 12a6940741fe..b8f616545277 100755 +--- a/scripts/checkstack.pl ++++ b/scripts/checkstack.pl +@@ -45,7 +45,7 @@ my (@stack, $re, $dre, $x, $xs, $funcre); + $x = "[0-9a-f]"; # hex character + $xs = "[0-9a-f ]"; # hex character or space + $funcre = qr/^$x* <(.*)>:$/; +- if ($arch eq 'aarch64') { ++ if ($arch =~ '^(aarch|arm)64$') { + #ffffffc0006325cc: a9bb7bfd stp x29, x30, [sp, #-80]! + $re = qr/^.*stp.*sp, \#-([0-9]{1,8})\]\!/o; + } elsif ($arch eq 'arm') { +-- +2.20.1 + diff --git a/queue-4.4/scsi-ufs-check-that-space-was-properly-alloced-in-co.patch b/queue-4.4/scsi-ufs-check-that-space-was-properly-alloced-in-co.patch new file mode 100644 index 0000000000..ab826e0ec5 --- /dev/null +++ b/queue-4.4/scsi-ufs-check-that-space-was-properly-alloced-in-co.patch @@ -0,0 +1,42 @@ +From 2a7e546412fa9b0ee77d3264a88894b29b79088f Mon Sep 17 00:00:00 2001 +From: Avri Altman +Date: Tue, 21 May 2019 11:24:22 +0300 +Subject: scsi: ufs: Check that space was properly alloced in + copy_query_response + +[ Upstream commit 1c90836f70f9a8ef7b7ad9e1fdd8961903e6ced6 ] + +struct ufs_dev_cmd is the main container that supports device management +commands. In the case of a read descriptor request, we assume that the +proper space was allocated in dev_cmd to hold the returning descriptor. + +This is no longer true, as there are flows that doesn't use dev_cmd for +device management requests, and was wrong in the first place. + +Fixes: d44a5f98bb49 (ufs: query descriptor API) +Signed-off-by: Avri Altman +Reviewed-by: Alim Akhtar +Acked-by: Bean Huo +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + drivers/scsi/ufs/ufshcd.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c +index 7322a17660d1..b140e81c4f7d 100644 +--- a/drivers/scsi/ufs/ufshcd.c ++++ b/drivers/scsi/ufs/ufshcd.c +@@ -853,7 +853,8 @@ int ufshcd_copy_query_response(struct ufs_hba *hba, struct ufshcd_lrb *lrbp) + memcpy(&query_res->upiu_res, &lrbp->ucd_rsp_ptr->qr, QUERY_OSF_SIZE); + + /* Get the descriptor */ +- if (lrbp->ucd_rsp_ptr->qr.opcode == UPIU_QUERY_OPCODE_READ_DESC) { ++ if (hba->dev_cmd.query.descriptor && ++ lrbp->ucd_rsp_ptr->qr.opcode == UPIU_QUERY_OPCODE_READ_DESC) { + u8 *descp = (u8 *)lrbp->ucd_rsp_ptr + + GENERAL_UPIU_REQUEST_SIZE; + u16 resp_len; +-- +2.20.1 + diff --git a/queue-4.4/series b/queue-4.4/series index cea4d04f73..366be9edb6 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -3,3 +3,13 @@ gcc-9-silence-address-of-packed-member-warning.patch usb-chipidea-udc-workaround-for-endpoint-conflict-issue.patch input-uinput-add-compat-ioctl-number-translation-for-ui_-_ff_upload.patch apparmor-enforce-nullbyte-at-end-of-tag-string.patch +parport-fix-mem-leak-in-parport_register_dev_model.patch +parisc-fix-compiler-warnings-in-float-emulation-code.patch +ib-hfi1-insure-freeze_work-work_struct-is-canceled-o.patch +mips-uprobes-remove-set-but-not-used-variable-epc.patch +net-hns-fix-loopback-test-failed-at-copper-ports.patch +sparc-perf-fix-updated-event-period-in-response-to-p.patch +scripts-checkstack.pl-fix-arm64-wrong-or-unknown-arc.patch +scsi-ufs-check-that-space-was-properly-alloced-in-co.patch +s390-qeth-fix-vlan-attribute-in-bridge_hostnotify-ud.patch +hwmon-pmbus-core-treat-parameters-as-paged-if-on-mul.patch diff --git a/queue-4.4/sparc-perf-fix-updated-event-period-in-response-to-p.patch b/queue-4.4/sparc-perf-fix-updated-event-period-in-response-to-p.patch new file mode 100644 index 0000000000..22502942db --- /dev/null +++ b/queue-4.4/sparc-perf-fix-updated-event-period-in-response-to-p.patch @@ -0,0 +1,44 @@ +From 7524e06e17196bf3645819d600dc19f17514e3af Mon Sep 17 00:00:00 2001 +From: Young Xiao <92siuyang@gmail.com> +Date: Wed, 29 May 2019 10:21:48 +0800 +Subject: sparc: perf: fix updated event period in response to + PERF_EVENT_IOC_PERIOD + +[ Upstream commit 56cd0aefa475079e9613085b14a0f05037518fed ] + +The PERF_EVENT_IOC_PERIOD ioctl command can be used to change the +sample period of a running perf_event. Consequently, when calculating +the next event period, the new period will only be considered after the +previous one has overflowed. + +This patch changes the calculation of the remaining event ticks so that +they are offset if the period has changed. + +See commit 3581fe0ef37c ("ARM: 7556/1: perf: fix updated event period in +response to PERF_EVENT_IOC_PERIOD") for details. + +Signed-off-by: Young Xiao <92siuyang@gmail.com> +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +--- + arch/sparc/kernel/perf_event.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/arch/sparc/kernel/perf_event.c b/arch/sparc/kernel/perf_event.c +index a5d0c2f08110..815352d501f0 100644 +--- a/arch/sparc/kernel/perf_event.c ++++ b/arch/sparc/kernel/perf_event.c +@@ -889,6 +889,10 @@ static int sparc_perf_event_set_period(struct perf_event *event, + s64 period = hwc->sample_period; + int ret = 0; + ++ /* The period may have been changed by PERF_EVENT_IOC_PERIOD */ ++ if (unlikely(period != hwc->last_period)) ++ left = period - (hwc->last_period - left); ++ + if (unlikely(left <= -period)) { + left = period; + local64_set(&hwc->period_left, left); +-- +2.20.1 + -- 2.39.2