]> rtime.felk.cvut.cz Git - can-eth-gw-linux.git/commitdiff
kmsg: properly support writev to avoid interleaved printk lines fix
authorAndrew Morton <akpm@linux-foundation.org>
Tue, 12 Apr 2011 23:13:31 +0000 (16:13 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 20 Apr 2011 00:00:48 +0000 (17:00 -0700)
make `len' size_t, avoid multiple-assignments.

Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Lennart Poettering <lennart@poettering.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/char/mem.c

index 78923a9f534522c7737de57f0918b81fa53a7201..8fc04b4f311f72c802a1df13af7108e3082a1b3f 100644 (file)
@@ -810,11 +810,11 @@ static ssize_t kmsg_writev(struct kiocb *iocb, const struct iovec *iv,
                           unsigned long count, loff_t pos)
 {
        char *line, *p;
-       int len, i;
+       int i;
        ssize_t ret = -EFAULT;
+       size_t len = iov_length(iv, count);
 
-       len = iov_length(iv, count);
-       line = p = kmalloc(len + 1, GFP_KERNEL);
+       line = kmalloc(len + 1, GFP_KERNEL);
        if (line == NULL)
                return -ENOMEM;
 
@@ -822,6 +822,7 @@ static ssize_t kmsg_writev(struct kiocb *iocb, const struct iovec *iv,
         * copy all vectors into a single string, to ensure we do
         * not interleave our log line with other printk calls
         */
+       p = line;
        for (i = 0; i < count; i++) {
                if (copy_from_user(p, iv[i].iov_base, iv[i].iov_len))
                        goto out;