[PATCH] orangefs: use memcpy_and_pad in khandle_to and inode_getxattr
From: Thorsten Blum
Date: Mon Apr 06 2026 - 14:11:27 EST
Use memcpy_and_pad() instead of memcpy() followed by memset() to
simplify ORANGEFS_khandle_to() and orangefs_inode_getxattr().
Signed-off-by: Thorsten Blum <thorsten.blum@xxxxxxxxx>
---
fs/orangefs/protocol.h | 5 +----
fs/orangefs/xattr.c | 6 ++----
2 files changed, 3 insertions(+), 8 deletions(-)
diff --git a/fs/orangefs/protocol.h b/fs/orangefs/protocol.h
index d403cf29a99b..bbdbd6a05d0d 100644
--- a/fs/orangefs/protocol.h
+++ b/fs/orangefs/protocol.h
@@ -50,10 +50,7 @@ static inline int ORANGEFS_khandle_cmp(const struct orangefs_khandle *kh1,
static inline void ORANGEFS_khandle_to(const struct orangefs_khandle *kh,
void *p, int size)
{
-
- memcpy(p, kh->u, 16);
- memset(p + 16, 0, size - 16);
-
+ memcpy_and_pad(p, size, kh->u, 16, 0);
}
static inline void ORANGEFS_khandle_from(struct orangefs_khandle *kh,
diff --git a/fs/orangefs/xattr.c b/fs/orangefs/xattr.c
index 1b372189cd10..bf13bed0aa58 100644
--- a/fs/orangefs/xattr.c
+++ b/fs/orangefs/xattr.c
@@ -140,8 +140,7 @@ ssize_t orangefs_inode_getxattr(struct inode *inode, const char *name,
ret = -ERANGE;
goto out_unlock;
}
- memcpy(buffer, cx->val, cx->length);
- memset(buffer + cx->length, 0, size - cx->length);
+ memcpy_and_pad(buffer, size, cx->val, cx->length, 0);
ret = cx->length;
goto out_unlock;
}
@@ -205,8 +204,7 @@ ssize_t orangefs_inode_getxattr(struct inode *inode, const char *name,
goto out_release_op;
}
- memcpy(buffer, new_op->downcall.resp.getxattr.val, length);
- memset(buffer + length, 0, size - length);
+ memcpy_and_pad(buffer, size, new_op->downcall.resp.getxattr.val, length, 0);
gossip_debug(GOSSIP_XATTR_DEBUG,
"orangefs_inode_getxattr: inode %pU "
"key %s key_sz %d, val_len %d\n",