From: Dan Carpenter <dan.carpenter@oracle.com>
To: target-devel@vger.kernel.org
Subject: [bug report] scsi: tcmu: avoid cmd/qfull timers updated whenever a new cmd comes
Date: Tue, 22 Jan 2019 09:27:02 +0000 [thread overview]
Message-ID: <20190122092702.GA7268@kadam> (raw)
Hello Xiubo Li,
The patch a94a2572b977: "scsi: tcmu: avoid cmd/qfull timers updated
whenever a new cmd comes" from Nov 23, 2018, leads to the following
static checker warning:
drivers/target/target_core_user.c:1325 tcmu_check_expired_cmd()
warn: 'cmd' was already freed.
drivers/target/target_core_user.c
1290 static int tcmu_check_expired_cmd(int id, void *p, void *data)
1291 {
1292 struct tcmu_cmd *cmd = p;
1293 struct tcmu_dev *udev = cmd->tcmu_dev;
1294 u8 scsi_status;
1295 struct se_cmd *se_cmd;
1296 bool is_running;
1297
1298 if (test_bit(TCMU_CMD_BIT_EXPIRED, &cmd->flags))
1299 return 0;
1300
1301 if (!time_after(jiffies, cmd->deadline))
1302 return 0;
1303
1304 is_running = test_bit(TCMU_CMD_BIT_INFLIGHT, &cmd->flags);
1305 se_cmd = cmd->se_cmd;
1306
1307 if (is_running) {
1308 /*
1309 * If cmd_time_out is disabled but qfull is set deadline
1310 * will only reflect the qfull timeout. Ignore it.
1311 */
1312 if (!udev->cmd_time_out)
1313 return 0;
1314
1315 set_bit(TCMU_CMD_BIT_EXPIRED, &cmd->flags);
1316 /*
1317 * target_complete_cmd will translate this to LUN COMM FAILURE
1318 */
1319 scsi_status = SAM_STAT_CHECK_CONDITION;
1320 } else {
1321 idr_remove(&udev->commands, id);
1322 tcmu_free_cmd(cmd);
^^^^^^^^^^^^^^^^^^
1323 scsi_status = SAM_STAT_TASK_SET_FULL;
1324 }
--> 1325 list_del_init(&cmd->queue_entry);
^^^^^^^^^^^^^^^^^
1326
1327 pr_debug("Timing out cmd %u on dev %s that is %s.\n",
1328 id, udev->name, is_running ? "inflight" : "queued");
1329
1330 target_complete_cmd(se_cmd, scsi_status);
1331 return 0;
1332 }
regards,
dan carpenter
next reply other threads:[~2019-01-22 9:27 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-22 9:27 Dan Carpenter [this message]
2019-01-22 9:43 ` [bug report] scsi: tcmu: avoid cmd/qfull timers updated whenever a new cmd comes Xiubo Li
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=20190122092702.GA7268@kadam \
--to=dan.carpenter@oracle.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.