Message ID | Zqdd5VASjaXaac9Z@gondor.apana.org.au (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Herbert Xu |
Headers | show |
Series | crypto: caam/qi2 - use cpumask_var_t in dpaa2_dpseci_setup | expand |
On 7/29/2024 12:16 PM, Herbert Xu wrote: > Switch cpumask_t to cpumask_var_t as the former may be too big > for the stack: > > CC [M] drivers/crypto/caam/caamalg_qi2.o > ../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 | } > | ^ > > Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Reviewed-by: Horia Geantă <horia.geanta@nxp.com> though I have a few comments: 1. This patch does not apply cleanly on crypto tree Patch depends on the patch set https://lore.kernel.org/linux-crypto/20240702185557.3699991-1-leitao@debian.org/ which was merged via net-next. I assume the dependency will be fixed with the crypto tree moving to v6.11-rc1. 2. I was not able to reproduce the issue I tried on arm64 and i386 (with COMPILE_TEST=y) defconfigs. I could reproduce the issue on arm64 only when modifying CONFIG_FRAME_WARN=2048 -> 1024. Still, I would like to know your configuration, since there is a similar case in caam_qi_init() (drivers/crypto/caam/qi.c) which might need attention too. Thanks, Horia
On Mon, Jul 29, 2024 at 02:50:00PM +0000, Horia Geanta wrote: > > 1. This patch does not apply cleanly on crypto tree > > Patch depends on the patch set > https://lore.kernel.org/linux-crypto/20240702185557.3699991-1-leitao@debian.org/ > which was merged via net-next. > > I assume the dependency will be fixed with the crypto tree moving to v6.11-rc1. Yes this is meant to be based on rc1. > 2. I was not able to reproduce the issue > > I tried on arm64 and i386 (with COMPILE_TEST=y) defconfigs. I'm building on x86-64 with NR_CPUS set to 8192. > I could reproduce the issue on arm64 only when modifying > CONFIG_FRAME_WARN=2048 -> 1024. > > Still, I would like to know your configuration, since there is a similar case > in caam_qi_init() (drivers/crypto/caam/qi.c) which might need attention too. Oops you're right. Somehow this file didn't get rebuilt so I missed the warning. It does indeed give the same warning when I force it to be rebuilt. I'll send an updated patch. Thanks,
diff --git a/drivers/crypto/caam/caamalg_qi2.c b/drivers/crypto/caam/caamalg_qi2.c index 207dc422785a..c01ca44e1eea 100644 --- a/drivers/crypto/caam/caamalg_qi2.c +++ b/drivers/crypto/caam/caamalg_qi2.c @@ -4990,7 +4990,7 @@ static int dpaa2_dpseci_congestion_setup(struct dpaa2_caam_priv *priv, return err; } -static void free_dpaa2_pcpu_netdev(struct dpaa2_caam_priv *priv, const cpumask_t *cpus) +static void free_dpaa2_pcpu_netdev(struct dpaa2_caam_priv *priv, const struct cpumask *cpus) { struct dpaa2_caam_priv_per_cpu *ppriv; int i; @@ -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; }
Switch cpumask_t to cpumask_var_t as the former may be too big for the stack: CC [M] drivers/crypto/caam/caamalg_qi2.o ../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 | } | ^ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>