Commit f5903f50 authored by Herbert Xu's avatar Herbert Xu

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
...@@ -5006,10 +5006,14 @@ static int __cold dpaa2_dpseci_setup(struct fsl_mc_device *ls_dev) ...@@ -5006,10 +5006,14 @@ static int __cold dpaa2_dpseci_setup(struct fsl_mc_device *ls_dev)
struct device *dev = &ls_dev->dev; struct device *dev = &ls_dev->dev;
struct dpaa2_caam_priv *priv; struct dpaa2_caam_priv *priv;
struct dpaa2_caam_priv_per_cpu *ppriv; struct dpaa2_caam_priv_per_cpu *ppriv;
cpumask_t clean_mask; cpumask_var_t clean_mask;
int err, cpu; int err, cpu;
u8 i; u8 i;
err = -ENOMEM;
if (!zalloc_cpumask_var(&clean_mask, GFP_KERNEL))
goto err_cpumask;
priv = dev_get_drvdata(dev); priv = dev_get_drvdata(dev);
priv->dev = dev; priv->dev = dev;
...@@ -5085,7 +5089,6 @@ static int __cold dpaa2_dpseci_setup(struct fsl_mc_device *ls_dev) ...@@ -5085,7 +5089,6 @@ static int __cold dpaa2_dpseci_setup(struct fsl_mc_device *ls_dev)
} }
} }
cpumask_clear(&clean_mask);
i = 0; i = 0;
for_each_online_cpu(cpu) { for_each_online_cpu(cpu) {
u8 j; u8 j;
...@@ -5114,7 +5117,7 @@ static int __cold dpaa2_dpseci_setup(struct fsl_mc_device *ls_dev) ...@@ -5114,7 +5117,7 @@ static int __cold dpaa2_dpseci_setup(struct fsl_mc_device *ls_dev)
err = -ENOMEM; err = -ENOMEM;
goto err_alloc_netdev; goto err_alloc_netdev;
} }
cpumask_set_cpu(cpu, &clean_mask); cpumask_set_cpu(cpu, clean_mask);
ppriv->net_dev->dev = *dev; ppriv->net_dev->dev = *dev;
netif_napi_add_tx_weight(ppriv->net_dev, &ppriv->napi, 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) ...@@ -5122,15 +5125,19 @@ static int __cold dpaa2_dpseci_setup(struct fsl_mc_device *ls_dev)
DPAA2_CAAM_NAPI_WEIGHT); DPAA2_CAAM_NAPI_WEIGHT);
} }
return 0; err = 0;
goto free_cpumask;
err_alloc_netdev: err_alloc_netdev:
free_dpaa2_pcpu_netdev(priv, &clean_mask); free_dpaa2_pcpu_netdev(priv, clean_mask);
err_get_rx_queue: err_get_rx_queue:
dpaa2_dpseci_congestion_free(priv); dpaa2_dpseci_congestion_free(priv);
err_get_vers: err_get_vers:
dpseci_close(priv->mc_io, 0, ls_dev->mc_handle); dpseci_close(priv->mc_io, 0, ls_dev->mc_handle);
err_open: err_open:
free_cpumask:
free_cpumask_var(clean_mask);
err_cpumask:
return err; return err;
} }
......
...@@ -736,7 +736,11 @@ int caam_qi_init(struct platform_device *caam_pdev) ...@@ -736,7 +736,11 @@ int caam_qi_init(struct platform_device *caam_pdev)
struct device *ctrldev = &caam_pdev->dev, *qidev; struct device *ctrldev = &caam_pdev->dev, *qidev;
struct caam_drv_private *ctrlpriv; struct caam_drv_private *ctrlpriv;
const cpumask_t *cpus = qman_affine_cpus(); 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); ctrlpriv = dev_get_drvdata(ctrldev);
qidev = ctrldev; qidev = ctrldev;
...@@ -745,19 +749,16 @@ int caam_qi_init(struct platform_device *caam_pdev) ...@@ -745,19 +749,16 @@ int caam_qi_init(struct platform_device *caam_pdev)
err = init_cgr(qidev); err = init_cgr(qidev);
if (err) { if (err) {
dev_err(qidev, "CGR initialization failed: %d\n", err); dev_err(qidev, "CGR initialization failed: %d\n", err);
return err; goto fail_cgr;
} }
/* Initialise response FQs */ /* Initialise response FQs */
err = alloc_rsp_fqs(qidev); err = alloc_rsp_fqs(qidev);
if (err) { if (err) {
dev_err(qidev, "Can't allocate CAAM response FQs: %d\n", err); dev_err(qidev, "Can't allocate CAAM response FQs: %d\n", err);
free_rsp_fqs(); goto fail_fqs;
return err;
} }
cpumask_clear(&clean_mask);
/* /*
* Enable the NAPI contexts on each of the core which has an affine * Enable the NAPI contexts on each of the core which has an affine
* portal. * portal.
...@@ -773,7 +774,7 @@ int caam_qi_init(struct platform_device *caam_pdev) ...@@ -773,7 +774,7 @@ int caam_qi_init(struct platform_device *caam_pdev)
err = -ENOMEM; err = -ENOMEM;
goto fail; goto fail;
} }
cpumask_set_cpu(i, &clean_mask); cpumask_set_cpu(i, clean_mask);
priv->net_dev = net_dev; priv->net_dev = net_dev;
net_dev->dev = *qidev; net_dev->dev = *qidev;
...@@ -788,7 +789,7 @@ int caam_qi_init(struct platform_device *caam_pdev) ...@@ -788,7 +789,7 @@ int caam_qi_init(struct platform_device *caam_pdev)
if (!qi_cache) { if (!qi_cache) {
dev_err(qidev, "Can't allocate CAAM cache\n"); dev_err(qidev, "Can't allocate CAAM cache\n");
err = -ENOMEM; err = -ENOMEM;
goto fail2; goto fail;
} }
caam_debugfs_qi_init(ctrlpriv); caam_debugfs_qi_init(ctrlpriv);
...@@ -798,11 +799,19 @@ int caam_qi_init(struct platform_device *caam_pdev) ...@@ -798,11 +799,19 @@ int caam_qi_init(struct platform_device *caam_pdev)
goto fail2; goto fail2;
dev_info(qidev, "Linux CAAM Queue I/F driver initialised\n"); dev_info(qidev, "Linux CAAM Queue I/F driver initialised\n");
return 0; goto free_cpumask;
fail2: fail2:
free_rsp_fqs(); kmem_cache_destroy(qi_cache);
fail: 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; return err;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment