diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
index e413a9cf8ee38b9e0f9fad3d9234653626dbf1d7..6b3db00d9b1213b9478319f0f1f9e8ee07626399 100644
--- a/fs/ubifs/dir.c
+++ b/fs/ubifs/dir.c
@@ -1134,6 +1134,8 @@ static int ubifs_mknod(struct mnt_idmap *idmap, struct inode *dir,
 	dir_ui->ui_size = dir->i_size;
 	mutex_unlock(&dir_ui->ui_mutex);
 out_inode:
+	/* Free inode->i_link before inode is marked as bad. */
+	fscrypt_free_inode(inode);
 	make_bad_inode(inode);
 	iput(inode);
 out_fname: