| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- --- a/src/vectoring/ifxmips_vectoring.c
- +++ b/src/vectoring/ifxmips_vectoring.c
- @@ -300,7 +300,7 @@ static int proc_write_dbg(struct file *f
- DBG_ENABLE_MASK_ALL
- };
-
- - char str[2048];
- + char *str;
- char *p;
-
- int len, rlen;
- @@ -308,6 +308,10 @@ static int proc_write_dbg(struct file *f
- int f_enable = 0;
- int i;
-
- + str = kcalloc(2048, sizeof(*str), GFP_KERNEL);
- + if (!str)
- + return -ENOMEM;
- +
- len = count < sizeof(str) ? count : sizeof(str) - 1;
- rlen = len - copy_from_user(str, buf, len);
- while ( rlen && str[rlen - 1] <= ' ' )
- @@ -367,6 +371,8 @@ static int proc_write_dbg(struct file *f
- }
- }
-
- + kfree(str);
- +
- return count;
- }
-
- --- a/src/vectoring/ifxmips_vectoring_test.c
- +++ b/src/vectoring/ifxmips_vectoring_test.c
- @@ -3,6 +3,7 @@
- #include <linux/module.h>
- #include <linux/proc_fs.h>
- #include <linux/seq_file.h>
- +#include <linux/slab.h>
-
- #include "ifxmips_vectoring_stub.h"
-
- @@ -46,13 +47,17 @@ static int proc_write_vectoring(struct f
- {
- char *p;
- int len;
- - char local_buf[1024];
- + char *local_buf;
-
- unsigned long pkt_len;
- int ret;
- unsigned long sys_flag;
- unsigned long start, end;
-
- + local_buf = kcalloc(1024, sizeof(*local_buf), GFP_KERNEL);
- + if (!local_buf)
- + return -ENOMEM;
- +
- len = sizeof(local_buf) < count ? sizeof(local_buf) - 1 : count;
- len = len - copy_from_user(local_buf, buf, len);
- local_buf[len] = 0;
- @@ -81,6 +86,8 @@ static int proc_write_vectoring(struct f
- else
- printk("echo send <size> > /proc/driver/vectoring_test\n");
-
- + kfree(local_buf);
- +
- return count;
- }
-
|