lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-Id: <20241221-sysfs-const-bin_attr-kheaders-v2-1-8205538aa012@weissschuh.net>
Date: Sat, 21 Dec 2024 15:09:34 +0100
From: Thomas Weißschuh <linux@...ssschuh.net>
To: "Joel Fernandes (Google)" <joel@...lfernandes.org>, 
 Greg Kroah-Hartman <gregkh@...uxfoundation.org>, 
 Kees Cook <kees@...nel.org>, Masahiro Yamada <masahiroy@...nel.org>
Cc: linux-kernel@...r.kernel.org, 
 Thomas Weißschuh <linux@...ssschuh.net>
Subject: [PATCH v2] kheaders: Simplify attribute through
 __BIN_ATTR_SIMPLE_RO()

The utility macro from the sysfs core is sufficient to implement this
attribute. Make use of it.

Signed-off-by: Thomas Weißschuh <linux@...ssschuh.net>
---
Changes in v2:
- Use __BIN_ATTR_SIMPLE_RO() (Thanks Masahiro)
- Link to v1: https://lore.kernel.org/r/20241215-sysfs-const-bin_attr-kheaders-v1-1-319bbd50e224@weissschuh.net
---
__BIN_ATTR() is used over the normal struct initializer because it is
shorter and can also handle the transition to const struct bin_attr
callbacks.
If you prefer, I can switch that back, but it will introduce a trivial
conflict with [0].

Note: There is no formal maintainer for that source file.

[0] https://lore.kernel.org/lkml/20241205-sysfs-const-bin_attr-simple-v1-0-4a4e4ced71e3@weissschuh.net/
---
 kernel/kheaders.c | 19 +++----------------
 1 file changed, 3 insertions(+), 16 deletions(-)

diff --git a/kernel/kheaders.c b/kernel/kheaders.c
index 42163c9e94e557c5043e2ac7987b567f23087ee2..378088b07f46d643736c04b9075f631e0dc2a53d 100644
--- a/kernel/kheaders.c
+++ b/kernel/kheaders.c
@@ -29,25 +29,12 @@ asm (
 extern char kernel_headers_data[];
 extern char kernel_headers_data_end[];
 
-static ssize_t
-ikheaders_read(struct file *file,  struct kobject *kobj,
-	       struct bin_attribute *bin_attr,
-	       char *buf, loff_t off, size_t len)
-{
-	memcpy(buf, &kernel_headers_data[off], len);
-	return len;
-}
-
-static struct bin_attribute kheaders_attr __ro_after_init = {
-	.attr = {
-		.name = "kheaders.tar.xz",
-		.mode = 0444,
-	},
-	.read = &ikheaders_read,
-};
+static struct bin_attribute kheaders_attr __ro_after_init =
+	__BIN_ATTR_SIMPLE_RO(kheaders.tar.xz, 0444);
 
 static int __init ikheaders_init(void)
 {
+	kheaders_attr.private = kernel_headers_data;
 	kheaders_attr.size = (kernel_headers_data_end -
 			      kernel_headers_data);
 	return sysfs_create_bin_file(kernel_kobj, &kheaders_attr);

---
base-commit: 499551201b5f4fd3c0618a3e95e3d0d15ea18f31
change-id: 20241215-sysfs-const-bin_attr-kheaders-440887f23892

Best regards,
-- 
Thomas Weißschuh <linux@...ssschuh.net>


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ