mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
target: Fix se_tpg_tfo->tf_subsys regression + remove tf_subsystem
There is just one configfs subsystem in the target code, so we might as
well add two helpers to reference / unreference it from the core code
instead of passing pointers to it around.
This fixes a regression introduced for v4.1-rc1 with commit 9ac8928e6
,
where configfs_depend_item() callers using se_tpg_tfo->tf_subsys would
fail, because the assignment from the original target_core_subsystem[]
is no longer happening at target_register_template() time.
(Fix target_core_exit_configfs pointer dereference - Sagi)
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reported-by: Himanshu Madhani <himanshu.madhani@qlogic.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
ee7619f2eb
commit
d588cf8f61
8 changed files with 34 additions and 64 deletions
|
@ -58,7 +58,6 @@ static int target_xcopy_locate_se_dev_e4(struct se_cmd *se_cmd, struct xcopy_op
|
|||
bool src)
|
||||
{
|
||||
struct se_device *se_dev;
|
||||
struct configfs_subsystem *subsys = target_core_subsystem[0];
|
||||
unsigned char tmp_dev_wwn[XCOPY_NAA_IEEE_REGEX_LEN], *dev_wwn;
|
||||
int rc;
|
||||
|
||||
|
@ -90,8 +89,7 @@ static int target_xcopy_locate_se_dev_e4(struct se_cmd *se_cmd, struct xcopy_op
|
|||
" se_dev\n", xop->src_dev);
|
||||
}
|
||||
|
||||
rc = configfs_depend_item(subsys,
|
||||
&se_dev->dev_group.cg_item);
|
||||
rc = target_depend_item(&se_dev->dev_group.cg_item);
|
||||
if (rc != 0) {
|
||||
pr_err("configfs_depend_item attempt failed:"
|
||||
" %d for se_dev: %p\n", rc, se_dev);
|
||||
|
@ -99,8 +97,8 @@ static int target_xcopy_locate_se_dev_e4(struct se_cmd *se_cmd, struct xcopy_op
|
|||
return rc;
|
||||
}
|
||||
|
||||
pr_debug("Called configfs_depend_item for subsys: %p se_dev: %p"
|
||||
" se_dev->se_dev_group: %p\n", subsys, se_dev,
|
||||
pr_debug("Called configfs_depend_item for se_dev: %p"
|
||||
" se_dev->se_dev_group: %p\n", se_dev,
|
||||
&se_dev->dev_group);
|
||||
|
||||
mutex_unlock(&g_device_mutex);
|
||||
|
@ -373,7 +371,6 @@ static int xcopy_pt_get_cmd_state(struct se_cmd *se_cmd)
|
|||
|
||||
static void xcopy_pt_undepend_remotedev(struct xcopy_op *xop)
|
||||
{
|
||||
struct configfs_subsystem *subsys = target_core_subsystem[0];
|
||||
struct se_device *remote_dev;
|
||||
|
||||
if (xop->op_origin == XCOL_SOURCE_RECV_OP)
|
||||
|
@ -381,11 +378,11 @@ static void xcopy_pt_undepend_remotedev(struct xcopy_op *xop)
|
|||
else
|
||||
remote_dev = xop->src_dev;
|
||||
|
||||
pr_debug("Calling configfs_undepend_item for subsys: %p"
|
||||
pr_debug("Calling configfs_undepend_item for"
|
||||
" remote_dev: %p remote_dev->dev_group: %p\n",
|
||||
subsys, remote_dev, &remote_dev->dev_group.cg_item);
|
||||
remote_dev, &remote_dev->dev_group.cg_item);
|
||||
|
||||
configfs_undepend_item(subsys, &remote_dev->dev_group.cg_item);
|
||||
target_undepend_item(&remote_dev->dev_group.cg_item);
|
||||
}
|
||||
|
||||
static void xcopy_pt_release_cmd(struct se_cmd *se_cmd)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue