Message ID | 20210506133758.1749233-3-philmd@redhat.com |
---|---|
State | New |
Headers | show |
Series | misc: Replace alloca() by g_malloc() | expand |
On 5/6/21 9:37 AM, Philippe Mathieu-Daudé wrote: > Simplify the tpm_emulator_ctrlcmd() handler by replacing a pair of > qemu_mutex_lock/qemu_mutex_unlock calls by the WITH_QEMU_LOCK_GUARD > macro. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
On 2021-05-06 at 15:37 CEST, Philippe Mathieu-Daudé wrote... > Simplify the tpm_emulator_ctrlcmd() handler by replacing a pair of > qemu_mutex_lock/qemu_mutex_unlock calls by the WITH_QEMU_LOCK_GUARD > macro. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > backends/tpm/tpm_emulator.c | 34 +++++++++++++++------------------- > 1 file changed, 15 insertions(+), 19 deletions(-) > > diff --git a/backends/tpm/tpm_emulator.c b/backends/tpm/tpm_emulator.c > index a012adc1934..e5f1063ab6c 100644 > --- a/backends/tpm/tpm_emulator.c > +++ b/backends/tpm/tpm_emulator.c > @@ -30,6 +30,7 @@ > #include "qemu/error-report.h" > #include "qemu/module.h" > #include "qemu/sockets.h" > +#include "qemu/lockable.h" > #include "io/channel-socket.h" > #include "sysemu/tpm_backend.h" > #include "sysemu/tpm_util.h" > @@ -124,31 +125,26 @@ static int tpm_emulator_ctrlcmd(TPMEmulator *tpm, unsigned long cmd, void *msg, > uint32_t cmd_no = cpu_to_be32(cmd); > ssize_t n = sizeof(uint32_t) + msg_len_in; > uint8_t *buf = NULL; > - int ret = -1; > > - qemu_mutex_lock(&tpm->mutex); > + WITH_QEMU_LOCK_GUARD(&tpm->mutex) { > + buf = g_alloca(n); > + memcpy(buf, &cmd_no, sizeof(cmd_no)); > + memcpy(buf + sizeof(cmd_no), msg, msg_len_in); > > - buf = g_alloca(n); > - memcpy(buf, &cmd_no, sizeof(cmd_no)); > - memcpy(buf + sizeof(cmd_no), msg, msg_len_in); > - > - n = qemu_chr_fe_write_all(dev, buf, n); > - if (n <= 0) { > - goto end; > - } > - > - if (msg_len_out != 0) { > - n = qemu_chr_fe_read_all(dev, msg, msg_len_out); > + n = qemu_chr_fe_write_all(dev, buf, n); > if (n <= 0) { > - goto end; > + return -1; > + } > + > + if (msg_len_out != 0) { > + n = qemu_chr_fe_read_all(dev, msg, msg_len_out); > + if (n <= 0) { > + return -1; > + } > } > } > > - ret = 0; > - > -end: > - qemu_mutex_unlock(&tpm->mutex); > - return ret; > + return 0; > } > > static int tpm_emulator_unix_tx_bufs(TPMEmulator *tpm_emu, I really like the improvement, but it looks like it does not belong to the top-level series (i.e. not related to replacing alloca() by g_malloc()). Reviewed-by: Christophe de Dinechin <dinechin@redhat.com> -- Cheers, Christophe de Dinechin (IRC c3d)
diff --git a/backends/tpm/tpm_emulator.c b/backends/tpm/tpm_emulator.c index a012adc1934..e5f1063ab6c 100644 --- a/backends/tpm/tpm_emulator.c +++ b/backends/tpm/tpm_emulator.c @@ -30,6 +30,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "qemu/sockets.h" +#include "qemu/lockable.h" #include "io/channel-socket.h" #include "sysemu/tpm_backend.h" #include "sysemu/tpm_util.h" @@ -124,31 +125,26 @@ static int tpm_emulator_ctrlcmd(TPMEmulator *tpm, unsigned long cmd, void *msg, uint32_t cmd_no = cpu_to_be32(cmd); ssize_t n = sizeof(uint32_t) + msg_len_in; uint8_t *buf = NULL; - int ret = -1; - qemu_mutex_lock(&tpm->mutex); + WITH_QEMU_LOCK_GUARD(&tpm->mutex) { + buf = g_alloca(n); + memcpy(buf, &cmd_no, sizeof(cmd_no)); + memcpy(buf + sizeof(cmd_no), msg, msg_len_in); - buf = g_alloca(n); - memcpy(buf, &cmd_no, sizeof(cmd_no)); - memcpy(buf + sizeof(cmd_no), msg, msg_len_in); - - n = qemu_chr_fe_write_all(dev, buf, n); - if (n <= 0) { - goto end; - } - - if (msg_len_out != 0) { - n = qemu_chr_fe_read_all(dev, msg, msg_len_out); + n = qemu_chr_fe_write_all(dev, buf, n); if (n <= 0) { - goto end; + return -1; + } + + if (msg_len_out != 0) { + n = qemu_chr_fe_read_all(dev, msg, msg_len_out); + if (n <= 0) { + return -1; + } } } - ret = 0; - -end: - qemu_mutex_unlock(&tpm->mutex); - return ret; + return 0; } static int tpm_emulator_unix_tx_bufs(TPMEmulator *tpm_emu,
Simplify the tpm_emulator_ctrlcmd() handler by replacing a pair of qemu_mutex_lock/qemu_mutex_unlock calls by the WITH_QEMU_LOCK_GUARD macro. Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> --- backends/tpm/tpm_emulator.c | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-)