Hi Herbert, [auto build test ERROR on crypto/master] [also build test ERROR on v4.4-rc8 next-20160108] [if your patch is applied to the wrong git tree, please drop us a note to help improving the system] url: https://github.com/0day-ci/linux/commits/Herbert-Xu/crypto-hash-Add-crypto_ahash_has_setkey/20160108-213436 base: https://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git master config: x86_64-randconfig-i0-201601 (attached as .config) reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All error/warnings (new ones prefixed by >>): crypto/algif_hash.c: In function 'hash_check_key': >> crypto/algif_hash.c:252:9: error: 'struct alg_sock' has no member named 'refcnt' if (ask->refcnt) ^ crypto/algif_hash.c:264:11: error: 'struct alg_sock' has no member named 'refcnt' if (!pask->refcnt++) ^ crypto/algif_hash.c:267:5: error: 'struct alg_sock' has no member named 'refcnt' ask->refcnt = 1; ^ crypto/algif_hash.c: In function 'hash_release_parent_nokey': crypto/algif_hash.c:407:10: error: 'struct alg_sock' has no member named 'refcnt' if (!ask->refcnt) { ^ crypto/algif_hash.c: At top level: >> crypto/algif_hash.c:486:2: error: unknown field 'accept_nokey' specified in initializer .accept_nokey = hash_accept_parent_nokey, ^ >> crypto/algif_hash.c:486:18: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types] .accept_nokey = hash_accept_parent_nokey, ^ crypto/algif_hash.c:486:18: note: (near initialization for 'algif_type_hash.setauthsize') >> crypto/algif_hash.c:488:2: error: unknown field 'ops_nokey' specified in initializer .ops_nokey = &algif_hash_ops_nokey, ^ crypto/algif_hash.c:488:15: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types] .ops_nokey = &algif_hash_ops_nokey, ^ crypto/algif_hash.c:488:15: note: (near initialization for 'algif_type_hash.owner') vim +252 crypto/algif_hash.c 246 struct sock *psk; 247 struct alg_sock *pask; 248 struct algif_hash_tfm *tfm; 249 struct sock *sk = sock->sk; 250 struct alg_sock *ask = alg_sk(sk); 251 > 252 if (ask->refcnt) 253 return 0; 254 255 psk = ask->parent; 256 pask = alg_sk(ask->parent); 257 tfm = pask->private; 258 259 err = -ENOKEY; 260 lock_sock(psk); 261 if (!tfm->has_key) 262 goto unlock; 263 264 if (!pask->refcnt++) 265 sock_hold(psk); 266 > 267 ask->refcnt = 1; 268 sock_put(psk); 269 270 err = 0; 271 272 unlock: 273 release_sock(psk); 274 275 return err; 276 } 277 278 static int hash_sendmsg_nokey(struct socket *sock, struct msghdr *msg, 279 size_t size) 280 { 281 int err; 282 283 err = hash_check_key(sock); 284 if (err) 285 return err; 286 287 return hash_sendmsg(sock, msg, size); 288 } 289 290 static ssize_t hash_sendpage_nokey(struct socket *sock, struct page *page, 291 int offset, size_t size, int flags) 292 { 293 int err; 294 295 err = hash_check_key(sock); 296 if (err) 297 return err; 298 299 return hash_sendpage(sock, page, offset, size, flags); 300 } 301 302 static int hash_recvmsg_nokey(struct socket *sock, struct msghdr *msg, 303 size_t ignored, int flags) 304 { 305 int err; 306 307 err = hash_check_key(sock); 308 if (err) 309 return err; 310 311 return hash_recvmsg(sock, msg, ignored, flags); 312 } 313 314 static int hash_accept_nokey(struct socket *sock, struct socket *newsock, 315 int flags) 316 { 317 int err; 318 319 err = hash_check_key(sock); 320 if (err) 321 return err; 322 323 return hash_accept(sock, newsock, flags); 324 } 325 326 static struct proto_ops algif_hash_ops_nokey = { 327 .family = PF_ALG, 328 329 .connect = sock_no_connect, 330 .socketpair = sock_no_socketpair, 331 .getname = sock_no_getname, 332 .ioctl = sock_no_ioctl, 333 .listen = sock_no_listen, 334 .shutdown = sock_no_shutdown, 335 .getsockopt = sock_no_getsockopt, 336 .mmap = sock_no_mmap, 337 .bind = sock_no_bind, 338 .setsockopt = sock_no_setsockopt, 339 .poll = sock_no_poll, 340 341 .release = af_alg_release, 342 .sendmsg = hash_sendmsg_nokey, 343 .sendpage = hash_sendpage_nokey, 344 .recvmsg = hash_recvmsg_nokey, 345 .accept = hash_accept_nokey, 346 }; 347 348 static void *hash_bind(const char *name, u32 type, u32 mask) 349 { 350 struct algif_hash_tfm *tfm; 351 struct crypto_ahash *hash; 352 353 tfm = kzalloc(sizeof(*tfm), GFP_KERNEL); 354 if (!tfm) 355 return ERR_PTR(-ENOMEM); 356 357 hash = crypto_alloc_ahash(name, type, mask); 358 if (IS_ERR(hash)) { 359 kfree(tfm); 360 return ERR_CAST(hash); 361 } 362 363 tfm->hash = hash; 364 365 return tfm; 366 } 367 368 static void hash_release(void *private) 369 { 370 struct algif_hash_tfm *tfm = private; 371 372 crypto_free_ahash(tfm->hash); 373 kfree(tfm); 374 } 375 376 static int hash_setkey(void *private, const u8 *key, unsigned int keylen) 377 { 378 struct algif_hash_tfm *tfm = private; 379 int err; 380 381 err = crypto_ahash_setkey(tfm->hash, key, keylen); 382 tfm->has_key = !err; 383 384 return err; 385 } 386 387 static void hash_sock_destruct_common(struct sock *sk) 388 { 389 struct alg_sock *ask = alg_sk(sk); 390 struct hash_ctx *ctx = ask->private; 391 392 sock_kzfree_s(sk, ctx->result, 393 crypto_ahash_digestsize(crypto_ahash_reqtfm(&ctx->req))); 394 sock_kfree_s(sk, ctx, ctx->len); 395 } 396 397 static void hash_sock_destruct(struct sock *sk) 398 { 399 hash_sock_destruct_common(sk); 400 af_alg_release_parent(sk); 401 } 402 403 static void hash_release_parent_nokey(struct sock *sk) 404 { 405 struct alg_sock *ask = alg_sk(sk); 406 > 407 if (!ask->refcnt) { 408 sock_put(ask->parent); 409 return; 410 } --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: Binary data