From patchwork Wed Aug 14 10:41:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Rutland X-Patchwork-Id: 171256 Delivered-To: patch@linaro.org Received: by 2002:a92:d204:0:0:0:0:0 with SMTP id y4csp645337ily; Wed, 14 Aug 2019 03:41:41 -0700 (PDT) X-Google-Smtp-Source: APXvYqxdrR8fxDsE1cR0hfaQFm4k7qOcnF0I3TGjhsW2jO9eBzsMcB6Am4gX4S/avG0iizo1L9yi X-Received: by 2002:a17:902:9a95:: with SMTP id w21mr41376767plp.126.1565779301648; Wed, 14 Aug 2019 03:41:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565779301; cv=none; d=google.com; s=arc-20160816; b=oJIO8ftOUsUtKvBhWm/0i8L/DuvWoHoc9EK2dpaaKb5Mgrry5DqYmsIUWfA4m0dOAO Ku+Ra5/vpyzIHdYZFtr5XcTMxa41BOSBD4vqSrFdJ5pvaWykKdIy0t47dqxSN/oJtCth AxC66Say8UhhAabbQ7kQpVxFr7KjXi8jYo8GNjGzds4Vo3SvDqtGk6BsohG/FPfg/6w/ t2mvBfIdQ3kWI4yNhDwYpRBYxLIVeK2ZRlP8XQ0N6JtLXI0IUGStCDbkMYYRJV7ub04D PA7OqEiVjlujtf+61QPy38JBw5bTVMmLW8I2H81TRqxcBx06BiLh4CXq17SjMdZFdAqE f+yQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=KoQWFgfZoV6pQc65P8Jc2d4HXPp/vNzSoOevQ+KPcng=; b=V82+2LXy3AAYl13tM9Lebzv/FWxaptmyC4DltYF58bAW4p1RFdUvbdoGywyinbnzcJ j3suyFRSW6wzLJld4HZZ/TfCZKGpkj/OiYcp+LW19sS+CoNhNPpFUjZepI3Q6FlIFh71 3wRAIea/e1r1F+5XNpAQAMKnuc4F7dhZ38d70qgv0pEBl5CTMyjdyEDN0xJ8eQtPSt2+ w9JnMybCbURgB+1fWu06xioCscNps0Ua5BwDRQQESy5W7zeSaRg+ilxdQhGI9zf0miNX jYWYgtG0EurskiSXJyfpA9iafWSBTKo3L07lkWFeHstU/nRf3597g8KNrDoqSvv6tci2 eAmw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k133si63889896pgc.425.2019.08.14.03.41.41; Wed, 14 Aug 2019 03:41:41 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726770AbfHNKlj (ORCPT + 28 others); Wed, 14 Aug 2019 06:41:39 -0400 Received: from foss.arm.com ([217.140.110.172]:51806 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726230AbfHNKlj (ORCPT ); Wed, 14 Aug 2019 06:41:39 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id CC16A28; Wed, 14 Aug 2019 03:41:38 -0700 (PDT) Received: from lakrids.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 0BE723F706; Wed, 14 Aug 2019 03:41:36 -0700 (PDT) From: Mark Rutland To: linux-kernel@vger.kernel.org Cc: ak@linux.intel.com, akpm@linux-foundation.org, bigeasy@linutronix.de, bp@suse.de, catalin.marinas@arm.com, davem@davemloft.net, hch@lst.de, kan.liang@intel.com, mark.rutland@arm.com, mingo@kernel.org, peterz@infradead.org, riel@surriel.com, will@kernel.org Subject: [PATCH 0/9] kthread detection cleanup Date: Wed, 14 Aug 2019 11:41:22 +0100 Message-Id: <20190814104131.20190-1-mark.rutland@arm.com> X-Mailer: git-send-email 2.11.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A reasonable amount of kernel code looks at task_struct::mm to determine whether a thread is a kthread or a real user task. This isn't quite right, since kthreads can have a non-NULL mm when calling use_mm(). The correct way to check whether a task is a kthread is to check whether PF_KTHREAD is set in task_struct::flags, but doing so is a bit unwieldy. To make this a bit nicer, this series adds a new is_kthread(tsk) helper, converts existing code to make use of it, and fixes up a number of erroneous checks of current->mm. Hopefully this will push people to use the right approach in future. I'm sure there are other instances in the kernel tree where we don't check this correctly. In this series I'm just trying to fix the instances I'm reasonably confident are incorrect. This series is based on v5.3-rc3, and I've pushed it out to my sched/kthread-cleanup branch on kernel.org [1,2]. Thanks, Mark. [1] git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git sched/kthread-cleanup [2] https://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git/log/?h=sched/kthread-cleanup Mark Rutland (9): sched/core: add is_kthread() helper sched: treewide: use is_kthread() kmemleak: correctly check for kthreads arm/perf: correctly check for kthreads arm64: correctly check for ktrheads sparc/perf: correctly check for kthreads x86/lbr: correctly check for kthreads x86/fpu: correctly check for kthreads samples/kretprobe: correctly check for kthreads arch/alpha/kernel/process.c | 2 +- arch/arc/kernel/process.c | 2 +- arch/arm/kernel/perf_callchain.c | 2 +- arch/arm/kernel/process.c | 2 +- arch/arm/mm/init.c | 2 +- arch/arm64/kernel/process.c | 6 +++--- arch/c6x/kernel/process.c | 2 +- arch/csky/kernel/process.c | 2 +- arch/h8300/kernel/process.c | 2 +- arch/hexagon/kernel/process.c | 2 +- arch/ia64/kernel/process.c | 2 +- arch/m68k/kernel/process.c | 2 +- arch/microblaze/kernel/process.c | 2 +- arch/mips/kernel/process.c | 4 ++-- arch/nds32/kernel/process.c | 4 ++-- arch/nios2/kernel/process.c | 2 +- arch/openrisc/kernel/process.c | 2 +- arch/parisc/kernel/process.c | 2 +- arch/powerpc/kernel/process.c | 2 +- arch/riscv/kernel/process.c | 2 +- arch/s390/kernel/process.c | 2 +- arch/sh/kernel/process_32.c | 2 +- arch/sh/kernel/process_64.c | 2 +- arch/sparc/kernel/perf_event.c | 2 +- arch/sparc/kernel/process_32.c | 2 +- arch/sparc/kernel/process_64.c | 2 +- arch/um/kernel/process.c | 2 +- arch/unicore32/kernel/process.c | 2 +- arch/x86/events/intel/lbr.c | 2 +- arch/x86/include/asm/fpu/internal.h | 2 +- arch/x86/kernel/fpu/core.c | 2 +- arch/x86/kernel/process_32.c | 2 +- arch/x86/kernel/process_64.c | 2 +- arch/xtensa/kernel/process.c | 2 +- block/blk-cgroup.c | 2 +- drivers/tty/sysrq.c | 2 +- fs/coredump.c | 2 +- fs/file_table.c | 4 ++-- fs/namespace.c | 2 +- fs/proc/base.c | 4 ++-- include/linux/cgroup.h | 2 +- include/linux/sched.h | 13 ++++++++++++- kernel/cgroup/freezer.c | 4 ++-- kernel/events/core.c | 2 +- kernel/exit.c | 2 +- kernel/fork.c | 6 +++--- kernel/freezer.c | 4 ++-- kernel/futex.c | 2 +- kernel/kthread.c | 6 +++--- kernel/livepatch/transition.c | 2 +- kernel/ptrace.c | 2 +- kernel/sched/core.c | 8 ++++---- kernel/sched/idle.c | 2 +- kernel/sched/wait.c | 2 +- kernel/signal.c | 2 +- kernel/stacktrace.c | 2 +- lib/is_single_threaded.c | 2 +- mm/kmemleak.c | 6 +++--- mm/memcontrol.c | 2 +- mm/oom_kill.c | 4 ++-- mm/page_alloc.c | 2 +- mm/vmacache.c | 2 +- mm/vmscan.c | 2 +- samples/kprobes/kretprobe_example.c | 2 +- security/smack/smack_access.c | 2 +- security/smack/smack_lsm.c | 4 ++-- security/yama/yama_lsm.c | 2 +- 67 files changed, 97 insertions(+), 86 deletions(-) -- 2.11.0