mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
kernel: better document the use_mm/unuse_mm API contract
Switch the function documentation to kerneldoc comments, and add WARN_ON_ONCE asserts that the calling thread is a kernel thread and does not have ->mm set (or has ->mm set in the case of unuse_mm). Also give the functions a kthread_ prefix to better document the use case. [hch@lst.de: fix a comment typo, cover the newly merged use_mm/unuse_mm caller in vfio] Link: http://lkml.kernel.org/r/20200416053158.586887-3-hch@lst.de [sfr@canb.auug.org.au: powerpc/vas: fix up for {un}use_mm() rename] Link: http://lkml.kernel.org/r/20200422163935.5aa93ba5@canb.auug.org.au Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Tested-by: Jens Axboe <axboe@kernel.dk> Reviewed-by: Jens Axboe <axboe@kernel.dk> Acked-by: Felix Kuehling <Felix.Kuehling@amd.com> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> [usb] Acked-by: Haren Myneni <haren@linux.ibm.com> Cc: Alex Deucher <alexander.deucher@amd.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Felipe Balbi <balbi@kernel.org> Cc: Jason Wang <jasowang@redhat.com> Cc: "Michael S. Tsirkin" <mst@redhat.com> Cc: Zhenyu Wang <zhenyuw@linux.intel.com> Cc: Zhi Wang <zhi.a.wang@intel.com> Link: http://lkml.kernel.org/r/20200404094101.672954-6-hch@lst.de Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
4dbe59a6ae
commit
f5678e7f2a
12 changed files with 40 additions and 41 deletions
|
@ -1208,18 +1208,18 @@ void kthread_destroy_worker(struct kthread_worker *worker)
|
|||
}
|
||||
EXPORT_SYMBOL(kthread_destroy_worker);
|
||||
|
||||
/*
|
||||
* use_mm
|
||||
* Makes the calling kernel thread take on the specified
|
||||
* mm context.
|
||||
* (Note: this routine is intended to be called only
|
||||
* from a kernel thread context)
|
||||
/**
|
||||
* kthread_use_mm - make the calling kthread operate on an address space
|
||||
* @mm: address space to operate on
|
||||
*/
|
||||
void use_mm(struct mm_struct *mm)
|
||||
void kthread_use_mm(struct mm_struct *mm)
|
||||
{
|
||||
struct mm_struct *active_mm;
|
||||
struct task_struct *tsk = current;
|
||||
|
||||
WARN_ON_ONCE(!(tsk->flags & PF_KTHREAD));
|
||||
WARN_ON_ONCE(tsk->mm);
|
||||
|
||||
task_lock(tsk);
|
||||
active_mm = tsk->active_mm;
|
||||
if (active_mm != mm) {
|
||||
|
@ -1236,20 +1236,19 @@ void use_mm(struct mm_struct *mm)
|
|||
if (active_mm != mm)
|
||||
mmdrop(active_mm);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(use_mm);
|
||||
EXPORT_SYMBOL_GPL(kthread_use_mm);
|
||||
|
||||
/*
|
||||
* unuse_mm
|
||||
* Reverses the effect of use_mm, i.e. releases the
|
||||
* specified mm context which was earlier taken on
|
||||
* by the calling kernel thread
|
||||
* (Note: this routine is intended to be called only
|
||||
* from a kernel thread context)
|
||||
/**
|
||||
* kthread_unuse_mm - reverse the effect of kthread_use_mm()
|
||||
* @mm: address space to operate on
|
||||
*/
|
||||
void unuse_mm(struct mm_struct *mm)
|
||||
void kthread_unuse_mm(struct mm_struct *mm)
|
||||
{
|
||||
struct task_struct *tsk = current;
|
||||
|
||||
WARN_ON_ONCE(!(tsk->flags & PF_KTHREAD));
|
||||
WARN_ON_ONCE(!tsk->mm);
|
||||
|
||||
task_lock(tsk);
|
||||
sync_mm_rss(mm);
|
||||
tsk->mm = NULL;
|
||||
|
@ -1257,7 +1256,7 @@ void unuse_mm(struct mm_struct *mm)
|
|||
enter_lazy_tlb(mm, tsk);
|
||||
task_unlock(tsk);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(unuse_mm);
|
||||
EXPORT_SYMBOL_GPL(kthread_unuse_mm);
|
||||
|
||||
#ifdef CONFIG_BLK_CGROUP
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue