target: correctly handle match_int errors in FILEIO + PSCSI
This patch correctly handles match_int() errors in FILEIO + PSCSI backend parameter parsing, which can potentially fail due to a memory allocation failure or invalid argument. Found by coverity. Signed-off-by: Joern Engel <joern@logfs.org> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
68edbce4fb
commit
ce31c1b0dc
2 changed files with 15 additions and 5 deletions
|
@ -762,7 +762,9 @@ static ssize_t fd_set_configfs_dev_params(struct se_device *dev,
|
|||
fd_dev->fbd_flags |= FBDF_HAS_SIZE;
|
||||
break;
|
||||
case Opt_fd_buffered_io:
|
||||
match_int(args, &arg);
|
||||
ret = match_int(args, &arg);
|
||||
if (ret)
|
||||
goto out;
|
||||
if (arg != 1) {
|
||||
pr_err("bogus fd_buffered_io=%d value\n", arg);
|
||||
ret = -EINVAL;
|
||||
|
|
|
@ -749,14 +749,18 @@ static ssize_t pscsi_set_configfs_dev_params(struct se_device *dev,
|
|||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
match_int(args, &arg);
|
||||
ret = match_int(args, &arg);
|
||||
if (ret)
|
||||
goto out;
|
||||
pdv->pdv_host_id = arg;
|
||||
pr_debug("PSCSI[%d]: Referencing SCSI Host ID:"
|
||||
" %d\n", phv->phv_host_id, pdv->pdv_host_id);
|
||||
pdv->pdv_flags |= PDF_HAS_VIRT_HOST_ID;
|
||||
break;
|
||||
case Opt_scsi_channel_id:
|
||||
match_int(args, &arg);
|
||||
ret = match_int(args, &arg);
|
||||
if (ret)
|
||||
goto out;
|
||||
pdv->pdv_channel_id = arg;
|
||||
pr_debug("PSCSI[%d]: Referencing SCSI Channel"
|
||||
" ID: %d\n", phv->phv_host_id,
|
||||
|
@ -764,7 +768,9 @@ static ssize_t pscsi_set_configfs_dev_params(struct se_device *dev,
|
|||
pdv->pdv_flags |= PDF_HAS_CHANNEL_ID;
|
||||
break;
|
||||
case Opt_scsi_target_id:
|
||||
match_int(args, &arg);
|
||||
ret = match_int(args, &arg);
|
||||
if (ret)
|
||||
goto out;
|
||||
pdv->pdv_target_id = arg;
|
||||
pr_debug("PSCSI[%d]: Referencing SCSI Target"
|
||||
" ID: %d\n", phv->phv_host_id,
|
||||
|
@ -772,7 +778,9 @@ static ssize_t pscsi_set_configfs_dev_params(struct se_device *dev,
|
|||
pdv->pdv_flags |= PDF_HAS_TARGET_ID;
|
||||
break;
|
||||
case Opt_scsi_lun_id:
|
||||
match_int(args, &arg);
|
||||
ret = match_int(args, &arg);
|
||||
if (ret)
|
||||
goto out;
|
||||
pdv->pdv_lun_id = arg;
|
||||
pr_debug("PSCSI[%d]: Referencing SCSI LUN ID:"
|
||||
" %d\n", phv->phv_host_id, pdv->pdv_lun_id);
|
||||
|
|
Loading…
Reference in a new issue