mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-01 02:36:02 +00:00
sysfs: explicitly pass size to sysfs_add_bin_file_mode_ns()
Upcoming changes to the sysfs core require the size of the created file to be overridable by the caller. Add a parameter to enable this. For now keep using attr->size in all cases. Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> Acked-by: Krzysztof Wilczyński <kw@linux.com> Link: https://lore.kernel.org/r/20241103-sysfs-const-bin_attr-v2-1-71110628844c@weissschuh.net Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
09fbb82f94
commit
0afcee132b
@ -315,7 +315,7 @@ int sysfs_add_file_mode_ns(struct kernfs_node *parent,
|
||||
}
|
||||
|
||||
int sysfs_add_bin_file_mode_ns(struct kernfs_node *parent,
|
||||
const struct bin_attribute *battr, umode_t mode,
|
||||
const struct bin_attribute *battr, umode_t mode, size_t size,
|
||||
kuid_t uid, kgid_t gid, const void *ns)
|
||||
{
|
||||
const struct attribute *attr = &battr->attr;
|
||||
@ -340,7 +340,7 @@ int sysfs_add_bin_file_mode_ns(struct kernfs_node *parent,
|
||||
#endif
|
||||
|
||||
kn = __kernfs_create_file(parent, attr->name, mode & 0777, uid, gid,
|
||||
battr->size, ops, (void *)attr, ns, key);
|
||||
size, ops, (void *)attr, ns, key);
|
||||
if (IS_ERR(kn)) {
|
||||
if (PTR_ERR(kn) == -EEXIST)
|
||||
sysfs_warn_dup(parent, attr->name);
|
||||
@ -580,8 +580,8 @@ int sysfs_create_bin_file(struct kobject *kobj,
|
||||
return -EINVAL;
|
||||
|
||||
kobject_get_ownership(kobj, &uid, &gid);
|
||||
return sysfs_add_bin_file_mode_ns(kobj->sd, attr, attr->attr.mode, uid,
|
||||
gid, NULL);
|
||||
return sysfs_add_bin_file_mode_ns(kobj->sd, attr, attr->attr.mode,
|
||||
attr->size, uid, gid, NULL);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sysfs_create_bin_file);
|
||||
|
||||
|
@ -87,6 +87,7 @@ static int create_files(struct kernfs_node *parent, struct kobject *kobj,
|
||||
if (grp->bin_attrs) {
|
||||
for (i = 0, bin_attr = grp->bin_attrs; *bin_attr; i++, bin_attr++) {
|
||||
umode_t mode = (*bin_attr)->attr.mode;
|
||||
size_t size = (*bin_attr)->size;
|
||||
|
||||
if (update)
|
||||
kernfs_remove_by_name(parent,
|
||||
@ -104,7 +105,7 @@ static int create_files(struct kernfs_node *parent, struct kobject *kobj,
|
||||
|
||||
mode &= SYSFS_PREALLOC | 0664;
|
||||
error = sysfs_add_bin_file_mode_ns(parent, *bin_attr,
|
||||
mode, uid, gid,
|
||||
mode, size, uid, gid,
|
||||
NULL);
|
||||
if (error)
|
||||
break;
|
||||
|
@ -31,7 +31,7 @@ int sysfs_add_file_mode_ns(struct kernfs_node *parent,
|
||||
const struct attribute *attr, umode_t amode, kuid_t uid,
|
||||
kgid_t gid, const void *ns);
|
||||
int sysfs_add_bin_file_mode_ns(struct kernfs_node *parent,
|
||||
const struct bin_attribute *battr, umode_t mode,
|
||||
const struct bin_attribute *battr, umode_t mode, size_t size,
|
||||
kuid_t uid, kgid_t gid, const void *ns);
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user