On 09/20/2016 06:17 PM, Rasmus Villemoes wrote: > Calling sprintf in a loop is not very efficient, and in any case, we > already have an implementation of bin-to-hex conversion in lib/ which > we might as well use. > > Note that ecryptfs_to_hex used to nul-terminate the destination (and > the kernel doc was wrong about the required output size), while > bin2hex doesn't. [All but one user of ecryptfs_to_hex explicitly > nul-terminates the result anyway.] > > Signed-off-by: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx> ecryptfs_kernel.h needs to include <linux/kernel.h> for the declaration of bin2hex() (it didn't cause a problem because other included header files, such as <linux/namei.h> pulled in <linux/kernel.h>). I've made that change and will push the patch to the eCryptfs next branch. Thank you! Tyler > --- > fs/ecryptfs/crypto.c | 15 --------------- > fs/ecryptfs/ecryptfs_kernel.h | 8 +++++++- > 2 files changed, 7 insertions(+), 16 deletions(-) > > diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c > index e5e29f8c920b..7acd57da4f14 100644 > --- a/fs/ecryptfs/crypto.c > +++ b/fs/ecryptfs/crypto.c > @@ -42,21 +42,6 @@ > #define ENCRYPT 1 > > /** > - * ecryptfs_to_hex > - * @dst: Buffer to take hex character representation of contents of > - * src; must be at least of size (src_size * 2) > - * @src: Buffer to be converted to a hex string representation > - * @src_size: number of bytes to convert > - */ > -void ecryptfs_to_hex(char *dst, char *src, size_t src_size) > -{ > - int x; > - > - for (x = 0; x < src_size; x++) > - sprintf(&dst[x * 2], "%.2x", (unsigned char)src[x]); > -} > - > -/** > * ecryptfs_from_hex > * @dst: Buffer to take the bytes from src hex; must be at least of > * size (src_size / 2) > diff --git a/fs/ecryptfs/ecryptfs_kernel.h b/fs/ecryptfs/ecryptfs_kernel.h > index 4ba1547bb9ad..548caac3a907 100644 > --- a/fs/ecryptfs/ecryptfs_kernel.h > +++ b/fs/ecryptfs/ecryptfs_kernel.h > @@ -51,7 +51,13 @@ > #define ECRYPTFS_XATTR_NAME "user.ecryptfs" > > void ecryptfs_dump_auth_tok(struct ecryptfs_auth_tok *auth_tok); > -extern void ecryptfs_to_hex(char *dst, char *src, size_t src_size); > +static inline void > +ecryptfs_to_hex(char *dst, char *src, size_t src_size) > +{ > + char *end = bin2hex(dst, src, src_size); > + *end = '\0'; > +} > + > extern void ecryptfs_from_hex(char *dst, char *src, int dst_size); > > struct ecryptfs_key_record { >
Attachment:
signature.asc
Description: OpenPGP digital signature