@@ -1156,18 +1156,20 @@ static int switch_promisc(int newpromisc)
11561156#define BEFORE2632 (x ,y )
11571157#endif
11581158
1159+ #ifndef CONFIG_GRKERNSEC
1160+ #define ctl_table_no_const struct ctl_table
1161+ #endif
11591162/* sysctl /proc/sys/net/netflow */
11601163static int hsize_procctl (ctl_table * ctl , int write , BEFORE2632 (struct file * filp ,)
11611164 void __user * buffer , size_t * lenp , loff_t * fpos )
11621165{
1163- void * orig = ctl -> data ;
11641166 int ret , hsize ;
1167+ ctl_table_no_const lctl = * ctl ;
11651168
11661169 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 );
11691172 if (write ) {
1170- ctl -> data = orig ;
11711173 if (hsize < LOCK_COUNT )
11721174 return - EPERM ;
11731175 return set_hashsize (hsize )?:ret ;
@@ -1180,6 +1182,7 @@ static int sndbuf_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *fil
11801182{
11811183 int ret ;
11821184 struct ipt_netflow_sock * usock ;
1185+ ctl_table_no_const lctl = * ctl ;
11831186
11841187 mutex_lock (& sock_lock );
11851188 if (list_empty (& usock_list )) {
@@ -1191,8 +1194,8 @@ static int sndbuf_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *fil
11911194 sndbuf = usock -> sock -> sk -> sk_sndbuf ;
11921195 mutex_unlock (& sock_lock );
11931196
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 );
11961199 if (!write )
11971200 return ret ;
11981201 if (sndbuf < SOCK_MIN_SNDBUF )
@@ -1246,9 +1249,10 @@ static int promisc_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *fi
12461249{
12471250 int newpromisc = promisc ;
12481251 int ret ;
1252+ ctl_table_no_const lctl = * ctl ;
12491253
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 );
12521256 if (ret < 0 || !write )
12531257 return ret ;
12541258 return switch_promisc (newpromisc );
@@ -1320,9 +1324,10 @@ static int flush_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *filp
13201324{
13211325 int ret ;
13221326 int val = 0 ;
1327+ ctl_table_no_const lctl = * ctl ;
13231328
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 );
13261331
13271332 if (!write )
13281333 return ret ;
@@ -1348,9 +1353,10 @@ static int protocol_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *f
13481353{
13491354 int ret ;
13501355 int ver = protocol ;
1356+ ctl_table_no_const lctl = * ctl ;
13511357
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 );
13541360
13551361 if (!write )
13561362 return ret ;
@@ -1380,9 +1386,10 @@ static int natevents_procctl(ctl_table *ctl, int write, BEFORE2632(struct file *
13801386{
13811387 int ret ;
13821388 int val = natevents ;
1389+ ctl_table_no_const lctl = * ctl ;
13831390
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 );
13861393
13871394 if (!write )
13881395 return ret ;
0 commit comments