tree: https://github.com/ammarfaizi2/linux-block dhowells/linux-fs/iov-extract head: 924c5c657ea686d6ba5c0cf47561c005befc9484 commit: de1e35d582d17bcb1a59dc83893fb929601c9072 [16/32] af_alg: [RFC] Use netfs_extract_iter_to_sg() to create scatterlists config: x86_64-rhel-8.3 compiler: gcc-11 (Debian 11.3.0-8) 11.3.0 reproduce (this is a W=1 build): # https://github.com/ammarfaizi2/linux-block/commit/de1e35d582d17bcb1a59dc83893fb929601c9072 git remote add ammarfaizi2-block https://github.com/ammarfaizi2/linux-block git fetch --no-tags ammarfaizi2-block dhowells/linux-fs/iov-extract git checkout de1e35d582d17bcb1a59dc83893fb929601c9072 # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=x86_64 olddefconfig make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All errors (new ones prefixed by >>): crypto/algif_skcipher.c: In function '_skcipher_recvmsg': >> crypto/algif_skcipher.c:108:57: error: 'struct af_alg_sgl' has no member named 'sg'; did you mean 'sgt'? 108 | areq->first_rsgl.sgl.sg, len, ctx->iv); | ^~ | sgt -- crypto/algif_aead.c: In function '_aead_recvmsg': >> crypto/algif_aead.c:213:41: error: 'struct af_alg_sgl' has no member named 'sg'; did you mean 'sgt'? 213 | rsgl_src = areq->first_rsgl.sgl.sg; | ^~ | sgt crypto/algif_aead.c:227:65: error: 'struct af_alg_sgl' has no member named 'sg'; did you mean 'sgt'? 227 | areq->first_rsgl.sgl.sg, processed); | ^~ | sgt crypto/algif_aead.c:245:65: error: 'struct af_alg_sgl' has no member named 'sg'; did you mean 'sgt'? 245 | areq->first_rsgl.sgl.sg, outlen); | ^~ | sgt crypto/algif_aead.c:271:49: error: 'struct af_alg_sgl' has no member named 'sg'; did you mean 'sgt'? 271 | sg_unmark_end(sgl_prev->sg + sgl_prev->npages - 1); | ^~ | sgt >> crypto/algif_aead.c:271:62: error: 'struct af_alg_sgl' has no member named 'npages' 271 | sg_unmark_end(sgl_prev->sg + sgl_prev->npages - 1); | ^~ crypto/algif_aead.c:272:44: error: 'struct af_alg_sgl' has no member named 'sg'; did you mean 'sgt'? 272 | sg_chain(sgl_prev->sg, sgl_prev->npages + 1, | ^~ | sgt crypto/algif_aead.c:272:56: error: 'struct af_alg_sgl' has no member named 'npages' 272 | sg_chain(sgl_prev->sg, sgl_prev->npages + 1, | ^~ crypto/algif_aead.c:281:53: error: 'struct af_alg_sgl' has no member named 'sg'; did you mean 'sgt'? 281 | areq->first_rsgl.sgl.sg, used, ctx->iv); | ^~ | sgt vim +108 crypto/algif_skcipher.c a596999b7ddfe7 Tadeusz Struk 2015-03-19 49 e870456d8e7c8d Stephan Mueller 2017-06-25 50 static int _skcipher_recvmsg(struct socket *sock, struct msghdr *msg, e870456d8e7c8d Stephan Mueller 2017-06-25 51 size_t ignored, int flags) a596999b7ddfe7 Tadeusz Struk 2015-03-19 52 { a596999b7ddfe7 Tadeusz Struk 2015-03-19 53 struct sock *sk = sock->sk; a596999b7ddfe7 Tadeusz Struk 2015-03-19 54 struct alg_sock *ask = alg_sk(sk); ec69bbfb9902c3 Herbert Xu 2016-02-03 55 struct sock *psk = ask->parent; ec69bbfb9902c3 Herbert Xu 2016-02-03 56 struct alg_sock *pask = alg_sk(psk); 2d97591ef43d05 Stephan Mueller 2017-08-02 57 struct af_alg_ctx *ctx = ask->private; f8d33fac84806e Eric Biggers 2018-01-03 58 struct crypto_skcipher *tfm = pask->private; 5b0fe955233633 Herbert Xu 2019-09-10 59 unsigned int bs = crypto_skcipher_chunksize(tfm); 2d97591ef43d05 Stephan Mueller 2017-08-02 60 struct af_alg_async_req *areq; e870456d8e7c8d Stephan Mueller 2017-06-25 61 int err = 0; e870456d8e7c8d Stephan Mueller 2017-06-25 62 size_t len = 0; a596999b7ddfe7 Tadeusz Struk 2015-03-19 63 f3c802a1f30013 Herbert Xu 2020-05-30 64 if (!ctx->init || (ctx->more && ctx->used < bs)) { f3c802a1f30013 Herbert Xu 2020-05-30 65 err = af_alg_wait_for_data(sk, flags, bs); 11edb555966ed2 Stephan Mueller 2017-11-29 66 if (err) 11edb555966ed2 Stephan Mueller 2017-11-29 67 return err; 11edb555966ed2 Stephan Mueller 2017-11-29 68 } 11edb555966ed2 Stephan Mueller 2017-11-29 69 e870456d8e7c8d Stephan Mueller 2017-06-25 70 /* Allocate cipher request for current operation. */ 2d97591ef43d05 Stephan Mueller 2017-08-02 71 areq = af_alg_alloc_areq(sk, sizeof(struct af_alg_async_req) + 2d97591ef43d05 Stephan Mueller 2017-08-02 72 crypto_skcipher_reqsize(tfm)); 2d97591ef43d05 Stephan Mueller 2017-08-02 73 if (IS_ERR(areq)) 2d97591ef43d05 Stephan Mueller 2017-08-02 74 return PTR_ERR(areq); ec69bbfb9902c3 Herbert Xu 2016-02-03 75 e870456d8e7c8d Stephan Mueller 2017-06-25 76 /* convert iovecs of output buffers into RX SGL */ 7cf81954705b7e Herbert Xu 2020-05-29 77 err = af_alg_get_rsgl(sk, msg, flags, areq, ctx->used, &len); a596999b7ddfe7 Tadeusz Struk 2015-03-19 78 if (err) a596999b7ddfe7 Tadeusz Struk 2015-03-19 79 goto free; a596999b7ddfe7 Tadeusz Struk 2015-03-19 80 e870456d8e7c8d Stephan Mueller 2017-06-25 81 /* e870456d8e7c8d Stephan Mueller 2017-06-25 82 * If more buffers are to be expected to be processed, process only e870456d8e7c8d Stephan Mueller 2017-06-25 83 * full block size buffers. e870456d8e7c8d Stephan Mueller 2017-06-25 84 */ e870456d8e7c8d Stephan Mueller 2017-06-25 85 if (ctx->more || len < ctx->used) e870456d8e7c8d Stephan Mueller 2017-06-25 86 len -= len % bs; 033f46b3c13d40 tadeusz.struk@intel.com 2015-04-01 87 e870456d8e7c8d Stephan Mueller 2017-06-25 88 /* e870456d8e7c8d Stephan Mueller 2017-06-25 89 * Create a per request TX SGL for this request which tracks the e870456d8e7c8d Stephan Mueller 2017-06-25 90 * SG entries from the global TX SGL. e870456d8e7c8d Stephan Mueller 2017-06-25 91 */ 2d97591ef43d05 Stephan Mueller 2017-08-02 92 areq->tsgl_entries = af_alg_count_tsgl(sk, len, 0); e870456d8e7c8d Stephan Mueller 2017-06-25 93 if (!areq->tsgl_entries) e870456d8e7c8d Stephan Mueller 2017-06-25 94 areq->tsgl_entries = 1; 76e43e37a40785 Kees Cook 2018-06-12 95 areq->tsgl = sock_kmalloc(sk, array_size(sizeof(*areq->tsgl), 76e43e37a40785 Kees Cook 2018-06-12 96 areq->tsgl_entries), e870456d8e7c8d Stephan Mueller 2017-06-25 97 GFP_KERNEL); e870456d8e7c8d Stephan Mueller 2017-06-25 98 if (!areq->tsgl) { e870456d8e7c8d Stephan Mueller 2017-06-25 99 err = -ENOMEM; e870456d8e7c8d Stephan Mueller 2017-06-25 100 goto free; e870456d8e7c8d Stephan Mueller 2017-06-25 101 } e870456d8e7c8d Stephan Mueller 2017-06-25 102 sg_init_table(areq->tsgl, areq->tsgl_entries); 2d97591ef43d05 Stephan Mueller 2017-08-02 103 af_alg_pull_tsgl(sk, len, areq->tsgl, 0); e870456d8e7c8d Stephan Mueller 2017-06-25 104 e870456d8e7c8d Stephan Mueller 2017-06-25 105 /* Initialize the crypto operation */ 2d97591ef43d05 Stephan Mueller 2017-08-02 106 skcipher_request_set_tfm(&areq->cra_u.skcipher_req, tfm); 2d97591ef43d05 Stephan Mueller 2017-08-02 107 skcipher_request_set_crypt(&areq->cra_u.skcipher_req, areq->tsgl, 2d97591ef43d05 Stephan Mueller 2017-08-02 @108 areq->first_rsgl.sgl.sg, len, ctx->iv); e870456d8e7c8d Stephan Mueller 2017-06-25 109 e870456d8e7c8d Stephan Mueller 2017-06-25 110 if (msg->msg_iocb && !is_sync_kiocb(msg->msg_iocb)) { e870456d8e7c8d Stephan Mueller 2017-06-25 111 /* AIO operation */ 7d2c3f54e6f646 Stephan Mueller 2017-11-10 112 sock_hold(sk); e870456d8e7c8d Stephan Mueller 2017-06-25 113 areq->iocb = msg->msg_iocb; d53c5135792319 Stephan Mueller 2017-12-08 114 d53c5135792319 Stephan Mueller 2017-12-08 115 /* Remember output size that will be generated. */ d53c5135792319 Stephan Mueller 2017-12-08 116 areq->outlen = len; d53c5135792319 Stephan Mueller 2017-12-08 117 2d97591ef43d05 Stephan Mueller 2017-08-02 118 skcipher_request_set_callback(&areq->cra_u.skcipher_req, e870456d8e7c8d Stephan Mueller 2017-06-25 119 CRYPTO_TFM_REQ_MAY_SLEEP, 2d97591ef43d05 Stephan Mueller 2017-08-02 120 af_alg_async_cb, areq); 2d97591ef43d05 Stephan Mueller 2017-08-02 121 err = ctx->enc ? 2d97591ef43d05 Stephan Mueller 2017-08-02 122 crypto_skcipher_encrypt(&areq->cra_u.skcipher_req) : 2d97591ef43d05 Stephan Mueller 2017-08-02 123 crypto_skcipher_decrypt(&areq->cra_u.skcipher_req); 7d2c3f54e6f646 Stephan Mueller 2017-11-10 124 7d2c3f54e6f646 Stephan Mueller 2017-11-10 125 /* AIO operation in progress */ 2a05b029c1ee04 Herbert Xu 2020-07-31 126 if (err == -EINPROGRESS) 7d2c3f54e6f646 Stephan Mueller 2017-11-10 127 return -EIOCBQUEUED; 7d2c3f54e6f646 Stephan Mueller 2017-11-10 128 7d2c3f54e6f646 Stephan Mueller 2017-11-10 129 sock_put(sk); e870456d8e7c8d Stephan Mueller 2017-06-25 130 } else { e870456d8e7c8d Stephan Mueller 2017-06-25 131 /* Synchronous operation */ 2d97591ef43d05 Stephan Mueller 2017-08-02 132 skcipher_request_set_callback(&areq->cra_u.skcipher_req, e870456d8e7c8d Stephan Mueller 2017-06-25 133 CRYPTO_TFM_REQ_MAY_SLEEP | e870456d8e7c8d Stephan Mueller 2017-06-25 134 CRYPTO_TFM_REQ_MAY_BACKLOG, 2c3f8b162106a7 Gilad Ben-Yossef 2017-10-18 135 crypto_req_done, &ctx->wait); 2c3f8b162106a7 Gilad Ben-Yossef 2017-10-18 136 err = crypto_wait_req(ctx->enc ? 2d97591ef43d05 Stephan Mueller 2017-08-02 137 crypto_skcipher_encrypt(&areq->cra_u.skcipher_req) : 2d97591ef43d05 Stephan Mueller 2017-08-02 138 crypto_skcipher_decrypt(&areq->cra_u.skcipher_req), 2c3f8b162106a7 Gilad Ben-Yossef 2017-10-18 139 &ctx->wait); e870456d8e7c8d Stephan Mueller 2017-06-25 140 } e870456d8e7c8d Stephan Mueller 2017-06-25 141 e870456d8e7c8d Stephan Mueller 2017-06-25 142 a596999b7ddfe7 Tadeusz Struk 2015-03-19 143 free: 7d2c3f54e6f646 Stephan Mueller 2017-11-10 144 af_alg_free_resources(areq); e870456d8e7c8d Stephan Mueller 2017-06-25 145 e870456d8e7c8d Stephan Mueller 2017-06-25 146 return err ? err : len; a596999b7ddfe7 Tadeusz Struk 2015-03-19 147 } a596999b7ddfe7 Tadeusz Struk 2015-03-19 148 :::::: The code at line 108 was first introduced by commit :::::: 2d97591ef43d0587be22ad1b0d758d6df4999a0b crypto: af_alg - consolidation of duplicate code :::::: TO: Stephan Mueller :::::: CC: Herbert Xu -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests