[PATCH] crypto: amlogic - Free channel IRQs before disabling the clock

Herbert Xu herbert at gondor.apana.org.au
Sun Oct 25 21:49:55 PDT 2026


On Wed, Oct 14, 2026 at 10:41:48PM -0400, Myeonghun Pak wrote:
> The channel IRQs are requested before the managed channel array is
> allocated. Automatic cleanup consequently frees that array before
> releasing the IRQs. An interrupt handler that has already read a channel
> completion status can still write chanlist[flow].status and complete the
> channel completion after the array is released. A cipher timeout allows
> such a late handler even after its crypto engine becomes idle.
> 
> Release the IRQs explicitly before disabling the bus clock and before
> devres can release the channel array. Do this after crypto_engine_exit()
> so normal requests retain their interrupt-driven completion while the
> engines drain. Use the same cleanup on probe failures after the clock
> has been enabled, preserving the channel allocator's existing unwind.
> 
> This issue was identified as part of our ongoing research while
> reviewing kernel code.
> 
> Fixes: 48fe583fe541 ("crypto: amlogic - Add crypto accelerator for amlogic GXL")
> Assisted-by: LLM
> Co-developed-by: Ijae Kim <ae878000 at gmail.com>
> Signed-off-by: Ijae Kim <ae878000 at gmail.com>
> Signed-off-by: Myeonghun Pak <mhun512 at gmail.com>
> ---
> Compile-tested with GCC, W=1 (arm). No runtime testing.
> 
> This bounds IRQ access to completion state and registers; hardware DMA
> handling after a cipher timeout is unchanged.
> 
>  drivers/crypto/amlogic/amlogic-gxl-core.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)

The patch description does not apply to the current cryptodev tree.
Please review this change:

commit e273759a0e29395a6e35e5f17ce03b2690476b2c
Author: Mohamad Raizudeen <raizudeen.kerneldev at gmail.com>
Date:   Wed Sep 16 23:12:27 2026 +0530

    crypto: amlogic - Use devm APIs for clock management

    The driver currently gets the core clock and manually enables it using
    clk_prepare_enable(). This requires matching calls to
    clk_disable_unprepare() in the error paths and remove function.

    Switch to devm_clk_get_enabled() instead. This lets the kernel handle
    enabling and disabling the clock automatically, which allow us to drop
    the manual cleanup code and keeps the probe function simple.

    Reported-by: kernel test robot <lkp at intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202608310329.QgxCCMs1-lkp@intel.com/
    Signed-off-by: Mohamad Raizudeen <raizudeen.kerneldev at gmail.com>
    Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>

Thanks,
-- 
Email: Herbert Xu <herbert at gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt



More information about the linux-amlogic mailing list