[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 0/9] misc: Replace alloca() by g_malloc()
From: |
Eric Blake |
Subject: |
Re: [PATCH v2 0/9] misc: Replace alloca() by g_malloc() |
Date: |
Thu, 6 May 2021 09:28:48 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 |
On 5/6/21 9:22 AM, Warner Losh wrote:
> On Thu, May 6, 2021 at 7:39 AM Philippe Mathieu-Daudé <philmd@redhat.com>
> wrote:
>
>> The ALLOCA(3) man-page mentions its "use is discouraged".
>> Replace few calls by equivalent GLib malloc().
>>
>
> Except g_alloc and g_malloc are not at all the same, and you can't drop in
> replace one with the other.
>
> g_alloc allocates stack space on the calling frame that's automatically
> freed when the function returns.
> g_malloc allocates space from the heap, and calls to it must be matched
> with calls to g_free().
>
> These patches don't do the latter, as far as I can tell, and so introduce
> memory leaks unless there's something I've missed.
You missed the g_autofree, whose job is to call g_free() on all points
in the control flow where the malloc()d memory goes out of scope
(equivalent in expressive power to alloca()d memory going out of scope).
Although the code is arguably a bit slower (as heap manipulations are
not as cheap as stack manipulations), in the long run that speed penalty
is worth the safety factor (since stack manipulations under user control
are inherently unsafe).
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
- [PATCH v2 5/9] gdbstub: Constify GdbCmdParseEntry, (continued)
- [PATCH v2 5/9] gdbstub: Constify GdbCmdParseEntry, Philippe Mathieu-Daudé, 2021/05/06
- [PATCH v2 6/9] gdbstub: Only call cmd_parse_params() with non-NULL command schema, Philippe Mathieu-Daudé, 2021/05/06
- [PATCH v2 7/9] gdbstub: Replace alloca() + memset(0) by g_new0(), Philippe Mathieu-Daudé, 2021/05/06
- [PATCH v2 8/9] hw/misc/pca9552: Replace g_newa() by g_new(), Philippe Mathieu-Daudé, 2021/05/06
- [PATCH v2 9/9] target/ppc/kvm: Replace alloca() by g_malloc(), Philippe Mathieu-Daudé, 2021/05/06
- Re: [PATCH v2 0/9] misc: Replace alloca() by g_malloc(), Warner Losh, 2021/05/06
- Re: [PATCH v2 0/9] misc: Replace alloca() by g_malloc(),
Eric Blake <=