From: Alexander Zarochentsev Date: Wed, 20 Jul 2022 16:05:53 +0000 (+0300) Subject: LU-16060 osd-ldiskfs: copy nul byte terminator in writelink X-Git-Tag: 2.15.4-RC1~31 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=d1f0ef129d8e9af13c31dc821a00639de3349873;p=fs%2Flustre-release.git LU-16060 osd-ldiskfs: copy nul byte terminator in writelink memcpy() call in osd_ldiskfs_writelink() doesn't copy the nul terminator byte from the source buffer, leaving the space after target link name uninialized which is ok for the kernel code and debugfs but not e2fsck. HPE-bug-id: LUS-11103 Lustre-change: https://review.whamcloud.com/48092 Lustre-commit: 907dc0a2d333f2df2d654a968fc50f8cc05b779d Signed-off-by: Alexander Zarochentsev Change-Id: I914f2c78e1a6571bf360a23b0ede8c70502bf0df Reviewed-by: Artem Blagodarenko Reviewed-by: Andrew Perepechko Reviewed-by: Andreas Dilger Signed-off-by: Etienne AUJAMES Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/51356 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin --- diff --git a/lustre/osd-ldiskfs/osd_io.c b/lustre/osd-ldiskfs/osd_io.c index f44420d..7131add 100644 --- a/lustre/osd-ldiskfs/osd_io.c +++ b/lustre/osd-ldiskfs/osd_io.c @@ -2022,7 +2022,8 @@ static int osd_ldiskfs_writelink(struct inode *inode, char *buffer, int buflen) /* LU-2634: clear the extent format for fast symlink */ ldiskfs_clear_inode_flag(inode, LDISKFS_INODE_EXTENTS); - memcpy((char *)&LDISKFS_I(inode)->i_data, (char *)buffer, buflen); + /* Copying the NUL byte terminating the link target as well */ + memcpy((char *)&LDISKFS_I(inode)->i_data, (char *)buffer, buflen + 1); spin_lock(&inode->i_lock); LDISKFS_I(inode)->i_disksize = buflen; i_size_write(inode, buflen);