Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1637157 > unrolled thread

[PATCH 2/2] staging: ccree: Fix initialization of anonymous unions

Started byGeert Uytterhoeven <geert@linux-m68k.org>
First post2017-05-08 01:40 +0200
Last post2017-05-09 13:30 +0200
Articles 3 — 3 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH 2/2] staging: ccree: Fix initialization of anonymous unions Geert Uytterhoeven <geert@linux-m68k.org> - 2017-05-08 01:40 +0200
    Re: [PATCH 2/2] staging: ccree: Fix initialization of anonymous unions Arnd Bergmann <arnd@arndb.de> - 2017-05-08 10:00 +0200
    Re: [PATCH 2/2] staging: ccree: Fix initialization of anonymous unions Gilad Ben-Yossef <gilad@benyossef.com> - 2017-05-09 13:30 +0200

#1637157 — [PATCH 2/2] staging: ccree: Fix initialization of anonymous unions

FromGeert Uytterhoeven <geert@linux-m68k.org>
Date2017-05-08 01:40 +0200
Subject[PATCH 2/2] staging: ccree: Fix initialization of anonymous unions
Message-ID<tEDWq-4jj-7@gated-at.bofh.it>
With gcc 4.1.2:

    drivers/staging/ccree/ssi_hash.c:1990: error: unknown field ‘template_ahash’ specified in initializer
    drivers/staging/ccree/ssi_hash.c:1991: error: unknown field ‘init’ specified in initializer
    drivers/staging/ccree/ssi_hash.c:1991: warning: missing braces around initializer
    drivers/staging/ccree/ssi_hash.c:1991: warning: (near initialization for ‘driver_hash[0].<anonymous>.template_ahash’)
    drivers/staging/ccree/ssi_hash.c:1992: error: unknown field ‘update’ specified in initializer
    drivers/staging/ccree/ssi_hash.c:1992: warning: excess elements in union initializer
    ...

Add missing braces to fix this.
After this it compiles without warnings with gcc 4.1.2 and 4.9.0.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
 drivers/staging/ccree/ssi_hash.c | 208 +++++++++++++++++++++------------------
 1 file changed, 112 insertions(+), 96 deletions(-)

diff --git a/drivers/staging/ccree/ssi_hash.c b/drivers/staging/ccree/ssi_hash.c
index 33f4515dd7af4830..4401ce251a4a5623 100644
--- a/drivers/staging/ccree/ssi_hash.c
+++ b/drivers/staging/ccree/ssi_hash.c
@@ -1987,20 +1987,22 @@ static struct ssi_hash_template driver_hash[] = {
 		.hmac_driver_name = "hmac-sha1-dx",
 		.blocksize = SHA1_BLOCK_SIZE,
 		.synchronize = false,
-		.template_ahash = {
-			.init = ssi_ahash_init,
-			.update = ssi_ahash_update,
-			.final = ssi_ahash_final,
-			.finup = ssi_ahash_finup,
-			.digest = ssi_ahash_digest,
+		{
+			.template_ahash = {
+				.init = ssi_ahash_init,
+				.update = ssi_ahash_update,
+				.final = ssi_ahash_final,
+				.finup = ssi_ahash_finup,
+				.digest = ssi_ahash_digest,
 #ifdef EXPORT_FIXED
-			.export = ssi_ahash_export,
-			.import = ssi_ahash_import,
+				.export = ssi_ahash_export,
+				.import = ssi_ahash_import,
 #endif
-			.setkey = ssi_ahash_setkey,
-			.halg = {
-				.digestsize = SHA1_DIGEST_SIZE,
-				.statesize = sizeof(struct sha1_state),
+				.setkey = ssi_ahash_setkey,
+				.halg = {
+					.digestsize = SHA1_DIGEST_SIZE,
+					.statesize = sizeof(struct sha1_state),
+				},
 			},
 		},
 		.hash_mode = DRV_HASH_SHA1,
@@ -2014,20 +2016,22 @@ static struct ssi_hash_template driver_hash[] = {
 		.hmac_driver_name = "hmac-sha256-dx",
 		.blocksize = SHA256_BLOCK_SIZE,
 		.synchronize = false,
-		.template_ahash = {
-			.init = ssi_ahash_init,
-			.update = ssi_ahash_update,
-			.final = ssi_ahash_final,
-			.finup = ssi_ahash_finup,
-			.digest = ssi_ahash_digest,
+		{
+			.template_ahash = {
+				.init = ssi_ahash_init,
+				.update = ssi_ahash_update,
+				.final = ssi_ahash_final,
+				.finup = ssi_ahash_finup,
+				.digest = ssi_ahash_digest,
 #ifdef EXPORT_FIXED
-			.export = ssi_ahash_export,
-			.import = ssi_ahash_import,
+				.export = ssi_ahash_export,
+				.import = ssi_ahash_import,
 #endif
-			.setkey = ssi_ahash_setkey,
-			.halg = {
-				.digestsize = SHA256_DIGEST_SIZE,
-				.statesize = sizeof(struct sha256_state),
+				.setkey = ssi_ahash_setkey,
+				.halg = {
+					.digestsize = SHA256_DIGEST_SIZE,
+					.statesize = sizeof(struct sha256_state),
+				},
 			},
 		},
 		.hash_mode = DRV_HASH_SHA256,
@@ -2041,20 +2045,22 @@ static struct ssi_hash_template driver_hash[] = {
 		.hmac_driver_name = "hmac-sha224-dx",
 		.blocksize = SHA224_BLOCK_SIZE,
 		.synchronize = false,
-		.template_ahash = {
-			.init = ssi_ahash_init,
-			.update = ssi_ahash_update,
-			.final = ssi_ahash_final,
-			.finup = ssi_ahash_finup,
-			.digest = ssi_ahash_digest,
+		{
+			.template_ahash = {
+				.init = ssi_ahash_init,
+				.update = ssi_ahash_update,
+				.final = ssi_ahash_final,
+				.finup = ssi_ahash_finup,
+				.digest = ssi_ahash_digest,
 #ifdef EXPORT_FIXED
-			.export = ssi_ahash_export,
-			.import = ssi_ahash_import,
+				.export = ssi_ahash_export,
+				.import = ssi_ahash_import,
 #endif
-			.setkey = ssi_ahash_setkey,
-			.halg = {
-				.digestsize = SHA224_DIGEST_SIZE,
-				.statesize = sizeof(struct sha256_state),
+				.setkey = ssi_ahash_setkey,
+				.halg = {
+					.digestsize = SHA224_DIGEST_SIZE,
+					.statesize = sizeof(struct sha256_state),
+				},
 			},
 		},
 		.hash_mode = DRV_HASH_SHA224,
@@ -2069,20 +2075,22 @@ static struct ssi_hash_template driver_hash[] = {
 		.hmac_driver_name = "hmac-sha384-dx",
 		.blocksize = SHA384_BLOCK_SIZE,
 		.synchronize = false,
-		.template_ahash = {
-			.init = ssi_ahash_init,
-			.update = ssi_ahash_update,
-			.final = ssi_ahash_final,
-			.finup = ssi_ahash_finup,
-			.digest = ssi_ahash_digest,
+		{
+			.template_ahash = {
+				.init = ssi_ahash_init,
+				.update = ssi_ahash_update,
+				.final = ssi_ahash_final,
+				.finup = ssi_ahash_finup,
+				.digest = ssi_ahash_digest,
 #ifdef EXPORT_FIXED
-			.export = ssi_ahash_export,
-			.import = ssi_ahash_import,
+				.export = ssi_ahash_export,
+				.import = ssi_ahash_import,
 #endif
-			.setkey = ssi_ahash_setkey,
-			.halg = {
-				.digestsize = SHA384_DIGEST_SIZE,
-				.statesize = sizeof(struct sha512_state),
+				.setkey = ssi_ahash_setkey,
+				.halg = {
+					.digestsize = SHA384_DIGEST_SIZE,
+					.statesize = sizeof(struct sha512_state),
+				},
 			},
 		},
 		.hash_mode = DRV_HASH_SHA384,
@@ -2096,20 +2104,22 @@ static struct ssi_hash_template driver_hash[] = {
 		.hmac_driver_name = "hmac-sha512-dx",
 		.blocksize = SHA512_BLOCK_SIZE,
 		.synchronize = false,
-		.template_ahash = {
-			.init = ssi_ahash_init,
-			.update = ssi_ahash_update,
-			.final = ssi_ahash_final,
-			.finup = ssi_ahash_finup,
-			.digest = ssi_ahash_digest,
+		{
+			.template_ahash = {
+				.init = ssi_ahash_init,
+				.update = ssi_ahash_update,
+				.final = ssi_ahash_final,
+				.finup = ssi_ahash_finup,
+				.digest = ssi_ahash_digest,
 #ifdef EXPORT_FIXED
-			.export = ssi_ahash_export,
-			.import = ssi_ahash_import,
+				.export = ssi_ahash_export,
+				.import = ssi_ahash_import,
 #endif
-			.setkey = ssi_ahash_setkey,
-			.halg = {
-				.digestsize = SHA512_DIGEST_SIZE,
-				.statesize = sizeof(struct sha512_state),
+				.setkey = ssi_ahash_setkey,
+				.halg = {
+					.digestsize = SHA512_DIGEST_SIZE,
+					.statesize = sizeof(struct sha512_state),
+				},
 			},
 		},
 		.hash_mode = DRV_HASH_SHA512,
@@ -2124,20 +2134,22 @@ static struct ssi_hash_template driver_hash[] = {
 		.hmac_driver_name = "hmac-md5-dx",
 		.blocksize = MD5_HMAC_BLOCK_SIZE,
 		.synchronize = false,
-		.template_ahash = {
-			.init = ssi_ahash_init,
-			.update = ssi_ahash_update,
-			.final = ssi_ahash_final,
-			.finup = ssi_ahash_finup,
-			.digest = ssi_ahash_digest,
+		{
+			.template_ahash = {
+				.init = ssi_ahash_init,
+				.update = ssi_ahash_update,
+				.final = ssi_ahash_final,
+				.finup = ssi_ahash_finup,
+				.digest = ssi_ahash_digest,
 #ifdef EXPORT_FIXED
-			.export = ssi_ahash_export,
-			.import = ssi_ahash_import,
+				.export = ssi_ahash_export,
+				.import = ssi_ahash_import,
 #endif
-			.setkey = ssi_ahash_setkey,
-			.halg = {
-				.digestsize = MD5_DIGEST_SIZE,
-				.statesize = sizeof(struct md5_state),
+				.setkey = ssi_ahash_setkey,
+				.halg = {
+					.digestsize = MD5_DIGEST_SIZE,
+					.statesize = sizeof(struct md5_state),
+				},
 			},
 		},
 		.hash_mode = DRV_HASH_MD5,
@@ -2149,20 +2161,22 @@ static struct ssi_hash_template driver_hash[] = {
 		.driver_name = "xcbc-aes-dx",
 		.blocksize = AES_BLOCK_SIZE,
 		.synchronize = false,
-		.template_ahash = {
-			.init = ssi_ahash_init,
-			.update = ssi_mac_update,
-			.final = ssi_mac_final,
-			.finup = ssi_mac_finup,
-			.digest = ssi_mac_digest,
-			.setkey = ssi_xcbc_setkey,
+		{
+			.template_ahash = {
+				.init = ssi_ahash_init,
+				.update = ssi_mac_update,
+				.final = ssi_mac_final,
+				.finup = ssi_mac_finup,
+				.digest = ssi_mac_digest,
+				.setkey = ssi_xcbc_setkey,
 #ifdef EXPORT_FIXED
-			.export = ssi_ahash_export,
-			.import = ssi_ahash_import,
+				.export = ssi_ahash_export,
+				.import = ssi_ahash_import,
 #endif
-			.halg = {
-				.digestsize = AES_BLOCK_SIZE,
-				.statesize = sizeof(struct aeshash_state),
+				.halg = {
+					.digestsize = AES_BLOCK_SIZE,
+					.statesize = sizeof(struct aeshash_state),
+				},
 			},
 		},
 		.hash_mode = DRV_HASH_NULL,
@@ -2175,20 +2189,22 @@ static struct ssi_hash_template driver_hash[] = {
 		.driver_name = "cmac-aes-dx",
 		.blocksize = AES_BLOCK_SIZE,
 		.synchronize = false,
-		.template_ahash = {
-			.init = ssi_ahash_init,
-			.update = ssi_mac_update,
-			.final = ssi_mac_final,
-			.finup = ssi_mac_finup,
-			.digest = ssi_mac_digest,
-			.setkey = ssi_cmac_setkey,
+		{
+			.template_ahash = {
+				.init = ssi_ahash_init,
+				.update = ssi_mac_update,
+				.final = ssi_mac_final,
+				.finup = ssi_mac_finup,
+				.digest = ssi_mac_digest,
+				.setkey = ssi_cmac_setkey,
 #ifdef EXPORT_FIXED
-			.export = ssi_ahash_export,
-			.import = ssi_ahash_import,
+				.export = ssi_ahash_export,
+				.import = ssi_ahash_import,
 #endif
-			.halg = {
-				.digestsize = AES_BLOCK_SIZE,
-				.statesize = sizeof(struct aeshash_state),
+				.halg = {
+					.digestsize = AES_BLOCK_SIZE,
+					.statesize = sizeof(struct aeshash_state),
+				},
 			},
 		},
 		.hash_mode = DRV_HASH_NULL,
-- 
2.7.4

[toc] | [next] | [standalone]


#1637289

FromArnd Bergmann <arnd@arndb.de>
Date2017-05-08 10:00 +0200
Message-ID<tELKj-14K-27@gated-at.bofh.it>
In reply to#1637157
On Sun, May 7, 2017 at 9:53 PM, Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> With gcc 4.1.2:
>
>     drivers/staging/ccree/ssi_hash.c:1990: error: unknown field ‘template_ahash’ specified in initializer
>     drivers/staging/ccree/ssi_hash.c:1991: error: unknown field ‘init’ specified in initializer
>     drivers/staging/ccree/ssi_hash.c:1991: warning: missing braces around initializer
>     drivers/staging/ccree/ssi_hash.c:1991: warning: (near initialization for ‘driver_hash[0].<anonymous>.template_ahash’)
>     drivers/staging/ccree/ssi_hash.c:1992: error: unknown field ‘update’ specified in initializer
>     drivers/staging/ccree/ssi_hash.c:1992: warning: excess elements in union initializer
>     ...
>
> Add missing braces to fix this.
> After this it compiles without warnings with gcc 4.1.2 and 4.9.0.

Acked-by: Arnd Bergmann <arnd@arndb.de>

For reference, we need this up to gcc-4.5, the anonymous initializers were added
on gcc-4.6.

     Arnd

[toc] | [prev] | [next] | [standalone]


#1638052

FromGilad Ben-Yossef <gilad@benyossef.com>
Date2017-05-09 13:30 +0200
Message-ID<tFbv4-10r-3@gated-at.bofh.it>
In reply to#1637157
Hi,

On Sun, May 7, 2017 at 10:53 PM, Geert Uytterhoeven
<geert@linux-m68k.org> wrote:
> With gcc 4.1.2:
>
>     drivers/staging/ccree/ssi_hash.c:1990: error: unknown field ‘template_ahash’ specified in initializer
>     drivers/staging/ccree/ssi_hash.c:1991: error: unknown field ‘init’ specified in initializer
>     drivers/staging/ccree/ssi_hash.c:1991: warning: missing braces around initializer
>     drivers/staging/ccree/ssi_hash.c:1991: warning: (near initialization for ‘driver_hash[0].<anonymous>.template_ahash’)
>     drivers/staging/ccree/ssi_hash.c:1992: error: unknown field ‘update’ specified in initializer
>     drivers/staging/ccree/ssi_hash.c:1992: warning: excess elements in union initializer
>     ...
>
> Add missing braces to fix this.
> After this it compiles without warnings with gcc 4.1.2 and 4.9.0.

It seems this bothered Andrew Morton too as he just took in to mm his
own patch for the same issue,

Thanks anyway!
Gilad

-- 
Gilad Ben-Yossef
Chief Coffee Drinker

"If you take a class in large-scale robotics, can you end up in a
situation where the homework eats your dog?"
 -- Jean-Baptiste Queru

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web