blob: 7d67fee0fccefe3122194da9ad2915ec78a814be (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
--- a/kernel-module/xt_RTPENGINE.c
+++ b/kernel-module/xt_RTPENGINE.c
@@ -3786,7 +3786,6 @@ static inline ssize_t proc_control_read_
struct rtpengine_table *t;
int err;
enum rtpengine_command cmd;
- char scratchbuf[512];
size_t readlen, writelen, writeoffset;
int i;
@@ -3828,13 +3827,9 @@ static inline ssize_t proc_control_read_
return -ERANGE;
// do we need an extra large storage buffer?
- if (buflen > sizeof(scratchbuf)) {
- msg.storage = kmalloc(buflen, GFP_KERNEL);
- if (!msg.storage)
- return -ENOMEM;
- }
- else
- msg.storage = scratchbuf;
+ msg.storage = kmalloc(buflen, GFP_KERNEL);
+ if (!msg.storage)
+ return -ENOMEM;
// get our table
inode = file->f_path.dentry->d_inode;
@@ -3947,16 +3942,14 @@ static inline ssize_t proc_control_read_
goto err_free;
}
- if (msg.storage != scratchbuf)
- kfree(msg.storage);
+ kfree(msg.storage);
return buflen;
err_table_free:
table_put(t);
err_free:
- if (msg.storage != scratchbuf)
- kfree(msg.storage);
+ kfree(msg.storage);
return err;
}
static ssize_t proc_control_write(struct file *file, const char __user *ubuf, size_t buflen, loff_t *off) {
|