pstore/ram: Move initialization earlier
authorYue Hu <huyue2@yulong.com>
Wed, 23 Jan 2019 08:56:48 +0000 (16:56 +0800)
committerKees Cook <keescook@chromium.org>
Tue, 12 Feb 2019 20:10:43 +0000 (12:10 -0800)
Since only one single ramoops area allowed at a time, other probes
(like device tree) are meaningless, as it will waste CPU resources.
So let's check for being already initialized first.

Signed-off-by: Yue Hu <huyue2@yulong.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
fs/pstore/ram.c

index b2471d4..d06e2f3 100644 (file)
@@ -717,15 +717,6 @@ static int ramoops_probe(struct platform_device *pdev)
        phys_addr_t paddr;
        int err = -EINVAL;
 
-       if (dev_of_node(dev) && !pdata) {
-               pdata = &pdata_local;
-               memset(pdata, 0, sizeof(*pdata));
-
-               err = ramoops_parse_dt(pdev, pdata);
-               if (err < 0)
-                       goto fail_out;
-       }
-
        /*
         * Only a single ramoops area allowed at a time, so fail extra
         * probes.
@@ -735,6 +726,15 @@ static int ramoops_probe(struct platform_device *pdev)
                goto fail_out;
        }
 
+       if (dev_of_node(dev) && !pdata) {
+               pdata = &pdata_local;
+               memset(pdata, 0, sizeof(*pdata));
+
+               err = ramoops_parse_dt(pdev, pdata);
+               if (err < 0)
+                       goto fail_out;
+       }
+
        /* Make sure we didn't get bogus platform data pointer. */
        if (!pdata) {
                pr_err("NULL platform data\n");