summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/megaraid/megaraid_sas_base.c2
-rw-r--r--drivers/scsi/ufs/ufshcd-pltfrm.c10
-rw-r--r--drivers/scsi/ufs/ufshpb.c7
-rw-r--r--drivers/scsi/vmw_pvscsi.c1
-rw-r--r--drivers/target/target_core_configfs.c47
5 files changed, 33 insertions, 34 deletions
diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
index db6793608447..c95360a3c186 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -4473,8 +4473,6 @@ int megasas_alloc_cmds(struct megasas_instance *instance)
return -ENOMEM;
}
- memset(instance->cmd_list, 0, sizeof(struct megasas_cmd *) *max_cmd);
-
for (i = 0; i < max_cmd; i++) {
instance->cmd_list[i] = kmalloc(sizeof(struct megasas_cmd),
GFP_KERNEL);
diff --git a/drivers/scsi/ufs/ufshcd-pltfrm.c b/drivers/scsi/ufs/ufshcd-pltfrm.c
index 87975d1a21c8..cca4b2181a81 100644
--- a/drivers/scsi/ufs/ufshcd-pltfrm.c
+++ b/drivers/scsi/ufs/ufshcd-pltfrm.c
@@ -341,7 +341,7 @@ int ufshcd_pltfrm_init(struct platform_device *pdev,
err = ufshcd_alloc_host(dev, &hba);
if (err) {
- dev_err(&pdev->dev, "Allocation failed\n");
+ dev_err(dev, "Allocation failed\n");
goto out;
}
@@ -349,13 +349,13 @@ int ufshcd_pltfrm_init(struct platform_device *pdev,
err = ufshcd_parse_clock_info(hba);
if (err) {
- dev_err(&pdev->dev, "%s: clock parse failed %d\n",
+ dev_err(dev, "%s: clock parse failed %d\n",
__func__, err);
goto dealloc_host;
}
err = ufshcd_parse_regulator_info(hba);
if (err) {
- dev_err(&pdev->dev, "%s: regulator init failed %d\n",
+ dev_err(dev, "%s: regulator init failed %d\n",
__func__, err);
goto dealloc_host;
}
@@ -368,8 +368,8 @@ int ufshcd_pltfrm_init(struct platform_device *pdev,
goto dealloc_host;
}
- pm_runtime_set_active(&pdev->dev);
- pm_runtime_enable(&pdev->dev);
+ pm_runtime_set_active(dev);
+ pm_runtime_enable(dev);
return 0;
diff --git a/drivers/scsi/ufs/ufshpb.c b/drivers/scsi/ufs/ufshpb.c
index 81099b68bbfb..fd31e516e491 100644
--- a/drivers/scsi/ufs/ufshpb.c
+++ b/drivers/scsi/ufs/ufshpb.c
@@ -930,11 +930,6 @@ static int ufshpb_issue_umap_single_req(struct ufshpb_lu *hpb,
return ufshpb_issue_umap_req(hpb, rgn, true);
}
-static int ufshpb_issue_umap_all_req(struct ufshpb_lu *hpb)
-{
- return ufshpb_issue_umap_req(hpb, NULL, false);
-}
-
static void __ufshpb_evict_region(struct ufshpb_lu *hpb,
struct ufshpb_region *rgn)
{
@@ -2455,8 +2450,6 @@ static void ufshpb_hpb_lu_prepared(struct ufs_hba *hba)
ufshpb_set_state(hpb, HPB_PRESENT);
if ((hpb->lu_pinned_end - hpb->lu_pinned_start) > 0)
queue_work(ufshpb_wq, &hpb->map_work);
- if (!hpb->is_hcm)
- ufshpb_issue_umap_all_req(hpb);
} else {
dev_err(hba->dev, "destroy HPB lu %d\n", hpb->lun);
ufshpb_destroy_lu(hba, sdev);
diff --git a/drivers/scsi/vmw_pvscsi.c b/drivers/scsi/vmw_pvscsi.c
index 1f037b8ab904..f88ecdb93a8a 100644
--- a/drivers/scsi/vmw_pvscsi.c
+++ b/drivers/scsi/vmw_pvscsi.c
@@ -1324,7 +1324,6 @@ static u32 pvscsi_get_max_targets(struct pvscsi_adapter *adapter)
* indicate success.
*/
header = config_page;
- memset(header, 0, sizeof *header);
header->hostStatus = BTSTAT_INVPARAM;
header->scsiStatus = SDSTAT_CHECK;
diff --git a/drivers/target/target_core_configfs.c b/drivers/target/target_core_configfs.c
index 4c86697fe4ec..bbcbbfa72b07 100644
--- a/drivers/target/target_core_configfs.c
+++ b/drivers/target/target_core_configfs.c
@@ -72,6 +72,9 @@ static struct config_group target_core_hbagroup;
static struct config_group alua_group;
static struct config_group alua_lu_gps_group;
+static unsigned int target_devices;
+static DEFINE_MUTEX(target_devices_lock);
+
static inline struct se_hba *
item_to_hba(struct config_item *item)
{
@@ -105,51 +108,48 @@ static ssize_t target_core_item_dbroot_store(struct config_item *item,
{
ssize_t read_bytes;
struct file *fp;
+ ssize_t r = -EINVAL;
- mutex_lock(&g_tf_lock);
- if (!list_empty(&g_tf_list)) {
- mutex_unlock(&g_tf_lock);
- pr_err("db_root: cannot be changed: target drivers registered");
- return -EINVAL;
+ mutex_lock(&target_devices_lock);
+ if (target_devices) {
+ pr_err("db_root: cannot be changed because it's in use\n");
+ goto unlock;
}
if (count > (DB_ROOT_LEN - 1)) {
- mutex_unlock(&g_tf_lock);
pr_err("db_root: count %d exceeds DB_ROOT_LEN-1: %u\n",
(int)count, DB_ROOT_LEN - 1);
- return -EINVAL;
+ goto unlock;
}
read_bytes = snprintf(db_root_stage, DB_ROOT_LEN, "%s", page);
- if (!read_bytes) {
- mutex_unlock(&g_tf_lock);
- return -EINVAL;
- }
+ if (!read_bytes)
+ goto unlock;
+
if (db_root_stage[read_bytes - 1] == '\n')
db_root_stage[read_bytes - 1] = '\0';
/* validate new db root before accepting it */
fp = filp_open(db_root_stage, O_RDONLY, 0);
if (IS_ERR(fp)) {
- mutex_unlock(&g_tf_lock);
pr_err("db_root: cannot open: %s\n", db_root_stage);
- return -EINVAL;
+ goto unlock;
}
if (!S_ISDIR(file_inode(fp)->i_mode)) {
filp_close(fp, NULL);
- mutex_unlock(&g_tf_lock);
pr_err("db_root: not a directory: %s\n", db_root_stage);
- return -EINVAL;
+ goto unlock;
}
filp_close(fp, NULL);
strncpy(db_root, db_root_stage, read_bytes);
-
- mutex_unlock(&g_tf_lock);
-
pr_debug("Target_Core_ConfigFS: db_root set to %s\n", db_root);
- return read_bytes;
+ r = read_bytes;
+
+unlock:
+ mutex_unlock(&target_devices_lock);
+ return r;
}
CONFIGFS_ATTR(target_core_item_, dbroot);
@@ -3316,6 +3316,10 @@ static struct config_group *target_core_make_subdev(
*/
target_stat_setup_dev_default_groups(dev);
+ mutex_lock(&target_devices_lock);
+ target_devices++;
+ mutex_unlock(&target_devices_lock);
+
mutex_unlock(&hba->hba_access_mutex);
return &dev->dev_group;
@@ -3354,6 +3358,11 @@ static void target_core_drop_subdev(
* se_dev is released from target_core_dev_item_ops->release()
*/
config_item_put(item);
+
+ mutex_lock(&target_devices_lock);
+ target_devices--;
+ mutex_unlock(&target_devices_lock);
+
mutex_unlock(&hba->hba_access_mutex);
}