crypto/crypto_engine.c:56:9: sparse: sparse: incorrect type in argument 1 (different address spaces)

From: kernel test robot
Date: Thu Sep 15 2022 - 15:56:05 EST


Hi Qing,

First bad commit (maybe != root cause):

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 3245cb65fd91cd514801bf91f5a3066d562f0ac4
commit: 93a4fa622eb061f75f87f0cf9609ab4e69c67d01 LoongArch: Add STACKTRACE support
date: 5 weeks ago
config: loongarch-randconfig-s043-20220915 (https://download.01.org/0day-ci/archive/20220916/202209160355.6tyYIizw-lkp@xxxxxxxxx/config)
compiler: loongarch64-linux-gcc (GCC) 12.1.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-39-gce1a6720-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=93a4fa622eb061f75f87f0cf9609ab4e69c67d01
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 93a4fa622eb061f75f87f0cf9609ab4e69c67d01
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=loongarch SHELL=/bin/bash crypto/ drivers/perf/ drivers/soc/qcom/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@xxxxxxxxx>

sparse warnings: (new ones prefixed by >>)
>> crypto/crypto_engine.c:56:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
crypto/crypto_engine.c:56:9: sparse: expected void *ptr
crypto/crypto_engine.c:56:9: sparse: got unsigned int [noderef] __percpu *
>> crypto/crypto_engine.c:56:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
crypto/crypto_engine.c:56:9: sparse: expected void *ptr
crypto/crypto_engine.c:56:9: sparse: got unsigned int [noderef] __percpu *
>> crypto/crypto_engine.c:56:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
crypto/crypto_engine.c:56:9: sparse: expected void *ptr
crypto/crypto_engine.c:56:9: sparse: got unsigned int [noderef] __percpu *
>> crypto/crypto_engine.c:56:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
crypto/crypto_engine.c:56:9: sparse: expected void *ptr
crypto/crypto_engine.c:56:9: sparse: got unsigned int [noderef] __percpu *
--
>> drivers/soc/qcom/rpmh.c:441:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
drivers/soc/qcom/rpmh.c:441:9: sparse: expected void *ptr
drivers/soc/qcom/rpmh.c:441:9: sparse: got unsigned int [noderef] __percpu *
>> drivers/soc/qcom/rpmh.c:441:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
drivers/soc/qcom/rpmh.c:441:9: sparse: expected void *ptr
drivers/soc/qcom/rpmh.c:441:9: sparse: got unsigned int [noderef] __percpu *
>> drivers/soc/qcom/rpmh.c:441:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
drivers/soc/qcom/rpmh.c:441:9: sparse: expected void *ptr
drivers/soc/qcom/rpmh.c:441:9: sparse: got unsigned int [noderef] __percpu *
>> drivers/soc/qcom/rpmh.c:441:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got unsigned int [noderef] __percpu * @@
drivers/soc/qcom/rpmh.c:441:9: sparse: expected void *ptr
drivers/soc/qcom/rpmh.c:441:9: sparse: got unsigned int [noderef] __percpu *
>> drivers/soc/qcom/rpmh.c:441:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
drivers/soc/qcom/rpmh.c:441:9: sparse: expected void *ptr
drivers/soc/qcom/rpmh.c:441:9: sparse: got int [noderef] __percpu *
>> drivers/soc/qcom/rpmh.c:441:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
drivers/soc/qcom/rpmh.c:441:9: sparse: expected void *ptr
drivers/soc/qcom/rpmh.c:441:9: sparse: got int [noderef] __percpu *
>> drivers/soc/qcom/rpmh.c:441:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
drivers/soc/qcom/rpmh.c:441:9: sparse: expected void *ptr
drivers/soc/qcom/rpmh.c:441:9: sparse: got int [noderef] __percpu *
>> drivers/soc/qcom/rpmh.c:441:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *ptr @@ got int [noderef] __percpu * @@
drivers/soc/qcom/rpmh.c:441:9: sparse: expected void *ptr
drivers/soc/qcom/rpmh.c:441:9: sparse: got int [noderef] __percpu *

vim +56 crypto/crypto_engine.c

735d37b5424b27 Baolin Wang 2016-01-26 18
218d1cc1860c45 Corentin LABBE 2018-01-26 19 /**
218d1cc1860c45 Corentin LABBE 2018-01-26 20 * crypto_finalize_request - finalize one request if the request is done
218d1cc1860c45 Corentin LABBE 2018-01-26 21 * @engine: the hardware engine
218d1cc1860c45 Corentin LABBE 2018-01-26 22 * @req: the request need to be finalized
218d1cc1860c45 Corentin LABBE 2018-01-26 23 * @err: error number
218d1cc1860c45 Corentin LABBE 2018-01-26 24 */
218d1cc1860c45 Corentin LABBE 2018-01-26 25 static void crypto_finalize_request(struct crypto_engine *engine,
218d1cc1860c45 Corentin LABBE 2018-01-26 26 struct crypto_async_request *req, int err)
218d1cc1860c45 Corentin LABBE 2018-01-26 27 {
218d1cc1860c45 Corentin LABBE 2018-01-26 28 unsigned long flags;
6a89f492f8e509 Iuliana Prodan 2020-04-28 29 bool finalize_req = false;
218d1cc1860c45 Corentin LABBE 2018-01-26 30 int ret;
218d1cc1860c45 Corentin LABBE 2018-01-26 31 struct crypto_engine_ctx *enginectx;
218d1cc1860c45 Corentin LABBE 2018-01-26 32
6a89f492f8e509 Iuliana Prodan 2020-04-28 33 /*
6a89f492f8e509 Iuliana Prodan 2020-04-28 34 * If hardware cannot enqueue more requests
6a89f492f8e509 Iuliana Prodan 2020-04-28 35 * and retry mechanism is not supported
6a89f492f8e509 Iuliana Prodan 2020-04-28 36 * make sure we are completing the current request
6a89f492f8e509 Iuliana Prodan 2020-04-28 37 */
6a89f492f8e509 Iuliana Prodan 2020-04-28 38 if (!engine->retry_support) {
218d1cc1860c45 Corentin LABBE 2018-01-26 39 spin_lock_irqsave(&engine->queue_lock, flags);
6a89f492f8e509 Iuliana Prodan 2020-04-28 40 if (engine->cur_req == req) {
6a89f492f8e509 Iuliana Prodan 2020-04-28 41 finalize_req = true;
6a89f492f8e509 Iuliana Prodan 2020-04-28 42 engine->cur_req = NULL;
6a89f492f8e509 Iuliana Prodan 2020-04-28 43 }
218d1cc1860c45 Corentin LABBE 2018-01-26 44 spin_unlock_irqrestore(&engine->queue_lock, flags);
6a89f492f8e509 Iuliana Prodan 2020-04-28 45 }
218d1cc1860c45 Corentin LABBE 2018-01-26 46
6a89f492f8e509 Iuliana Prodan 2020-04-28 47 if (finalize_req || engine->retry_support) {
218d1cc1860c45 Corentin LABBE 2018-01-26 48 enginectx = crypto_tfm_ctx(req->tfm);
6a89f492f8e509 Iuliana Prodan 2020-04-28 49 if (enginectx->op.prepare_request &&
218d1cc1860c45 Corentin LABBE 2018-01-26 50 enginectx->op.unprepare_request) {
218d1cc1860c45 Corentin LABBE 2018-01-26 51 ret = enginectx->op.unprepare_request(engine, req);
218d1cc1860c45 Corentin LABBE 2018-01-26 52 if (ret)
218d1cc1860c45 Corentin LABBE 2018-01-26 53 dev_err(engine->dev, "failed to unprepare request\n");
218d1cc1860c45 Corentin LABBE 2018-01-26 54 }
218d1cc1860c45 Corentin LABBE 2018-01-26 55 }
4058cf08945c18 Corentin Labbe 2022-02-21 @56 lockdep_assert_in_softirq();
218d1cc1860c45 Corentin LABBE 2018-01-26 57 req->complete(req, err);
218d1cc1860c45 Corentin LABBE 2018-01-26 58
218d1cc1860c45 Corentin LABBE 2018-01-26 59 kthread_queue_work(engine->kworker, &engine->pump_requests);
218d1cc1860c45 Corentin LABBE 2018-01-26 60 }
218d1cc1860c45 Corentin LABBE 2018-01-26 61

:::::: The code at line 56 was first introduced by commit
:::::: 4058cf08945c18a6de193f4118fd05d83d3d4285 crypto: engine - check if BH is disabled during completion

:::::: TO: Corentin Labbe <clabbe@xxxxxxxxxxxx>
:::::: CC: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>

--
0-DAY CI Kernel Test Service
https://01.org/lkp