scst_user: Set replies_done to zero if replies_cnt == 0

This patch prevents that fileio_tgt becomese unresponsive.

Reported-by: James McCarthy <mccarthy1029@gmail.com>


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@8861 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Bart Van Assche
2020-04-11 17:11:33 +00:00
parent 32c2db1acf
commit 40f36a6873

View File

@@ -2414,12 +2414,12 @@ static int dev_user_reply_get_multi(struct file *file,
replies_done++;
}
get_cmds:
TRACE_DBG("Returning %d replies_done", replies_done);
res = put_user(replies_done, &gm->replies_done);
if (unlikely(res < 0))
goto out;
get_cmds:
for (i = 0; i < cmds_cnt; i++) {
res = dev_user_get_cmd_to_user(dev, &gm->cmds[i], i == 0);
if (res != 0) {
@@ -2442,8 +2442,12 @@ out:
out_part_replies_done:
TRACE_DBG("Partial returning %d replies_done", replies_done);
put_user(replies_done, &gm->replies_done);
rc = put_user(replies_done, &gm->replies_done);
if (unlikely(rc < 0))
res = rc;
rc = put_user(0, &gm->cmds_cnt);
if (unlikely(rc < 0))
res = rc;
goto out;
}