19
19
static int proc_ipc_dointvec_minmax_orphans (struct ctl_table * table , int write ,
20
20
void * buffer , size_t * lenp , loff_t * ppos )
21
21
{
22
- struct ipc_namespace * ns = table -> extra1 ;
23
- struct ctl_table ipc_table ;
22
+ struct ipc_namespace * ns =
23
+ container_of ( table -> data , struct ipc_namespace , shm_rmid_forced ) ;
24
24
int err ;
25
25
26
- memcpy (& ipc_table , table , sizeof (ipc_table ));
27
-
28
- ipc_table .extra1 = SYSCTL_ZERO ;
29
- ipc_table .extra2 = SYSCTL_ONE ;
30
-
31
- err = proc_dointvec_minmax (& ipc_table , write , buffer , lenp , ppos );
26
+ err = proc_dointvec_minmax (table , write , buffer , lenp , ppos );
32
27
33
28
if (err < 0 )
34
29
return err ;
@@ -55,15 +50,10 @@ static int proc_ipc_auto_msgmni(struct ctl_table *table, int write,
55
50
static int proc_ipc_sem_dointvec (struct ctl_table * table , int write ,
56
51
void * buffer , size_t * lenp , loff_t * ppos )
57
52
{
58
- struct ipc_namespace * ns = table -> extra1 ;
59
- struct ctl_table ipc_table ;
53
+ struct ipc_namespace * ns =
54
+ container_of ( table -> data , struct ipc_namespace , sem_ctls ) ;
60
55
int ret , semmni ;
61
56
62
- memcpy (& ipc_table , table , sizeof (ipc_table ));
63
-
64
- ipc_table .extra1 = NULL ;
65
- ipc_table .extra2 = NULL ;
66
-
67
57
semmni = ns -> sem_ctls [3 ];
68
58
ret = proc_dointvec (table , write , buffer , lenp , ppos );
69
59
@@ -131,6 +121,8 @@ static struct ctl_table ipc_sysctls[] = {
131
121
.maxlen = sizeof (init_ipc_ns .shm_rmid_forced ),
132
122
.mode = 0644 ,
133
123
.proc_handler = proc_ipc_dointvec_minmax_orphans ,
124
+ .extra1 = SYSCTL_ZERO ,
125
+ .extra2 = SYSCTL_ONE ,
134
126
},
135
127
{
136
128
.procname = "msgmax" ,
@@ -237,7 +229,6 @@ bool setup_ipc_sysctls(struct ipc_namespace *ns)
237
229
238
230
} else if (tbl [i ].data == & init_ipc_ns .shm_rmid_forced ) {
239
231
tbl [i ].data = & ns -> shm_rmid_forced ;
240
- tbl [i ].extra1 = ns ;
241
232
242
233
} else if (tbl [i ].data == & init_ipc_ns .msg_ctlmax ) {
243
234
tbl [i ].data = & ns -> msg_ctlmax ;
@@ -250,7 +241,6 @@ bool setup_ipc_sysctls(struct ipc_namespace *ns)
250
241
251
242
} else if (tbl [i ].data == & init_ipc_ns .sem_ctls ) {
252
243
tbl [i ].data = & ns -> sem_ctls ;
253
- tbl [i ].extra1 = ns ;
254
244
#ifdef CONFIG_CHECKPOINT_RESTORE
255
245
} else if (tbl [i ].data == & init_ipc_ns .ids [IPC_SEM_IDS ].next_id ) {
256
246
tbl [i ].data = & ns -> ids [IPC_SEM_IDS ].next_id ;
0 commit comments