|
|
@@ -48,8 +48,10 @@ static ssize_t cm_write(struct file *file, const char __user * user_buf,
|
|
|
if ((*ppos > max_size) ||
|
|
|
(*ppos + count > max_size) ||
|
|
|
(*ppos + count < count) ||
|
|
|
- (count > uncopied_bytes))
|
|
|
+ (count > uncopied_bytes)) {
|
|
|
+ kfree(buf);
|
|
|
return -EINVAL;
|
|
|
+ }
|
|
|
|
|
|
if (copy_from_user(buf + (*ppos), user_buf, count)) {
|
|
|
kfree(buf);
|
|
|
@@ -69,6 +71,7 @@ static ssize_t cm_write(struct file *file, const char __user * user_buf,
|
|
|
add_taint(TAINT_OVERRIDDEN_ACPI_TABLE, LOCKDEP_NOW_UNRELIABLE);
|
|
|
}
|
|
|
|
|
|
+ kfree(buf);
|
|
|
return count;
|
|
|
}
|
|
|
|