* [PATCH AUTOSEL for 3.18 2/8] serial: 8250_fintek: Fix rs485 disablement on invalid ioctl()
2017-11-22 22:26 [PATCH AUTOSEL for 3.18 1/8] ima: fix hash algorithm initialization alexander.levin
@ 2017-11-22 22:26 ` alexander.levin
2017-11-22 22:26 ` [PATCH AUTOSEL for 3.18 6/8] sysrq : fix Show Regs call trace on ARM alexander.levin
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: alexander.levin @ 2017-11-22 22:26 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Lukas Wunner, Ricardo Ribalda Delgado, Ji-Ze Hong (Peter Hong),
Greg Kroah-Hartman, alexander.levin
From: Lukas Wunner <lukas@wunner.de>
[ Upstream commit 3236a965486ba0c6043cf2c7b51943d8b382ae29 ]
This driver's ->rs485_config callback checks if SER_RS485_RTS_ON_SEND
and SER_RS485_RTS_AFTER_SEND have the same value. If they do, it means
the user has passed in invalid data with the TIOCSRS485 ioctl()
since RTS must have a different polarity when sending and when not
sending. In this case, rs485 mode is not enabled (the RS485_URA bit
is not set in the RS485 Enable Register) and this is supposed to be
signaled back to the user by clearing the SER_RS485_ENABLED bit in
struct serial_rs485 ... except a missing tilde character is preventing
that from happening.
Fixes: 28e3fb6c4dce ("serial: Add support for Fintek F81216A LPC to 4 UART")
Cc: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Cc: "Ji-Ze Hong (Peter Hong)" <hpeter@gmail.com>
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
---
drivers/tty/serial/8250/8250_fintek.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/tty/serial/8250/8250_fintek.c b/drivers/tty/serial/8250/8250_fintek.c
index 1bb28cb69493..c72283f2be6d 100644
--- a/drivers/tty/serial/8250/8250_fintek.c
+++ b/drivers/tty/serial/8250/8250_fintek.c
@@ -118,7 +118,7 @@ static int fintek_8250_rs4850_config(struct uart_8250_port *uart,
if ((!!(rs485->flags & SER_RS485_RTS_ON_SEND)) ==
(!!(rs485->flags & SER_RS485_RTS_AFTER_SEND)))
- rs485->flags &= SER_RS485_ENABLED;
+ rs485->flags &= ~SER_RS485_ENABLED;
else
config |= RS485_URA;
--
2.11.0
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH AUTOSEL for 3.18 6/8] sysrq : fix Show Regs call trace on ARM
2017-11-22 22:26 [PATCH AUTOSEL for 3.18 1/8] ima: fix hash algorithm initialization alexander.levin
2017-11-22 22:26 ` [PATCH AUTOSEL for 3.18 2/8] serial: 8250_fintek: Fix rs485 disablement on invalid ioctl() alexander.levin
@ 2017-11-22 22:26 ` alexander.levin
2017-11-22 22:26 ` [PATCH AUTOSEL for 3.18 5/8] EDAC, sb_edac: Fix missing break in switch alexander.levin
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: alexander.levin @ 2017-11-22 22:26 UTC (permalink / raw)
To: linux-kernel, stable; +Cc: Jibin Xu, Greg Kroah-Hartman, alexander.levin
From: Jibin Xu <jibin.xu@windriver.com>
[ Upstream commit b00bebbc301c8e1f74f230dc82282e56b7e7a6db ]
When kernel configuration SMP,PREEMPT and DEBUG_PREEMPT are enabled,
echo 1 >/proc/sys/kernel/sysrq
echo p >/proc/sysrq-trigger
kernel will print call trace as below:
sysrq: SysRq : Show Regs
BUG: using __this_cpu_read() in preemptible [00000000] code: sh/435
caller is __this_cpu_preempt_check+0x18/0x20
Call trace:
[<ffffff8008088e80>] dump_backtrace+0x0/0x1d0
[<ffffff8008089074>] show_stack+0x24/0x30
[<ffffff8008447970>] dump_stack+0x90/0xb0
[<ffffff8008463950>] check_preemption_disabled+0x100/0x108
[<ffffff8008463998>] __this_cpu_preempt_check+0x18/0x20
[<ffffff80084c9194>] sysrq_handle_showregs+0x1c/0x40
[<ffffff80084c9c7c>] __handle_sysrq+0x12c/0x1a0
[<ffffff80084ca140>] write_sysrq_trigger+0x60/0x70
[<ffffff8008251e00>] proc_reg_write+0x90/0xd0
[<ffffff80081f1788>] __vfs_write+0x48/0x90
[<ffffff80081f241c>] vfs_write+0xa4/0x190
[<ffffff80081f3354>] SyS_write+0x54/0xb0
[<ffffff80080833f0>] el0_svc_naked+0x24/0x28
This can be seen on a common board like an r-pi3.
This happens because when echo p >/proc/sysrq-trigger,
get_irq_regs() is called outside of IRQ context,
if preemption is enabled in this situation,kernel will
print the call trace. Since many prior discussions on
the mailing lists have made it clear that get_irq_regs
either just returns NULL or stale data when used outside
of IRQ context,we simply avoid calling it outside of
IRQ context.
Signed-off-by: Jibin Xu <jibin.xu@windriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
---
drivers/tty/sysrq.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
index 647d3df9d66a..f97e7dac3a98 100644
--- a/drivers/tty/sysrq.c
+++ b/drivers/tty/sysrq.c
@@ -237,8 +237,10 @@ static void sysrq_handle_showallcpus(int key)
* architecture has no support for it:
*/
if (!trigger_all_cpu_backtrace()) {
- struct pt_regs *regs = get_irq_regs();
+ struct pt_regs *regs = NULL;
+ if (in_irq())
+ regs = get_irq_regs();
if (regs) {
printk(KERN_INFO "CPU%d:\n", smp_processor_id());
show_regs(regs);
@@ -257,7 +259,10 @@ static struct sysrq_key_op sysrq_showallcpus_op = {
static void sysrq_handle_showregs(int key)
{
- struct pt_regs *regs = get_irq_regs();
+ struct pt_regs *regs = NULL;
+
+ if (in_irq())
+ regs = get_irq_regs();
if (regs)
show_regs(regs);
perf_event_print_debug();
--
2.11.0
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH AUTOSEL for 3.18 5/8] EDAC, sb_edac: Fix missing break in switch
2017-11-22 22:26 [PATCH AUTOSEL for 3.18 1/8] ima: fix hash algorithm initialization alexander.levin
2017-11-22 22:26 ` [PATCH AUTOSEL for 3.18 2/8] serial: 8250_fintek: Fix rs485 disablement on invalid ioctl() alexander.levin
2017-11-22 22:26 ` [PATCH AUTOSEL for 3.18 6/8] sysrq : fix Show Regs call trace on ARM alexander.levin
@ 2017-11-22 22:26 ` alexander.levin
2017-11-22 22:26 ` [PATCH AUTOSEL for 3.18 3/8] spi: sh-msiof: Fix DMA transfer size check alexander.levin
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: alexander.levin @ 2017-11-22 22:26 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Gustavo A. R. Silva, Qiuxu Zhuo, linux-edac, Borislav Petkov,
alexander.levin
From: "Gustavo A. R. Silva" <garsilva@embeddedor.com>
[ Upstream commit a8e9b186f153a44690ad0363a56716e7077ad28c ]
Add missing break statement in order to prevent the code from falling
through.
Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
Cc: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Cc: linux-edac <linux-edac@vger.kernel.org>
Link: http://lkml.kernel.org/r/20171016174029.GA19757@embeddedor.com
Signed-off-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
---
drivers/edac/sb_edac.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
index 6aa25a3aa2c7..42f667485594 100644
--- a/drivers/edac/sb_edac.c
+++ b/drivers/edac/sb_edac.c
@@ -1645,6 +1645,7 @@ static int ibridge_mci_bind_devs(struct mem_ctl_info *mci,
break;
case PCI_DEVICE_ID_INTEL_IBRIDGE_IMC_HA0_TA:
pvt->pci_ta = pdev;
+ break;
case PCI_DEVICE_ID_INTEL_IBRIDGE_IMC_HA0_RAS:
pvt->pci_ras = pdev;
break;
--
2.11.0
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH AUTOSEL for 3.18 3/8] spi: sh-msiof: Fix DMA transfer size check
2017-11-22 22:26 [PATCH AUTOSEL for 3.18 1/8] ima: fix hash algorithm initialization alexander.levin
` (2 preceding siblings ...)
2017-11-22 22:26 ` [PATCH AUTOSEL for 3.18 5/8] EDAC, sb_edac: Fix missing break in switch alexander.levin
@ 2017-11-22 22:26 ` alexander.levin
2017-11-22 22:26 ` [PATCH AUTOSEL for 3.18 4/8] kprobes: Use synchronize_rcu_tasks() for optprobe with CONFIG_PREEMPT=y alexander.levin
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: alexander.levin @ 2017-11-22 22:26 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Hiromitsu Yamasaki, Simon Horman, Mark Brown, alexander.levin
From: Hiromitsu Yamasaki <hiromitsu.yamasaki.ym@renesas.com>
[ Upstream commit 36735783fdb599c94b9c86824583df367c65900b ]
DMA supports 32-bit words only,
even if BITLEN1 of SITMDR2 register is 16bit.
Fixes: b0d0ce8b6b91 ("spi: sh-msiof: Add DMA support")
Signed-off-by: Hiromitsu Yamasaki <hiromitsu.yamasaki.ym@renesas.com>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Dirk Behme <dirk.behme@de.bosch.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
---
drivers/spi/spi-sh-msiof.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/spi/spi-sh-msiof.c b/drivers/spi/spi-sh-msiof.c
index 14052936b1c5..d9044569b4fe 100644
--- a/drivers/spi/spi-sh-msiof.c
+++ b/drivers/spi/spi-sh-msiof.c
@@ -818,7 +818,7 @@ static int sh_msiof_transfer_one(struct spi_master *master,
break;
copy32 = copy_bswap32;
} else if (bits <= 16) {
- if (l & 1)
+ if (l & 3)
break;
copy32 = copy_wswap32;
} else {
--
2.11.0
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH AUTOSEL for 3.18 4/8] kprobes: Use synchronize_rcu_tasks() for optprobe with CONFIG_PREEMPT=y
2017-11-22 22:26 [PATCH AUTOSEL for 3.18 1/8] ima: fix hash algorithm initialization alexander.levin
` (3 preceding siblings ...)
2017-11-22 22:26 ` [PATCH AUTOSEL for 3.18 3/8] spi: sh-msiof: Fix DMA transfer size check alexander.levin
@ 2017-11-22 22:26 ` alexander.levin
2017-11-22 22:27 ` [PATCH AUTOSEL for 3.18 8/8] perf test attr: Fix ignored test case result alexander.levin
2017-11-22 22:27 ` [PATCH AUTOSEL for 3.18 7/8] usbip: tools: Install all headers needed for libusbip development alexander.levin
6 siblings, 0 replies; 8+ messages in thread
From: alexander.levin @ 2017-11-22 22:26 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Masami Hiramatsu, Ananth N Mavinakayanahalli, Linus Torvalds,
Naveen N . Rao, Paul E . McKenney, Peter Zijlstra,
Steven Rostedt, Thomas Gleixner, Ingo Molnar, alexander.levin
From: Masami Hiramatsu <mhiramat@kernel.org>
[ Upstream commit a30b85df7d599f626973e9cd3056fe755bd778e0 ]
We want to wait for all potentially preempted kprobes trampoline
execution to have completed. This guarantees that any freed
trampoline memory is not in use by any task in the system anymore.
synchronize_rcu_tasks() gives such a guarantee, so use it.
Also, this guarantees to wait for all potentially preempted tasks
on the instructions which will be replaced with a jump.
Since this becomes a problem only when CONFIG_PREEMPT=y, enable
CONFIG_TASKS_RCU=y for synchronize_rcu_tasks() in that case.
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Naveen N . Rao <naveen.n.rao@linux.vnet.ibm.com>
Cc: Paul E . McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/150845661962.5443.17724352636247312231.stgit@devbox
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
---
arch/Kconfig | 2 +-
kernel/kprobes.c | 14 ++++++++------
2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/arch/Kconfig b/arch/Kconfig
index 05d7a8a458d5..93379715beea 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -74,7 +74,7 @@ config JUMP_LABEL
config OPTPROBES
def_bool y
depends on KPROBES && HAVE_OPTPROBES
- depends on !PREEMPT
+ select TASKS_RCU if PREEMPT
config KPROBES_ON_FTRACE
def_bool y
diff --git a/kernel/kprobes.c b/kernel/kprobes.c
index 0d2f0e7c7605..5c78e6b1fbea 100644
--- a/kernel/kprobes.c
+++ b/kernel/kprobes.c
@@ -540,13 +540,15 @@ static void kprobe_optimizer(struct work_struct *work)
do_unoptimize_kprobes();
/*
- * Step 2: Wait for quiesence period to ensure all running interrupts
- * are done. Because optprobe may modify multiple instructions
- * there is a chance that Nth instruction is interrupted. In that
- * case, running interrupt can return to 2nd-Nth byte of jump
- * instruction. This wait is for avoiding it.
+ * Step 2: Wait for quiesence period to ensure all potentially
+ * preempted tasks to have normally scheduled. Because optprobe
+ * may modify multiple instructions, there is a chance that Nth
+ * instruction is preempted. In that case, such tasks can return
+ * to 2nd-Nth byte of jump instruction. This wait is for avoiding it.
+ * Note that on non-preemptive kernel, this is transparently converted
+ * to synchronoze_sched() to wait for all interrupts to have completed.
*/
- synchronize_sched();
+ synchronize_rcu_tasks();
/* Step 3: Optimize kprobes after quiesence period */
do_optimize_kprobes();
--
2.11.0
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH AUTOSEL for 3.18 8/8] perf test attr: Fix ignored test case result
2017-11-22 22:26 [PATCH AUTOSEL for 3.18 1/8] ima: fix hash algorithm initialization alexander.levin
` (4 preceding siblings ...)
2017-11-22 22:26 ` [PATCH AUTOSEL for 3.18 4/8] kprobes: Use synchronize_rcu_tasks() for optprobe with CONFIG_PREEMPT=y alexander.levin
@ 2017-11-22 22:27 ` alexander.levin
2017-11-22 22:27 ` [PATCH AUTOSEL for 3.18 7/8] usbip: tools: Install all headers needed for libusbip development alexander.levin
6 siblings, 0 replies; 8+ messages in thread
From: alexander.levin @ 2017-11-22 22:27 UTC (permalink / raw)
To: linux-kernel, stable
Cc: Thomas Richter, Heiko Carstens, Hendrik Brueckner,
Martin Schwidefsky, Arnaldo Carvalho de Melo, alexander.levin
From: Thomas Richter <tmricht@linux.vnet.ibm.com>
[ Upstream commit 22905582f6dd4bbd0c370fe5732c607452010c04 ]
Command perf test -v 16 (Setup struct perf_event_attr test) always
reports success even if the test case fails. It works correctly if you
also specify -F (for don't fork).
root@s35lp76 perf]# ./perf test -v 16
15: Setup struct perf_event_attr :
--- start ---
running './tests/attr/test-record-no-delay'
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.002 MB /tmp/tmp4E1h7R/perf.data
(1 samples) ]
expected task=0, got 1
expected precise_ip=0, got 3
expected wakeup_events=1, got 0
FAILED './tests/attr/test-record-no-delay' - match failure
test child finished with 0
---- end ----
Setup struct perf_event_attr: Ok
The reason for the wrong error reporting is the return value of the
system() library call. It is called in run_dir() file tests/attr.c and
returns the exit status, in above case 0xff00.
This value is given as parameter to the exit() function which can only
handle values 0-0xff.
The child process terminates with exit value of 0 and the parent does
not detect any error.
This patch corrects the error reporting and prints the correct test
result.
Signed-off-by: Thomas-Mich Richter <tmricht@linux.vnet.ibm.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Thomas-Mich Richter <tmricht@linux.vnet.ibm.com>
LPU-Reference: 20170913081209.39570-2-tmricht@linux.vnet.ibm.com
Link: http://lkml.kernel.org/n/tip-rdube6rfcjsr1nzue72c7lqn@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
---
tools/perf/tests/attr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/perf/tests/attr.c b/tools/perf/tests/attr.c
index 2dfc9ad0e6f2..8e92b56c610a 100644
--- a/tools/perf/tests/attr.c
+++ b/tools/perf/tests/attr.c
@@ -150,7 +150,7 @@ static int run_dir(const char *d, const char *perf)
snprintf(cmd, 3*PATH_MAX, PYTHON " %s/attr.py -d %s/attr/ -p %s %.*s",
d, d, perf, vcnt, v);
- return system(cmd);
+ return system(cmd) ? TEST_FAIL : TEST_OK;
}
int test__attr(void)
--
2.11.0
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH AUTOSEL for 3.18 7/8] usbip: tools: Install all headers needed for libusbip development
2017-11-22 22:26 [PATCH AUTOSEL for 3.18 1/8] ima: fix hash algorithm initialization alexander.levin
` (5 preceding siblings ...)
2017-11-22 22:27 ` [PATCH AUTOSEL for 3.18 8/8] perf test attr: Fix ignored test case result alexander.levin
@ 2017-11-22 22:27 ` alexander.levin
6 siblings, 0 replies; 8+ messages in thread
From: alexander.levin @ 2017-11-22 22:27 UTC (permalink / raw)
To: linux-kernel, stable; +Cc: Ben Hutchings, Greg Kroah-Hartman, alexander.levin
From: Ben Hutchings <ben@decadent.org.uk>
[ Upstream commit c15562c0dcb2c7f26e891923b784cf1926b8c833 ]
usbip_host_driver.h now depends on several additional headers, which
need to be installed along with it.
Fixes: 021aed845303 ("staging: usbip: userspace: migrate usbip_host_driver ...")
Fixes: 3391ba0e2792 ("usbip: tools: Extract generic code to be shared with ...")
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Acked-by: Shuah Khan <shuahkh@osg.samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
---
tools/usb/usbip/Makefile.am | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/usb/usbip/Makefile.am b/tools/usb/usbip/Makefile.am
index 66f8bf038c9f..45eaa70a71e0 100644
--- a/tools/usb/usbip/Makefile.am
+++ b/tools/usb/usbip/Makefile.am
@@ -1,6 +1,7 @@
SUBDIRS := libsrc src
includedir = @includedir@/usbip
include_HEADERS := $(addprefix libsrc/, \
- usbip_common.h vhci_driver.h usbip_host_driver.h)
+ usbip_common.h vhci_driver.h usbip_host_driver.h \
+ list.h sysfs_utils.h usbip_host_common.h)
dist_man_MANS := $(addprefix doc/, usbip.8 usbipd.8)
--
2.11.0
^ permalink raw reply [flat|nested] 8+ messages in thread