Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi

Pull SCSI fixes from James Bottomley:
"Four small fixes, all in drivers. They're all one or two lines except
for the ufs one, but that's a simple revert of a previous feature"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
scsi: iscsi_tcp: Check that sock is valid before iscsi_set_param()
scsi: qla2xxx: Fix memory leak in qla2x00_probe_one()
scsi: mpi3mr: Handle soft reset in progress fault code (0xF002)
scsi: Revert "scsi: ufs: core: Initialize devfreq synchronously"

+19 -35
+1 -2
drivers/scsi/iscsi_tcp.c
··· 771 771 iscsi_set_param(cls_conn, param, buf, buflen); 772 772 break; 773 773 case ISCSI_PARAM_DATADGST_EN: 774 - iscsi_set_param(cls_conn, param, buf, buflen); 775 - 776 774 mutex_lock(&tcp_sw_conn->sock_lock); 777 775 if (!tcp_sw_conn->sock) { 778 776 mutex_unlock(&tcp_sw_conn->sock_lock); 779 777 return -ENOTCONN; 780 778 } 779 + iscsi_set_param(cls_conn, param, buf, buflen); 781 780 tcp_sw_conn->sendpage = conn->datadgst_en ? 782 781 sock_no_sendpage : tcp_sw_conn->sock->ops->sendpage; 783 782 mutex_unlock(&tcp_sw_conn->sock_lock);
+1 -1
drivers/scsi/mpi3mr/mpi3mr_fw.c
··· 2526 2526 mrioc->unrecoverable = 1; 2527 2527 goto schedule_work; 2528 2528 case MPI3_SYSIF_FAULT_CODE_SOFT_RESET_IN_PROGRESS: 2529 - return; 2529 + goto schedule_work; 2530 2530 case MPI3_SYSIF_FAULT_CODE_CI_ACTIVATION_RESET: 2531 2531 reset_reason = MPI3MR_RESET_FROM_CIACTIV_FAULT; 2532 2532 break;
+1
drivers/scsi/qla2xxx/qla_os.c
··· 3617 3617 probe_failed: 3618 3618 qla_enode_stop(base_vha); 3619 3619 qla_edb_stop(base_vha); 3620 + vfree(base_vha->scan.l); 3620 3621 if (base_vha->gnl.l) { 3621 3622 dma_free_coherent(&ha->pdev->dev, base_vha->gnl.size, 3622 3623 base_vha->gnl.l, base_vha->gnl.ldma);
+16 -31
drivers/ufs/core/ufshcd.c
··· 1409 1409 struct ufs_clk_info *clki; 1410 1410 unsigned long irq_flags; 1411 1411 1412 - /* 1413 - * Skip devfreq if UFS initialization is not finished. 1414 - * Otherwise ufs could be in a inconsistent state. 1415 - */ 1416 - if (!smp_load_acquire(&hba->logical_unit_scan_finished)) 1417 - return 0; 1418 - 1419 1412 if (!ufshcd_is_clkscaling_supported(hba)) 1420 1413 return -EINVAL; 1421 1414 ··· 8392 8399 if (ret) 8393 8400 goto out; 8394 8401 8402 + /* Initialize devfreq after UFS device is detected */ 8403 + if (ufshcd_is_clkscaling_supported(hba)) { 8404 + memcpy(&hba->clk_scaling.saved_pwr_info.info, 8405 + &hba->pwr_info, 8406 + sizeof(struct ufs_pa_layer_attr)); 8407 + hba->clk_scaling.saved_pwr_info.is_valid = true; 8408 + hba->clk_scaling.is_allowed = true; 8409 + 8410 + ret = ufshcd_devfreq_init(hba); 8411 + if (ret) 8412 + goto out; 8413 + 8414 + hba->clk_scaling.is_enabled = true; 8415 + ufshcd_init_clk_scaling_sysfs(hba); 8416 + } 8417 + 8395 8418 ufs_bsg_probe(hba); 8396 8419 ufshpb_init(hba); 8397 8420 scsi_scan_host(hba->host); ··· 8679 8670 if (ret) { 8680 8671 pm_runtime_put_sync(hba->dev); 8681 8672 ufshcd_hba_exit(hba); 8682 - } else { 8683 - /* 8684 - * Make sure that when reader code sees UFS initialization has finished, 8685 - * all initialization steps have really been executed. 8686 - */ 8687 - smp_store_release(&hba->logical_unit_scan_finished, true); 8688 8673 } 8689 8674 } 8690 8675 ··· 10319 10316 */ 10320 10317 ufshcd_set_ufs_dev_active(hba); 10321 10318 10322 - /* Initialize devfreq */ 10323 - if (ufshcd_is_clkscaling_supported(hba)) { 10324 - memcpy(&hba->clk_scaling.saved_pwr_info.info, 10325 - &hba->pwr_info, 10326 - sizeof(struct ufs_pa_layer_attr)); 10327 - hba->clk_scaling.saved_pwr_info.is_valid = true; 10328 - hba->clk_scaling.is_allowed = true; 10329 - 10330 - err = ufshcd_devfreq_init(hba); 10331 - if (err) 10332 - goto rpm_put_sync; 10333 - 10334 - hba->clk_scaling.is_enabled = true; 10335 - ufshcd_init_clk_scaling_sysfs(hba); 10336 - } 10337 - 10338 10319 async_schedule(ufshcd_async_scan, hba); 10339 10320 ufs_sysfs_add_nodes(hba->dev); 10340 10321 10341 10322 device_enable_async_suspend(dev); 10342 10323 return 0; 10343 10324 10344 - rpm_put_sync: 10345 - pm_runtime_put_sync(dev); 10346 10325 free_tmf_queue: 10347 10326 blk_mq_destroy_queue(hba->tmf_queue); 10348 10327 blk_put_queue(hba->tmf_queue);
-1
include/ufs/ufshcd.h
··· 979 979 struct completion *uic_async_done; 980 980 981 981 enum ufshcd_state ufshcd_state; 982 - bool logical_unit_scan_finished; 983 982 u32 eh_flags; 984 983 u32 intr_mask; 985 984 u16 ee_ctrl_mask;