sysfs: constify bin_attribute argument of bin_attribute::read/write()

All callback implementers have been moved to the const variant of the
callbacks. The signature of the original callbacks can now be changed.
Also remove the now unnecessary transition machinery inside __BIN_ATTR().

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Link: https://lore.kernel.org/r/20250313-sysfs-const-bin_attr-final-v2-1-96284e1e88ce@weissschuh.net
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Thomas Weißschuh 2025-03-13 16:57:45 +01:00 committed by Greg Kroah-Hartman
parent 31e4e12e0e
commit 97d06802d1

View file

@ -306,11 +306,11 @@ struct bin_attribute {
size_t size;
void *private;
struct address_space *(*f_mapping)(void);
ssize_t (*read)(struct file *, struct kobject *, struct bin_attribute *,
ssize_t (*read)(struct file *, struct kobject *, const struct bin_attribute *,
char *, loff_t, size_t);
ssize_t (*read_new)(struct file *, struct kobject *, const struct bin_attribute *,
char *, loff_t, size_t);
ssize_t (*write)(struct file *, struct kobject *, struct bin_attribute *,
ssize_t (*write)(struct file *, struct kobject *, const struct bin_attribute *,
char *, loff_t, size_t);
ssize_t (*write_new)(struct file *, struct kobject *,
const struct bin_attribute *, char *, loff_t, size_t);
@ -332,28 +332,11 @@ struct bin_attribute {
*/
#define sysfs_bin_attr_init(bin_attr) sysfs_attr_init(&(bin_attr)->attr)
typedef ssize_t __sysfs_bin_rw_handler_new(struct file *, struct kobject *,
const struct bin_attribute *, char *, loff_t, size_t);
/* macros to create static binary attributes easier */
#define __BIN_ATTR(_name, _mode, _read, _write, _size) { \
.attr = { .name = __stringify(_name), .mode = _mode }, \
.read = _Generic(_read, \
__sysfs_bin_rw_handler_new * : NULL, \
default : _read \
), \
.read_new = _Generic(_read, \
__sysfs_bin_rw_handler_new * : _read, \
default : NULL \
), \
.write = _Generic(_write, \
__sysfs_bin_rw_handler_new * : NULL, \
default : _write \
), \
.write_new = _Generic(_write, \
__sysfs_bin_rw_handler_new * : _write, \
default : NULL \
), \
.read = _read, \
.write = _write, \
.size = _size, \
}