All of lore.kernel.org
 help / color / mirror / Atom feed
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

             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.