Herbert Xu wrote: > On Mon, Jul 10, 2006 at 01:22:12AM +1200, Michal Ludvig wrote: >> padlock_cra_init() correctly says fallback TFM couldn't be allocated and >> returns 1. However AH SA is created anyway and padlock-sha has one user. >> setkey -F segfaults, because in cra_exit() I assume the fallback tfm was >> not null and trying to free it. I never expected to get cra_exit() >> called when cra_init() failed. > > Are you sure your cra_init returned a non-zero error?
Yes. I added some printk()s around: crypto/api.c::__crypto_alloc_tfm(): if (alg->cra_init && (err = alg->cra_init(tfm))) { if (err == -EAGAIN) crypto_shoot_alg(alg); printk(KERN_DEBUG "%s(): err=%d\n", __func__, err); goto cra_init_failed; } (+printk in crypto_exit_digest_ops()) drivers/crypto/padlock-sha.c::padlock_sha_init(): CTX(tfm)->fallback_tfm = crypto_alloc_tfm(CTX(tfm)->fallback_driver_name, 0); if (!CTX(tfm)->fallback_tfm) { printk(KERN_ERR PFX "Fallback driver '%s' could not be loaded!\n", CTX(tfm)->fallback_driver_name); return 1; } Now doing the same procedure as before: modprobe padlock-sha, disable sha1 and sha1-generic in modprobe.conf, setkey AH: ~# dmesg: ### Autoload of sha1/sha256 from padlock_init(): padlock: Fallback for 'sha1' is driver 'sha1-generic' (prio=0) crypto_exit_digest_ops() padlock: Fallback for 'sha256' is driver 'sha256-generic' (prio=0) crypto_exit_digest_ops() padlock: Using VIA PadLock ACE for SHA1/SHA256 algorithms. ### setkey: NET: Registered protocol family 15 padlock: Fallback driver 'sha1-generic' could not be loaded! __crypto_alloc_tfm(): err=1 <<< Yes, returned 1 crypto_exit_digest_ops() <<< and immediately called this ~# lsmod Module Size Used by ah4 6080 1 cryptomgr 2368 0 af_key 34416 0 sha256 11456 0 padlock_sha 5520 1 <<< weird (removed some lines but no sha1 in the list, really ;-) > Could you please print out what string padlock_cra_init passed to > crypto_alloc_tfm? sha1-generic (I hope I haven't done a mistake when backporting cryptodev tree to 2.6.16+Xen that I use for development. Unfortunately I can't directly test your cryptodev tree at the moment as I don't have console access to the VIA C7 server. That's why I use Xen for it :-/ ) Michal - To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html