driver core: bus: convert bus_create/remove_file to be constant
bus_create_file() and bus_remove_file() can be made to take a constant bus pointer, as it should not be modifying anything in the bus structure. Make this change and move the functions to use the internal subsys_get/put() logic as well, to prevent the use of the back-pointer in struct bus_type. Cc: "Rafael J. Wysocki" <rafael@kernel.org> Link: https://lore.kernel.org/r/20230208111330.439504-5-gregkh@linuxfoundation.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e0766ea4c8
commit
0396f2863f
@ -175,24 +175,30 @@ static const struct sysfs_ops bus_sysfs_ops = {
|
||||
.store = bus_attr_store,
|
||||
};
|
||||
|
||||
int bus_create_file(struct bus_type *bus, struct bus_attribute *attr)
|
||||
int bus_create_file(const struct bus_type *bus, struct bus_attribute *attr)
|
||||
{
|
||||
struct subsys_private *sp = bus_to_subsys(bus);
|
||||
int error;
|
||||
if (bus_get(bus)) {
|
||||
error = sysfs_create_file(&bus->p->subsys.kobj, &attr->attr);
|
||||
bus_put(bus);
|
||||
} else
|
||||
error = -EINVAL;
|
||||
|
||||
if (!sp)
|
||||
return -EINVAL;
|
||||
|
||||
error = sysfs_create_file(&sp->subsys.kobj, &attr->attr);
|
||||
|
||||
subsys_put(sp);
|
||||
return error;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(bus_create_file);
|
||||
|
||||
void bus_remove_file(struct bus_type *bus, struct bus_attribute *attr)
|
||||
void bus_remove_file(const struct bus_type *bus, struct bus_attribute *attr)
|
||||
{
|
||||
if (bus_get(bus)) {
|
||||
sysfs_remove_file(&bus->p->subsys.kobj, &attr->attr);
|
||||
bus_put(bus);
|
||||
}
|
||||
struct subsys_private *sp = bus_to_subsys(bus);
|
||||
|
||||
if (!sp)
|
||||
return;
|
||||
|
||||
sysfs_remove_file(&sp->subsys.kobj, &attr->attr);
|
||||
subsys_put(sp);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(bus_remove_file);
|
||||
|
||||
|
@ -135,9 +135,8 @@ struct bus_attribute {
|
||||
#define BUS_ATTR_WO(_name) \
|
||||
struct bus_attribute bus_attr_##_name = __ATTR_WO(_name)
|
||||
|
||||
extern int __must_check bus_create_file(struct bus_type *,
|
||||
struct bus_attribute *);
|
||||
extern void bus_remove_file(struct bus_type *, struct bus_attribute *);
|
||||
int __must_check bus_create_file(const struct bus_type *bus, struct bus_attribute *attr);
|
||||
void bus_remove_file(const struct bus_type *bus, struct bus_attribute *attr);
|
||||
|
||||
/* Generic device matching functions that all busses can use to match with */
|
||||
int device_match_name(struct device *dev, const void *name);
|
||||
|
Loading…
x
Reference in New Issue
Block a user