Merge tag 'nfsd-5.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux
[linux-block.git] / drivers / base / platform.c
index 70bc30cf575c5131d85d80ebc466148cdc49910f..51bb2289865c7222c0a2d1d6f4e8ad02225f9105 100644 (file)
@@ -233,7 +233,8 @@ int platform_get_irq_optional(struct platform_device *dev, unsigned int num)
 out_not_found:
        ret = -ENXIO;
 out:
-       WARN(ret == 0, "0 is an invalid IRQ number\n");
+       if (WARN(!ret, "0 is an invalid IRQ number\n"))
+               return -EINVAL;
        return ret;
 }
 EXPORT_SYMBOL_GPL(platform_get_irq_optional);
@@ -448,7 +449,8 @@ static int __platform_get_irq_byname(struct platform_device *dev,
 
        r = platform_get_resource_byname(dev, IORESOURCE_IRQ, name);
        if (r) {
-               WARN(r->start == 0, "0 is an invalid IRQ number\n");
+               if (WARN(!r->start, "0 is an invalid IRQ number\n"))
+                       return -EINVAL;
                return r->start;
        }
 
@@ -1277,31 +1279,11 @@ static ssize_t driver_override_store(struct device *dev,
                                     const char *buf, size_t count)
 {
        struct platform_device *pdev = to_platform_device(dev);
-       char *driver_override, *old, *cp;
-
-       /* We need to keep extra room for a newline */
-       if (count >= (PAGE_SIZE - 1))
-               return -EINVAL;
-
-       driver_override = kstrndup(buf, count, GFP_KERNEL);
-       if (!driver_override)
-               return -ENOMEM;
-
-       cp = strchr(driver_override, '\n');
-       if (cp)
-               *cp = '\0';
-
-       device_lock(dev);
-       old = pdev->driver_override;
-       if (strlen(driver_override)) {
-               pdev->driver_override = driver_override;
-       } else {
-               kfree(driver_override);
-               pdev->driver_override = NULL;
-       }
-       device_unlock(dev);
+       int ret;
 
-       kfree(old);
+       ret = driver_set_override(dev, &pdev->driver_override, buf, count);
+       if (ret)
+               return ret;
 
        return count;
 }