From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932281AbdKCRFS (ORCPT ); Fri, 3 Nov 2017 13:05:18 -0400 Received: from mail-il-dmz.mellanox.com ([193.47.165.129]:56184 "EHLO mellanox.co.il" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756224AbdKCRFK (ORCPT ); Fri, 3 Nov 2017 13:05:10 -0400 From: Chris Metcalf To: Davidlohr Bueso , Oleg Nesterov , Steven Rostedt , Ingo Molnar , Peter Zijlstra , Andrew Morton , Rik van Riel , Tejun Heo , Frederic Weisbecker , Thomas Gleixner , "Paul E. McKenney" , Christoph Lameter , Viresh Kumar , Catalin Marinas , Will Deacon , Andy Lutomirski , Michal Hocko , linux-kernel@vger.kernel.org Cc: Chris Metcalf Subject: [PATCH v16 03/13] Revert "sched/core: Drop the unused try_get_task_struct() helper function" Date: Fri, 3 Nov 2017 13:04:42 -0400 Message-Id: <1509728692-10460-4-git-send-email-cmetcalf@mellanox.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: <1509728692-10460-1-git-send-email-cmetcalf@mellanox.com> References: <1509728692-10460-1-git-send-email-cmetcalf@mellanox.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This reverts commit f11cc0760b8397e0d230122606421b6a96e9f869. We do need this function for try_get_task_struct_on_cpu(). Signed-off-by: Chris Metcalf --- include/linux/sched/task.h | 2 ++ kernel/exit.c | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/include/linux/sched/task.h b/include/linux/sched/task.h index 79a2a744648d..270ff76d43d9 100644 --- a/include/linux/sched/task.h +++ b/include/linux/sched/task.h @@ -96,6 +96,8 @@ static inline void put_task_struct(struct task_struct *t) } struct task_struct *task_rcu_dereference(struct task_struct **ptask); +struct task_struct *try_get_task_struct(struct task_struct **ptask); + #ifdef CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT extern int arch_task_struct_size __read_mostly; diff --git a/kernel/exit.c b/kernel/exit.c index f2cd53e92147..e2a3e7458d0f 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -318,6 +318,19 @@ void rcuwait_wake_up(struct rcuwait *w) rcu_read_unlock(); } +struct task_struct *try_get_task_struct(struct task_struct **ptask) +{ + struct task_struct *task; + + rcu_read_lock(); + task = task_rcu_dereference(ptask); + if (task) + get_task_struct(task); + rcu_read_unlock(); + + return task; +} + /* * Determine if a process group is "orphaned", according to the POSIX * definition in 2.2.2.52. Orphaned process groups are not to be affected -- 2.1.2