hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/fs/ubifs/super.c
....@@ -833,7 +833,7 @@
833833 INIT_LIST_HEAD(&c->jheads[i].buds_list);
834834 err = ubifs_wbuf_init(c, &c->jheads[i].wbuf);
835835 if (err)
836
- return err;
836
+ goto out_wbuf;
837837
838838 c->jheads[i].wbuf.sync_callback = &bud_wbuf_callback;
839839 c->jheads[i].wbuf.jhead = i;
....@@ -841,7 +841,7 @@
841841 c->jheads[i].log_hash = ubifs_hash_get_desc(c);
842842 if (IS_ERR(c->jheads[i].log_hash)) {
843843 err = PTR_ERR(c->jheads[i].log_hash);
844
- goto out;
844
+ goto out_log_hash;
845845 }
846846 }
847847
....@@ -854,9 +854,18 @@
854854
855855 return 0;
856856
857
-out:
858
- while (i--)
857
+out_log_hash:
858
+ kfree(c->jheads[i].wbuf.buf);
859
+ kfree(c->jheads[i].wbuf.inodes);
860
+
861
+out_wbuf:
862
+ while (i--) {
863
+ kfree(c->jheads[i].wbuf.buf);
864
+ kfree(c->jheads[i].wbuf.inodes);
859865 kfree(c->jheads[i].log_hash);
866
+ }
867
+ kfree(c->jheads);
868
+ c->jheads = NULL;
860869
861870 return err;
862871 }