Commit 97d06802 authored by Thomas Weißschuh's avatar Thomas Weißschuh Committed by Greg Kroah-Hartman
Browse files

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: default avatarThomas 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: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 31e4e12e
Loading
Loading
Loading
Loading
+4 −21
Original line number Diff line number Diff line
@@ -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,						\
}