Commit f5903f50 authored by Herbert Xu's avatar Herbert Xu
Browse files

crypto: caam/qi* - Use cpumask_var_t instead of cpumask_t



Switch cpumask_t to cpumask_var_t as the former may be too big
for the stack:

  CC [M]  drivers/crypto/caam/qi.o
  CC [M]  drivers/crypto/caam/caamalg_qi2.o
../drivers/crypto/caam/qi.c: In function ‘caam_qi_init’:
../drivers/crypto/caam/qi.c:808:1: warning: the frame size of 1056 bytes is larger than 1024 bytes [-Wframe-larger-than=]
  808 | }
      | ^
  CHECK   ../drivers/crypto/caam/qi.c
../drivers/crypto/caam/caamalg_qi2.c: In function ‘dpaa2_dpseci_setup’:
../drivers/crypto/caam/caamalg_qi2.c:5135:1: warning: the frame size of 1032 bytes is larger than 1024 bytes [-Wframe-larger-than=]
 5135 | }
      | ^

Also fix the error path handling in qi.c.

Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 9d3a7ff2
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -5006,10 +5006,14 @@ static int __cold dpaa2_dpseci_setup(struct fsl_mc_device *ls_dev)
	struct device *dev = &ls_dev->dev;
	struct dpaa2_caam_priv *priv;
	struct dpaa2_caam_priv_per_cpu *ppriv;
	cpumask_t clean_mask;
	cpumask_var_t clean_mask;
	int err, cpu;
	u8 i;

	err = -ENOMEM;
	if (!zalloc_cpumask_var(&clean_mask, GFP_KERNEL))
		goto err_cpumask;

	priv = dev_get_drvdata(dev);

	priv->dev = dev;
@@ -5085,7 +5089,6 @@ static int __cold dpaa2_dpseci_setup(struct fsl_mc_device *ls_dev)
		}
	}

	cpumask_clear(&clean_mask);
	i = 0;
	for_each_online_cpu(cpu) {
		u8 j;
@@ -5114,7 +5117,7 @@ static int __cold dpaa2_dpseci_setup(struct fsl_mc_device *ls_dev)
			err = -ENOMEM;
			goto err_alloc_netdev;
		}
		cpumask_set_cpu(cpu, &clean_mask);
		cpumask_set_cpu(cpu, clean_mask);
		ppriv->net_dev->dev = *dev;

		netif_napi_add_tx_weight(ppriv->net_dev, &ppriv->napi,
@@ -5122,15 +5125,19 @@ static int __cold dpaa2_dpseci_setup(struct fsl_mc_device *ls_dev)
					 DPAA2_CAAM_NAPI_WEIGHT);
	}

	return 0;
	err = 0;
	goto free_cpumask;

err_alloc_netdev:
	free_dpaa2_pcpu_netdev(priv, &clean_mask);
	free_dpaa2_pcpu_netdev(priv, clean_mask);
err_get_rx_queue:
	dpaa2_dpseci_congestion_free(priv);
err_get_vers:
	dpseci_close(priv->mc_io, 0, ls_dev->mc_handle);
err_open:
free_cpumask:
	free_cpumask_var(clean_mask);
err_cpumask:
	return err;
}

+20 −11
Original line number Diff line number Diff line
@@ -736,7 +736,11 @@ int caam_qi_init(struct platform_device *caam_pdev)
	struct device *ctrldev = &caam_pdev->dev, *qidev;
	struct caam_drv_private *ctrlpriv;
	const cpumask_t *cpus = qman_affine_cpus();
	cpumask_t clean_mask;
	cpumask_var_t clean_mask;

	err = -ENOMEM;
	if (!zalloc_cpumask_var(&clean_mask, GFP_KERNEL))
		goto fail_cpumask;

	ctrlpriv = dev_get_drvdata(ctrldev);
	qidev = ctrldev;
@@ -745,19 +749,16 @@ int caam_qi_init(struct platform_device *caam_pdev)
	err = init_cgr(qidev);
	if (err) {
		dev_err(qidev, "CGR initialization failed: %d\n", err);
		return err;
		goto fail_cgr;
	}

	/* Initialise response FQs */
	err = alloc_rsp_fqs(qidev);
	if (err) {
		dev_err(qidev, "Can't allocate CAAM response FQs: %d\n", err);
		free_rsp_fqs();
		return err;
		goto fail_fqs;
	}

	cpumask_clear(&clean_mask);

	/*
	 * Enable the NAPI contexts on each of the core which has an affine
	 * portal.
@@ -773,7 +774,7 @@ int caam_qi_init(struct platform_device *caam_pdev)
			err = -ENOMEM;
			goto fail;
		}
		cpumask_set_cpu(i, &clean_mask);
		cpumask_set_cpu(i, clean_mask);
		priv->net_dev = net_dev;
		net_dev->dev = *qidev;

@@ -788,7 +789,7 @@ int caam_qi_init(struct platform_device *caam_pdev)
	if (!qi_cache) {
		dev_err(qidev, "Can't allocate CAAM cache\n");
		err = -ENOMEM;
		goto fail2;
		goto fail;
	}

	caam_debugfs_qi_init(ctrlpriv);
@@ -798,11 +799,19 @@ int caam_qi_init(struct platform_device *caam_pdev)
		goto fail2;

	dev_info(qidev, "Linux CAAM Queue I/F driver initialised\n");
	return 0;
	goto free_cpumask;

fail2:
	free_rsp_fqs();
	kmem_cache_destroy(qi_cache);
fail:
	free_caam_qi_pcpu_netdev(&clean_mask);
	free_caam_qi_pcpu_netdev(clean_mask);
fail_fqs:
	free_rsp_fqs();
	qman_delete_cgr_safe(&qipriv.cgr);
	qman_release_cgrid(qipriv.cgr.cgrid);
fail_cgr:
free_cpumask:
	free_cpumask_var(clean_mask);
fail_cpumask:
	return err;
}