On 12.02.25 10:08, Pavel Tikhomirov wrote:


On 2/11/25 22:25, Alexander Atanasov wrote:
@@ -2607,6 +2674,7 @@ int ploop_prepare_reloc_index_wb(struct ploop *ploop,
          type = PIWB_TYPE_RELOC;
      err = -EIO;
+    spin_lock_irq(&ploop->bat_lock);
      if (test_bit(MD_DIRTY, &md->status) || test_bit(MD_WRITEBACK, &md->status)) {
          PL_ERR("Unexpected md status: %lx", md->status);
          goto out_error;
@@ -2629,12 +2697,13 @@ int ploop_prepare_reloc_index_wb(struct ploop *ploop,
          if (err)
              goto out_reset;
      }
+    spin_unlock_irq(&ploop->bat_lock);
      *ret_md = md;
      return 0;
  out_reset:
-    ploop_break_bat_update(ploop, md);
+    ploop_break_bat_update(ploop, md, piwb);
  out_error:
      return err;
  }

You forgot to release bat_lock on out_reset error path.



Ok, i will make v2 - i think this is the only one critical.

--
Regards,
Alexander Atanasov

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to