Compiling the talitos driver with my GCC 4.3.1 e500v2 cross-compiler resulted in a failed build due to the anonymous union/structures introduced in this commit: crypto: talitos - enhanced talitos_desc struct for SEC1 The build error was: drivers/crypto/talitos.h:56: error: unknown field 'len' specified in initializer drivers/crypto/talitos.h:56: warning: missing braces around initializer drivers/crypto/talitos.h:56: warning: (near initialization for 'zero_entry.<anonymous>') drivers/crypto/talitos.h:57: error: unknown field 'j_extent' specified in initializer drivers/crypto/talitos.h:58: error: unknown field 'eptr' specified in initializer drivers/crypto/talitos.h:58: warning: excess elements in struct initializer drivers/crypto/talitos.h:58: warning: (near initialization for 'zero_entry') make[2]: *** [drivers/crypto/talitos.o] Error 1 make[1]: *** [drivers/crypto] Error 2 make: *** [drivers] Error 2 This patch eliminates the errors by moving the static constant zero_entry to the talitos_private structure. As a member of that structure, zero_entry gets initialized for free (and compatibly) by the kzalloc() during device probe. Signed-off-by: Aaron Sierra <asierra@xxxxxxxxxxx> --- drivers/crypto/talitos.c | 14 +++++++------- drivers/crypto/talitos.h | 8 +------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c index 83aca95..5347570 100644 --- a/drivers/crypto/talitos.c +++ b/drivers/crypto/talitos.c @@ -1663,7 +1663,7 @@ static int common_nonsnoop(struct talitos_edesc *edesc, bool is_sec1 = has_ftr_sec1(priv); /* first DWORD empty */ - desc->ptr[0] = zero_entry; + desc->ptr[0] = priv->zero_entry; /* cipher iv */ to_talitos_ptr(&desc->ptr[1], edesc->iv_dma, is_sec1); @@ -1693,7 +1693,7 @@ static int common_nonsnoop(struct talitos_edesc *edesc, DMA_FROM_DEVICE); /* last DWORD empty */ - desc->ptr[6] = zero_entry; + desc->ptr[6] = priv->zero_entry; ret = talitos_submit(dev, ctx->ch, desc, callback, areq); if (ret != -EINPROGRESS) { @@ -1833,7 +1833,7 @@ static int common_nonsnoop_hash(struct talitos_edesc *edesc, bool is_sec1 = has_ftr_sec1(priv); /* first DWORD empty */ - desc->ptr[0] = zero_entry; + desc->ptr[0] = priv->zero_entry; /* hash context in */ if (!req_ctx->first || req_ctx->swinit) { @@ -1843,7 +1843,7 @@ static int common_nonsnoop_hash(struct talitos_edesc *edesc, DMA_TO_DEVICE); req_ctx->swinit = 0; } else { - desc->ptr[1] = zero_entry; + desc->ptr[1] = priv->zero_entry; /* Indicate next op is not the first. */ req_ctx->first = 0; } @@ -1853,7 +1853,7 @@ static int common_nonsnoop_hash(struct talitos_edesc *edesc, map_single_talitos_ptr(dev, &desc->ptr[2], ctx->keylen, (char *)&ctx->key, DMA_TO_DEVICE); else - desc->ptr[2] = zero_entry; + desc->ptr[2] = priv->zero_entry; /* * data in @@ -1862,7 +1862,7 @@ static int common_nonsnoop_hash(struct talitos_edesc *edesc, DMA_TO_DEVICE, &desc->ptr[3]); /* fifth DWORD empty */ - desc->ptr[4] = zero_entry; + desc->ptr[4] = priv->zero_entry; /* hash/HMAC out -or- hash context out */ if (req_ctx->last) @@ -1875,7 +1875,7 @@ static int common_nonsnoop_hash(struct talitos_edesc *edesc, req_ctx->hw_context, DMA_FROM_DEVICE); /* last DWORD empty */ - desc->ptr[6] = zero_entry; + desc->ptr[6] = priv->zero_entry; if (is_sec1 && from_talitos_ptr_len(&desc->ptr[3], true) == 0) talitos_handle_buggy_hash(ctx, edesc, &desc->ptr[3]); diff --git a/drivers/crypto/talitos.h b/drivers/crypto/talitos.h index 314daf5..153c56a 100644 --- a/drivers/crypto/talitos.h +++ b/drivers/crypto/talitos.h @@ -52,13 +52,6 @@ struct talitos_ptr { __be32 ptr; /* address */ }; -static const struct talitos_ptr zero_entry = { - .len = 0, - .j_extent = 0, - .eptr = 0, - .ptr = 0 -}; - /* descriptor */ struct talitos_desc { __be32 hdr; /* header high bits */ @@ -142,6 +135,7 @@ struct talitos_private { unsigned int fifo_len; struct talitos_channel *chan; + const struct talitos_ptr zero_entry; /* next channel to be assigned next incoming descriptor */ atomic_t last_chan ____cacheline_aligned; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html