CC: [email protected] CC: [email protected] BCC: [email protected] CC: [email protected] TO: Damien Le Moal <[email protected]> CC: "Martin K. Petersen" <[email protected]> CC: John Garry <[email protected]> CC: Jack Wang <[email protected]>
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/[email protected]/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 <[email protected]> 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 _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
