Re: [PATCH v4 1/3] initramfs: add file metadata
From: Eugeniu Rosca <hidden>
Date: 2022-06-15 17:54:25
Also in:
linux-fsdevel, linux-integrity, linux-security-module, lkml
Hello Roberto, Hello Mimi, On Thu, May 23, 2019 at 02:18:01PM +0200, Roberto Sassu wrote:
From: Mimi Zohar <redacted>
This patch adds metadata to a file from a supplied buffer. The buffer might
contains multiple metadata records. The format of each record is:
<metadata len (ASCII, 8 chars)><version><type><metadata>
For now, only the TYPE_XATTR metadata type is supported. The specific
format of this metadata type is:
<xattr #N name>\0<xattr #N value>
[kamensky: fixed restoring of xattrs for symbolic links by using
sys_lsetxattr() instead of sys_setxattr()]
[sassu: removed state management, kept only do_setxattrs(), added support
for generic file metadata, replaced sys_lsetxattr() with
vfs_setxattr(), added check for entry_size, added check for
hdr->c_size, replaced strlen() with strnlen(); moved do_setxattrs()
before do_name()]
Signed-off-by: Mimi Zohar <redacted>
Signed-off-by: Victor Kamensky <redacted>
Signed-off-by: Taras Kondratiuk <redacted>
Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com>
---
include/linux/initramfs.h | 21 ++++++++++
init/initramfs.c | 88 ++++++++++++++++++++++++++++++++++++++-
2 files changed, 107 insertions(+), 2 deletions(-)
create mode 100644 include/linux/initramfs.h[..]
+static int __init do_setxattrs(char *pathname, char *buf, size_t size)
+{
+ struct path path;
+ char *xattr_name, *xattr_value;
+ size_t xattr_name_size, xattr_value_size;
+ int ret;
+
+ xattr_name = buf;
+ xattr_name_size = strnlen(xattr_name, size);
+ if (xattr_name_size == size) {
+ error("malformed xattrs");
+ return -EINVAL;
+ }
+[..]
+
+ switch (hdr->c_type) {
+ case TYPE_XATTR:
+ do_setxattrs(pathname, buf + sizeof(*hdr),
+ entry_size - sizeof(*hdr));Is it on purpose not to check the return value of do_setxattrs? I think I would have more comfort and piece of mind if I knew the return value is properly checked and acted upon. Otherwise, why returning an int from within do_setxattrs() at all? BR, Eugeniu