]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
driver core: remove driver_set_override()
authorDanilo Krummrich <dakr@kernel.org>
Tue, 5 May 2026 13:37:25 +0000 (15:37 +0200)
committerDanilo Krummrich <dakr@kernel.org>
Sat, 30 May 2026 20:25:50 +0000 (22:25 +0200)
All buses have been converted from driver_set_override() to the generic
driver_override infrastructure introduced in commit cb3d1049f4ea
("driver core: generalize driver_override in struct device").

Buses now either opt into the generic sysfs callbacks via the
bus_type::driver_override flag, or use device_set_driver_override() /
__device_set_driver_override() directly.

Thus, remove the now-unused driver_set_override() helper.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=220789
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://patch.msgid.link/20260505133935.3772495-6-dakr@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
drivers/base/driver.c
include/linux/device/driver.h

index c5ebf1fdad7580a2ea16f148a852da4f727ac766..5d9c39081339fd096d516438d19d598d1bda5783 100644 (file)
@@ -30,81 +30,6 @@ static struct device *next_device(struct klist_iter *i)
        return dev;
 }
 
-/**
- * driver_set_override() - Helper to set or clear driver override.
- * @dev: Device to change
- * @override: Address of string to change (e.g. &device->driver_override);
- *            The contents will be freed and hold newly allocated override.
- * @s: NUL-terminated string, new driver name to force a match, pass empty
- *     string to clear it ("" or "\n", where the latter is only for sysfs
- *     interface).
- * @len: length of @s
- *
- * Helper to set or clear driver override in a device, intended for the cases
- * when the driver_override field is allocated by driver/bus code.
- *
- * Returns: 0 on success or a negative error code on failure.
- */
-int driver_set_override(struct device *dev, const char **override,
-                       const char *s, size_t len)
-{
-       const char *new, *old;
-       char *cp;
-
-       if (!override || !s)
-               return -EINVAL;
-
-       /*
-        * The stored value will be used in sysfs show callback (sysfs_emit()),
-        * which has a length limit of PAGE_SIZE and adds a trailing newline.
-        * Thus we can store one character less to avoid truncation during sysfs
-        * show.
-        */
-       if (len >= (PAGE_SIZE - 1))
-               return -EINVAL;
-
-       /*
-        * Compute the real length of the string in case userspace sends us a
-        * bunch of \0 characters like python likes to do.
-        */
-       len = strlen(s);
-
-       if (!len) {
-               /* Empty string passed - clear override */
-               device_lock(dev);
-               old = *override;
-               *override = NULL;
-               device_unlock(dev);
-               kfree(old);
-
-               return 0;
-       }
-
-       cp = strnchr(s, len, '\n');
-       if (cp)
-               len = cp - s;
-
-       new = kstrndup(s, len, GFP_KERNEL);
-       if (!new)
-               return -ENOMEM;
-
-       device_lock(dev);
-       old = *override;
-       if (cp != s) {
-               *override = new;
-       } else {
-               /* "\n" passed - clear override */
-               kfree(new);
-               *override = NULL;
-       }
-       device_unlock(dev);
-
-       kfree(old);
-
-       return 0;
-}
-EXPORT_SYMBOL_GPL(driver_set_override);
-
 /**
  * driver_for_each_device - Iterator for devices bound to a driver.
  * @drv: Driver we're iterating.
index 2fb0548680497bee2695a38513622e33ee2f86e7..38048e74d10a3b6e39069eea5b1862e88ba8d0fd 100644 (file)
@@ -160,8 +160,6 @@ int __must_check driver_create_file(const struct device_driver *driver,
 void driver_remove_file(const struct device_driver *driver,
                        const struct driver_attribute *attr);
 
-int driver_set_override(struct device *dev, const char **override,
-                       const char *s, size_t len);
 int __must_check driver_for_each_device(struct device_driver *drv, struct device *start,
                                        void *data, device_iter_t fn);
 struct device *driver_find_device(const struct device_driver *drv,