diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2018-09-27 11:36:43 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2018-10-02 14:01:42 +0200 |
commit | 43369d456c4d7d7ec4625269c2ba838363e8af7b (patch) | |
tree | 361a2c98e3d960637c47a40686d140be76dd598f /ubifs-utils/mkfs.ubifs/mkfs.ubifs.c | |
parent | 64667fe63ba9dd78adb9c4abf04bc3e4e25a0fd7 (diff) |
mkfs.ubifs: Fix xattr nlink value
The nlink value of a xattr node must always be one, it has nothing to do
with the nlink value of the inode the attribute belongs to.
The bug can be observed when mounting a mkfs.ubifs generated image which
contains xattrs on directories or files with hardlinks to them. When
mounting such an image with chk_fs = 1 it fails with:
UBIFS error (ubi0:0 pid 1833): dbg_check_filesystem: inode 3308 nlink is 3, but calculated nlink is 1
Another bug that can be triggered is an assertion in
ubifs_xattr_remove() which assures that the xattr i_nlink count should
be one when the xattr is removed.
Fixes: 50044ef ("mkfs.ubifs: Add extended attribute support")
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'ubifs-utils/mkfs.ubifs/mkfs.ubifs.c')
-rw-r--r-- | ubifs-utils/mkfs.ubifs/mkfs.ubifs.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c index 0287087..c764a23 100644 --- a/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c +++ b/ubifs-utils/mkfs.ubifs/mkfs.ubifs.c @@ -1070,7 +1070,7 @@ static int add_xattr(struct stat *st, ino_t inum, const void *data, goto out; ino->creat_sqnum = cpu_to_le64(creat_sqnum); - ino->nlink = cpu_to_le32(st->st_nlink); + ino->nlink = cpu_to_le32(1); /* * The time fields are updated assuming the default time granularity * of 1 second. To support finer granularities, utime() would be needed. |