]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mailbox: Use of_property_match_string() instead of open-coding
authorRob Herring (Arm) <robh@kernel.org>
Wed, 31 Jul 2024 20:16:08 +0000 (14:16 -0600)
committerJassi Brar <jassisinghbrar@gmail.com>
Mon, 23 Sep 2024 00:19:17 +0000 (19:19 -0500)
Use of_property_match_string() instead of open-coding the search. With
this, of_get_property() can be removed as there is no need to check for
"mbox-names" presence first.

This is part of a larger effort to remove callers of of_get_property()
and similar functions. of_get_property() leaks the DT property data
pointer which is a problem for dynamically allocated nodes which may
be freed.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>
drivers/mailbox/mailbox.c

index ebff3baf304515df2e8b0ed2435a8c37180bc24b..d3d26a2c98956c9e73ee23bf1f0873cab6fee93a 100644 (file)
@@ -450,30 +450,20 @@ struct mbox_chan *mbox_request_channel_byname(struct mbox_client *cl,
                                              const char *name)
 {
        struct device_node *np = cl->dev->of_node;
-       struct property *prop;
-       const char *mbox_name;
-       int index = 0;
+       int index;
 
        if (!np) {
                dev_err(cl->dev, "%s() currently only supports DT\n", __func__);
                return ERR_PTR(-EINVAL);
        }
 
-       if (!of_get_property(np, "mbox-names", NULL)) {
-               dev_err(cl->dev,
-                       "%s() requires an \"mbox-names\" property\n", __func__);
+       index = of_property_match_string(np, "mbox-names", name);
+       if (index < 0) {
+               dev_err(cl->dev, "%s() could not locate channel named \"%s\"\n",
+                       __func__, name);
                return ERR_PTR(-EINVAL);
        }
-
-       of_property_for_each_string(np, "mbox-names", prop, mbox_name) {
-               if (!strncmp(name, mbox_name, strlen(name)))
-                       return mbox_request_channel(cl, index);
-               index++;
-       }
-
-       dev_err(cl->dev, "%s() could not locate channel named \"%s\"\n",
-               __func__, name);
-       return ERR_PTR(-EINVAL);
+       return mbox_request_channel(cl, index);
 }
 EXPORT_SYMBOL_GPL(mbox_request_channel_byname);