From: Jesper Juhl <jj@xxxxxxxxxxxxx> Hi, crypto_free_hash() and crypto_free_ablkcipher() are just wrappers around crypto_free_tfm() which is itself just a wrapper around crypto_destroy_tfm(). Passing crypto_destroy_tfm() a NULL pointer is valid, so there's no reason to check for NULL first. Removing the unneeded conditionals (which is what the patch does) brings us the benefit of having to execute a few fewer test/branch instructions and also reduces object code size slightly: before: text data bss dec hex filename 8630 112 3312 12054 2f16 drivers/staging/pohmelfs/crypto.o 0000000000000cbe <pohmelfs_crypto_engine_exit>: cbe: 55 push %rbp cbf: 48 89 e5 mov %rsp,%rbp cc2: 53 push %rbx cc3: 48 83 ec 08 sub $0x8,%rsp cc7: e8 00 00 00 00 callq ccc <pohmelfs_crypto_engine_exit+0xe> ccc: 48 ff 05 00 00 00 00 incq 0x0(%rip) # cd3 <pohmelfs_crypto_engine_exit+0x15> cd3: 48 89 fb mov %rdi,%rbx cd6: 48 8b 7f 20 mov 0x20(%rdi),%rdi cda: 48 85 ff test %rdi,%rdi cdd: 74 0c je ceb <pohmelfs_crypto_engine_exit+0x2d> cdf: 48 ff 05 00 00 00 00 incq 0x0(%rip) # ce6 <pohmelfs_crypto_engine_exit+0x28> ce6: e8 58 fa ff ff callq 743 <crypto_free_hash> ceb: 48 8b 7b 28 mov 0x28(%rbx),%rdi cef: 48 85 ff test %rdi,%rdi cf2: 75 09 jne cfd <pohmelfs_crypto_engine_exit+0x3f> cf4: 48 ff 05 00 00 00 00 incq 0x0(%rip) # cfb <pohmelfs_crypto_engine_exit+0x3d> cfb: eb 16 jmp d13 <pohmelfs_crypto_engine_exit+0x55> cfd: 48 89 fe mov %rdi,%rsi d00: 48 ff 05 00 00 00 00 incq 0x0(%rip) # d07 <pohmelfs_crypto_engine_exit+0x49> d07: e8 00 00 00 00 callq d0c <pohmelfs_crypto_engine_exit+0x4e> d0c: 48 ff 05 00 00 00 00 incq 0x0(%rip) # d13 <pohmelfs_crypto_engine_exit+0x55> d13: 48 8b 7b 18 mov 0x18(%rbx),%rdi d17: e8 00 00 00 00 callq d1c <pohmelfs_crypto_engine_exit+0x5e> d1c: 48 ff 05 00 00 00 00 incq 0x0(%rip) # d23 <pohmelfs_crypto_engine_exit+0x65> d23: 5e pop %rsi d24: 5b pop %rbx d25: c9 leaveq d26: c3 retq after: text data bss dec hex filename 8604 112 3296 12012 2eec drivers/staging/pohmelfs/crypto.o 0000000000000cbe <pohmelfs_crypto_engine_exit>: cbe: 55 push %rbp cbf: 48 89 e5 mov %rsp,%rbp cc2: 53 push %rbx cc3: 48 83 ec 08 sub $0x8,%rsp cc7: e8 00 00 00 00 callq ccc <pohmelfs_crypto_engine_exit+0xe> ccc: 48 ff 05 00 00 00 00 incq 0x0(%rip) # cd3 <pohmelfs_crypto_engine_exit+0x15> cd3: 48 89 fb mov %rdi,%rbx cd6: 48 8b 7f 20 mov 0x20(%rdi),%rdi cda: e8 64 fa ff ff callq 743 <crypto_free_hash> cdf: 48 8b 7b 28 mov 0x28(%rbx),%rdi ce3: 48 ff 05 00 00 00 00 incq 0x0(%rip) # cea <pohmelfs_crypto_engine_exit+0x2c> cea: 48 89 fe mov %rdi,%rsi ced: e8 00 00 00 00 callq cf2 <pohmelfs_crypto_engine_exit+0x34> cf2: 48 8b 7b 18 mov 0x18(%rbx),%rdi cf6: 48 ff 05 00 00 00 00 incq 0x0(%rip) # cfd <pohmelfs_crypto_engine_exit+0x3f> cfd: e8 00 00 00 00 callq d02 <pohmelfs_crypto_engine_exit+0x44> d02: 48 ff 05 00 00 00 00 incq 0x0(%rip) # d09 <pohmelfs_crypto_engine_exit+0x4b> d09: 5e pop %rsi d0a: 5b pop %rbx d0b: c9 leaveq d0c: c3 retq Signed-off-by: Jesper Juhl <jj@xxxxxxxxxxxxx> Acked-by: Evgeniy Polyakov <zbr@xxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx> --- drivers/staging/pohmelfs/crypto.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/staging/pohmelfs/crypto.c b/drivers/staging/pohmelfs/crypto.c index 2fdb3e0..6540864 100644 --- a/drivers/staging/pohmelfs/crypto.c +++ b/drivers/staging/pohmelfs/crypto.c @@ -130,10 +130,8 @@ err_out_exit: void pohmelfs_crypto_engine_exit(struct pohmelfs_crypto_engine *e) { - if (e->hash) - crypto_free_hash(e->hash); - if (e->cipher) - crypto_free_ablkcipher(e->cipher); + crypto_free_hash(e->hash); + crypto_free_ablkcipher(e->cipher); kfree(e->data); } -- 1.7.3.2 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel