|
@@ -480,11 +480,10 @@ static ssize_t eventlog_write(struct file *filp, struct kobject *kobj,
|
|
|
if (count < sizeof(u32))
|
|
|
return -EINVAL;
|
|
|
param.type = *(u32 *)buf;
|
|
|
- count -= sizeof(u32);
|
|
|
buf += sizeof(u32);
|
|
|
|
|
|
/* The remaining buffer is the data payload */
|
|
|
- if (count > gsmi_dev.data_buf->length)
|
|
|
+ if ((count - sizeof(u32)) > gsmi_dev.data_buf->length)
|
|
|
return -EINVAL;
|
|
|
param.data_len = count - sizeof(u32);
|
|
|
|
|
@@ -504,7 +503,7 @@ static ssize_t eventlog_write(struct file *filp, struct kobject *kobj,
|
|
|
|
|
|
spin_unlock_irqrestore(&gsmi_dev.lock, flags);
|
|
|
|
|
|
- return rc;
|
|
|
+ return (rc == 0) ? count : rc;
|
|
|
|
|
|
}
|
|
|
|