All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/scsi/pm8001/pm8001_sas.c:381:24: warning: Value stored to 'pm8001_dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
Date: Thu, 21 Apr 2022 14:32:06 +0800	[thread overview]
Message-ID: <202204202002.zsf44OL8-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 23732 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Damien Le Moal <damien.lemoal@opensource.wdc.com>
CC: "Martin K. Petersen" <martin.petersen@oracle.com>
CC: John Garry <john.garry@huawei.com>
CC: Jack Wang <jinpu.wang@ionos.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   559089e0a93d44280ec3ab478830af319c56dbe3
commit: e29c47fe8946cc732b0e0d393b65b13c84bb69d0 scsi: pm8001: Simplify pm8001_task_exec()
date:   8 weeks ago
:::::: branch date: 17 hours ago
:::::: commit date: 8 weeks ago
config: riscv-randconfig-c006-20220419 (https://download.01.org/0day-ci/archive/20220420/202204202002.zsf44OL8-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project c1c49a356162b22554088d269f7689bdb044a9f1)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e29c47fe8946cc732b0e0d393b65b13c84bb69d0
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout e29c47fe8946cc732b0e0d393b65b13c84bb69d0
        # save the config file
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
                   ^
   mm/zsmalloc.c:1901:2: note: Loop condition is false.  Exiting loop
           kunmap_atomic(s_addr);
           ^
   include/linux/highmem-internal.h:245:2: note: expanded from macro 'kunmap_atomic'
           BUILD_BUG_ON(__same_type((__addr), struct page *));     \
           ^
   include/linux/build_bug.h:50:2: note: expanded from macro 'BUILD_BUG_ON'
           BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
           ^
   include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
   #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
                                       ^
   include/linux/compiler_types.h:346:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:334:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:318:2: note: expanded from macro '__compiletime_assert'
           do {                                                            \
           ^
   mm/zsmalloc.c:1901:2: note: Loop condition is false.  Exiting loop
           kunmap_atomic(s_addr);
           ^
   include/linux/highmem-internal.h:243:35: note: expanded from macro 'kunmap_atomic'
   #define kunmap_atomic(__addr)                                   \
                                                                   ^
   mm/zsmalloc.c:1903:2: note: Calling 'replace_sub_page'
           replace_sub_page(class, zspage, newpage, page);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/zsmalloc.c:1801:2: note: Initializing to a null pointer value
           struct page *pages[ZS_MAX_PAGES_PER_ZSPAGE] = {NULL, };
           ^~~~~~~~~~~~~~~~~~
   mm/zsmalloc.c:1806:7: note: Assuming 'page' is not equal to 'oldpage'
                   if (page == oldpage)
                       ^~~~~~~~~~~~~~~
   mm/zsmalloc.c:1806:3: note: Taking false branch
                   if (page == oldpage)
                   ^
   mm/zsmalloc.c:1805:2: note: Loop condition is false.  Exiting loop
           do {
           ^
   mm/zsmalloc.c:1813:2: note: Calling 'create_page_chain'
           create_page_chain(class, zspage, pages);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/zsmalloc.c:1033:14: note: Assuming 'i' is < 'nr_pages'
           for (i = 0; i < nr_pages; i++) {
                       ^~~~~~~~~~~~
   mm/zsmalloc.c:1033:2: note: Loop condition is true.  Entering loop body
           for (i = 0; i < nr_pages; i++) {
           ^
   mm/zsmalloc.c:1037:7: note: 'i' is equal to 0
                   if (i == 0) {
                       ^
   mm/zsmalloc.c:1037:3: note: Taking true branch
                   if (i == 0) {
                   ^
   mm/zsmalloc.c:1040:17: note: Assuming field 'objs_per_zspage' is not equal to 1
                           if (unlikely(class->objs_per_zspage == 1 &&
                                        ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   mm/zsmalloc.c:1040:45: note: Left side of '&&' is false
                           if (unlikely(class->objs_per_zspage == 1 &&
                                                                    ^
   mm/zsmalloc.c:1040:4: note: Taking false branch
                           if (unlikely(class->objs_per_zspage == 1 &&
                           ^
   mm/zsmalloc.c:1033:28: note: The value 1 is assigned to 'i'
           for (i = 0; i < nr_pages; i++) {
                                     ^~~
   mm/zsmalloc.c:1033:14: note: Assuming 'i' is < 'nr_pages'
           for (i = 0; i < nr_pages; i++) {
                       ^~~~~~~~~~~~
   mm/zsmalloc.c:1033:2: note: Loop condition is true.  Entering loop body
           for (i = 0; i < nr_pages; i++) {
           ^
   mm/zsmalloc.c:1034:3: note: Null pointer value stored to 'page'
                   page = pages[i];
                   ^~~~~~~~~~~~~~~
   mm/zsmalloc.c:1035:20: note: Passing null pointer value via 1st parameter 'page'
                   set_page_private(page, (unsigned long)zspage);
                                    ^~~~
   mm/zsmalloc.c:1035:3: note: Calling 'set_page_private'
                   set_page_private(page, (unsigned long)zspage);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/mm_types.h:308:16: note: Dereference of null pointer
           page->private = private;
           ~~~~~~~~~~~~~~^~~~~~~~~
   mm/zsmalloc.c:934:2: warning: Value stored to 'next' is never read [clang-analyzer-deadcode.DeadStores]
           next = page = get_first_page(zspage);
           ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/zsmalloc.c:934:2: note: Value stored to 'next' is never read
           next = page = get_first_page(zspage);
           ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   13 warnings generated.
>> drivers/scsi/pm8001/pm8001_sas.c:381:24: warning: Value stored to 'pm8001_dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct pm8001_device *pm8001_dev = dev->lldd_dev;
                                 ^~~~~~~~~~   ~~~~~~~~~~~~~
   drivers/scsi/pm8001/pm8001_sas.c:381:24: note: Value stored to 'pm8001_dev' during its initialization is never read
           struct pm8001_device *pm8001_dev = dev->lldd_dev;
                                 ^~~~~~~~~~   ~~~~~~~~~~~~~
   drivers/scsi/pm8001/pm8001_sas.c:639:4: warning: Value stored to 'res' is never read [clang-analyzer-deadcode.DeadStores]
                           res = -1;
                           ^     ~~
   drivers/scsi/pm8001/pm8001_sas.c:639:4: note: Value stored to 'res' is never read
                           res = -1;
                           ^     ~~
   drivers/scsi/pm8001/pm8001_sas.c:943:3: warning: Value stored to 'rc' is never read [clang-analyzer-deadcode.DeadStores]
                   rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev,
                   ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/pm8001/pm8001_sas.c:943:3: note: Value stored to 'rc' is never read
                   rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev,
                   ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/pm8001/pm8001_sas.c:959:3: warning: Value stored to 'rc' is never read [clang-analyzer-deadcode.DeadStores]
                   rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev,
                   ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/pm8001/pm8001_sas.c:959:3: note: Value stored to 'rc' is never read
                   rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev,
                   ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/pm8001/pm8001_sas.c:987:3: warning: Value stored to 'rc' is never read [clang-analyzer-deadcode.DeadStores]
                   rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev,
                   ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/pm8001/pm8001_sas.c:987:3: note: Value stored to 'rc' is never read
                   rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev,
                   ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/pm8001/pm8001_sas.c:989:3: warning: Value stored to 'rc' is never read [clang-analyzer-deadcode.DeadStores]
                   rc = sas_phy_reset(phy, 1);
                   ^    ~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/pm8001/pm8001_sas.c:989:3: note: Value stored to 'rc' is never read
                   rc = sas_phy_reset(phy, 1);
                   ^    ~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/pm8001/pm8001_sas.c:1179:4: warning: Value stored to 'rc' is never read [clang-analyzer-deadcode.DeadStores]
                           rc = pm8001_exec_internal_task_abort(pm8001_ha,
                           ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/pm8001/pm8001_sas.c:1179:4: note: Value stored to 'rc' is never read
                           rc = pm8001_exec_internal_task_abort(pm8001_ha,
                           ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:154:48: warning: Access to field 'data' results in a dereference of an undefined pointer value (loaded from variable 'fw') [clang-analyzer-core.NullDereference]
           nvkm_acr_lsfw_from_desc(&nvfw_ls_desc(subdev, fw->data)->head, lsfw);
                                                         ^~
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:146:2: note: 'fw' declared without an initial value
           const struct firmware *fw;
           ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:149:9: note: Calling 'nvkm_acr_lsfw_load_sig_image_desc_'
           lsfw = nvkm_acr_lsfw_load_sig_image_desc_(subdev, falcon, id, path, ver,
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:97:2: note: Taking false branch
           if (IS_ERR((lsfw = nvkm_acr_lsfw_add(func, acr, falcon, id))))
           ^
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:101:6: note: Assuming 'ret' is not equal to 0
           if (ret)
               ^~~
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:101:2: note: Taking true branch
           if (ret)
           ^
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:102:3: note: Control jumps to line 110
                   goto done;
                   ^
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:110:6: note: 'ret' is not equal to 0
           if (ret) {
               ^~~
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:110:2: note: Taking true branch
           if (ret) {
           ^
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:112:3: note: Returning without writing to '*pdesc'
                   return ERR_PTR(ret);
                   ^
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:149:9: note: Returning from 'nvkm_acr_lsfw_load_sig_image_desc_'
           lsfw = nvkm_acr_lsfw_load_sig_image_desc_(subdev, falcon, id, path, ver,
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:151:2: note: Taking false branch
           if (IS_ERR(lsfw))
           ^
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:154:48: note: Access to field 'data' results in a dereference of an undefined pointer value (loaded from variable 'fw')
           nvkm_acr_lsfw_from_desc(&nvfw_ls_desc(subdev, fw->data)->head, lsfw);
                                                         ^~
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:174:51: warning: Access to field 'data' results in a dereference of an undefined pointer value (loaded from variable 'fw') [clang-analyzer-core.NullDereference]
           nvkm_acr_lsfw_from_desc(&nvfw_ls_desc_v1(subdev, fw->data)->head, lsfw);
                                                            ^~
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:166:2: note: 'fw' declared without an initial value
           const struct firmware *fw;
           ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:169:9: note: Calling 'nvkm_acr_lsfw_load_sig_image_desc_'
           lsfw = nvkm_acr_lsfw_load_sig_image_desc_(subdev, falcon, id, path, ver,
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:97:2: note: Taking false branch
           if (IS_ERR((lsfw = nvkm_acr_lsfw_add(func, acr, falcon, id))))
           ^
   drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.c:101:6: note: Assuming 'ret' is not equal to 0
           if (ret)

vim +/pm8001_dev +381 drivers/scsi/pm8001/pm8001_sas.c

1cc943ae5003e4 jack wang       2009-12-07  366  
a0cf5ce40d125a Lee Jones       2020-07-21  367  #define DEV_IS_GONE(pm8001_dev)	\
a0cf5ce40d125a Lee Jones       2020-07-21  368  	((!pm8001_dev || (pm8001_dev->dev_type == SAS_PHY_UNUSED)))
96e54376a8b270 John Garry      2022-02-17  369  
dbf9bfe615717d jack wang       2009-10-14  370  /**
96e54376a8b270 John Garry      2022-02-17  371    * pm8001_queue_command - register for upper layer used, all IO commands sent
96e54376a8b270 John Garry      2022-02-17  372    * to HBA are from this interface.
dbf9bfe615717d jack wang       2009-10-14  373    * @task: the task to be execute.
96e54376a8b270 John Garry      2022-02-17  374    * @gfp_flags: gfp_flags
dbf9bfe615717d jack wang       2009-10-14  375    */
96e54376a8b270 John Garry      2022-02-17  376  int pm8001_queue_command(struct sas_task *task, gfp_t gfp_flags)
dbf9bfe615717d jack wang       2009-10-14  377  {
e29c47fe8946cc Damien Le Moal  2022-02-20  378  	struct task_status_struct *ts = &task->task_status;
e29c47fe8946cc Damien Le Moal  2022-02-20  379  	enum sas_protocol task_proto = task->task_proto;
dbf9bfe615717d jack wang       2009-10-14  380  	struct domain_device *dev = task->dev;
e29c47fe8946cc Damien Le Moal  2022-02-20 @381  	struct pm8001_device *pm8001_dev = dev->lldd_dev;
dbf9bfe615717d jack wang       2009-10-14  382  	struct pm8001_hba_info *pm8001_ha;
1cc943ae5003e4 jack wang       2009-12-07  383  	struct pm8001_port *port = NULL;
dbf9bfe615717d jack wang       2009-10-14  384  	struct pm8001_ccb_info *ccb;
96e54376a8b270 John Garry      2022-02-17  385  	struct sas_tmf_task *tmf = task->tmf;
96e54376a8b270 John Garry      2022-02-17  386  	int is_tmf = !!task->tmf;
e29c47fe8946cc Damien Le Moal  2022-02-20  387  	unsigned long flags;
e29c47fe8946cc Damien Le Moal  2022-02-20  388  	u32 n_elem = 0;
e29c47fe8946cc Damien Le Moal  2022-02-20  389  	int rc = 0;
dbf9bfe615717d jack wang       2009-10-14  390  
dbf9bfe615717d jack wang       2009-10-14  391  	if (!dev->port) {
e29c47fe8946cc Damien Le Moal  2022-02-20  392  		ts->resp = SAS_TASK_UNDELIVERED;
e29c47fe8946cc Damien Le Moal  2022-02-20  393  		ts->stat = SAS_PHY_DOWN;
aa9f8328fc5146 James Bottomley 2013-05-07  394  		if (dev->dev_type != SAS_SATA_DEV)
e29c47fe8946cc Damien Le Moal  2022-02-20  395  			task->task_done(task);
dbf9bfe615717d jack wang       2009-10-14  396  		return 0;
dbf9bfe615717d jack wang       2009-10-14  397  	}
72349b62a571ef Deepak Ukey     2018-09-11  398  
e29c47fe8946cc Damien Le Moal  2022-02-20  399  	pm8001_ha = pm8001_find_ha_by_dev(dev);
e29c47fe8946cc Damien Le Moal  2022-02-20  400  	if (pm8001_ha->controller_fatal_error) {
72349b62a571ef Deepak Ukey     2018-09-11  401  		ts->resp = SAS_TASK_UNDELIVERED;
e29c47fe8946cc Damien Le Moal  2022-02-20  402  		task->task_done(task);
72349b62a571ef Deepak Ukey     2018-09-11  403  		return 0;
72349b62a571ef Deepak Ukey     2018-09-11  404  	}
e29c47fe8946cc Damien Le Moal  2022-02-20  405  
1b5d2793283dcb Joe Perches     2020-11-20  406  	pm8001_dbg(pm8001_ha, IO, "pm8001_task_exec device\n");
e29c47fe8946cc Damien Le Moal  2022-02-20  407  
dbf9bfe615717d jack wang       2009-10-14  408  	spin_lock_irqsave(&pm8001_ha->lock, flags);
e29c47fe8946cc Damien Le Moal  2022-02-20  409  
dbf9bfe615717d jack wang       2009-10-14  410  	pm8001_dev = dev->lldd_dev;
1cc943ae5003e4 jack wang       2009-12-07  411  	port = &pm8001_ha->port[sas_find_local_port_id(dev)];
e29c47fe8946cc Damien Le Moal  2022-02-20  412  
b90b378ad5767c Mark Salyzyn    2011-09-22  413  	if (DEV_IS_GONE(pm8001_dev) || !port->port_attached) {
1cc943ae5003e4 jack wang       2009-12-07  414  		ts->resp = SAS_TASK_UNDELIVERED;
1cc943ae5003e4 jack wang       2009-12-07  415  		ts->stat = SAS_PHY_DOWN;
e29c47fe8946cc Damien Le Moal  2022-02-20  416  		if (sas_protocol_ata(task_proto)) {
1cc943ae5003e4 jack wang       2009-12-07  417  			spin_unlock_irqrestore(&pm8001_ha->lock, flags);
e29c47fe8946cc Damien Le Moal  2022-02-20  418  			task->task_done(task);
1cc943ae5003e4 jack wang       2009-12-07  419  			spin_lock_irqsave(&pm8001_ha->lock, flags);
1cc943ae5003e4 jack wang       2009-12-07  420  		} else {
e29c47fe8946cc Damien Le Moal  2022-02-20  421  			task->task_done(task);
1cc943ae5003e4 jack wang       2009-12-07  422  		}
e29c47fe8946cc Damien Le Moal  2022-02-20  423  		rc = -ENODEV;
e29c47fe8946cc Damien Le Moal  2022-02-20  424  		goto err_out;
1cc943ae5003e4 jack wang       2009-12-07  425  	}
99df0edb5a9849 Damien Le Moal  2022-02-20  426  
e29c47fe8946cc Damien Le Moal  2022-02-20  427  	ccb = pm8001_ccb_alloc(pm8001_ha, pm8001_dev, task);
99df0edb5a9849 Damien Le Moal  2022-02-20  428  	if (!ccb) {
99df0edb5a9849 Damien Le Moal  2022-02-20  429  		rc = -SAS_QUEUE_FULL;
dbf9bfe615717d jack wang       2009-10-14  430  		goto err_out;
99df0edb5a9849 Damien Le Moal  2022-02-20  431  	}
dbf9bfe615717d jack wang       2009-10-14  432  
a88d9db94c4c9f Vikram Auradkar 2019-11-14  433  	if (!sas_protocol_ata(task_proto)) {
e29c47fe8946cc Damien Le Moal  2022-02-20  434  		if (task->num_scatter) {
e29c47fe8946cc Damien Le Moal  2022-02-20  435  			n_elem = dma_map_sg(pm8001_ha->dev, task->scatter,
e29c47fe8946cc Damien Le Moal  2022-02-20  436  					    task->num_scatter, task->data_dir);
dbf9bfe615717d jack wang       2009-10-14  437  			if (!n_elem) {
dbf9bfe615717d jack wang       2009-10-14  438  				rc = -ENOMEM;
99df0edb5a9849 Damien Le Moal  2022-02-20  439  				goto err_out_ccb;
dbf9bfe615717d jack wang       2009-10-14  440  			}
dbf9bfe615717d jack wang       2009-10-14  441  		}
dbf9bfe615717d jack wang       2009-10-14  442  	} else {
e29c47fe8946cc Damien Le Moal  2022-02-20  443  		n_elem = task->num_scatter;
dbf9bfe615717d jack wang       2009-10-14  444  	}
dbf9bfe615717d jack wang       2009-10-14  445  
e29c47fe8946cc Damien Le Moal  2022-02-20  446  	task->lldd_task = ccb;
dbf9bfe615717d jack wang       2009-10-14  447  	ccb->n_elem = n_elem;
99df0edb5a9849 Damien Le Moal  2022-02-20  448  
e29c47fe8946cc Damien Le Moal  2022-02-20  449  	atomic_inc(&pm8001_dev->running_req);
e29c47fe8946cc Damien Le Moal  2022-02-20  450  
a88d9db94c4c9f Vikram Auradkar 2019-11-14  451  	switch (task_proto) {
dbf9bfe615717d jack wang       2009-10-14  452  	case SAS_PROTOCOL_SMP:
dbf9bfe615717d jack wang       2009-10-14  453  		rc = pm8001_task_prep_smp(pm8001_ha, ccb);
dbf9bfe615717d jack wang       2009-10-14  454  		break;
dbf9bfe615717d jack wang       2009-10-14  455  	case SAS_PROTOCOL_SSP:
dbf9bfe615717d jack wang       2009-10-14  456  		if (is_tmf)
e29c47fe8946cc Damien Le Moal  2022-02-20  457  			rc = pm8001_task_prep_ssp_tm(pm8001_ha, ccb, tmf);
dbf9bfe615717d jack wang       2009-10-14  458  		else
dbf9bfe615717d jack wang       2009-10-14  459  			rc = pm8001_task_prep_ssp(pm8001_ha, ccb);
dbf9bfe615717d jack wang       2009-10-14  460  		break;
dbf9bfe615717d jack wang       2009-10-14  461  	case SAS_PROTOCOL_SATA:
dbf9bfe615717d jack wang       2009-10-14  462  	case SAS_PROTOCOL_STP:
dbf9bfe615717d jack wang       2009-10-14  463  		rc = pm8001_task_prep_ata(pm8001_ha, ccb);
dbf9bfe615717d jack wang       2009-10-14  464  		break;
dbf9bfe615717d jack wang       2009-10-14  465  	default:
dbf9bfe615717d jack wang       2009-10-14  466  		dev_printk(KERN_ERR, pm8001_ha->dev,
a88d9db94c4c9f Vikram Auradkar 2019-11-14  467  			   "unknown sas_task proto: 0x%x\n", task_proto);
dbf9bfe615717d jack wang       2009-10-14  468  		rc = -EINVAL;
dbf9bfe615717d jack wang       2009-10-14  469  		break;
dbf9bfe615717d jack wang       2009-10-14  470  	}
dbf9bfe615717d jack wang       2009-10-14  471  
dbf9bfe615717d jack wang       2009-10-14  472  	if (rc) {
4a2efd4b89fcaa Viswas G        2020-11-02  473  		atomic_dec(&pm8001_dev->running_req);
e29c47fe8946cc Damien Le Moal  2022-02-20  474  		if (!sas_protocol_ata(task_proto) && n_elem)
e29c47fe8946cc Damien Le Moal  2022-02-20  475  			dma_unmap_sg(pm8001_ha->dev, task->scatter,
e29c47fe8946cc Damien Le Moal  2022-02-20  476  				     task->num_scatter, task->data_dir);
99df0edb5a9849 Damien Le Moal  2022-02-20  477  err_out_ccb:
99df0edb5a9849 Damien Le Moal  2022-02-20  478  		pm8001_ccb_free(pm8001_ha, ccb);
e29c47fe8946cc Damien Le Moal  2022-02-20  479  
dbf9bfe615717d jack wang       2009-10-14  480  err_out:
e29c47fe8946cc Damien Le Moal  2022-02-20  481  		pm8001_dbg(pm8001_ha, IO, "pm8001_task_exec failed[%d]!\n", rc);
e29c47fe8946cc Damien Le Moal  2022-02-20  482  	}
e29c47fe8946cc Damien Le Moal  2022-02-20  483  
dbf9bfe615717d jack wang       2009-10-14  484  	spin_unlock_irqrestore(&pm8001_ha->lock, flags);
e29c47fe8946cc Damien Le Moal  2022-02-20  485  
dbf9bfe615717d jack wang       2009-10-14  486  	return rc;
dbf9bfe615717d jack wang       2009-10-14  487  }
dbf9bfe615717d jack wang       2009-10-14  488  

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

             reply	other threads:[~2022-04-21  6:32 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-21  6:32 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-09-10 20:38 drivers/scsi/pm8001/pm8001_sas.c:381:24: warning: Value stored to 'pm8001_dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] kernel test robot

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=202204202002.zsf44OL8-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /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.