ubifs: Fix off-by-one error

An inode is allowed to have ubifs_xattr_max_cnt() xattrs, so we must
complain only when an inode has more xattrs, having exactly
ubifs_xattr_max_cnt() xattrs is fine.
With this the maximum number of xattrs can be created without hitting
the "has too many xattrs" warning when removing it.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:
Sascha Hauer 2021-01-20 14:12:53 +01:00 committed by Richard Weinberger
parent 410b6de702
commit d984bcf576
2 changed files with 2 additions and 2 deletions

View File

@ -881,7 +881,7 @@ int ubifs_jnl_write_inode(struct ubifs_info *c, const struct inode *inode)
struct inode *xino; struct inode *xino;
struct ubifs_dent_node *xent, *pxent = NULL; struct ubifs_dent_node *xent, *pxent = NULL;
if (ui->xattr_cnt >= ubifs_xattr_max_cnt(c)) { if (ui->xattr_cnt > ubifs_xattr_max_cnt(c)) {
ubifs_err(c, "Cannot delete inode, it has too much xattrs!"); ubifs_err(c, "Cannot delete inode, it has too much xattrs!");
goto out_release; goto out_release;
} }

View File

@ -498,7 +498,7 @@ int ubifs_purge_xattrs(struct inode *host)
struct fscrypt_name nm = {0}; struct fscrypt_name nm = {0};
int err; int err;
if (ubifs_inode(host)->xattr_cnt < ubifs_xattr_max_cnt(c)) if (ubifs_inode(host)->xattr_cnt <= ubifs_xattr_max_cnt(c))
return 0; return 0;
ubifs_warn(c, "inode %lu has too many xattrs, doing a non-atomic deletion", ubifs_warn(c, "inode %lu has too many xattrs, doing a non-atomic deletion",