]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
target/configfs: Kill se_lun->lun_link_magic
authorNicholas Bellinger <nab@linux-iscsi.org>
Thu, 1 Jun 2017 10:11:18 +0000 (03:11 -0700)
committerNicholas Bellinger <nab@linux-iscsi.org>
Fri, 9 Jun 2017 06:26:38 +0000 (23:26 -0700)
Instead of using a hardcoded magic value in se_lun when verifying
a target config_item symlink source during target_fabric_mappedlun_link(),
go ahead and use target_fabric_port_item_ops directly instead.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Cc: Mike Christie <mchristi@redhat.com>
Cc: Hannes Reinecke <hare@suse.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_fabric_configfs.c
drivers/target/target_core_tpg.c
include/target/target_core_base.h

index 2cbaecd1669d8f58655000aa5bebdd955ce4b293..e9e917cc6441913326316e75cc42dab99cf353c3 100644 (file)
@@ -65,6 +65,8 @@ static void target_fabric_setup_##_name##_cit(struct target_fabric_configfs *tf)
        pr_debug("Setup generic %s\n", __stringify(_name));             \
 }
 
+static struct configfs_item_operations target_fabric_port_item_ops;
+
 /* Start of tfc_tpg_mappedlun_cit */
 
 static int target_fabric_mappedlun_link(
@@ -72,19 +74,20 @@ static int target_fabric_mappedlun_link(
        struct config_item *lun_ci)
 {
        struct se_dev_entry *deve;
-       struct se_lun *lun = container_of(to_config_group(lun_ci),
-                       struct se_lun, lun_group);
+       struct se_lun *lun;
        struct se_lun_acl *lacl = container_of(to_config_group(lun_acl_ci),
                        struct se_lun_acl, se_lun_group);
        struct se_portal_group *se_tpg;
        struct config_item *nacl_ci, *tpg_ci, *tpg_ci_s, *wwn_ci, *wwn_ci_s;
        bool lun_access_ro;
 
-       if (lun->lun_link_magic != SE_LUN_LINK_MAGIC) {
-               pr_err("Bad lun->lun_link_magic, not a valid lun_ci pointer:"
-                       " %p to struct lun: %p\n", lun_ci, lun);
+       if (!lun_ci->ci_type ||
+           lun_ci->ci_type->ct_item_ops != &target_fabric_port_item_ops) {
+               pr_err("Bad lun_ci, not a valid lun_ci pointer: %p\n", lun_ci);
                return -EFAULT;
        }
+       lun = container_of(to_config_group(lun_ci), struct se_lun, lun_group);
+
        /*
         * Ensure that the source port exists
         */
index 310d9e55c6eb76994879ebf0d23b1c4bbee0e8db..36913734c6bc58ed326ac793dc19d3d265ec878d 100644 (file)
@@ -576,7 +576,6 @@ struct se_lun *core_tpg_alloc_lun(
                return ERR_PTR(-ENOMEM);
        }
        lun->unpacked_lun = unpacked_lun;
-       lun->lun_link_magic = SE_LUN_LINK_MAGIC;
        atomic_set(&lun->lun_acl_count, 0);
        init_completion(&lun->lun_ref_comp);
        init_completion(&lun->lun_shutdown_comp);
index c3c14d053122d60e63673ee4e338d3fd2a045183..47d9f381209fccb703361c0edcaec59183cdf625 100644 (file)
@@ -701,8 +701,6 @@ struct scsi_port_stats {
 
 struct se_lun {
        u64                     unpacked_lun;
-#define SE_LUN_LINK_MAGIC                      0xffff7771
-       u32                     lun_link_magic;
        bool                    lun_shutdown;
        bool                    lun_access_ro;
        u32                     lun_index;