Code Review
/
kvmfornfv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Revert "Revert "[Fuel-plugin] Install kernel in post-deployment.""
[kvmfornfv.git]
/
kernel
/
ipc
/
sem.c
diff --git
a/kernel/ipc/sem.c
b/kernel/ipc/sem.c
index
d6261be
..
dc67f53
100644
(file)
--- a/
kernel/ipc/sem.c
+++ b/
kernel/ipc/sem.c
@@
-401,7
+401,7
@@
static inline struct sem_array *sem_obtain_lock(struct ipc_namespace *ns,
struct kern_ipc_perm *ipcp;
struct sem_array *sma;
struct kern_ipc_perm *ipcp;
struct sem_array *sma;
- ipcp = ipc_obtain_object(&sem_ids(ns), id);
+ ipcp = ipc_obtain_object
_idr
(&sem_ids(ns), id);
if (IS_ERR(ipcp))
return ERR_CAST(ipcp);
if (IS_ERR(ipcp))
return ERR_CAST(ipcp);
@@
-420,7
+420,7
@@
static inline struct sem_array *sem_obtain_lock(struct ipc_namespace *ns,
static inline struct sem_array *sem_obtain_object(struct ipc_namespace *ns, int id)
{
static inline struct sem_array *sem_obtain_object(struct ipc_namespace *ns, int id)
{
- struct kern_ipc_perm *ipcp = ipc_obtain_object(&sem_ids(ns), id);
+ struct kern_ipc_perm *ipcp = ipc_obtain_object
_idr
(&sem_ids(ns), id);
if (IS_ERR(ipcp))
return ERR_CAST(ipcp);
if (IS_ERR(ipcp))
return ERR_CAST(ipcp);
@@
-2143,9
+2143,11
@@
void exit_sem(struct task_struct *tsk)
ipc_assert_locked_object(&sma->sem_perm);
list_del(&un->list_id);
ipc_assert_locked_object(&sma->sem_perm);
list_del(&un->list_id);
- spin_lock(&ulp->lock);
+ /* we are the last process using this ulp, acquiring ulp->lock
+ * isn't required. Besides that, we are also protected against
+ * IPC_RMID as we hold sma->sem_perm lock now
+ */
list_del_rcu(&un->list_proc);
list_del_rcu(&un->list_proc);
- spin_unlock(&ulp->lock);
/* perform adjustments registered in un */
for (i = 0; i < sma->sem_nsems; i++) {
/* perform adjustments registered in un */
for (i = 0; i < sma->sem_nsems; i++) {