Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a76284e6 authored by Subodh Nijsure's avatar Subodh Nijsure Committed by Artem Bityutskiy
Browse files

UBIFS: fix a couple bugs in UBIFS xattr length calculation



The journal update function did not work for extended attributes properly,
because extended attribute inodes carry the xattr data, and the size of this
data was not taken into account.

Artem: improved commit message, amended the patch a bit.

Signed-off-by: default avatarSubodh Nijsure <snijsure@grid-net.com>
Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: default avatarBen Shelton <ben.shelton@ni.com>
Acked-by: default avatarBrad Mouring <brad.mouring@ni.com>
Acked-by: default avatarGratian Crisan <gratian.crisan@ni.com>
Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
parent b81000b6
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -571,7 +571,11 @@ int ubifs_jnl_update(struct ubifs_info *c, const struct inode *dir,

	aligned_dlen = ALIGN(dlen, 8);
	aligned_ilen = ALIGN(ilen, 8);

	len = aligned_dlen + aligned_ilen + UBIFS_INO_NODE_SZ;
	/* Make sure to also account for extended attributes */
	len += host_ui->data_len;

	dent = kmalloc(len, GFP_NOFS);
	if (!dent)
		return -ENOMEM;
@@ -648,7 +652,8 @@ int ubifs_jnl_update(struct ubifs_info *c, const struct inode *dir,

	ino_key_init(c, &ino_key, dir->i_ino);
	ino_offs += aligned_ilen;
	err = ubifs_tnc_add(c, &ino_key, lnum, ino_offs, UBIFS_INO_NODE_SZ);
	err = ubifs_tnc_add(c, &ino_key, lnum, ino_offs,
			    UBIFS_INO_NODE_SZ + host_ui->data_len);
	if (err)
		goto out_ro;