lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 5 Jun 2015 17:01:07 +0200 From: Petr Mladek <pmladek@...e.cz> To: Andrew Morton <akpm@...ux-foundation.org>, Oleg Nesterov <oleg@...hat.com>, Tejun Heo <tj@...nel.org>, Ingo Molnar <mingo@...hat.com>, Peter Zijlstra <peterz@...radead.org> Cc: Richard Weinberger <richard@....at>, Steven Rostedt <rostedt@...dmis.org>, David Woodhouse <dwmw2@...radead.org>, linux-mtd@...ts.infradead.org, Trond Myklebust <trond.myklebust@...marydata.com>, Anna Schumaker <anna.schumaker@...app.com>, linux-nfs@...r.kernel.org, Chris Mason <clm@...com>, "Paul E. McKenney" <paulmck@...ux.vnet.ibm.com>, Thomas Gleixner <tglx@...utronix.de>, Linus Torvalds <torvalds@...ux-foundation.org>, Jiri Kosina <jkosina@...e.cz>, Borislav Petkov <bp@...e.de>, Michal Hocko <mhocko@...e.cz>, live-patching@...r.kernel.org, linux-api@...r.kernel.org, linux-kernel@...r.kernel.org, Petr Mladek <pmladek@...e.cz> Subject: [RFC PATCH 08/18] kthread: Allow to get struct kthread_iterant from task_struct It is easy to make a mistake when one implements sleeping between kthread iterations. We will want to do it a more uniform way. For this we will want to set some flags in struct kthread_iterant from the current task (kthread). This patch adds the basic infrastructure to make it possible. Signed-off-by: Petr Mladek <pmladek@...e.cz> --- kernel/kthread.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/kernel/kthread.c b/kernel/kthread.c index e34f67cb8ecf..41fb6a43a1f1 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c @@ -44,6 +44,7 @@ struct kthread { void *data; struct completion parked; struct completion exited; + struct kthread_iterant *kti; }; enum KTHREAD_BITS { @@ -69,6 +70,11 @@ static struct kthread *to_live_kthread(struct task_struct *k) return NULL; } +static struct kthread_iterant *to_kthread_iterant(struct task_struct *k) +{ + return __to_kthread(k->vfork_done)->kti; +} + /** * kthread_stop_current - make the current kthread to terminate a safe way * @@ -199,6 +205,7 @@ static int kthread(void *_create) self.data = data; init_completion(&self.exited); init_completion(&self.parked); + self.kti = NULL; current->vfork_done = &self.exited; /* If user was SIGKILLed, I release the structure. */ @@ -421,9 +428,12 @@ struct task_struct *kthread_create_on_cpu(int (*threadfn)(void *data), */ static int kthread_iterant_fn(void *kti_ptr) { + struct kthread *kt = to_kthread(current); struct kthread_iterant *kti = kti_ptr; void *data = kti->data; + kt->kti = kti; + set_freezable(); if (kti->init) -- 1.8.5.6 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists