From: Sasha Levin Date: Thu, 11 Jun 2020 17:42:09 +0000 (-0400) Subject: Fixes for 4.19 X-Git-Tag: v5.4.47~125 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d59de6963c02d013ffdfd338dd9b9199762b24d3;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 4.19 Signed-off-by: Sasha Levin --- diff --git a/queue-4.19/arm-8977-1-ptrace-fix-mask-for-thumb-breakpoint-hook.patch b/queue-4.19/arm-8977-1-ptrace-fix-mask-for-thumb-breakpoint-hook.patch new file mode 100644 index 00000000000..a82b4058d98 --- /dev/null +++ b/queue-4.19/arm-8977-1-ptrace-fix-mask-for-thumb-breakpoint-hook.patch @@ -0,0 +1,53 @@ +From 2ac74ff1e79cbfc954c0c600d9c254f3197c72a3 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 18 May 2020 19:41:11 +0100 +Subject: ARM: 8977/1: ptrace: Fix mask for thumb breakpoint hook + +From: Fredrik Strupe + +[ Upstream commit 3866f217aaa81bf7165c7f27362eee5d7919c496 ] + +call_undef_hook() in traps.c applies the same instr_mask for both 16-bit +and 32-bit thumb instructions. If instr_mask then is only 16 bits wide +(0xffff as opposed to 0xffffffff), the first half-word of 32-bit thumb +instructions will be masked out. This makes the function match 32-bit +thumb instructions where the second half-word is equal to instr_val, +regardless of the first half-word. + +The result in this case is that all undefined 32-bit thumb instructions +with the second half-word equal to 0xde01 (udf #1) work as breakpoints +and will raise a SIGTRAP instead of a SIGILL, instead of just the one +intended 16-bit instruction. An example of such an instruction is +0xeaa0de01, which is unallocated according to Arm ARM and should raise a +SIGILL, but instead raises a SIGTRAP. + +This patch fixes the issue by setting all the bits in instr_mask, which +will still match the intended 16-bit thumb instruction (where the +upper half is always 0), but not any 32-bit thumb instructions. + +Cc: Oleg Nesterov +Signed-off-by: Fredrik Strupe +Signed-off-by: Russell King +Signed-off-by: Sasha Levin +--- + arch/arm/kernel/ptrace.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c +index 36718a424358..492ac74a63f4 100644 +--- a/arch/arm/kernel/ptrace.c ++++ b/arch/arm/kernel/ptrace.c +@@ -229,8 +229,8 @@ static struct undef_hook arm_break_hook = { + }; + + static struct undef_hook thumb_break_hook = { +- .instr_mask = 0xffff, +- .instr_val = 0xde01, ++ .instr_mask = 0xffffffff, ++ .instr_val = 0x0000de01, + .cpsr_mask = PSR_T_BIT, + .cpsr_val = PSR_T_BIT, + .fn = break_trap, +-- +2.25.1 + diff --git a/queue-4.19/drivers-net-ibmvnic-update-vnic-protocol-version-rep.patch b/queue-4.19/drivers-net-ibmvnic-update-vnic-protocol-version-rep.patch new file mode 100644 index 00000000000..8b8db605d4d --- /dev/null +++ b/queue-4.19/drivers-net-ibmvnic-update-vnic-protocol-version-rep.patch @@ -0,0 +1,43 @@ +From e81a5bbde739214845a58080fa8459e4511eeafc Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 28 May 2020 11:19:17 -0500 +Subject: drivers/net/ibmvnic: Update VNIC protocol version reporting + +From: Thomas Falcon + +[ Upstream commit 784688993ebac34dffe44a9f2fabbe126ebfd4db ] + +VNIC protocol version is reported in big-endian format, but it +is not byteswapped before logging. Fix that, and remove version +comparison as only one protocol version exists at this time. + +Signed-off-by: Thomas Falcon +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/ibm/ibmvnic.c | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c +index abfd990ba4d8..645298628b6f 100644 +--- a/drivers/net/ethernet/ibm/ibmvnic.c ++++ b/drivers/net/ethernet/ibm/ibmvnic.c +@@ -4295,12 +4295,10 @@ static void ibmvnic_handle_crq(union ibmvnic_crq *crq, + dev_err(dev, "Error %ld in VERSION_EXCHG_RSP\n", rc); + break; + } +- dev_info(dev, "Partner protocol version is %d\n", +- crq->version_exchange_rsp.version); +- if (be16_to_cpu(crq->version_exchange_rsp.version) < +- ibmvnic_version) +- ibmvnic_version = ++ ibmvnic_version = + be16_to_cpu(crq->version_exchange_rsp.version); ++ dev_info(dev, "Partner protocol version is %d\n", ++ ibmvnic_version); + send_cap_queries(adapter); + break; + case QUERY_CAPABILITY_RSP: +-- +2.25.1 + diff --git a/queue-4.19/input-mms114-fix-handling-of-mms345l.patch b/queue-4.19/input-mms114-fix-handling-of-mms345l.patch new file mode 100644 index 00000000000..14d982022ce --- /dev/null +++ b/queue-4.19/input-mms114-fix-handling-of-mms345l.patch @@ -0,0 +1,70 @@ +From 2c2f7f52bc06a9aba045cb4e31562d8c5cb9733b Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 9 Apr 2020 13:49:03 -0700 +Subject: Input: mms114 - fix handling of mms345l + +From: Stephan Gerhold + +[ Upstream commit 3f8f770575d911c989043d8f0fb8dec96360c41c ] + +MMS345L is another first generation touch screen from Melfas, +which uses the same registers as MMS152. + +However, using I2C_M_NOSTART for it causes errors when reading: + + i2c i2c-0: sendbytes: NAK bailout. + mms114 0-0048: __mms114_read_reg: i2c transfer failed (-5) + +The driver works fine as soon as I2C_M_NOSTART is removed. + +Reviewed-by: Andi Shyti +Signed-off-by: Stephan Gerhold +Link: https://lore.kernel.org/r/20200405170904.61512-1-stephan@gerhold.net +[dtor: removed separate mms345l handling, made everyone use standard +transfer mode, propagated the 10bit addressing flag to the read part of the +transfer as well.] +Signed-off-by: Dmitry Torokhov +Signed-off-by: Sasha Levin +--- + drivers/input/touchscreen/mms114.c | 12 +++++------- + 1 file changed, 5 insertions(+), 7 deletions(-) + +diff --git a/drivers/input/touchscreen/mms114.c b/drivers/input/touchscreen/mms114.c +index a5ab774da4cc..fca908ba4841 100644 +--- a/drivers/input/touchscreen/mms114.c ++++ b/drivers/input/touchscreen/mms114.c +@@ -91,15 +91,15 @@ static int __mms114_read_reg(struct mms114_data *data, unsigned int reg, + if (reg <= MMS114_MODE_CONTROL && reg + len > MMS114_MODE_CONTROL) + BUG(); + +- /* Write register: use repeated start */ ++ /* Write register */ + xfer[0].addr = client->addr; +- xfer[0].flags = I2C_M_TEN | I2C_M_NOSTART; ++ xfer[0].flags = client->flags & I2C_M_TEN; + xfer[0].len = 1; + xfer[0].buf = &buf; + + /* Read data */ + xfer[1].addr = client->addr; +- xfer[1].flags = I2C_M_RD; ++ xfer[1].flags = (client->flags & I2C_M_TEN) | I2C_M_RD; + xfer[1].len = len; + xfer[1].buf = val; + +@@ -428,10 +428,8 @@ static int mms114_probe(struct i2c_client *client, + const void *match_data; + int error; + +- if (!i2c_check_functionality(client->adapter, +- I2C_FUNC_PROTOCOL_MANGLING)) { +- dev_err(&client->dev, +- "Need i2c bus that supports protocol mangling\n"); ++ if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { ++ dev_err(&client->dev, "Not supported I2C adapter\n"); + return -ENODEV; + } + +-- +2.25.1 + diff --git a/queue-4.19/input-synaptics-add-a-second-working-pnp_id-for-leno.patch b/queue-4.19/input-synaptics-add-a-second-working-pnp_id-for-leno.patch new file mode 100644 index 00000000000..d311119f9c6 --- /dev/null +++ b/queue-4.19/input-synaptics-add-a-second-working-pnp_id-for-leno.patch @@ -0,0 +1,37 @@ +From f07d620197d8aad582d72eb58235de01bdac7ef5 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 26 May 2020 23:03:13 -0700 +Subject: Input: synaptics - add a second working PNP_ID for Lenovo T470s + +From: Dennis Kadioglu + +[ Upstream commit 642aa86eaf8f1e6fe894f20fd7f12f0db52ee03c ] + +The Lenovo Thinkpad T470s I own has a different touchpad with "LEN007a" +instead of the already included PNP ID "LEN006c". However, my touchpad +seems to work well without any problems using RMI. So this patch adds the +other PNP ID. + +Signed-off-by: Dennis Kadioglu +Link: https://lore.kernel.org/r/ff770543cd53ae818363c0fe86477965@mail.eclipso.de +Signed-off-by: Dmitry Torokhov +Signed-off-by: Sasha Levin +--- + drivers/input/mouse/synaptics.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c +index d9042d0566ab..671e018eb363 100644 +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -173,6 +173,7 @@ static const char * const smbus_pnp_ids[] = { + "LEN005b", /* P50 */ + "LEN005e", /* T560 */ + "LEN006c", /* T470s */ ++ "LEN007a", /* T470s */ + "LEN0071", /* T480 */ + "LEN0072", /* X1 Carbon Gen 5 (2017) - Elan/ALPS trackpoint */ + "LEN0073", /* X1 Carbon G5 (Elantech) */ +-- +2.25.1 + diff --git a/queue-4.19/sched-fair-don-t-numa-balance-for-kthreads.patch b/queue-4.19/sched-fair-don-t-numa-balance-for-kthreads.patch new file mode 100644 index 00000000000..f674da5be2f --- /dev/null +++ b/queue-4.19/sched-fair-don-t-numa-balance-for-kthreads.patch @@ -0,0 +1,55 @@ +From d7f18a8972b2c3e3d9b162c0aa4b96bb192a6aaa Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 26 May 2020 09:38:31 -0600 +Subject: sched/fair: Don't NUMA balance for kthreads + +From: Jens Axboe + +[ Upstream commit 18f855e574d9799a0e7489f8ae6fd8447d0dd74a ] + +Stefano reported a crash with using SQPOLL with io_uring: + + BUG: kernel NULL pointer dereference, address: 00000000000003b0 + CPU: 2 PID: 1307 Comm: io_uring-sq Not tainted 5.7.0-rc7 #11 + RIP: 0010:task_numa_work+0x4f/0x2c0 + Call Trace: + task_work_run+0x68/0xa0 + io_sq_thread+0x252/0x3d0 + kthread+0xf9/0x130 + ret_from_fork+0x35/0x40 + +which is task_numa_work() oopsing on current->mm being NULL. + +The task work is queued by task_tick_numa(), which checks if current->mm is +NULL at the time of the call. But this state isn't necessarily persistent, +if the kthread is using use_mm() to temporarily adopt the mm of a task. + +Change the task_tick_numa() check to exclude kernel threads in general, +as it doesn't make sense to attempt ot balance for kthreads anyway. + +Reported-by: Stefano Garzarella +Signed-off-by: Jens Axboe +Signed-off-by: Ingo Molnar +Acked-by: Peter Zijlstra +Link: https://lore.kernel.org/r/865de121-8190-5d30-ece5-3b097dc74431@kernel.dk +Signed-off-by: Sasha Levin +--- + kernel/sched/fair.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c +index 86ccaaf0c1bf..92b1e71f13c8 100644 +--- a/kernel/sched/fair.c ++++ b/kernel/sched/fair.c +@@ -2697,7 +2697,7 @@ void task_tick_numa(struct rq *rq, struct task_struct *curr) + /* + * We don't care about NUMA placement if we don't have memory. + */ +- if (!curr->mm || (curr->flags & PF_EXITING) || work->next != work) ++ if ((curr->flags & (PF_EXITING | PF_KTHREAD)) || work->next != work) + return; + + /* +-- +2.25.1 + diff --git a/queue-4.19/series b/queue-4.19/series index 26cbb67d304..45c9de5bb50 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -12,3 +12,8 @@ lib-reduce-user_access_begin-boundaries-in-strncpy_from_user-and-strnlen_user.pa btrfs-merge-btrfs_find_device-and-find_device.patch btrfs-detect-unbalanced-tree-with-empty-leaf-before-crashing-btree-operations.patch crypto-talitos-fix-ecb-and-cbc-algs-ivsize.patch +input-mms114-fix-handling-of-mms345l.patch +arm-8977-1-ptrace-fix-mask-for-thumb-breakpoint-hook.patch +sched-fair-don-t-numa-balance-for-kthreads.patch +input-synaptics-add-a-second-working-pnp_id-for-leno.patch +drivers-net-ibmvnic-update-vnic-protocol-version-rep.patch