• Eric Biggers's avatar
    crc-t10dif: use fallback in initial state · be924e0a
    Eric Biggers authored
    Currently the crc-t10dif module starts out with the fallback disabled
    and crct10dif_tfm == NULL.  crc_t10dif_mod_init() tries to allocate
    crct10dif_tfm, and if it fails it enables the fallback.
    
    This is backwards because it means that any call to crc_t10dif() prior
    to module_init (which could theoretically happen from built-in code)
    will crash rather than use the fallback as expected.  Also, it means
    that if the initial tfm allocation fails, then the fallback stays
    permanently enabled even if a crct10dif implementation is loaded later.
    
    Change it to use the more logical solution of starting with the fallback
    enabled, and disabling the fallback when a tfm gets allocated for the
    first time.  This change also ends up simplifying the code.
    
    Also take the opportunity to convert the code to use the new static_key
    API, which is much less confusing than the old and deprecated one.
    
    Cc: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    be924e0a
crc-t10dif.c 3.2 KB