Merge tag 'trace-v6.9-2' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux...
[sfrench/cifs-2.6.git] / drivers / crypto / intel / qat / qat_common / adf_rl.c
index de1b214dba1f98b74593f6c7cac1350ca5782471..d4f2db3c53d8c0c09f636b66281ab4d28f87549f 100644 (file)
@@ -788,6 +788,24 @@ static void clear_sla(struct adf_rl *rl_data, struct rl_sla *sla)
        sla_type_arr[node_id] = NULL;
 }
 
+static void free_all_sla(struct adf_accel_dev *accel_dev)
+{
+       struct adf_rl *rl_data = accel_dev->rate_limiting;
+       int sla_id;
+
+       mutex_lock(&rl_data->rl_lock);
+
+       for (sla_id = 0; sla_id < RL_NODES_CNT_MAX; sla_id++) {
+               if (!rl_data->sla[sla_id])
+                       continue;
+
+               kfree(rl_data->sla[sla_id]);
+               rl_data->sla[sla_id] = NULL;
+       }
+
+       mutex_unlock(&rl_data->rl_lock);
+}
+
 /**
  * add_update_sla() - handles the creation and the update of an SLA
  * @accel_dev: pointer to acceleration device structure
@@ -1155,7 +1173,7 @@ void adf_rl_stop(struct adf_accel_dev *accel_dev)
                return;
 
        adf_sysfs_rl_rm(accel_dev);
-       adf_rl_remove_sla_all(accel_dev, true);
+       free_all_sla(accel_dev);
 }
 
 void adf_rl_exit(struct adf_accel_dev *accel_dev)