diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
index 3b13c648d4900efeca9f17f118f2dbd0c5e1e8be..e413a9cf8ee38b9e0f9fad3d9234653626dbf1d7 100644
--- a/fs/ubifs/dir.c
+++ b/fs/ubifs/dir.c
@@ -1234,6 +1234,8 @@ static int ubifs_symlink(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: