• Aaron Sierra's avatar
    crypto: talitos - Prevent panic in probe error path · 35a3bb3d
    Aaron Sierra authored
    The probe error path for this driver, for all intents and purposes,
    is the talitos_remove() function due to the common "goto err_out".
    
    Without this patch applied, talitos_remove() will panic under these
    two conditions:
    
    1. If the RNG device hasn't been registered via
       talitos_register_rng() prior to entry into talitos_remove(),
       then the attempt to unregister the RNG "device" will cause a panic.
    
    2. If the priv->chan array has not been allocated prior to entry
       into talitos_remove(), then the per-channel FIFO cleanup will panic
       because of the dereference of that NULL "array".
    
    Both of the above scenarios occur if talitos_probe_irq() fails.
    
    This patch resolves issue #1 by introducing a boolean to mask the
    hwrng_unregister() call in talitos_unregister_rng() if RNG device
    registration was unsuccessful.
    
    It resolves issue #2 by checking that priv->chan is not NULL in the
    per-channel FIFO cleanup for loop.
    Signed-off-by: default avatarAaron Sierra <asierra@xes-inc.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    35a3bb3d
talitos.h 15.2 KB