These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / crypto / qat / qat_common / adf_transport.c
index ccec327..3865ae8 100644 (file)
@@ -264,6 +264,10 @@ int adf_create_ring(struct adf_accel_dev *accel_dev, const char *section,
                dev_err(&GET_DEV(accel_dev), "Can't get ring number\n");
                return -EFAULT;
        }
+       if (ring_num >= ADF_ETR_MAX_RINGS_PER_BANK) {
+               dev_err(&GET_DEV(accel_dev), "Invalid ring number\n");
+               return -EFAULT;
+       }
 
        bank = &transport_data->banks[bank_num];
        if (adf_reserve_ring(bank, ring_num)) {
@@ -285,7 +289,7 @@ int adf_create_ring(struct adf_accel_dev *accel_dev, const char *section,
                goto err;
 
        /* Enable HW arbitration for the given ring */
-       accel_dev->hw_device->hw_arb_ring_enable(ring);
+       adf_update_ring_arb(ring);
 
        if (adf_ring_debugfs_add(ring, ring_name)) {
                dev_err(&GET_DEV(accel_dev),
@@ -302,14 +306,13 @@ int adf_create_ring(struct adf_accel_dev *accel_dev, const char *section,
 err:
        adf_cleanup_ring(ring);
        adf_unreserve_ring(bank, ring_num);
-       accel_dev->hw_device->hw_arb_ring_disable(ring);
+       adf_update_ring_arb(ring);
        return ret;
 }
 
 void adf_remove_ring(struct adf_etr_ring_data *ring)
 {
        struct adf_etr_bank_data *bank = ring->bank;
-       struct adf_accel_dev *accel_dev = bank->accel_dev;
 
        /* Disable interrupts for the given ring */
        adf_disable_ring_irq(bank, ring->ring_number);
@@ -322,7 +325,7 @@ void adf_remove_ring(struct adf_etr_ring_data *ring)
        adf_ring_debugfs_rm(ring);
        adf_unreserve_ring(bank, ring->ring_number);
        /* Disable HW arbitration for the given ring */
-       accel_dev->hw_device->hw_arb_ring_disable(ring);
+       adf_update_ring_arb(ring);
        adf_cleanup_ring(ring);
 }
 
@@ -449,7 +452,7 @@ static int adf_init_bank(struct adf_accel_dev *accel_dev,
 err:
        for (i = 0; i < ADF_ETR_MAX_RINGS_PER_BANK; i++) {
                ring = &bank->rings[i];
-               if (hw_data->tx_rings_mask & (1 << i) && ring->inflights)
+               if (hw_data->tx_rings_mask & (1 << i))
                        kfree(ring->inflights);
        }
        return -ENOMEM;
@@ -463,7 +466,7 @@ err:
  * acceleration device accel_dev.
  * To be used by QAT device specific drivers.
  *
- * Return: 0 on success, error code othewise.
+ * Return: 0 on success, error code otherwise.
  */
 int adf_init_etr_data(struct adf_accel_dev *accel_dev)
 {