linux/drivers/staging/pohmelfs
Jesper Juhl 391a169e99 pohmelfs: remove unneeded conditionals before calls to crypto_destroy_tfm wrappers.
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@chaosbits.net>
Acked-by: Evgeniy Polyakov <zbr@ioremap.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-11-09 16:07:08 -08:00
..
config.c staging: Drop unnecessary null test 2010-08-31 11:13:15 -07:00
crypto.c pohmelfs: remove unneeded conditionals before calls to crypto_destroy_tfm wrappers. 2010-11-09 16:07:08 -08:00
dir.c Staging: pohmelfs: fix spaces and TAB coding style issue in dir.c 2010-05-11 11:35:41 -07:00
inode.c convert get_sb_nodev() users 2010-10-29 04:16:31 -04:00
Kconfig Staging: pohmelfs: fix kconfig dependencies 2009-04-03 14:53:36 -07:00
lock.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
Makefile Staging: pohmelfs: kconfig/makefile and vfs changes. 2009-04-03 14:53:36 -07:00
mcache.c Staging: pohmelfs: distributed locking and cache coherency protocol. 2009-04-03 14:53:34 -07:00
net.c Staging: pohmelfs: fix spaces and TAB coding style issue in net.c 2010-05-11 11:35:41 -07:00
netfs.h Staging: pohmelfs: fix spaces and TAB coding style issue in netfs.h 2010-05-11 11:35:41 -07:00
path_entry.c fs: fs_struct rwlock to spinlock 2010-08-18 08:35:46 -04:00
trans.c Staging: pohmelfs: sync with the development tree 2009-09-15 12:02:30 -07:00