diff mbox series

block/iscsi: Document why we use raw malloc()

Message ID 20230727150705.2664464-1-peter.maydell@linaro.org
State Superseded
Headers show
Series block/iscsi: Document why we use raw malloc() | expand

Commit Message

Peter Maydell July 27, 2023, 3:07 p.m. UTC
In block/iscsi.c we use a raw malloc() call, which is unusual
given the project standard is to use the glib memory allocation
functions. Document why we do so, to avoid it being converted
to g_malloc() by mistake.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
There aren't many uses of raw malloc() in the codebase
other than third-party library sourcecode. Mostly we have
a comment noting when we're doing it deliberately.
---
 block/iscsi.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Peter Maydell July 27, 2023, 3:15 p.m. UTC | #1
On Thu, 27 Jul 2023 at 16:07, Peter Maydell <peter.maydell@linaro.org> wrote:
>
> In block/iscsi.c we use a raw malloc() call, which is unusual
> given the project standard is to use the glib memory allocation
> functions. Document why we do so, to avoid it being converted
> to g_malloc() by mistake.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> There aren't many uses of raw malloc() in the codebase
> other than third-party library sourcecode. Mostly we have
> a comment noting when we're doing it deliberately.
> ---
>  block/iscsi.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/block/iscsi.c b/block/iscsi.c
> index 34f97ab6460..5640c8b5657 100644
> --- a/block/iscsi.c
> +++ b/block/iscsi.c
> @@ -1058,6 +1058,7 @@ static BlockAIOCB *iscsi_aio_ioctl(BlockDriverState *bs,
>          return NULL;
>      }
>
> +    /* Must use malloc(): this is freed via scsi_free_scsi_task() */
>      acb->task = malloc(sizeof(struct scsi_task));
>      if (acb->task == NULL) {
>          error_report("iSCSI: Failed to allocate task for scsi command. %s",

The other option here would be to use scsi_create_task(),
if we're OK with requiring libiscsi 1.13 or better (that's
9 years old at this point, so should be OK...)

thanks
-- PMM
Kevin Wolf Aug. 18, 2023, 3:56 p.m. UTC | #2
Am 27.07.2023 um 17:15 hat Peter Maydell geschrieben:
> On Thu, 27 Jul 2023 at 16:07, Peter Maydell <peter.maydell@linaro.org> wrote:
> >
> > In block/iscsi.c we use a raw malloc() call, which is unusual
> > given the project standard is to use the glib memory allocation
> > functions. Document why we do so, to avoid it being converted
> > to g_malloc() by mistake.
> >
> > Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> > ---
> > There aren't many uses of raw malloc() in the codebase
> > other than third-party library sourcecode. Mostly we have
> > a comment noting when we're doing it deliberately.

Thanks, applied to the block branch.

> The other option here would be to use scsi_create_task(),
> if we're OK with requiring libiscsi 1.13 or better (that's
> 9 years old at this point, so should be OK...)

I wouldn't mind either way, but since this patch exists and the other
doesn't, I'm applying this one for now.

Kevin
Peter Maydell Aug. 18, 2023, 4 p.m. UTC | #3
On Fri, 18 Aug 2023 at 16:56, Kevin Wolf <kwolf@redhat.com> wrote:
>
> Am 27.07.2023 um 17:15 hat Peter Maydell geschrieben:
> > On Thu, 27 Jul 2023 at 16:07, Peter Maydell <peter.maydell@linaro.org> wrote:
> > >
> > > In block/iscsi.c we use a raw malloc() call, which is unusual
> > > given the project standard is to use the glib memory allocation
> > > functions. Document why we do so, to avoid it being converted
> > > to g_malloc() by mistake.
> > >
> > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> > > ---
> > > There aren't many uses of raw malloc() in the codebase
> > > other than third-party library sourcecode. Mostly we have
> > > a comment noting when we're doing it deliberately.
>
> Thanks, applied to the block branch.
>
> > The other option here would be to use scsi_create_task(),
> > if we're OK with requiring libiscsi 1.13 or better (that's
> > 9 years old at this point, so should be OK...)
>
> I wouldn't mind either way, but since this patch exists and the other
> doesn't, I'm applying this one for now.

Thanks. I think scsi_create_task() would be cleaner, but
it's just over the amount of change that I'd want to do without
a test setup to exercise this code, which is why I stuck to
the comment for now.

-- PMM
diff mbox series

Patch

diff --git a/block/iscsi.c b/block/iscsi.c
index 34f97ab6460..5640c8b5657 100644
--- a/block/iscsi.c
+++ b/block/iscsi.c
@@ -1058,6 +1058,7 @@  static BlockAIOCB *iscsi_aio_ioctl(BlockDriverState *bs,
         return NULL;
     }
 
+    /* Must use malloc(): this is freed via scsi_free_scsi_task() */
     acb->task = malloc(sizeof(struct scsi_task));
     if (acb->task == NULL) {
         error_report("iSCSI: Failed to allocate task for scsi command. %s",