Message ID | 20250605193540.59874-3-philmd@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | system: Forbid alloca() | expand |
On Thu, 5 Jun 2025, Philippe Mathieu-Daudé wrote: > tpm_emulator_ctrlcmd() is not in hot path. > Use the heap instead of the stack, removing > the g_alloca() call. Typo in subject L -> : Regards, BALATON Zoltan > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > backends/tpm/tpm_emulator.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/backends/tpm/tpm_emulator.c b/backends/tpm/tpm_emulator.c > index 43d350e895d..4a234ab2c0b 100644 > --- a/backends/tpm/tpm_emulator.c > +++ b/backends/tpm/tpm_emulator.c > @@ -129,11 +129,11 @@ static int tpm_emulator_ctrlcmd(TPMEmulator *tpm, unsigned long cmd, void *msg, > CharBackend *dev = &tpm->ctrl_chr; > uint32_t cmd_no = cpu_to_be32(cmd); > ssize_t n = sizeof(uint32_t) + msg_len_in; > - uint8_t *buf = NULL; > ptm_res res; > > WITH_QEMU_LOCK_GUARD(&tpm->mutex) { > - buf = g_alloca(n); > + g_autofree uint8_t *buf = g_malloc(n); > + > memcpy(buf, &cmd_no, sizeof(cmd_no)); > memcpy(buf + sizeof(cmd_no), msg, msg_len_in); > >
On 5/6/25 23:23, BALATON Zoltan wrote: > On Thu, 5 Jun 2025, Philippe Mathieu-Daudé wrote: >> tpm_emulator_ctrlcmd() is not in hot path. >> Use the heap instead of the stack, removing >> the g_alloca() call. > > Typo in subject L -> : Oops thanks, I hurt my ring finger and have it now tied with the middle finger; typing like that is slower and makes me do a lot of typos ;)
On 05/06/2025 21.35, Philippe Mathieu-Daudé wrote: > tpm_emulator_ctrlcmd() is not in hot path. > Use the heap instead of the stack, removing > the g_alloca() call. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > backends/tpm/tpm_emulator.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/backends/tpm/tpm_emulator.c b/backends/tpm/tpm_emulator.c > index 43d350e895d..4a234ab2c0b 100644 > --- a/backends/tpm/tpm_emulator.c > +++ b/backends/tpm/tpm_emulator.c > @@ -129,11 +129,11 @@ static int tpm_emulator_ctrlcmd(TPMEmulator *tpm, unsigned long cmd, void *msg, > CharBackend *dev = &tpm->ctrl_chr; > uint32_t cmd_no = cpu_to_be32(cmd); > ssize_t n = sizeof(uint32_t) + msg_len_in; > - uint8_t *buf = NULL; > ptm_res res; > > WITH_QEMU_LOCK_GUARD(&tpm->mutex) { > - buf = g_alloca(n); > + g_autofree uint8_t *buf = g_malloc(n); > + > memcpy(buf, &cmd_no, sizeof(cmd_no)); > memcpy(buf + sizeof(cmd_no), msg, msg_len_in); > With the typo fixed: Reviewed-by: Thomas Huth <thuth@redhat.com>
On 6/5/25 3:35 PM, Philippe Mathieu-Daudé wrote: > tpm_emulator_ctrlcmd() is not in hot path. > Use the heap instead of the stack, removing > the g_alloca() call. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Stefan Berger <stefanb@linux.ibm.com> > --- > backends/tpm/tpm_emulator.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/backends/tpm/tpm_emulator.c b/backends/tpm/tpm_emulator.c > index 43d350e895d..4a234ab2c0b 100644 > --- a/backends/tpm/tpm_emulator.c > +++ b/backends/tpm/tpm_emulator.c > @@ -129,11 +129,11 @@ static int tpm_emulator_ctrlcmd(TPMEmulator *tpm, unsigned long cmd, void *msg, > CharBackend *dev = &tpm->ctrl_chr; > uint32_t cmd_no = cpu_to_be32(cmd); > ssize_t n = sizeof(uint32_t) + msg_len_in; > - uint8_t *buf = NULL; > ptm_res res; > > WITH_QEMU_LOCK_GUARD(&tpm->mutex) { > - buf = g_alloca(n); > + g_autofree uint8_t *buf = g_malloc(n); > + > memcpy(buf, &cmd_no, sizeof(cmd_no)); > memcpy(buf + sizeof(cmd_no), msg, msg_len_in); >
On 6/6/25 4:14 AM, Thomas Huth wrote: > On 05/06/2025 21.35, Philippe Mathieu-Daudé wrote: >> tpm_emulator_ctrlcmd() is not in hot path. >> Use the heap instead of the stack, removing >> the g_alloca() call. >> >> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> >> --- >> backends/tpm/tpm_emulator.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/backends/tpm/tpm_emulator.c b/backends/tpm/tpm_emulator.c >> index 43d350e895d..4a234ab2c0b 100644 >> --- a/backends/tpm/tpm_emulator.c >> +++ b/backends/tpm/tpm_emulator.c >> @@ -129,11 +129,11 @@ static int tpm_emulator_ctrlcmd(TPMEmulator >> *tpm, unsigned long cmd, void *msg, >> CharBackend *dev = &tpm->ctrl_chr; >> uint32_t cmd_no = cpu_to_be32(cmd); >> ssize_t n = sizeof(uint32_t) + msg_len_in; >> - uint8_t *buf = NULL; >> ptm_res res; >> WITH_QEMU_LOCK_GUARD(&tpm->mutex) { >> - buf = g_alloca(n); >> + g_autofree uint8_t *buf = g_malloc(n); >> + >> memcpy(buf, &cmd_no, sizeof(cmd_no)); >> memcpy(buf + sizeof(cmd_no), msg, msg_len_in); > > With the typo fixed: > Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Stefan Berger <stefanb@linux.ibm.com> > >
diff --git a/backends/tpm/tpm_emulator.c b/backends/tpm/tpm_emulator.c index 43d350e895d..4a234ab2c0b 100644 --- a/backends/tpm/tpm_emulator.c +++ b/backends/tpm/tpm_emulator.c @@ -129,11 +129,11 @@ static int tpm_emulator_ctrlcmd(TPMEmulator *tpm, unsigned long cmd, void *msg, CharBackend *dev = &tpm->ctrl_chr; uint32_t cmd_no = cpu_to_be32(cmd); ssize_t n = sizeof(uint32_t) + msg_len_in; - uint8_t *buf = NULL; ptm_res res; WITH_QEMU_LOCK_GUARD(&tpm->mutex) { - buf = g_alloca(n); + g_autofree uint8_t *buf = g_malloc(n); + memcpy(buf, &cmd_no, sizeof(cmd_no)); memcpy(buf + sizeof(cmd_no), msg, msg_len_in);
tpm_emulator_ctrlcmd() is not in hot path. Use the heap instead of the stack, removing the g_alloca() call. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- backends/tpm/tpm_emulator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)