From: Chen Gang <gang.chen@asianux.com>
To: bootc@bootc.net, nab@linux-iscsi.org
Cc: linux-scsi@vger.kernel.org, target-devel@vger.kernel.org,
linux1394-devel@lists.sourceforge.net
Subject: [Suggestion] drivers/target/sbp/ : set tport->tpg to NULL when clean up for failure.
Date: Thu, 06 Dec 2012 12:24:54 +0800 [thread overview]
Message-ID: <50C01E16.5080303@asianux.com> (raw)
Hello Maintainers:
in drivers/target/sbp/sbp_target.c:
tport->tpg must be NULL before process it in function sbp_make_tpg. (line 2185..2188)
tport->tpg assigned a ptr (line 2198)
if processing failed, not set tport->tpg = NULL (line 2208..2212, 2217..2221)
we have done: when free tport->tpg, set it to NULL (line 2233..2234)
is it valuable to let tport->tpg = NULL, when clean up for failure ?
Regards
gchen.
2168 static struct se_portal_group *sbp_make_tpg(
2169 struct se_wwn *wwn,
2170 struct config_group *group,
2171 const char *name)
2172 {
2173 struct sbp_tport *tport =
2174 container_of(wwn, struct sbp_tport, tport_wwn);
2175
2176 struct sbp_tpg *tpg;
2177 unsigned long tpgt;
2178 int ret;
2179
2180 if (strstr(name, "tpgt_") != name)
2181 return ERR_PTR(-EINVAL);
2182 if (kstrtoul(name + 5, 10, &tpgt) || tpgt > UINT_MAX)
2183 return ERR_PTR(-EINVAL);
2184
2185 if (tport->tpg) {
2186 pr_err("Only one TPG per Unit is possible.\n");
2187 return ERR_PTR(-EBUSY);
2188 }
2189
2190 tpg = kzalloc(sizeof(*tpg), GFP_KERNEL);
2191 if (!tpg) {
2192 pr_err("Unable to allocate struct sbp_tpg\n");
2193 return ERR_PTR(-ENOMEM);
2194 }
2195
2196 tpg->tport = tport;
2197 tpg->tport_tpgt = tpgt;
2198 tport->tpg = tpg;
2199
2200 /* default attribute values */
2201 tport->enable = 0;
2202 tport->directory_id = -1;
2203 tport->mgt_orb_timeout = 15;
2204 tport->max_reconnect_timeout = 5;
2205 tport->max_logins_per_lun = 1;
2206
2207 tport->mgt_agt = sbp_management_agent_register(tport);
2208 if (IS_ERR(tport->mgt_agt)) {
2209 ret = PTR_ERR(tport->mgt_agt);
2210 kfree(tpg);
2211 return ERR_PTR(ret);
2212 }
2213
2214 ret = core_tpg_register(&sbp_fabric_configfs->tf_ops, wwn,
2215 &tpg->se_tpg, (void *)tpg,
2216 TRANSPORT_TPG_TYPE_NORMAL);
2217 if (ret < 0) {
2218 sbp_management_agent_unregister(tport->mgt_agt);
2219 kfree(tpg);
2220 return ERR_PTR(ret);
2221 }
2222
2223 return &tpg->se_tpg;
2224 }
2225
2226 static void sbp_drop_tpg(struct se_portal_group *se_tpg)
2227 {
2228 struct sbp_tpg *tpg = container_of(se_tpg, struct sbp_tpg, se_tpg);
2229 struct sbp_tport *tport = tpg->tport;
2230
2231 core_tpg_deregister(se_tpg);
2232 sbp_management_agent_unregister(tport->mgt_agt);
2233 tport->tpg = NULL;
2234 kfree(tpg);
2235 }
2236
next reply other threads:[~2012-12-06 4:24 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-06 4:24 Chen Gang [this message]
2012-12-06 8:34 ` [Suggestion] drivers/target/sbp/ : set tport->tpg to NULL when clean up for failure Chris Boot
2012-12-06 8:40 ` Chen Gang
2012-12-10 2:39 ` Chen Gang
2012-12-10 8:02 ` Chris Boot
2012-12-10 8:07 ` Chen Gang
2012-12-14 2:59 ` Chen Gang
2012-12-14 6:57 ` Stefan Richter
2012-12-14 7:22 ` Chen Gang
2012-12-15 0:33 ` Nicholas A. Bellinger
2012-12-15 6:26 ` Chen Gang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50C01E16.5080303@asianux.com \
--to=gang.chen@asianux.com \
--cc=bootc@bootc.net \
--cc=linux-scsi@vger.kernel.org \
--cc=linux1394-devel@lists.sourceforge.net \
--cc=nab@linux-iscsi.org \
--cc=target-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox