|
@@ -548,7 +548,6 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
|
|
|
size_t numpages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
|
|
|
struct file *file;
|
|
|
char name[13];
|
|
|
- int id;
|
|
|
vm_flags_t acctflag = 0;
|
|
|
|
|
|
if (size < SHMMIN || size > ns->shm_ctlmax)
|
|
@@ -617,11 +616,9 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
|
|
|
shp->shm_file = file;
|
|
|
shp->shm_creator = current;
|
|
|
|
|
|
- id = ipc_addid(&shm_ids(ns), &shp->shm_perm, ns->shm_ctlmni);
|
|
|
- if (id < 0) {
|
|
|
- error = id;
|
|
|
+ error = ipc_addid(&shm_ids(ns), &shp->shm_perm, ns->shm_ctlmni);
|
|
|
+ if (error < 0)
|
|
|
goto no_id;
|
|
|
- }
|
|
|
|
|
|
list_add(&shp->shm_clist, ¤t->sysvshm.shm_clist);
|
|
|
|
|
@@ -643,7 +640,7 @@ no_id:
|
|
|
user_shm_unlock(size, shp->mlock_user);
|
|
|
fput(file);
|
|
|
no_file:
|
|
|
- ipc_rcu_putref(&shp->shm_perm, shm_rcu_free);
|
|
|
+ call_rcu(&shp->shm_perm.rcu, shm_rcu_free);
|
|
|
return error;
|
|
|
}
|
|
|
|