Merge tag 'xfs-5.11-merge-4' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
[linux-2.6-microblaze.git] / fs / ubifs / journal.c
index 4a5b06f..03410ae 100644 (file)
@@ -894,6 +894,7 @@ int ubifs_jnl_write_inode(struct ubifs_info *c, const struct inode *inode)
                                if (err == -ENOENT)
                                        break;
 
+                               kfree(pxent);
                                goto out_release;
                        }
 
@@ -906,6 +907,7 @@ int ubifs_jnl_write_inode(struct ubifs_info *c, const struct inode *inode)
                                ubifs_err(c, "dead directory entry '%s', error %d",
                                          xent->name, err);
                                ubifs_ro_mode(c, err);
+                               kfree(pxent);
                                kfree(xent);
                                goto out_release;
                        }
@@ -936,8 +938,6 @@ int ubifs_jnl_write_inode(struct ubifs_info *c, const struct inode *inode)
                                          inode->i_ino);
        release_head(c, BASEHD);
 
-       ubifs_add_auth_dirt(c, lnum);
-
        if (last_reference) {
                err = ubifs_tnc_remove_ino(c, inode->i_ino);
                if (err)
@@ -947,6 +947,8 @@ int ubifs_jnl_write_inode(struct ubifs_info *c, const struct inode *inode)
        } else {
                union ubifs_key key;
 
+               ubifs_add_auth_dirt(c, lnum);
+
                ino_key_init(c, &key, inode->i_ino);
                err = ubifs_tnc_add(c, &key, lnum, offs, ilen, hash);
        }
@@ -1557,7 +1559,8 @@ int ubifs_jnl_truncate(struct ubifs_info *c, const struct inode *inode,
                        if (dn_len <= 0 || dn_len > UBIFS_BLOCK_SIZE) {
                                ubifs_err(c, "bad data node (block %u, inode %lu)",
                                          blk, inode->i_ino);
-                               ubifs_dump_node(c, dn);
+                               ubifs_dump_node(c, dn, sz - UBIFS_INO_NODE_SZ -
+                                               UBIFS_TRUN_NODE_SZ);
                                goto out_free;
                        }
 
@@ -1798,7 +1801,6 @@ int ubifs_jnl_change_xattr(struct ubifs_info *c, const struct inode *inode,
        u8 hash[UBIFS_HASH_ARR_SZ];
 
        dbg_jnl("ino %lu, ino %lu", host->i_ino, inode->i_ino);
-       ubifs_assert(c, host->i_nlink > 0);
        ubifs_assert(c, inode->i_nlink > 0);
        ubifs_assert(c, mutex_is_locked(&host_ui->ui_mutex));