From: Christophe de Dinechin <dinechin@redhat.com>
To: "Philippe Mathieu-Daudé" <philmd@redhat.com>
Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org, qemu-ppc@nongnu.org,
qemu-arm@nongnu.org, "Gerd Hoffmann" <kraxel@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Stefan Berger" <stefanb@linux.vnet.ibm.com>
Subject: Re: [PATCH v2 2/9] backends/tpm: Replace qemu_mutex_lock calls with QEMU_LOCK_GUARD
Date: Thu, 06 May 2021 17:07:11 +0200 [thread overview]
Message-ID: <lyr1ij6gsr.fsf@redhat.com> (raw)
In-Reply-To: <20210506133758.1749233-3-philmd@redhat.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)
WARNING: multiple messages have this Message-ID (diff)
From: Christophe de Dinechin <dinechin@redhat.com>
To: "Philippe Mathieu-Daudé" <philmd@redhat.com>
Cc: kvm@vger.kernel.org, "Stefan Berger" <stefanb@linux.vnet.ibm.com>,
qemu-devel@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>
Subject: Re: [PATCH v2 2/9] backends/tpm: Replace qemu_mutex_lock calls with QEMU_LOCK_GUARD
Date: Thu, 06 May 2021 17:07:11 +0200 [thread overview]
Message-ID: <lyr1ij6gsr.fsf@redhat.com> (raw)
In-Reply-To: <20210506133758.1749233-3-philmd@redhat.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)
next prev parent reply other threads:[~2021-05-06 15:08 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-06 13:37 [PATCH v2 0/9] misc: Replace alloca() by g_malloc() Philippe Mathieu-Daudé
2021-05-06 13:37 ` Philippe Mathieu-Daudé
2021-05-06 13:37 ` [PATCH v2 1/9] audio/alsaaudio: Replace ALSA alloca() by malloc() equivalent Philippe Mathieu-Daudé
2021-05-06 13:37 ` Philippe Mathieu-Daudé
2021-05-06 13:37 ` [PATCH v2 2/9] backends/tpm: Replace qemu_mutex_lock calls with QEMU_LOCK_GUARD Philippe Mathieu-Daudé
2021-05-06 13:37 ` Philippe Mathieu-Daudé
2021-05-06 14:46 ` Stefan Berger
2021-05-06 15:07 ` Christophe de Dinechin [this message]
2021-05-06 15:07 ` Christophe de Dinechin
2021-05-06 13:37 ` [PATCH v2 3/9] backends/tpm: Replace g_alloca() by g_malloc() Philippe Mathieu-Daudé
2021-05-06 13:37 ` Philippe Mathieu-Daudé
2021-05-06 14:46 ` Stefan Berger
2021-05-06 14:46 ` Stefan Berger
2021-05-06 13:37 ` [PATCH v2 4/9] bsd-user/syscall: Replace alloca() by g_new() Philippe Mathieu-Daudé
2021-05-06 13:37 ` Philippe Mathieu-Daudé
2021-05-06 14:16 ` Warner Losh
2021-05-06 14:16 ` Warner Losh
2021-05-06 14:20 ` Peter Maydell
2021-05-06 14:20 ` Peter Maydell
2021-05-06 14:48 ` Warner Losh
2021-05-06 14:57 ` Philippe Mathieu-Daudé
2021-05-06 15:07 ` Warner Losh
2021-05-06 14:25 ` Eric Blake
2021-05-06 14:55 ` Warner Losh
2021-05-06 14:55 ` Warner Losh
2021-05-06 15:12 ` Eric Blake
2021-05-06 15:12 ` Eric Blake
2021-05-06 15:30 ` Warner Losh
2021-05-06 15:30 ` Warner Losh
2021-05-06 15:42 ` Eric Blake
2021-05-06 15:42 ` Eric Blake
2021-05-06 16:03 ` Peter Maydell
2021-05-06 16:03 ` Peter Maydell
2021-05-06 16:09 ` Warner Losh
2021-05-06 16:09 ` Warner Losh
2021-05-06 15:58 ` Peter Maydell
2021-05-06 15:58 ` Peter Maydell
2021-05-06 16:08 ` Warner Losh
2021-05-06 13:37 ` [PATCH v2 5/9] gdbstub: Constify GdbCmdParseEntry Philippe Mathieu-Daudé
2021-05-06 13:37 ` Philippe Mathieu-Daudé
2021-05-06 13:37 ` [PATCH v2 6/9] gdbstub: Only call cmd_parse_params() with non-NULL command schema Philippe Mathieu-Daudé
2021-05-06 13:37 ` Philippe Mathieu-Daudé
2021-05-06 19:21 ` Alex Bennée
2021-05-06 19:21 ` Alex Bennée
2021-05-06 13:37 ` [PATCH v2 7/9] gdbstub: Replace alloca() + memset(0) by g_new0() Philippe Mathieu-Daudé
2021-05-06 13:37 ` Philippe Mathieu-Daudé
2021-05-06 19:22 ` Alex Bennée
2021-05-06 19:22 ` Alex Bennée
2021-05-06 13:37 ` [PATCH v2 8/9] hw/misc/pca9552: Replace g_newa() by g_new() Philippe Mathieu-Daudé
2021-05-06 13:37 ` Philippe Mathieu-Daudé
2021-05-06 13:37 ` [PATCH v2 9/9] target/ppc/kvm: Replace alloca() by g_malloc() Philippe Mathieu-Daudé
2021-05-06 13:37 ` Philippe Mathieu-Daudé
2021-05-06 14:45 ` Greg Kurz
2021-05-06 14:45 ` Greg Kurz
2021-05-07 1:05 ` David Gibson
2021-05-07 1:05 ` David Gibson
2021-05-06 14:22 ` [PATCH v2 0/9] misc: " Warner Losh
2021-05-06 14:22 ` Warner Losh
2021-05-06 14:28 ` Eric Blake
2021-05-06 15:02 ` Warner Losh
2021-05-06 15:02 ` Warner Losh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=lyr1ij6gsr.fsf@redhat.com \
--to=dinechin@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=kraxel@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=stefanb@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.