@@ -1156,18 +1156,20 @@ static int switch_promisc(int newpromisc)
1156
1156
#define BEFORE2632 (x ,y )
1157
1157
#endif
1158
1158
1159
+ #ifndef CONFIG_GRKERNSEC
1160
+ #define ctl_table_no_const struct ctl_table
1161
+ #endif
1159
1162
/* sysctl /proc/sys/net/netflow */
1160
1163
static int hsize_procctl (ctl_table * ctl , int write , BEFORE2632 (struct file * filp ,)
1161
1164
void __user * buffer , size_t * lenp , loff_t * fpos )
1162
1165
{
1163
- void * orig = ctl -> data ;
1164
1166
int ret , hsize ;
1167
+ ctl_table_no_const lctl = * ctl ;
1165
1168
1166
1169
if (write )
1167
- ctl -> data = & hsize ;
1168
- ret = proc_dointvec (ctl , write , BEFORE2632 (filp ,) buffer , lenp , fpos );
1170
+ lctl . data = & hsize ;
1171
+ ret = proc_dointvec (& lctl , write , BEFORE2632 (filp ,) buffer , lenp , fpos );
1169
1172
if (write ) {
1170
- ctl -> data = orig ;
1171
1173
if (hsize < LOCK_COUNT )
1172
1174
return - EPERM ;
1173
1175
return set_hashsize (hsize )?:ret ;
@@ -1180,6 +1182,7 @@ static int sndbuf_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *fil
1180
1182
{
1181
1183
int ret ;
1182
1184
struct ipt_netflow_sock * usock ;
1185
+ ctl_table_no_const lctl = * ctl ;
1183
1186
1184
1187
mutex_lock (& sock_lock );
1185
1188
if (list_empty (& usock_list )) {
@@ -1191,8 +1194,8 @@ static int sndbuf_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *fil
1191
1194
sndbuf = usock -> sock -> sk -> sk_sndbuf ;
1192
1195
mutex_unlock (& sock_lock );
1193
1196
1194
- ctl -> data = & sndbuf ;
1195
- ret = proc_dointvec (ctl , write , BEFORE2632 (filp ,) buffer , lenp , fpos );
1197
+ lctl . data = & sndbuf ;
1198
+ ret = proc_dointvec (& lctl , write , BEFORE2632 (filp ,) buffer , lenp , fpos );
1196
1199
if (!write )
1197
1200
return ret ;
1198
1201
if (sndbuf < SOCK_MIN_SNDBUF )
@@ -1246,9 +1249,10 @@ static int promisc_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *fi
1246
1249
{
1247
1250
int newpromisc = promisc ;
1248
1251
int ret ;
1252
+ ctl_table_no_const lctl = * ctl ;
1249
1253
1250
- ctl -> data = & newpromisc ;
1251
- ret = proc_dointvec (ctl , write , BEFORE2632 (filp ,) buffer , lenp , fpos );
1254
+ lctl . data = & newpromisc ;
1255
+ ret = proc_dointvec (& lctl , write , BEFORE2632 (filp ,) buffer , lenp , fpos );
1252
1256
if (ret < 0 || !write )
1253
1257
return ret ;
1254
1258
return switch_promisc (newpromisc );
@@ -1320,9 +1324,10 @@ static int flush_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *filp
1320
1324
{
1321
1325
int ret ;
1322
1326
int val = 0 ;
1327
+ ctl_table_no_const lctl = * ctl ;
1323
1328
1324
- ctl -> data = & val ;
1325
- ret = proc_dointvec (ctl , write , BEFORE2632 (filp ,) buffer , lenp , fpos );
1329
+ lctl . data = & val ;
1330
+ ret = proc_dointvec (& lctl , write , BEFORE2632 (filp ,) buffer , lenp , fpos );
1326
1331
1327
1332
if (!write )
1328
1333
return ret ;
@@ -1348,9 +1353,10 @@ static int protocol_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *f
1348
1353
{
1349
1354
int ret ;
1350
1355
int ver = protocol ;
1356
+ ctl_table_no_const lctl = * ctl ;
1351
1357
1352
- ctl -> data = & ver ;
1353
- ret = proc_dointvec (ctl , write , BEFORE2632 (filp ,) buffer , lenp , fpos );
1358
+ lctl . data = & ver ;
1359
+ ret = proc_dointvec (& lctl , write , BEFORE2632 (filp ,) buffer , lenp , fpos );
1354
1360
1355
1361
if (!write )
1356
1362
return ret ;
@@ -1380,9 +1386,10 @@ static int natevents_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *
1380
1386
{
1381
1387
int ret ;
1382
1388
int val = natevents ;
1389
+ ctl_table_no_const lctl = * ctl ;
1383
1390
1384
- ctl -> data = & val ;
1385
- ret = proc_dointvec (ctl , write , BEFORE2632 (filp ,) buffer , lenp , fpos );
1391
+ lctl . data = & val ;
1392
+ ret = proc_dointvec (& lctl , write , BEFORE2632 (filp ,) buffer , lenp , fpos );
1386
1393
1387
1394
if (!write )
1388
1395
return ret ;
0 commit comments