tree: https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git master head: 20b04c02bcb2d1e6a642bbe9e759157bb198499e commit: e1a018e607a33dc9f987c761daf1792082fb9ca7 [147/154] crypto: chelsio - Remove dst sg size zero check config: x86_64-randconfig-v0-01182123 (attached as .config) compiler: gcc-7 (Debian 7.2.0-12) 7.2.1 20171025 reproduce: git checkout e1a018e607a33dc9f987c761daf1792082fb9ca7 # save the attached .config to linux build tree make ARCH=x86_64
All warnings (new ones prefixed by >>):
In file included from include/linux/kernel.h:10:0,
from drivers/crypto/chelsio/chcr_algo.c:44:
drivers/crypto/chelsio/chcr_algo.c: In function 'create_authenc_wr':
include/linux/compiler.h:58:2: warning: this 'if' clause does not guard...
[-Wmisleading-indentation]
if (__builtin_constant_p(!!(cond)) ? !!(cond) : \
^
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
#define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
^~~~~~~~~~
>> drivers/crypto/chelsio/chcr_algo.c:2113:2: note: in expansion of macro 'if'
if (error)
^~
drivers/crypto/chelsio/chcr_algo.c:2115:3: note: ...this statement, but the
latter is misleadingly indented as if it were guarded by the 'if'
dnents = sg_nents_xlen(req->dst, assoclen, CHCR_DST_SG_SIZE, 0);
^~~~~~
In file included from include/linux/kernel.h:10:0,
from drivers/crypto/chelsio/chcr_algo.c:44:
drivers/crypto/chelsio/chcr_algo.c: At top level:
include/linux/compiler.h:64:4: warning: '______f' is static but declared in
inline function 'strcpy' which is not static
______f = { \
^
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
#define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
^~~~~~~~~~
include/linux/string.h:422:2: note: in expansion of macro 'if'
if (p_size == (size_t)-1 && q_size == (size_t)-1)
^~
include/linux/compiler.h:64:4: warning: '______f' is static but declared in
inline function 'kmemdup' which is not static
______f = { \
^
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
#define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
^~~~~~~~~~
include/linux/string.h:412:2: note: in expansion of macro 'if'
if (p_size < size)
^~
include/linux/compiler.h:64:4: warning: '______f' is static but declared in
inline function 'kmemdup' which is not static
______f = { \
^
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
#define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
^~~~~~~~~~
include/linux/string.h:410:2: note: in expansion of macro 'if'
if (__builtin_constant_p(size) && p_size < size)
^~
include/linux/compiler.h:64:4: warning: '______f' is static but declared in
inline function 'memchr_inv' which is not static
______f = { \
^
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
#define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
^~~~~~~~~~
include/linux/string.h:401:2: note: in expansion of macro 'if'
if (p_size < size)
^~
include/linux/compiler.h:64:4: warning: '______f' is static but declared in
inline function 'memchr_inv' which is not static
______f = { \
^
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
#define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
^~~~~~~~~~
include/linux/string.h:399:2: note: in expansion of macro 'if'
if (__builtin_constant_p(size) && p_size < size)
^~
include/linux/compiler.h:64:4: warning: '______f' is static but declared in
inline function 'memchr' which is not static
______f = { \
^
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
#define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
^~~~~~~~~~
include/linux/string.h:390:2: note: in expansion of macro 'if'
if (p_size < size)
^~
include/linux/compiler.h:64:4: warning: '______f' is static but declared in
inline function 'memchr' which is not static
______f = { \
^
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
#define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
^~~~~~~~~~
include/linux/string.h:388:2: note: in expansion of macro 'if'
if (__builtin_constant_p(size) && p_size < size)
^~
include/linux/compiler.h:64:4: warning: '______f' is static but declared in
inline function 'memcmp' which is not static
______f = { \
^
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
#define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
^~~~~~~~~~
include/linux/string.h:380:2: note: in expansion of macro 'if'
if (p_size < size || q_size < size)
^~
include/linux/compiler.h:64:4: warning: '______f' is static but declared in
inline function 'memcmp' which is not static
______f = { \
^
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
#define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
^~~~~~~~~~
include/linux/string.h:377:3: note: in expansion of macro 'if'
if (q_size < size)
^~
include/linux/compiler.h:64:4: warning: '______f' is static but declared in
inline function 'memcmp' which is not static
______f = { \
^
include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
#define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
^~~~~~~~~~
include/linux/string.h:375:3: note: in expansion of macro 'if'
if (p_size < size)
^~
include/linux/compiler.h:64:4: warning: '______f' is static but declared in
inline function 'memcmp' which is not static
______f = { \
vim +/if +2113 drivers/crypto/chelsio/chcr_algo.c
2debd3325 Harsh Jain 2016-11-29 2078
2debd3325 Harsh Jain 2016-11-29 2079 static struct sk_buff
*create_authenc_wr(struct aead_request *req,
2debd3325 Harsh Jain 2016-11-29 2080
unsigned short qid,
2debd3325 Harsh Jain 2016-11-29 2081
int size,
2debd3325 Harsh Jain 2016-11-29 2082
unsigned short op_type)
324429d74 Hariprasad Shenai 2016-08-17 2083 {
2debd3325 Harsh Jain 2016-11-29 2084 struct crypto_aead *tfm =
crypto_aead_reqtfm(req);
2f47d5804 Harsh Jain 2017-10-08 2085 struct chcr_aead_ctx *aeadctx =
AEAD_CTX(a_ctx(tfm));
2debd3325 Harsh Jain 2016-11-29 2086 struct chcr_authenc_ctx *actx =
AUTHENC_CTX(aeadctx);
2debd3325 Harsh Jain 2016-11-29 2087 struct chcr_aead_reqctx *reqctx
= aead_request_ctx(req);
2debd3325 Harsh Jain 2016-11-29 2088 struct sk_buff *skb = NULL;
2debd3325 Harsh Jain 2016-11-29 2089 struct chcr_wr *chcr_req;
2debd3325 Harsh Jain 2016-11-29 2090 struct cpl_rx_phys_dsgl
*phys_cpl;
2f47d5804 Harsh Jain 2017-10-08 2091 struct ulptx_sgl *ulptx;
2f47d5804 Harsh Jain 2017-10-08 2092 unsigned int transhdr_len;
3d64bd670 Harsh Jain 2018-01-11 2093 unsigned int dst_size = 0,
temp, subtype = get_aead_subtype(tfm);
2f47d5804 Harsh Jain 2017-10-08 2094 unsigned int kctx_len = 0,
dnents;
2debd3325 Harsh Jain 2016-11-29 2095 unsigned int assoclen =
req->assoclen;
2debd3325 Harsh Jain 2016-11-29 2096 unsigned int authsize =
crypto_aead_authsize(tfm);
2f47d5804 Harsh Jain 2017-10-08 2097 int error = -EINVAL;
2debd3325 Harsh Jain 2016-11-29 2098 int null = 0;
2debd3325 Harsh Jain 2016-11-29 2099 gfp_t flags = req->base.flags &
CRYPTO_TFM_REQ_MAY_SLEEP ? GFP_KERNEL :
2debd3325 Harsh Jain 2016-11-29 2100 GFP_ATOMIC;
2f47d5804 Harsh Jain 2017-10-08 2101 struct adapter *adap =
padap(a_ctx(tfm)->dev);
2debd3325 Harsh Jain 2016-11-29 2102
2f47d5804 Harsh Jain 2017-10-08 2103 if (req->cryptlen == 0)
2f47d5804 Harsh Jain 2017-10-08 2104 return NULL;
2debd3325 Harsh Jain 2016-11-29 2105
2f47d5804 Harsh Jain 2017-10-08 2106 reqctx->b0_dma = 0;
3d64bd670 Harsh Jain 2018-01-11 2107 if (subtype ==
CRYPTO_ALG_SUB_TYPE_CBC_NULL ||
3d64bd670 Harsh Jain 2018-01-11 2108 subtype ==
CRYPTO_ALG_SUB_TYPE_CTR_NULL) {
2debd3325 Harsh Jain 2016-11-29 2109 null = 1;
2debd3325 Harsh Jain 2016-11-29 2110 assoclen = 0;
324429d74 Hariprasad Shenai 2016-08-17 2111 }
2f47d5804 Harsh Jain 2017-10-08 2112 error =
chcr_aead_common_init(req, op_type);
2f47d5804 Harsh Jain 2017-10-08 @2113 if (error)
2f47d5804 Harsh Jain 2017-10-08 2114 return ERR_PTR(error);
2f47d5804 Harsh Jain 2017-10-08 2115 dnents =
sg_nents_xlen(req->dst, assoclen, CHCR_DST_SG_SIZE, 0);
2f47d5804 Harsh Jain 2017-10-08 2116 dnents +=
sg_nents_xlen(req->dst, req->cryptlen +
2f47d5804 Harsh Jain 2017-10-08 2117 (op_type ?
-authsize : authsize), CHCR_DST_SG_SIZE,
2f47d5804 Harsh Jain 2017-10-08 2118 req->assoclen);
2f47d5804 Harsh Jain 2017-10-08 2119 dnents += MIN_AUTH_SG;
// For IV
2f47d5804 Harsh Jain 2017-10-08 2120
2f47d5804 Harsh Jain 2017-10-08 2121 dst_size =
get_space_for_phys_dsgl(dnents);
2debd3325 Harsh Jain 2016-11-29 2122 kctx_len =
(ntohl(KEY_CONTEXT_CTX_LEN_V(aeadctx->key_ctx_hdr)) << 4)
2debd3325 Harsh Jain 2016-11-29 2123 -
sizeof(chcr_req->key_ctx);
2debd3325 Harsh Jain 2016-11-29 2124 transhdr_len =
CIPHER_TRANSHDR_SIZE(kctx_len, dst_size);
2f47d5804 Harsh Jain 2017-10-08 2125 reqctx->imm = (transhdr_len +
assoclen + IV + req->cryptlen) <
2f47d5804 Harsh Jain 2017-10-08 2126 SGE_MAX_WR_LEN;
2f47d5804 Harsh Jain 2017-10-08 2127 temp = reqctx->imm ?
(DIV_ROUND_UP((assoclen + IV + req->cryptlen), 16)
2f47d5804 Harsh Jain 2017-10-08 2128 * 16) :
(sgl_len(reqctx->src_nents + reqctx->aad_nents
2f47d5804 Harsh Jain 2017-10-08 2129 + MIN_GCM_SG) *
8);
2f47d5804 Harsh Jain 2017-10-08 2130 transhdr_len += temp;
2f47d5804 Harsh Jain 2017-10-08 2131 transhdr_len =
DIV_ROUND_UP(transhdr_len, 16) * 16;
2f47d5804 Harsh Jain 2017-10-08 2132
2f47d5804 Harsh Jain 2017-10-08 2133 if
(chcr_aead_need_fallback(req, dnents, T6_MAX_AAD_SIZE,
2f47d5804 Harsh Jain 2017-10-08 2134
transhdr_len, op_type)) {
ee0863ba1 Harsh Jain 2017-06-15 2135
atomic_inc(&adap->chcr_stats.fallback);
2f47d5804 Harsh Jain 2017-10-08 2136
chcr_aead_dma_unmap(&ULD_CTX(a_ctx(tfm))->lldi.pdev->dev, req,
2f47d5804 Harsh Jain 2017-10-08 2137
op_type);
0e93708da Harsh Jain 2017-04-10 2138 return
ERR_PTR(chcr_aead_fallback(req, op_type));
0e93708da Harsh Jain 2017-04-10 2139 }
2f47d5804 Harsh Jain 2017-10-08 2140 skb = alloc_skb(SGE_MAX_WR_LEN,
flags);
5fe8c7117 Harsh Jain 2017-06-15 2141 if (!skb) {
5fe8c7117 Harsh Jain 2017-06-15 2142 error = -ENOMEM;
2debd3325 Harsh Jain 2016-11-29 2143 goto err;
5fe8c7117 Harsh Jain 2017-06-15 2144 }
2debd3325 Harsh Jain 2016-11-29 2145
de77b966c yuan linyu 2017-06-18 2146 chcr_req = __skb_put_zero(skb,
transhdr_len);
2debd3325 Harsh Jain 2016-11-29 2147
2f47d5804 Harsh Jain 2017-10-08 2148 temp = (op_type ==
CHCR_ENCRYPT_OP) ? 0 : authsize;
2debd3325 Harsh Jain 2016-11-29 2149
2debd3325 Harsh Jain 2016-11-29 2150 /*
2debd3325 Harsh Jain 2016-11-29 2151 * Input order is AAD,IV and
Payload. where IV should be included as
2debd3325 Harsh Jain 2016-11-29 2152 * the part of authdata. All
other fields should be filled according
2debd3325 Harsh Jain 2016-11-29 2153 * to the hardware spec
2debd3325 Harsh Jain 2016-11-29 2154 */
2debd3325 Harsh Jain 2016-11-29 2155
chcr_req->sec_cpl.op_ivinsrtofst =
2f47d5804 Harsh Jain 2017-10-08 2156
FILL_SEC_CPL_OP_IVINSR(a_ctx(tfm)->dev->rx_channel_id, 2,
2f47d5804 Harsh Jain 2017-10-08 2157
assoclen + 1);
2f47d5804 Harsh Jain 2017-10-08 2158 chcr_req->sec_cpl.pldlen =
htonl(assoclen + IV + req->cryptlen);
2debd3325 Harsh Jain 2016-11-29 2159
chcr_req->sec_cpl.aadstart_cipherstop_hi = FILL_SEC_CPL_CIPHERSTOP_HI(
2debd3325 Harsh Jain 2016-11-29 2160
assoclen ? 1 : 0, assoclen,
2f47d5804 Harsh Jain 2017-10-08 2161
assoclen + IV + 1,
2f47d5804 Harsh Jain 2017-10-08 2162
(temp & 0x1F0) >> 4);
2debd3325 Harsh Jain 2016-11-29 2163
chcr_req->sec_cpl.cipherstop_lo_authinsert = FILL_SEC_CPL_AUTHINSERT(
2f47d5804 Harsh Jain 2017-10-08 2164
temp & 0xF,
2f47d5804 Harsh Jain 2017-10-08 2165
null ? 0 : assoclen + IV + 1,
2f47d5804 Harsh Jain 2017-10-08 2166
temp, temp);
3d64bd670 Harsh Jain 2018-01-11 2167 if (subtype ==
CRYPTO_ALG_SUB_TYPE_CTR_NULL ||
3d64bd670 Harsh Jain 2018-01-11 2168 subtype ==
CRYPTO_ALG_SUB_TYPE_CTR_SHA)
3d64bd670 Harsh Jain 2018-01-11 2169 temp =
CHCR_SCMD_CIPHER_MODE_AES_CTR;
3d64bd670 Harsh Jain 2018-01-11 2170 else
3d64bd670 Harsh Jain 2018-01-11 2171 temp =
CHCR_SCMD_CIPHER_MODE_AES_CBC;
2debd3325 Harsh Jain 2016-11-29 2172 chcr_req->sec_cpl.seqno_numivs
= FILL_SEC_CPL_SCMD0_SEQNO(op_type,
2debd3325 Harsh Jain 2016-11-29 2173
(op_type == CHCR_ENCRYPT_OP) ? 1 : 0,
3d64bd670 Harsh Jain 2018-01-11 2174
temp,
2debd3325 Harsh Jain 2016-11-29 2175
actx->auth_mode, aeadctx->hmac_ctrl,
2f47d5804 Harsh Jain 2017-10-08 2176
IV >> 1);
2debd3325 Harsh Jain 2016-11-29 2177 chcr_req->sec_cpl.ivgen_hdrlen
= FILL_SEC_CPL_IVGEN_HDRLEN(0, 0, 1,
2f47d5804 Harsh Jain 2017-10-08 2178
0, 0, dst_size);
2debd3325 Harsh Jain 2016-11-29 2179
2debd3325 Harsh Jain 2016-11-29 2180 chcr_req->key_ctx.ctx_hdr =
aeadctx->key_ctx_hdr;
3d64bd670 Harsh Jain 2018-01-11 2181 if (op_type == CHCR_ENCRYPT_OP
||
3d64bd670 Harsh Jain 2018-01-11 2182 subtype ==
CRYPTO_ALG_SUB_TYPE_CTR_SHA ||
3d64bd670 Harsh Jain 2018-01-11 2183 subtype ==
CRYPTO_ALG_SUB_TYPE_CTR_NULL)
2debd3325 Harsh Jain 2016-11-29 2184
memcpy(chcr_req->key_ctx.key, aeadctx->key,
2debd3325 Harsh Jain 2016-11-29 2185
aeadctx->enckey_len);
2debd3325 Harsh Jain 2016-11-29 2186 else
2debd3325 Harsh Jain 2016-11-29 2187
memcpy(chcr_req->key_ctx.key, actx->dec_rrkey,
2debd3325 Harsh Jain 2016-11-29 2188
aeadctx->enckey_len);
2debd3325 Harsh Jain 2016-11-29 2189
2debd3325 Harsh Jain 2016-11-29 2190 memcpy(chcr_req->key_ctx.key +
(DIV_ROUND_UP(aeadctx->enckey_len, 16) <<
2debd3325 Harsh Jain 2016-11-29 2191
4), actx->h_iopad, kctx_len -
2debd3325 Harsh Jain 2016-11-29 2192
(DIV_ROUND_UP(aeadctx->enckey_len, 16) << 4));
3d64bd670 Harsh Jain 2018-01-11 2193 if (subtype ==
CRYPTO_ALG_SUB_TYPE_CTR_SHA ||
3d64bd670 Harsh Jain 2018-01-11 2194 subtype ==
CRYPTO_ALG_SUB_TYPE_CTR_NULL) {
3d64bd670 Harsh Jain 2018-01-11 2195 memcpy(reqctx->iv,
aeadctx->nonce, CTR_RFC3686_NONCE_SIZE);
3d64bd670 Harsh Jain 2018-01-11 2196 memcpy(reqctx->iv +
CTR_RFC3686_NONCE_SIZE, req->iv,
3d64bd670 Harsh Jain 2018-01-11 2197
CTR_RFC3686_IV_SIZE);
3d64bd670 Harsh Jain 2018-01-11 2198 *(__be32 *)(reqctx->iv
+ CTR_RFC3686_NONCE_SIZE +
3d64bd670 Harsh Jain 2018-01-11 2199
CTR_RFC3686_IV_SIZE) = cpu_to_be32(1);
3d64bd670 Harsh Jain 2018-01-11 2200 } else {
2f47d5804 Harsh Jain 2017-10-08 2201 memcpy(reqctx->iv,
req->iv, IV);
3d64bd670 Harsh Jain 2018-01-11 2202 }
2debd3325 Harsh Jain 2016-11-29 2203 phys_cpl = (struct
cpl_rx_phys_dsgl *)((u8 *)(chcr_req + 1) + kctx_len);
2f47d5804 Harsh Jain 2017-10-08 2204 ulptx = (struct ulptx_sgl
*)((u8 *)(phys_cpl + 1) + dst_size);
2f47d5804 Harsh Jain 2017-10-08 2205 chcr_add_aead_dst_ent(req,
phys_cpl, assoclen, op_type, qid);
2f47d5804 Harsh Jain 2017-10-08 2206 chcr_add_aead_src_ent(req,
ulptx, assoclen, op_type);
ee0863ba1 Harsh Jain 2017-06-15 2207
atomic_inc(&adap->chcr_stats.cipher_rqst);
2f47d5804 Harsh Jain 2017-10-08 2208 temp = sizeof(struct
cpl_rx_phys_dsgl) + dst_size +
2f47d5804 Harsh Jain 2017-10-08 2209 kctx_len + (reqctx->imm
? (assoclen + IV + req->cryptlen) : 0);
2f47d5804 Harsh Jain 2017-10-08 2210 create_wreq(a_ctx(tfm),
chcr_req, &req->base, reqctx->imm, size,
2f47d5804 Harsh Jain 2017-10-08 2211 transhdr_len, temp,
0);
2debd3325 Harsh Jain 2016-11-29 2212 reqctx->skb = skb;
2f47d5804 Harsh Jain 2017-10-08 2213 reqctx->op = op_type;
2debd3325 Harsh Jain 2016-11-29 2214
2debd3325 Harsh Jain 2016-11-29 2215 return skb;
2debd3325 Harsh Jain 2016-11-29 2216 err:
2f47d5804 Harsh Jain 2017-10-08 2217
chcr_aead_dma_unmap(&ULD_CTX(a_ctx(tfm))->lldi.pdev->dev, req,
2f47d5804 Harsh Jain 2017-10-08 2218 op_type);
2f47d5804 Harsh Jain 2017-10-08 2219
5fe8c7117 Harsh Jain 2017-06-15 2220 return ERR_PTR(error);
324429d74 Hariprasad Shenai 2016-08-17 2221 }
2debd3325 Harsh Jain 2016-11-29 2222
:::::: The code at line 2113 was first introduced by commit
:::::: 2f47d58043110b0aeac1952494db668fc0fc7c0a crypto: chelsio - Move DMA
un/mapping to chcr from lld cxgb4 driver
:::::: TO: Harsh Jain <[email protected]>
:::::: CC: Herbert Xu <[email protected]>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
.config.gz
Description: application/gzip
