Skip to content

Commit 4ef16b0

Browse files
committed
Compilation compatibility with grsecurity kernel.
1 parent badf89a commit 4ef16b0

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

ipt_NETFLOW.c

+21-14
Original file line numberDiff line numberDiff line change
@@ -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 */
11601163
static 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

Comments
 (0)