linux-uconsole/arch/mips/kernel
Vegard Nossum 8ecd71cd15 kthread: fix boot hang (regression) on MIPS/OpenRISC
commit b0f5a8f32e upstream.

This fixes a regression in commit 4d6501dce0 where I didn't notice
that MIPS and OpenRISC were reinitialising p->{set,clear}_child_tid to
NULL after our initialisation in copy_process().

We can simply get rid of the arch-specific initialisation here since it
is now always done in copy_process() before hitting copy_thread{,_tls}().

Review notes:

 - As far as I can tell, copy_process() is the only user of
   copy_thread_tls(), which is the only caller of copy_thread() for
   architectures that don't implement copy_thread_tls().

 - After this patch, there is no arch-specific code touching
   p->set_child_tid or p->clear_child_tid whatsoever.

 - It may look like MIPS/OpenRISC wanted to always have these fields be
   NULL, but that's not true, as copy_process() would unconditionally
   set them again _after_ calling copy_thread_tls() before commit
   4d6501dce0.

Fixes: 4d6501dce0 ("kthread: Fix use-after-free if kthread fork fails")
Reported-by: Guenter Roeck <linux@roeck-us.net>
Tested-by: Guenter Roeck <linux@roeck-us.net> # MIPS only
Acked-by: Stafford Horne <shorne@gmail.com>
Acked-by: Oleg Nesterov <oleg@redhat.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
Cc: Jonas Bonn <jonas@southpole.se>
Cc: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
Cc: openrisc@lists.librecores.org
Cc: Jamie Iles <jamie.iles@oracle.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-09-19 22:48:55 +02:00
..
.gitignore
8250-platform.c
asm-offsets.c MIPS: IRQ Stack: Unwind IRQ stack onto task stack 2017-10-08 10:14:19 +02:00
binfmt_elfn32.c
binfmt_elfo32.c MIPS: Remove old core dump functions 2014-08-02 00:06:37 +02:00
bmips_vec.S MIPS: BMIPS: Fix ".previous without corresponding .section" warnings 2014-11-24 07:44:05 +01:00
branch.c MIPS: Fix a typo: s/preset/present/ in r2-to-r6 emulation error message 2017-07-27 15:06:08 -07:00
cevt-bcm1480.c MIPS: cevt-bcm1480: Migrate to new 'set-state' interface 2015-09-03 12:07:51 +02:00
cevt-ds1287.c MIPS: cevt-ds1287: Migrate to new 'set-state' interface 2015-09-03 12:07:51 +02:00
cevt-gt641xx.c MIPS: cevt-gt641xx: Migrate to new 'set-state' interface 2015-09-03 12:07:51 +02:00
cevt-r4k.c MIPS: cevt-r4k: Migrate to new 'set-state' interface 2015-09-03 12:07:52 +02:00
cevt-sb1250.c MIPS: cevt-sb1250: Migrate to new 'set-state' interface 2015-09-03 12:07:52 +02:00
cevt-txx9.c MIPS: cevt-txx9: Migrate to new 'set-state' interface 2015-09-03 12:07:53 +02:00
cps-vec-ns16550.S MIPS: CPS: Early debug using an ns16550-compatible UART 2015-11-11 08:34:25 +01:00
cps-vec.S MIPS: CPS: drop .set mips64r2 directives 2015-12-22 12:16:32 +01:00
cpu-bugs64.c MIPS: kernel: cpu-bugs64: Do not check R6 cores for existing 64-bit bugs 2015-02-17 15:37:24 +00:00
cpu-probe.c MIPS: Extend hardware table walking support to MIPS64 2015-11-11 08:35:54 +01:00
crash.c MIPS: Fix crash registers on non-crashing CPUs 2017-05-02 21:19:49 -07:00
crash_dump.c mips: Convert pr_warning to pr_warn 2014-11-24 07:44:51 +01:00
csrc-bcm1480.c MIPS: csrc-bcm1480: Implement read_sched_clock 2015-04-01 17:21:27 +02:00
csrc-ioasic.c MIPS: csrc-ioasic: Implement read_sched_clock 2015-04-01 17:21:28 +02:00
csrc-r4k.c MIPS: Don't register r4k sched clock when CPUFREQ enabled 2016-08-20 18:09:26 +02:00
csrc-sb1250.c MIPS: csrc-sb1250: Implement read_sched_clock 2015-04-01 17:21:33 +02:00
early_printk.c
early_printk_8250.c
elf.c MIPS: Avoid BUG warning in arch_check_elf 2017-05-02 21:19:55 -07:00
entry.S MIPS: Fix IRQ tracing & lockdep when rescheduling 2017-07-05 14:37:15 +02:00
ftrace.c Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2014-08-07 08:47:00 -07:00
genex.S MIPS: IRQ Stack: Unwind IRQ stack onto task stack 2017-10-08 10:14:19 +02:00
gpio_txx9.c
head.S MIPS: Add support for vmlinux.bin appended dtb 2015-06-21 21:54:14 +02:00
i8253.c
idle.c Merge branch '4.3-fixes' into mips-for-linux-next 2015-11-12 11:36:03 +01:00
irq-gt641xx.c
irq-msc01.c MIPS: MSC: Prevent out-of-bounds writes to MIPS SC ioremap'd region 2014-06-26 10:48:23 +01:00
irq-rm7000.c
irq.c MIPS: Introduce irq_stack 2017-04-18 07:14:35 +02:00
irq_txx9.c
jump_label.c jump_label: Rename JUMP_LABEL_{EN,DIS}ABLE to JUMP_LABEL_{JMP,NOP} 2015-08-03 11:34:12 +02:00
kgdb.c MIPS: KGDB: Use kernel context for sleeping threads 2017-05-02 21:19:55 -07:00
kprobes.c mips: Replace __get_cpu_var uses 2014-08-26 13:45:51 -04:00
linux32.c
machine_kexec.c MIPS: kdump: Set correct value to kexec_indirection_page variable 2014-08-25 16:33:44 +02:00
Makefile MIPS: CPS: Early debug using an ns16550-compatible UART 2015-11-11 08:34:25 +01:00
mcount.S mips: ftrace: fix static function graph tracing 2018-07-03 11:21:28 +02:00
mips-cm.c MIPS: CM, CPC: Ensure core-other GCRs reflect the correct core 2015-11-11 08:35:18 +01:00
mips-cpc.c MIPS: CM, CPC: Ensure core-other GCRs reflect the correct core 2015-11-11 08:35:18 +01:00
mips-mt-fpaff.c MIPS: Fix sched_getaffinity with MT FPAFF enabled 2015-08-03 09:25:02 +02:00
mips-mt.c MIPS: MT: Remove SMTC support 2014-05-24 00:07:01 +02:00
mips-r2-to-r6-emul.c MIPS: r2-on-r6-emu: Clear BLTZALL and BGEZALL debugfs counters 2018-03-22 09:23:25 +01:00
mips_ksyms.c MIPS: uaccess: Take EVA into account in [__]clear_user 2015-12-22 11:58:43 +01:00
mips_machine.c
module-rela.c
module.c mm: vmalloc: pass additional vm_flags to __vmalloc_node_range() 2015-02-13 21:21:42 -08:00
octeon_switch.S MIPS: Fix octeon FP context switch handling 2015-10-02 19:16:06 +02:00
perf_event.c
perf_event_mipsxx.c MIPS: Add cases for CPU_I6400 2015-08-26 15:23:03 +02:00
pm-cps.c MIPS: pm-cps: Drop manual cache-line alignment of ready_count 2017-07-05 14:37:15 +02:00
pm.c MIPS: Fix watchpoint restoration 2016-06-07 18:14:30 -07:00
proc.c MIPS: Fix MIPS I ISA /proc/cpuinfo reporting 2017-07-27 15:06:07 -07:00
process.c kthread: fix boot hang (regression) on MIPS/OpenRISC 2018-09-19 22:48:55 +02:00
prom.c MIPS: Fix build with CONFIG_OF=y for non OF-enabled targets 2015-08-03 09:25:00 +02:00
ptrace.c MIPS: Correct the 64-bit DSP accumulator register size 2018-09-05 09:18:40 +02:00
ptrace32.c MIPS: Correct the 64-bit DSP accumulator register size 2018-09-05 09:18:40 +02:00
r4k_fpu.S MIPS: Use copy_s.fmt rather than copy_u.fmt 2016-06-07 18:14:31 -07:00
r4k_switch.S MIPS: Tidy up FPU context switching 2015-09-03 12:08:05 +02:00
r2300_fpu.S MIPS: Fix build with binutils 2.24.51+ 2014-11-07 15:07:36 +01:00
r2300_switch.S MIPS: Fix R2300 FP context switch handling 2015-10-02 19:16:46 +02:00
r6000_fpu.S MIPS: Fix build with binutils 2.24.51+ 2014-11-07 15:07:36 +01:00
relocate_kernel.S MIPS: Replace add and sub instructions in relocate_kernel.S with addiu 2015-08-03 15:26:30 +02:00
reset.c MIPS: Provide fallback reboot/poweroff/halt implementations 2015-04-01 17:21:58 +02:00
rtlx-cmp.c MIPS: APRP: Fix an issue when device_create() fails. 2014-08-01 17:30:35 +02:00
rtlx-mt.c MIPS: APRP: Fix an issue when device_create() fails. 2014-08-01 17:30:35 +02:00
rtlx.c MIPS: rtlx: Remove KERN_DEBUG from pr_debug() arguments in rtlx.c 2014-11-24 07:44:04 +01:00
scall32-o32.S MIPS: Save static registers before sysmips 2017-07-27 15:06:07 -07:00
scall64-64.S MIPS: Save static registers before sysmips 2017-07-27 15:06:07 -07:00
scall64-n32.S MIPS: Save static registers before sysmips 2017-07-27 15:06:07 -07:00
scall64-o32.S MIPS: Save static registers before sysmips 2017-07-27 15:06:07 -07:00
segment.c MIPS: Declare mips_debugfs_dir in a header 2015-10-26 09:49:42 +01:00
setup.c MIPS: init: Ensure reserved memory regions are not added to bootmem 2017-11-21 09:21:22 +01:00
signal-common.h MIPS: Save MSA extended context around signals 2015-09-03 12:07:59 +02:00
signal.c MIPS: Fix sigreturn via VDSO on microMIPS kernel 2016-06-07 18:14:31 -07:00
signal32.c MIPS: Initial implementation of a VDSO 2015-11-11 08:36:36 +01:00
signal_n32.c MIPS: Initial implementation of a VDSO 2015-11-11 08:36:36 +01:00
smp-bmips.c MIPS: BMIPS: Do not mask IPIs during suspend 2018-03-18 11:17:49 +01:00
smp-cmp.c mips: fix up obsolete cpu function usage. 2015-03-05 15:25:06 +10:30
smp-cps.c MIPS: CM: make use of mips_cm_{lock,unlock}_other 2015-11-11 08:35:17 +01:00
smp-gic.c MIPS: CM: make use of mips_cm_{lock,unlock}_other 2015-11-11 08:35:17 +01:00
smp-mt.c mips: fix up obsolete cpu function usage. 2015-03-05 15:25:06 +10:30
smp-up.c MIPS: SMP: Remove plat_smp_ops cpus_done method. 2014-05-27 11:06:42 +02:00
smp.c MIPS: SMP: Fix deadlock & online race 2017-11-15 17:13:12 +01:00
spinlock_test.c MIPS: Declare mips_debugfs_dir in a header 2015-10-26 09:49:42 +01:00
spram.c MIPS: Add cases for CPU_I6400 2015-08-26 15:23:03 +02:00
stacktrace.c MIPS: Add LATENCYTOP support 2015-11-11 08:36:46 +01:00
sync-r4k.c MIPS: MT: Remove SMTC support 2014-05-24 00:07:01 +02:00
syscall.c MIPS: Save static registers before sysmips 2017-07-27 15:06:07 -07:00
sysrq.c MIPS: Refactor dumping of TLB registers for r3k/r4k 2015-09-03 12:07:45 +02:00
time.c MIPS: MT: Remove SMTC support 2014-05-24 00:07:01 +02:00
topology.c
traps.c MIPS: Call dump_stack() from show_regs() 2018-07-22 14:25:53 +02:00
unaligned.c MIPS: Fix MSA ld unaligned failure cases 2016-04-20 15:42:08 +09:00
uprobes.c MIPS: uprobes: fix use of uninitialised variable 2016-10-07 15:23:43 +02:00
vdso.c MIPS: vDSO: Fix Malta EVA mapping to vDSO page structs 2016-09-30 10:18:38 +02:00
vmlinux.lds.S MIPS: Ensure bss section ends on a long-aligned address 2017-10-08 10:14:16 +02:00
vpe-cmp.c
vpe-mt.c MIPS: MT: Remove SMTC support 2014-05-24 00:07:01 +02:00
vpe.c MIPS: MT: Remove "weak" from vpe_run() declaration 2015-08-26 15:23:40 +02:00
watch.c MIPS: Fix watchpoint restoration 2016-06-07 18:14:30 -07:00