|
@@ -689,12 +689,6 @@ static int count_semzcnt (struct sem_array * sma, ushort semnum)
|
|
|
return semzcnt;
|
|
|
}
|
|
|
|
|
|
-static void free_un(struct rcu_head *head)
|
|
|
-{
|
|
|
- struct sem_undo *un = container_of(head, struct sem_undo, rcu);
|
|
|
- kfree(un);
|
|
|
-}
|
|
|
-
|
|
|
/* Free a semaphore set. freeary() is called with sem_ids.rw_mutex locked
|
|
|
* as a writer and the spinlock for this semaphore set hold. sem_ids.rw_mutex
|
|
|
* remains locked on exit.
|
|
@@ -714,7 +708,7 @@ static void freeary(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp)
|
|
|
un->semid = -1;
|
|
|
list_del_rcu(&un->list_proc);
|
|
|
spin_unlock(&un->ulp->lock);
|
|
|
- call_rcu(&un->rcu, free_un);
|
|
|
+ kfree_rcu(un, rcu);
|
|
|
}
|
|
|
|
|
|
/* Wake up all pending processes and let them fail with EIDRM. */
|
|
@@ -1612,7 +1606,7 @@ void exit_sem(struct task_struct *tsk)
|
|
|
sem_unlock(sma);
|
|
|
wake_up_sem_queue_do(&tasks);
|
|
|
|
|
|
- call_rcu(&un->rcu, free_un);
|
|
|
+ kfree_rcu(un, rcu);
|
|
|
}
|
|
|
kfree(ulp);
|
|
|
}
|