diff --git a/modules/proc.c b/modules/proc.c
index e7d40c0d7ce8cf22a1025f5231311ef4b884f936..27b92d4e33d37e03dd361e7fac803142e381e36a 100644
--- a/modules/proc.c
+++ b/modules/proc.c
@@ -116,7 +116,7 @@ static ssize_t procfile_write(struct file *filp, const char __user *buff,
long size;
int i;
- char *new_msg, *old_msg;
+ char *new_msg;
procfs_buffer_size = len;
@@ -155,14 +155,13 @@ static ssize_t procfile_write(struct file *filp, const char __user *buff,
new_msg = kmalloc(size, GFP_KERNEL);
- old_msg = msg.text;
- msg.text = new_msg;
-
- for (i = 0; i < msg.first_write - msg.first_read; i++)
- msg.text[i] = old_msg[i];
- kfree(old_msg);
+ for (i = msg.first_read; i < msg.first_write; i++)
+ new_msg[i-msg.first_read] = msg.text[i%msg.size];
+
+ kfree(msg.text);
+ msg.text = new_msg;
msg.size = size;
msg.first_read = 0;
msg.first_write = i;