]> xenbits.xensource.com Git - arm/linux.git/commitdiff
pstore/ram: Avoid needless alloc during header write
authorKees Cook <keescook@chromium.org>
Tue, 12 Feb 2019 21:09:36 +0000 (13:09 -0800)
committerKees Cook <keescook@chromium.org>
Tue, 12 Feb 2019 21:45:53 +0000 (13:45 -0800)
Since the header is a fixed small maximum size, just use a stack variable
to avoid memory allocation in the write path.

Signed-off-by: Kees Cook <keescook@chromium.org>
fs/pstore/ram.c

index ec0e1da0596a5375299b85fa567f71a01a0e6918..c5c685589e36605297ec7aea898436a472ad1907 100644 (file)
@@ -345,19 +345,15 @@ out:
 static size_t ramoops_write_kmsg_hdr(struct persistent_ram_zone *prz,
                                     struct pstore_record *record)
 {
-       char *hdr;
+       char hdr[36]; /* "===="(4), %lld(20), "."(1), %06lu(6), "-%c\n"(3) */
        size_t len;
 
-       hdr = kasprintf(GFP_ATOMIC, RAMOOPS_KERNMSG_HDR "%lld.%06lu-%c\n",
+       len = scnprintf(hdr, sizeof(hdr),
+               RAMOOPS_KERNMSG_HDR "%lld.%06lu-%c\n",
                (time64_t)record->time.tv_sec,
                record->time.tv_nsec / 1000,
                record->compressed ? 'C' : 'D');
-       if (WARN_ON_ONCE(!hdr))
-               return 0;
-
-       len = strlen(hdr);
        persistent_ram_write(prz, hdr, len);
-       kfree(hdr);
 
        return len;
 }