* [PATCH] backends/tpm: Replace qemu_mutex_lock calls with QEMU_LOCK_GUARD
@ 2021-05-12 7:07 Philippe Mathieu-Daudé
2021-05-13 14:08 ` Stefan Berger
2021-05-13 15:44 ` Laurent Vivier
0 siblings, 2 replies; 4+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-05-12 7:07 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-trivial, Christophe de Dinechin, Stefan Berger,
Philippe Mathieu-Daudé,
Stefan Berger
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.
Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Christophe de Dinechin <dinechin@redhat.com>
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,
--
2.26.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] backends/tpm: Replace qemu_mutex_lock calls with QEMU_LOCK_GUARD
2021-05-12 7:07 [PATCH] backends/tpm: Replace qemu_mutex_lock calls with QEMU_LOCK_GUARD Philippe Mathieu-Daudé
@ 2021-05-13 14:08 ` Stefan Berger
2021-05-13 14:42 ` Philippe Mathieu-Daudé
2021-05-13 15:44 ` Laurent Vivier
1 sibling, 1 reply; 4+ messages in thread
From: Stefan Berger @ 2021-05-13 14:08 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
Cc: qemu-trivial, Christophe de Dinechin, Stefan Berger
On 5/12/21 3:07 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.
>
> Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
> Reviewed-by: Christophe de Dinechin <dinechin@redhat.com>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Thanks for doing this. I suppose you will send it via a PR?
Stefan
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] backends/tpm: Replace qemu_mutex_lock calls with QEMU_LOCK_GUARD
2021-05-13 14:08 ` Stefan Berger
@ 2021-05-13 14:42 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 4+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-05-13 14:42 UTC (permalink / raw)
To: Stefan Berger, qemu-devel
Cc: qemu-trivial, Christophe de Dinechin, Stefan Berger
Hi Stefan,
On 5/13/21 4:08 PM, Stefan Berger wrote:
> On 5/12/21 3:07 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.
>>
>> Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
>> Reviewed-by: Christophe de Dinechin <dinechin@redhat.com>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>
> Thanks for doing this. I suppose you will send it via a PR?
Christophe asked it to be sent separately from the other series.
I Cc'ed qemu-trivial@ (patches are collected there once a week
usually).
Regards,
Phil.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] backends/tpm: Replace qemu_mutex_lock calls with QEMU_LOCK_GUARD
2021-05-12 7:07 [PATCH] backends/tpm: Replace qemu_mutex_lock calls with QEMU_LOCK_GUARD Philippe Mathieu-Daudé
2021-05-13 14:08 ` Stefan Berger
@ 2021-05-13 15:44 ` Laurent Vivier
1 sibling, 0 replies; 4+ messages in thread
From: Laurent Vivier @ 2021-05-13 15:44 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
Cc: qemu-trivial, Christophe de Dinechin, Stefan Berger, Stefan Berger
Le 12/05/2021 à 09:07, Philippe Mathieu-Daudé a écrit :
> 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.
>
> Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
> Reviewed-by: Christophe de Dinechin <dinechin@redhat.com>
> 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,
>
Applied to my trivial-patches branch.
Thanks,
Laurent
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-05-13 15:46 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-12 7:07 [PATCH] backends/tpm: Replace qemu_mutex_lock calls with QEMU_LOCK_GUARD Philippe Mathieu-Daudé
2021-05-13 14:08 ` Stefan Berger
2021-05-13 14:42 ` Philippe Mathieu-Daudé
2021-05-13 15:44 ` Laurent Vivier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).