diff mbox

scsi: Don't check uninitialized local variable

Message ID 30369c9b-974f-67d4-322f-00d30a25519a@kamp.de (mailing list archive)
State New, archived
Headers show

Commit Message

Peter Lieven Jan. 8, 2018, 1:20 p.m. UTC
Am 08.01.2018 um 04:09 schrieb Fam Zheng:
> After the out label there is a check on iTask.task but it is not
> initialized yet.
>
> Fixes: e38bc23454ef763deb4405ebdee6a1081aa00bc8
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>   block/iscsi.c | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/block/iscsi.c b/block/iscsi.c
> index 5c0a9e55b6..1cb8cc93c5 100644
> --- a/block/iscsi.c
> +++ b/block/iscsi.c
> @@ -659,8 +659,7 @@ static int64_t coroutine_fn iscsi_co_get_block_status(BlockDriverState *bs,
>       int64_t ret;
>   
>       if (!is_sector_request_lun_aligned(sector_num, nb_sectors, iscsilun)) {
> -        ret = -EINVAL;
> -        goto out;
> +        return -EINVAL;
>       }
>   
>       /* default to all sectors allocated */

If lbpme is 0 we run into the same error. And this is even more likely than an unaligned request.

I think the right patch is to move the init of iTask up again where it was:




Peter

Comments

Eric Blake Jan. 8, 2018, 3:05 p.m. UTC | #1
On 01/08/2018 07:20 AM, Peter Lieven wrote:
> Am 08.01.2018 um 04:09 schrieb Fam Zheng:
>> After the out label there is a check on iTask.task but it is not
>> initialized yet.
>>
>> Fixes: e38bc23454ef763deb4405ebdee6a1081aa00bc8
>> Signed-off-by: Fam Zheng <famz@redhat.com>
>> ---
>>   block/iscsi.c | 3 +--
>>   1 file changed, 1 insertion(+), 2 deletions(-)
>>

> If lbpme is 0 we run into the same error. And this is even more likely
> than an unaligned request.

In fact, my byte-based series adds an assertion that unaligned requests
aren't possible.

> 
> I think the right patch is to move the init of iTask up again where it was:

I had to rebase v7 of my byte-based series on top of the late iTask
initialization; moving it back to early initialization makes sense.

> 
> 
> diff --git a/block/iscsi.c b/block/iscsi.c
> index 5c0a9e5..6a1c537 100644
> --- a/block/iscsi.c
> +++ b/block/iscsi.c
> @@ -658,6 +658,8 @@ static int64_t coroutine_fn
> iscsi_co_get_block_status(BlockDriverState *bs,
>      uint64_t lba;
>      int64_t ret;
> 
> +    iscsi_co_init_iscsitask(iscsilun, &iTask);
> +
>      if (!is_sector_request_lun_aligned(sector_num, nb_sectors,
> iscsilun)) {
>          ret = -EINVAL;
>          goto out;
> @@ -675,7 +677,6 @@ static int64_t coroutine_fn
> iscsi_co_get_block_status(BlockDriverState *bs,
> 
>      lba = sector_qemu2lun(sector_num, iscsilun);
> 
> -    iscsi_co_init_iscsitask(iscsilun, &iTask);
>      qemu_mutex_lock(&iscsilun->mutex);
>  retry:
>      if (iscsi_get_lba_status_task(iscsilun->iscsi, iscsilun->lun,

If you resubmit this as a formal patch, you can add:
Reviewed-by: Eric Blake <eblake@redhat.com>
diff mbox

Patch

diff --git a/block/iscsi.c b/block/iscsi.c
index 5c0a9e5..6a1c537 100644
--- a/block/iscsi.c
+++ b/block/iscsi.c
@@ -658,6 +658,8 @@  static int64_t coroutine_fn iscsi_co_get_block_status(BlockDriverState *bs,
      uint64_t lba;
      int64_t ret;

+    iscsi_co_init_iscsitask(iscsilun, &iTask);
+
      if (!is_sector_request_lun_aligned(sector_num, nb_sectors, iscsilun)) {
          ret = -EINVAL;
          goto out;
@@ -675,7 +677,6 @@  static int64_t coroutine_fn iscsi_co_get_block_status(BlockDriverState *bs,

      lba = sector_qemu2lun(sector_num, iscsilun);

-    iscsi_co_init_iscsitask(iscsilun, &iTask);
      qemu_mutex_lock(&iscsilun->mutex);
  retry:
      if (iscsi_get_lba_status_task(iscsilun->iscsi, iscsilun->lun,