diff options
| author | David S. Miller <davem@nuts.ninka.net> | 2003-08-20 20:47:23 -0700 |
|---|---|---|
| committer | David S. Miller <davem@nuts.ninka.net> | 2003-08-20 20:47:23 -0700 |
| commit | 658dcd3b0d4340b434353cb8a2b4125bfabb923d (patch) | |
| tree | 3cfecdde3caab3ae145587a24be28d4ebafb2736 /kernel | |
| parent | 5f6e4c742685e7c32dcc3ce3e28c87a9a8741029 (diff) | |
| parent | be974925bc048c419f66e49b3744d98208e54831 (diff) | |
Merge nuts.ninka.net:/home/davem/src/BK/network-2.5
into nuts.ninka.net:/home/davem/src/BK/net-2.5
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/fork.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index b65c19fe2dce..690b8d77a04b 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -398,6 +398,23 @@ void mmput(struct mm_struct *mm) } } +/* + * Checks if the use count of an mm is non-zero and if so + * returns a reference to it after bumping up the use count. + * If the use count is zero, it means this mm is going away, + * so return NULL. + */ +struct mm_struct *mmgrab(struct mm_struct *mm) +{ + spin_lock(&mmlist_lock); + if (!atomic_read(&mm->mm_users)) + mm = NULL; + else + atomic_inc(&mm->mm_users); + spin_unlock(&mmlist_lock); + return mm; +} + /* Please note the differences between mmput and mm_release. * mmput is called whenever we stop holding onto a mm_struct, * error success whatever. |
