From: Stephan Mueller <smueller@chronox•de>
To: Herbert Xu <herbert@gondor•apana.org.au>
Cc: kbuild test robot <fengguang.wu@intel•com>,
kbuild@01•org, Dan Carpenter <dan.carpenter@oracle•com>,
linux-crypto@vger•kernel.org,
Randy Dunlap <rdunlap@infradead•org>,
Stephen Rothwell <sfr@canb•auug.org.au>,
linux-next@vger•kernel.org, linux-kernel@vger•kernel.org
Subject: [PATCH 2/4] DRBG: cleanup of preprocessor macros
Date: Sat, 28 Jun 2014 22:00:07 +0200 [thread overview]
Message-ID: <1949550.LXKdkPOvgm@myon.chronox.de> (raw)
In-Reply-To: <4927386.WYHrRe3NJm@myon.chronox.de>
The structure used to construct the module description line was marked
problematic by the sparse code analysis tool. The module line
description now does not contain any ifdefs to prevent error reports
from sparse.
The preprocessor warning declaration was reported by sparse. It is
replaced in favor of an init function reporting the erroneous built of
the DRBG.
Lastly, a fix of the use use of CONFIG_CRYPTO_DRBG_HASH has been
applied.
Reported-by: kbuild test robot <fengguang.wu@intel•com>
Signed-off-by: Stephan Mueller <smueller@chronox•de>
---
crypto/drbg.c | 43 +++++++++++++++++++++++++++++++------------
1 file changed, 31 insertions(+), 12 deletions(-)
diff --git a/crypto/drbg.c b/crypto/drbg.c
index 6679a26..03a230e 100644
--- a/crypto/drbg.c
+++ b/crypto/drbg.c
@@ -102,8 +102,13 @@
#if !defined(CONFIG_CRYPTO_DRBG_HASH) && \
!defined(CONFIG_CRYPTO_DRBG_HMAC) && \
!defined(CONFIG_CRYPTO_DRBG_CTR)
-#warning "The DRBG code is useless without compiling at least one DRBG type"
-#endif
+#define CRYPTO_DRBG_NONE_STRING "none "
+static int __init drbg_init(void)
+{
+ pr_warn("DRBG: no DRBG core was compiled!\n");
+ return -EFAULT;
+}
+#else
/***************************************************************
* Backend cipher definitions available to DRBG
@@ -362,6 +367,7 @@ static inline void drbg_add_buf(unsigned char *dst, size_t dstlen,
******************************************************************/
#ifdef CONFIG_CRYPTO_DRBG_CTR
+#define CRYPTO_DRBG_CTR_STRING "CTR "
static int drbg_kcapi_sym(struct drbg_state *drbg, const unsigned char *key,
unsigned char *outval, const struct drbg_string *in);
static int drbg_init_sym_kernel(struct drbg_state *drbg);
@@ -715,6 +721,7 @@ static int drbg_fini_hash_kernel(struct drbg_state *drbg);
#endif /* (CONFIG_CRYPTO_DRBG_HASH || CONFIG_CRYPTO_DRBG_HMAC) */
#ifdef CONFIG_CRYPTO_DRBG_HMAC
+#define CRYPTO_DRBG_HMAC_STRING "HMAC "
/* update function of HMAC DRBG as defined in 10.1.2.2 */
static int drbg_hmac_update(struct drbg_state *drbg, struct list_head *seed,
int reseed)
@@ -834,6 +841,7 @@ static struct drbg_state_ops drbg_hmac_ops = {
******************************************************************/
#ifdef CONFIG_CRYPTO_DRBG_HASH
+#define CRYPTO_DRBG_HASH_STRING "HASH "
/*
* scratchpad usage: as drbg_hash_update and drbg_hash_df are used
* interlinked, the scratchpad is used as follows:
@@ -1865,7 +1873,7 @@ static inline int __init drbg_healthcheck_sanity(void)
#ifdef CONFIG_CRYPTO_DRBG_CTR
drbg_convert_tfm_core("drbg_nopr_ctr_aes128", &coreref, &pr);
-#elif CONFIG_CRYPTO_DRBG_HASH
+#elif defined CONFIG_CRYPTO_DRBG_HASH
drbg_convert_tfm_core("drbg_nopr_sha256", &coreref, &pr);
#else
drbg_convert_tfm_core("drbg_nopr_hmac_sha256", &coreref, &pr);
@@ -2005,18 +2013,29 @@ void __exit drbg_exit(void)
crypto_unregister_algs(drbg_algs, (ARRAY_SIZE(drbg_cores) * 2));
}
-module_init(drbg_init);
module_exit(drbg_exit);
+#endif /* !defined(CONFIG_CRYPTO_DRBG_HASH) && \
+ !defined(CONFIG_CRYPTO_DRBG_HMAC) && \
+ !defined(CONFIG_CRYPTO_DRBG_CTR) */
+
+module_init(drbg_init);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Stephan Mueller <smueller@chronox•de>");
-MODULE_DESCRIPTION("NIST SP800-90A Deterministic Random Bit Generator (DRBG) using following cores:"
-#ifdef CONFIG_CRYPTO_DRBG_HMAC
-"HMAC "
+#ifndef CRYPTO_DRBG_NONE_STRING
+#define CRYPTO_DRBG_NONE_STRING ""
#endif
-#ifdef CONFIG_CRYPTO_DRBG_HASH
-"Hash "
+#ifndef CRYPTO_DRBG_HASH_STRING
+#define CRYPTO_DRBG_HASH_STRING ""
#endif
-#ifdef CONFIG_CRYPTO_DRBG_CTR
-"CTR"
+#ifndef CRYPTO_DRBG_HMAC_STRING
+#define CRYPTO_DRBG_HMAC_STRING ""
+#endif
+#ifndef CRYPTO_DRBG_CTR_STRING
+#define CRYPTO_DRBG_CTR_STRING ""
#endif
-);
+MODULE_DESCRIPTION("NIST SP800-90A Deterministic Random Bit Generator (DRBG) "
+ "using following cores: "
+ CRYPTO_DRBG_NONE_STRING
+ CRYPTO_DRBG_HMAC_STRING
+ CRYPTO_DRBG_HASH_STRING
+ CRYPTO_DRBG_CTR_STRING);
--
1.9.3
next prev parent reply other threads:[~2014-06-28 20:00 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-28 19:57 [PATCH 0/4] DRBG: Fixes for sparse tool reports Stephan Mueller
2014-06-28 19:58 ` [PATCH 1/4] DRBG: use of kernel linked list Stephan Mueller
2014-07-04 14:11 ` Herbert Xu
2014-06-28 20:00 ` Stephan Mueller [this message]
2014-06-29 2:20 ` [PATCH 2/4] DRBG: cleanup of preprocessor macros Stephen Rothwell
2014-06-29 5:07 ` Stephan Mueller
2014-06-29 7:41 ` Randy Dunlap
2014-06-29 11:37 ` Stephan Mueller
2014-07-04 14:15 ` Herbert Xu
2014-07-05 0:03 ` Stephan Mueller
2014-06-28 20:01 ` [PATCH 3/4] DRBG: Fix format string for debugging statements Stephan Mueller
2014-06-29 2:24 ` Stephen Rothwell
2014-06-29 3:46 ` Stephan Mueller
2014-06-29 3:53 ` Joe Perches
2014-06-29 4:54 ` Stephan Mueller
2014-07-04 11:21 ` Dan Carpenter
2014-07-04 16:57 ` Joe Perches
2014-07-04 23:57 ` Stephan Mueller
2014-07-05 0:09 ` Joe Perches
2014-07-05 0:15 ` Stephan Mueller
2014-07-05 0:24 ` Joe Perches
2014-07-05 0:27 ` Stephan Mueller
2014-06-28 20:04 ` [PATCH 4/4] DRBG: Call CTR DRBG DF function only once Stephan Mueller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1949550.LXKdkPOvgm@myon.chronox.de \
--to=smueller@chronox$(echo .)de \
--cc=dan.carpenter@oracle$(echo .)com \
--cc=fengguang.wu@intel$(echo .)com \
--cc=herbert@gondor$(echo .)apana.org.au \
--cc=kbuild@01$(echo .)org \
--cc=linux-crypto@vger$(echo .)kernel.org \
--cc=linux-kernel@vger$(echo .)kernel.org \
--cc=linux-next@vger$(echo .)kernel.org \
--cc=rdunlap@infradead$(echo .)org \
--cc=sfr@canb$(echo .)auug.org.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox