Skip to content

Commit 0afcee1

Browse files
t-8chgregkh
authored andcommitted
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 <[email protected]> Acked-by: Krzysztof Wilczyński <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 09fbb82 commit 0afcee1

File tree

3 files changed

+7
-6
lines changed

3 files changed

+7
-6
lines changed

fs/sysfs/file.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ int sysfs_add_file_mode_ns(struct kernfs_node *parent,
315315
}
316316

317317
int sysfs_add_bin_file_mode_ns(struct kernfs_node *parent,
318-
const struct bin_attribute *battr, umode_t mode,
318+
const struct bin_attribute *battr, umode_t mode, size_t size,
319319
kuid_t uid, kgid_t gid, const void *ns)
320320
{
321321
const struct attribute *attr = &battr->attr;
@@ -340,7 +340,7 @@ int sysfs_add_bin_file_mode_ns(struct kernfs_node *parent,
340340
#endif
341341

342342
kn = __kernfs_create_file(parent, attr->name, mode & 0777, uid, gid,
343-
battr->size, ops, (void *)attr, ns, key);
343+
size, ops, (void *)attr, ns, key);
344344
if (IS_ERR(kn)) {
345345
if (PTR_ERR(kn) == -EEXIST)
346346
sysfs_warn_dup(parent, attr->name);
@@ -580,8 +580,8 @@ int sysfs_create_bin_file(struct kobject *kobj,
580580
return -EINVAL;
581581

582582
kobject_get_ownership(kobj, &uid, &gid);
583-
return sysfs_add_bin_file_mode_ns(kobj->sd, attr, attr->attr.mode, uid,
584-
gid, NULL);
583+
return sysfs_add_bin_file_mode_ns(kobj->sd, attr, attr->attr.mode,
584+
attr->size, uid, gid, NULL);
585585
}
586586
EXPORT_SYMBOL_GPL(sysfs_create_bin_file);
587587

fs/sysfs/group.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ static int create_files(struct kernfs_node *parent, struct kobject *kobj,
8787
if (grp->bin_attrs) {
8888
for (i = 0, bin_attr = grp->bin_attrs; *bin_attr; i++, bin_attr++) {
8989
umode_t mode = (*bin_attr)->attr.mode;
90+
size_t size = (*bin_attr)->size;
9091

9192
if (update)
9293
kernfs_remove_by_name(parent,
@@ -104,7 +105,7 @@ static int create_files(struct kernfs_node *parent, struct kobject *kobj,
104105

105106
mode &= SYSFS_PREALLOC | 0664;
106107
error = sysfs_add_bin_file_mode_ns(parent, *bin_attr,
107-
mode, uid, gid,
108+
mode, size, uid, gid,
108109
NULL);
109110
if (error)
110111
break;

fs/sysfs/sysfs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ int sysfs_add_file_mode_ns(struct kernfs_node *parent,
3131
const struct attribute *attr, umode_t amode, kuid_t uid,
3232
kgid_t gid, const void *ns);
3333
int sysfs_add_bin_file_mode_ns(struct kernfs_node *parent,
34-
const struct bin_attribute *battr, umode_t mode,
34+
const struct bin_attribute *battr, umode_t mode, size_t size,
3535
kuid_t uid, kgid_t gid, const void *ns);
3636

3737
/*

0 commit comments

Comments
 (0)