mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-21 22:47:51 -04:00
driver core: remove driver_set_override()
All buses have been converted from driver_set_override() to the generic
driver_override infrastructure introduced in commit cb3d1049f4
("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>
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user