From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: Re: [PATCH bpf-next v7 1/3] bpf: make common crypto API for TC/XDP programs
Date: Wed, 6 Dec 2023 06:19:43 +0800 [thread overview]
Message-ID: <202312060647.2JfAE3rk-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20231202010604.1877561-1-vadfed@meta.com>
References: <20231202010604.1877561-1-vadfed@meta.com>
TO: Vadim Fedorenko <vadfed@meta.com>
TO: Vadim Fedorenko <vadim.fedorenko@linux.dev>
TO: Jakub Kicinski <kuba@kernel.org>
TO: Martin KaFai Lau <martin.lau@linux.dev>
TO: Andrii Nakryiko <andrii@kernel.org>
TO: Alexei Starovoitov <ast@kernel.org>
TO: Mykola Lysenko <mykolal@fb.com>
TO: Herbert Xu <herbert@gondor.apana.org.au>
CC: netdev@vger.kernel.org
CC: linux-crypto@vger.kernel.org
CC: bpf@vger.kernel.org
Hi Vadim,
kernel test robot noticed the following build warnings:
[auto build test WARNING on bpf-next/master]
url: https://github.com/intel-lab-lkp/linux/commits/Vadim-Fedorenko/bpf-crypto-add-skcipher-to-bpf-crypto/20231202-091254
base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
patch link: https://lore.kernel.org/r/20231202010604.1877561-1-vadfed%40meta.com
patch subject: [PATCH bpf-next v7 1/3] bpf: make common crypto API for TC/XDP programs
:::::: branch date: 4 days ago
:::::: commit date: 4 days ago
config: x86_64-randconfig-161-20231202 (https://download.01.org/0day-ci/archive/20231206/202312060647.2JfAE3rk-lkp@intel.com/config)
compiler: clang version 16.0.4 (https://github.com/llvm/llvm-project.git ae42196bc493ffe877a7e3dff8be32035dea4d07)
reproduce: (https://download.01.org/0day-ci/archive/20231206/202312060647.2JfAE3rk-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202312060647.2JfAE3rk-lkp@intel.com/
smatch warnings:
kernel/bpf/crypto.c:192 bpf_crypto_ctx_create() error: we previously assumed 'ctx' could be null (see line 165)
kernel/bpf/crypto.c:192 bpf_crypto_ctx_create() error: potentially dereferencing uninitialized 'ctx'.
vim +/ctx +192 kernel/bpf/crypto.c
0c47cb96ac404e Vadim Fedorenko 2023-12-01 105
0c47cb96ac404e Vadim Fedorenko 2023-12-01 106 /**
0c47cb96ac404e Vadim Fedorenko 2023-12-01 107 * bpf_crypto_ctx_create() - Create a mutable BPF crypto context.
0c47cb96ac404e Vadim Fedorenko 2023-12-01 108 *
0c47cb96ac404e Vadim Fedorenko 2023-12-01 109 * Allocates a crypto context that can be used, acquired, and released by
0c47cb96ac404e Vadim Fedorenko 2023-12-01 110 * a BPF program. The crypto context returned by this function must either
0c47cb96ac404e Vadim Fedorenko 2023-12-01 111 * be embedded in a map as a kptr, or freed with bpf_crypto_ctx_release().
0c47cb96ac404e Vadim Fedorenko 2023-12-01 112 * As crypto API functions use GFP_KERNEL allocations, this function can
0c47cb96ac404e Vadim Fedorenko 2023-12-01 113 * only be used in sleepable BPF programs.
0c47cb96ac404e Vadim Fedorenko 2023-12-01 114 *
0c47cb96ac404e Vadim Fedorenko 2023-12-01 115 * bpf_crypto_ctx_create() allocates memory for crypto context.
0c47cb96ac404e Vadim Fedorenko 2023-12-01 116 * It may return NULL if no memory is available.
0c47cb96ac404e Vadim Fedorenko 2023-12-01 117 * @type__str: pointer to string representation of crypto type.
0c47cb96ac404e Vadim Fedorenko 2023-12-01 118 * @algo__str: pointer to string representation of algorithm.
0c47cb96ac404e Vadim Fedorenko 2023-12-01 119 * @pkey: bpf_dynptr which holds cipher key to do crypto.
0c47cb96ac404e Vadim Fedorenko 2023-12-01 120 * @err: integer to store error code when NULL is returned
0c47cb96ac404e Vadim Fedorenko 2023-12-01 121 */
0c47cb96ac404e Vadim Fedorenko 2023-12-01 122 __bpf_kfunc struct bpf_crypto_ctx *
0c47cb96ac404e Vadim Fedorenko 2023-12-01 123 bpf_crypto_ctx_create(const char *type__str, const char *algo__str,
0c47cb96ac404e Vadim Fedorenko 2023-12-01 124 const struct bpf_dynptr_kern *pkey,
0c47cb96ac404e Vadim Fedorenko 2023-12-01 125 unsigned int authsize, int *err)
0c47cb96ac404e Vadim Fedorenko 2023-12-01 126 {
0c47cb96ac404e Vadim Fedorenko 2023-12-01 127 const struct bpf_crypto_type *type = bpf_crypto_get_type(type__str);
0c47cb96ac404e Vadim Fedorenko 2023-12-01 128 struct bpf_crypto_ctx *ctx;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 129 const u8 *key;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 130 u32 key_len;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 131
0c47cb96ac404e Vadim Fedorenko 2023-12-01 132 type = bpf_crypto_get_type(type__str);
0c47cb96ac404e Vadim Fedorenko 2023-12-01 133 if (IS_ERR(type)) {
0c47cb96ac404e Vadim Fedorenko 2023-12-01 134 *err = PTR_ERR(type);
0c47cb96ac404e Vadim Fedorenko 2023-12-01 135 return NULL;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 136 }
0c47cb96ac404e Vadim Fedorenko 2023-12-01 137
0c47cb96ac404e Vadim Fedorenko 2023-12-01 138 if (!type->has_algo(algo__str)) {
0c47cb96ac404e Vadim Fedorenko 2023-12-01 139 *err = -EOPNOTSUPP;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 140 goto err;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 141 }
0c47cb96ac404e Vadim Fedorenko 2023-12-01 142
0c47cb96ac404e Vadim Fedorenko 2023-12-01 143 if (!authsize && type->setauthsize) {
0c47cb96ac404e Vadim Fedorenko 2023-12-01 144 *err = -EOPNOTSUPP;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 145 goto err;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 146 }
0c47cb96ac404e Vadim Fedorenko 2023-12-01 147
0c47cb96ac404e Vadim Fedorenko 2023-12-01 148 if (authsize && !type->setauthsize) {
0c47cb96ac404e Vadim Fedorenko 2023-12-01 149 *err = -EOPNOTSUPP;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 150 goto err;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 151 }
0c47cb96ac404e Vadim Fedorenko 2023-12-01 152
0c47cb96ac404e Vadim Fedorenko 2023-12-01 153 key_len = __bpf_dynptr_size(pkey);
0c47cb96ac404e Vadim Fedorenko 2023-12-01 154 if (!key_len) {
0c47cb96ac404e Vadim Fedorenko 2023-12-01 155 *err = -EINVAL;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 156 goto err;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 157 }
0c47cb96ac404e Vadim Fedorenko 2023-12-01 158 key = __bpf_dynptr_data(pkey, key_len);
0c47cb96ac404e Vadim Fedorenko 2023-12-01 159 if (!key) {
0c47cb96ac404e Vadim Fedorenko 2023-12-01 160 *err = -EINVAL;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 161 goto err;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 162 }
0c47cb96ac404e Vadim Fedorenko 2023-12-01 163
0c47cb96ac404e Vadim Fedorenko 2023-12-01 164 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
0c47cb96ac404e Vadim Fedorenko 2023-12-01 @165 if (!ctx) {
0c47cb96ac404e Vadim Fedorenko 2023-12-01 166 *err = -ENOMEM;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 167 goto err;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 168 }
0c47cb96ac404e Vadim Fedorenko 2023-12-01 169
0c47cb96ac404e Vadim Fedorenko 2023-12-01 170 ctx->type = type;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 171 ctx->tfm = type->alloc_tfm(algo__str);
0c47cb96ac404e Vadim Fedorenko 2023-12-01 172 if (IS_ERR(ctx->tfm)) {
0c47cb96ac404e Vadim Fedorenko 2023-12-01 173 *err = PTR_ERR(ctx->tfm);
0c47cb96ac404e Vadim Fedorenko 2023-12-01 174 ctx->tfm = NULL;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 175 goto err;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 176 }
0c47cb96ac404e Vadim Fedorenko 2023-12-01 177
0c47cb96ac404e Vadim Fedorenko 2023-12-01 178 if (authsize) {
0c47cb96ac404e Vadim Fedorenko 2023-12-01 179 *err = type->setauthsize(ctx->tfm, authsize);
0c47cb96ac404e Vadim Fedorenko 2023-12-01 180 if (*err)
0c47cb96ac404e Vadim Fedorenko 2023-12-01 181 goto err;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 182 }
0c47cb96ac404e Vadim Fedorenko 2023-12-01 183
0c47cb96ac404e Vadim Fedorenko 2023-12-01 184 *err = type->setkey(ctx->tfm, key, key_len);
0c47cb96ac404e Vadim Fedorenko 2023-12-01 185 if (*err)
0c47cb96ac404e Vadim Fedorenko 2023-12-01 186 goto err;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 187
0c47cb96ac404e Vadim Fedorenko 2023-12-01 188 refcount_set(&ctx->usage, 1);
0c47cb96ac404e Vadim Fedorenko 2023-12-01 189
0c47cb96ac404e Vadim Fedorenko 2023-12-01 190 return ctx;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 191 err:
0c47cb96ac404e Vadim Fedorenko 2023-12-01 @192 if (ctx->tfm)
0c47cb96ac404e Vadim Fedorenko 2023-12-01 193 type->free_tfm(ctx->tfm);
0c47cb96ac404e Vadim Fedorenko 2023-12-01 194 kfree(ctx);
0c47cb96ac404e Vadim Fedorenko 2023-12-01 195 module_put(type->owner);
0c47cb96ac404e Vadim Fedorenko 2023-12-01 196
0c47cb96ac404e Vadim Fedorenko 2023-12-01 197 return NULL;
0c47cb96ac404e Vadim Fedorenko 2023-12-01 198 }
0c47cb96ac404e Vadim Fedorenko 2023-12-01 199
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2023-12-05 22:19 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-05 22:19 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2023-12-02 1:06 [PATCH bpf-next v7 1/3] bpf: make common crypto API for TC/XDP programs Vadim Fedorenko
2023-12-02 1:48 ` Martin KaFai Lau
2023-12-03 19:02 ` Vadim Fedorenko
2023-12-04 23:08 ` Martin KaFai Lau
2023-12-03 10:57 ` Simon Horman
2023-12-03 19:08 ` Vadim Fedorenko
2023-12-05 20:19 ` kernel test robot
2023-12-05 21:15 ` kernel test robot
2023-12-06 5:56 ` Dan Carpenter
2023-12-07 12:14 ` Vadim Fedorenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202312060647.2JfAE3rk-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.