From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751729AbdJRUdh (ORCPT ); Wed, 18 Oct 2017 16:33:37 -0400 Received: from mailout3.samsung.com ([203.254.224.33]:13934 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751929AbdJRUdb (ORCPT ); Wed, 18 Oct 2017 16:33:31 -0400 X-AuditID: b6c32a48-c27ff70000001005-f0-59e7ba99c7f0 From: Krzysztof Opasiak To: gregkh@linuxfoundation.org, viro@zeniv.linux.org.uk, arnd@arndb.de Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-arch@vger.kernel.org, k.lewandowsk@samsung.com, l.stelmach@samsung.com, p.szewczyk@samsung.com, b.zolnierkie@samsung.com, andrzej.p@samsung.com, kopasiak90@gmail.com, Krzysztof Opasiak Subject: [PATCH 1/4][PoC][RFC] sched: Allow to get() and put() signal struct Date: Wed, 18 Oct 2017 22:32:27 +0200 Message-id: <20171018203230.29871-2-k.opasiak@samsung.com> X-Mailer: git-send-email 2.9.3 In-reply-to: <20171018203230.29871-1-k.opasiak@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrKIsWRmVeSWpSXmKPExsWy7bCmue7MXc8jDX4c47OY9bKdxeLvpGPs FhtnrGe1aF68ns2i8dNcZovbE6exWTw7nWdx89AKRouOXV9ZLPbsPclicXnXHDaLX/OBus7/ Pc7qwOvx+9ckRo+ds+6ye+yfu4bdo2/LKkaPz5vkPDY9ecsUwBbFZZOSmpNZllqkb5fAlTGz dwNrwWS+ivW377E3MP7l7mLk5JAQMJGYcvYSaxcjF4eQwA5Gif3NrcwQzndGiYbWuywwVY+7 lzOD2EICu4ESHXYQRb8YJT7u7AYq4uBgE9CXmLdLFKRGRMBNYs2F90wgNcwC85kkZracZAJJ CAv4SNzft5IdxGYRUJWYtHAa2AJeASuJ9pWHoJbJSVza9gVsGaeAtcSpuVPABkkIHGCTWPa4 F6rIReLJ/LPMELawxKvjW9ghbGmJZ6s2MkI0rGOUuLD1ARtEAujslqfRELa1xJ9VE8HizAJ8 Eh2H/7KDfCAhwCvR0SYEUeIhsfXVLBaIsKPE/ZlJEA/3MUqs7ZrJNoFRagEjwypGsdSC4tz0 1GKjAhO94sTc4tK8dL3k/NxNjODI1vLYwXjgnM8hRgEORiUe3gXTnkcKsSaWFVfmHmKU4GBW EuHV3goU4k1JrKxKLcqPLyrNSS0+xCjNwaIkzlu37VqEkEB6YklqdmpqQWoRTJaJg1OqgVE6 XuMycwnzUuHIXg/TWWdj18+VXH+4ddfejfaXJMIiK3c8mNujHsqZFqS46+zSe6XNXv+C3r9m OvTvisitb+8Oz+QsZNHWMhfIWvEqc/Kjtj0Jz27m3O6bmffRQvvmZVvGS6FLb9++z/L8Jeej s5pSvfGlUlc+HjzPVxgryWRuk1cmWvWo464SS3FGoqEWc1FxIgDH2alo6AIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrHLMWRmVeSWpSXmKPExsVy+t9jAd0Zu55HGpyZrWox62U7i8XfScfY LTbOWM9q0bx4PZtF46e5zBa3J05js3h2Os/i5qEVjBYdu76yWOzZe5LF4vKuOWwWv+YDdZ3/ e5zVgdfj969JjB47Z91l99g/dw27R9+WVYwenzfJeWx68pYpgC2KyyYlNSezLLVI3y6BK2Nm 7wbWgsl8Fetv32NvYPzL3cXIySEhYCLxuHs5cxcjF4eQwE5Gie9vZjFBOL8YJbY1dgA5HBxs AvoS83aJgjSICLhJrLnwHqyGWWAuk0RH2wEWkISwgI/E/X0r2UFsFgFViUkLp4HFeQWsJNpX HmKB2CYncWnbF2YQm1PAWuLU3ClMILYQUM2LDbsZJzDyLGBkWMUomVpQnJueW2xUYJSXWq5X nJhbXJqXrpecn7uJERiK2w5r9e9gfLwk/hCjAAejEg+vx5TnkUKsiWXFlbmHGCU4mJVEeLW3 AoV4UxIrq1KL8uOLSnNSiw8xSnOwKInz8ucfixQSSE8sSc1OTS1ILYLJMnFwSjUwnvrFv/CH r9m2xQduWv3syTryno9vfui23gOW53V0Xyxqlp8381TNJOugr8+OhbctvMPQo/hh6f5j+4tm pC/37MhqlQrYxr7Yao/rt8za824uhclfcv9M2pK8vnYj14+HjYu/XNgvafLdr8jw5vLFH6Qf uNcmSPyw2L6owvjBsWcbteQeCm0xClNiKc5INNRiLipOBAAKp3t7QQIAAA== X-CMS-MailID: 20171018203328epcas2p4bdcc3650d1c0f0add143488792243932 X-Msg-Generator: CA X-Sender-IP: 182.195.42.143 X-Local-Sender: =?UTF-8?B?S3J6eXN6dG9mIE9wYXNpYWsbU1JQT0wtU3lzdGVtIChUUCkb?= =?UTF-8?B?7IK87ISx7KCE7J6QG1NvZnR3YXJlIEVuZ2luZWVyIC8gRXhwZXJ0IFByb2dy?= =?UTF-8?B?YW1tZXI=?= X-Global-Sender: =?UTF-8?B?S3J6eXN6dG9mIE9wYXNpYWsbU1JQT0wtU3lzdGVtIChUUCkb?= =?UTF-8?B?U2Ftc3VuZ8KgRWxlY3Ryb25pY3MbU29mdHdhcmUgRW5naW5lZXIgLyBFeHBl?= =?UTF-8?B?cnQgUHJvZ3JhbW1lcg==?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDAyQ0QwMjczOTY=?= CMS-TYPE: 102P X-CMS-RootMailID: 20171018203328epcas2p4bdcc3650d1c0f0add143488792243932 X-RootMTR: 20171018203328epcas2p4bdcc3650d1c0f0add143488792243932 References: <20171018203230.29871-1-k.opasiak@samsung.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Allow to get() and put() signal struct from different parts of kernel core, not only from signal.c. Signed-off-by: Krzysztof Opasiak --- include/linux/sched/signal.h | 13 +++++++++++++ kernel/fork.c | 9 ++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h index c06d63b3a583..05cef037fbf2 100644 --- a/include/linux/sched/signal.h +++ b/include/linux/sched/signal.h @@ -609,4 +609,17 @@ static inline unsigned long rlimit_max(unsigned int limit) return task_rlimit_max(current, limit); } +void free_signal_struct(struct signal_struct *sig); + +static inline void put_signal_struct(struct signal_struct *sig) +{ + if (atomic_dec_and_test(&sig->sigcnt)) + free_signal_struct(sig); +} + +static inline void get_signal_struct(struct signal_struct *sig) +{ + atomic_inc(&sig->sigcnt); +} + #endif /* _LINUX_SCHED_SIGNAL_H */ diff --git a/kernel/fork.c b/kernel/fork.c index e53770d2bf95..a98336d154b6 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -390,7 +390,7 @@ void free_task(struct task_struct *tsk) } EXPORT_SYMBOL(free_task); -static inline void free_signal_struct(struct signal_struct *sig) +void free_signal_struct(struct signal_struct *sig) { taskstats_tgid_free(sig); sched_autogroup_exit(sig); @@ -402,12 +402,7 @@ static inline void free_signal_struct(struct signal_struct *sig) mmdrop_async(sig->oom_mm); kmem_cache_free(signal_cachep, sig); } - -static inline void put_signal_struct(struct signal_struct *sig) -{ - if (atomic_dec_and_test(&sig->sigcnt)) - free_signal_struct(sig); -} +EXPORT_SYMBOL_GPL(free_signal_struct); void __put_task_struct(struct task_struct *tsk) { -- 2.9.3