From: Zhihao Cheng Date: Fri, 12 Jul 2024 06:36:24 +0000 (+0800) Subject: ubifs: ubifs_jnl_write_inode: Only check once for the limitation of xattr count X-Git-Tag: microblaze-v6.16~483^2~24 X-Git-Url: http://git.monstr.eu/?a=commitdiff_plain;h=957e1c4e1779;p=linux-2.6-microblaze.git ubifs: ubifs_jnl_write_inode: Only check once for the limitation of xattr count No need to check the limitation of xattr count every time in function ubifs_jnl_write_inode(), because the 'ui->xattr_cnt' won't be modified by others in the inode evicting process. Signed-off-by: Zhihao Cheng Signed-off-by: Richard Weinberger --- diff --git a/fs/ubifs/journal.c b/fs/ubifs/journal.c index 4a35f9e8f668..8e98be642371 100644 --- a/fs/ubifs/journal.c +++ b/fs/ubifs/journal.c @@ -981,6 +981,12 @@ int ubifs_jnl_write_inode(struct ubifs_info *c, const struct inode *inode) dbg_jnl("ino %lu, nlink %u", inode->i_ino, inode->i_nlink); + if (kill_xattrs && ui->xattr_cnt > ubifs_xattr_max_cnt(c)) { + ubifs_err(c, "Cannot delete inode, it has too much xattrs!"); + ubifs_ro_mode(c, err); + return -EPERM; + } + /* * If the inode is being deleted, do not write the attached data. No * need to synchronize the write-buffer either. @@ -1012,12 +1018,6 @@ int ubifs_jnl_write_inode(struct ubifs_info *c, const struct inode *inode) struct inode *xino; struct ubifs_dent_node *xent, *pxent = NULL; - if (ui->xattr_cnt > ubifs_xattr_max_cnt(c)) { - err = -EPERM; - ubifs_err(c, "Cannot delete inode, it has too much xattrs!"); - goto out_release; - } - lowest_xent_key(c, &key, inode->i_ino); while (1) { xent = ubifs_tnc_next_ent(c, &key, &nm);