Driver core / sysfs fixes for 6.10-rc4
Here are 3 small changes for 6.10-rc4 that resolve reported problems, and finally drop an unused api call. These are: - removal of devm_device_add_groups(), all the callers of this are finally gone after the 6.10-rc1 merge (changes came in through different trees), so it's safe to remove. - much reported sysfs build error fixed up for systems that did not have sysfs enabled - driver core sync issue fix for a many reported issue over the years that no one really paid much attention to, until Dirk finally tracked down the real issue and made the "obviously correct and simple" fix for it. All of these have been in linux-next for over a week with no reported problems. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCZm7A2w8cZ3JlZ0Brcm9h aC5jb20ACgkQMUfUDdst+ykqCwCgxcSy9dsZPvXLjIUGWlT7pJk6a4MAoMUlXWF5 vjwwgsA0XOOaWxQc9XhT =AM42 -----END PGP SIGNATURE----- Merge tag 'driver-core-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core Pull driver core and sysfs fixes from Greg KH: "Here are three small changes for 6.10-rc4 that resolve reported problems, and finally drop an unused api call. These are: - removal of devm_device_add_groups(), all the callers of this are finally gone after the 6.10-rc1 merge (changes came in through different trees), so it's safe to remove. - much reported sysfs build error fixed up for systems that did not have sysfs enabled - driver core sync issue fix for a many reported issue over the years that no one really paid much attention to, until Dirk finally tracked down the real issue and made the "obviously correct and simple" fix for it. All of these have been in linux-next for over a week with no reported problems" * tag 'driver-core-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: drivers: core: synchronize really_probe() and dev_uevent() sysfs: Unbreak the build around sysfs_bin_attr_simple_read() driver core: remove devm_device_add_groups()
This commit is contained in:
commit
e12fa4dd64
@ -2739,8 +2739,11 @@ static ssize_t uevent_show(struct device *dev, struct device_attribute *attr,
|
||||
if (!env)
|
||||
return -ENOMEM;
|
||||
|
||||
/* Synchronize with really_probe() */
|
||||
device_lock(dev);
|
||||
/* let the kset specific function add its keys */
|
||||
retval = kset->uevent_ops->uevent(&dev->kobj, env);
|
||||
device_unlock(dev);
|
||||
if (retval)
|
||||
goto out;
|
||||
|
||||
@ -2845,15 +2848,6 @@ static void devm_attr_group_remove(struct device *dev, void *res)
|
||||
sysfs_remove_group(&dev->kobj, group);
|
||||
}
|
||||
|
||||
static void devm_attr_groups_remove(struct device *dev, void *res)
|
||||
{
|
||||
union device_attr_group_devres *devres = res;
|
||||
const struct attribute_group **groups = devres->groups;
|
||||
|
||||
dev_dbg(dev, "%s: removing groups %p\n", __func__, groups);
|
||||
sysfs_remove_groups(&dev->kobj, groups);
|
||||
}
|
||||
|
||||
/**
|
||||
* devm_device_add_group - given a device, create a managed attribute group
|
||||
* @dev: The device to create the group for
|
||||
@ -2886,42 +2880,6 @@ int devm_device_add_group(struct device *dev, const struct attribute_group *grp)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(devm_device_add_group);
|
||||
|
||||
/**
|
||||
* devm_device_add_groups - create a bunch of managed attribute groups
|
||||
* @dev: The device to create the group for
|
||||
* @groups: The attribute groups to create, NULL terminated
|
||||
*
|
||||
* This function creates a bunch of managed attribute groups. If an error
|
||||
* occurs when creating a group, all previously created groups will be
|
||||
* removed, unwinding everything back to the original state when this
|
||||
* function was called. It will explicitly warn and error if any of the
|
||||
* attribute files being created already exist.
|
||||
*
|
||||
* Returns 0 on success or error code from sysfs_create_group on failure.
|
||||
*/
|
||||
int devm_device_add_groups(struct device *dev,
|
||||
const struct attribute_group **groups)
|
||||
{
|
||||
union device_attr_group_devres *devres;
|
||||
int error;
|
||||
|
||||
devres = devres_alloc(devm_attr_groups_remove,
|
||||
sizeof(*devres), GFP_KERNEL);
|
||||
if (!devres)
|
||||
return -ENOMEM;
|
||||
|
||||
error = sysfs_create_groups(&dev->kobj, groups);
|
||||
if (error) {
|
||||
devres_free(devres);
|
||||
return error;
|
||||
}
|
||||
|
||||
devres->groups = groups;
|
||||
devres_add(dev, devres);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(devm_device_add_groups);
|
||||
|
||||
static int device_add_attrs(struct device *dev)
|
||||
{
|
||||
const struct class *class = dev->class;
|
||||
|
@ -1220,8 +1220,6 @@ static inline void device_remove_group(struct device *dev,
|
||||
return device_remove_groups(dev, groups);
|
||||
}
|
||||
|
||||
int __must_check devm_device_add_groups(struct device *dev,
|
||||
const struct attribute_group **groups);
|
||||
int __must_check devm_device_add_group(struct device *dev,
|
||||
const struct attribute_group *grp);
|
||||
|
||||
|
@ -750,6 +750,15 @@ static inline int sysfs_emit_at(char *buf, int at, const char *fmt, ...)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline ssize_t sysfs_bin_attr_simple_read(struct file *file,
|
||||
struct kobject *kobj,
|
||||
struct bin_attribute *attr,
|
||||
char *buf, loff_t off,
|
||||
size_t count)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_SYSFS */
|
||||
|
||||
static inline int __must_check sysfs_create_file(struct kobject *kobj,
|
||||
|
Loading…
Reference in New Issue
Block a user