diff --git a/boot/bootutil/src/loader.c b/boot/bootutil/src/loader.c
index bacd581..b3b2059 100644
--- a/boot/bootutil/src/loader.c
+++ b/boot/bootutil/src/loader.c
@@ -2867,13 +2867,13 @@
  * Updates the security counter for the current image.
  *
  * @param  state        Boot loader status information.
- * @param  active_slot  Index of the slot will be loaded for current image.
+ * @param  slot_usage   Information about the active and available slots.
  *
  * @return              0 on success; nonzero on failure.
  */
 static int
 boot_update_hw_rollback_protection(struct boot_loader_state *state,
-                                   uint32_t active_slot)
+                                   const struct slot_usage_t slot_usage[])
 {
 #ifdef MCUBOOT_HW_ROLLBACK_PROT
     int rc;
@@ -2889,8 +2889,9 @@
      */
     if (slot_usage[BOOT_CURR_IMG(state)].swap_state.image_ok == BOOT_FLAG_SET) {
 #endif
-        rc = boot_update_security_counter(BOOT_CURR_IMG(state), active_slot,
-                                            boot_img_hdr(state, active_slot));
+        rc = boot_update_security_counter(BOOT_CURR_IMG(state),
+                                          slot_usage[BOOT_CURR_IMG(state)].active_slot,
+                                          boot_img_hdr(state, slot_usage[BOOT_CURR_IMG(state)].active_slot));
         if (rc != 0) {
             BOOT_LOG_ERR("Security counter update failed after image "
                             "validation.");
@@ -2904,8 +2905,7 @@
 
 #else /* MCUBOOT_HW_ROLLBACK_PROT */
     (void) (state);
-    (void) (active_slot);
-
+    (void) (slot_usage);
     return 0;
 #endif
 }
@@ -2916,7 +2916,6 @@
     struct slot_usage_t slot_usage[BOOT_IMAGE_NUMBER];
     int rc;
     fih_int fih_rc;
-    uint32_t active_slot;
 
     memset(state, 0, sizeof(struct boot_loader_state));
     memset(slot_usage, 0, sizeof(struct slot_usage_t) * BOOT_IMAGE_NUMBER);
@@ -2949,15 +2948,12 @@
 #endif
 
     IMAGES_ITER(BOOT_CURR_IMG(state)) {
-
-        active_slot = slot_usage[BOOT_CURR_IMG(state)].active_slot;
-
-        rc = boot_update_hw_rollback_protection(state, active_slot);
+        rc = boot_update_hw_rollback_protection(state, slot_usage);
         if (rc != 0) {
             goto out;
         }
 
-        rc = boot_add_shared_data(state, active_slot);
+        rc = boot_add_shared_data(state, slot_usage[BOOT_CURR_IMG(state)].active_slot);
         if (rc != 0) {
             goto out;
         }
