* [PATCH] qemu-keymap: Release local allocation references
@ 2024-07-23 8:49 Akihiko Odaki
2024-10-01 18:59 ` Marc-André Lureau
2024-10-02 11:03 ` Michael Tokarev
0 siblings, 2 replies; 3+ messages in thread
From: Akihiko Odaki @ 2024-07-23 8:49 UTC (permalink / raw)
To: qemu-devel; +Cc: Akihiko Odaki
Commit 2523baf7fb4d ("qemu-keymap: Make references to allocations
static") made references to allocations static to ensure LeakSanitizer
can track them. This trick unfortunately did not work with gcc version
14.0.1; that compiler is clever enough to know that the value of the
"state" variable is only referred in the current execution of the
function and to put it on the stack.
Release references to allocations and suppress the error once for all.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
qemu-keymap.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/qemu-keymap.c b/qemu-keymap.c
index 701e4332af87..6707067fea04 100644
--- a/qemu-keymap.c
+++ b/qemu-keymap.c
@@ -154,9 +154,9 @@ static xkb_mod_mask_t get_mod(struct xkb_keymap *map, const char *name)
int main(int argc, char *argv[])
{
- static struct xkb_context *ctx;
- static struct xkb_keymap *map;
- static struct xkb_state *state;
+ struct xkb_context *ctx;
+ struct xkb_keymap *map;
+ struct xkb_state *state;
xkb_mod_index_t mod, mods;
int rc;
@@ -213,6 +213,7 @@ int main(int argc, char *argv[])
ctx = xkb_context_new(XKB_CONTEXT_NO_FLAGS);
map = xkb_keymap_new_from_names(ctx, &names, XKB_KEYMAP_COMPILE_NO_FLAGS);
+ xkb_context_unref(ctx);
if (!map) {
/* libxkbcommon prints error */
exit(1);
@@ -234,6 +235,8 @@ int main(int argc, char *argv[])
state = xkb_state_new(map);
xkb_keymap_key_for_each(map, walk_map, state);
+ xkb_state_unref(state);
+ xkb_keymap_unref(map);
/* add quirks */
fprintf(outfile,
---
base-commit: a87a7c449e532130d4fa8faa391ff7e1f04ed660
change-id: 20240723-unref-d62e2b8338f4
Best regards,
--
Akihiko Odaki <akihiko.odaki@daynix.com>
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] qemu-keymap: Release local allocation references
2024-07-23 8:49 [PATCH] qemu-keymap: Release local allocation references Akihiko Odaki
@ 2024-10-01 18:59 ` Marc-André Lureau
2024-10-02 11:03 ` Michael Tokarev
1 sibling, 0 replies; 3+ messages in thread
From: Marc-André Lureau @ 2024-10-01 18:59 UTC (permalink / raw)
To: Akihiko Odaki; +Cc: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 2125 bytes --]
On Tue, Jul 23, 2024 at 12:50 PM Akihiko Odaki <akihiko.odaki@daynix.com>
wrote:
> Commit 2523baf7fb4d ("qemu-keymap: Make references to allocations
> static") made references to allocations static to ensure LeakSanitizer
> can track them. This trick unfortunately did not work with gcc version
> 14.0.1; that compiler is clever enough to know that the value of the
> "state" variable is only referred in the current execution of the
> function and to put it on the stack.
>
> Release references to allocations and suppress the error once for all.
>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> ---
> qemu-keymap.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/qemu-keymap.c b/qemu-keymap.c
> index 701e4332af87..6707067fea04 100644
> --- a/qemu-keymap.c
> +++ b/qemu-keymap.c
> @@ -154,9 +154,9 @@ static xkb_mod_mask_t get_mod(struct xkb_keymap *map,
> const char *name)
>
> int main(int argc, char *argv[])
> {
> - static struct xkb_context *ctx;
> - static struct xkb_keymap *map;
> - static struct xkb_state *state;
> + struct xkb_context *ctx;
> + struct xkb_keymap *map;
> + struct xkb_state *state;
> xkb_mod_index_t mod, mods;
> int rc;
>
> @@ -213,6 +213,7 @@ int main(int argc, char *argv[])
>
> ctx = xkb_context_new(XKB_CONTEXT_NO_FLAGS);
> map = xkb_keymap_new_from_names(ctx, &names,
> XKB_KEYMAP_COMPILE_NO_FLAGS);
> + xkb_context_unref(ctx);
> if (!map) {
> /* libxkbcommon prints error */
> exit(1);
> @@ -234,6 +235,8 @@ int main(int argc, char *argv[])
>
> state = xkb_state_new(map);
> xkb_keymap_key_for_each(map, walk_map, state);
> + xkb_state_unref(state);
> + xkb_keymap_unref(map);
>
> /* add quirks */
> fprintf(outfile,
>
> ---
> base-commit: a87a7c449e532130d4fa8faa391ff7e1f04ed660
> change-id: 20240723-unref-d62e2b8338f4
>
> Best regards,
> --
> Akihiko Odaki <akihiko.odaki@daynix.com>
>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
--
Marc-André Lureau
[-- Attachment #2: Type: text/html, Size: 2955 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] qemu-keymap: Release local allocation references
2024-07-23 8:49 [PATCH] qemu-keymap: Release local allocation references Akihiko Odaki
2024-10-01 18:59 ` Marc-André Lureau
@ 2024-10-02 11:03 ` Michael Tokarev
1 sibling, 0 replies; 3+ messages in thread
From: Michael Tokarev @ 2024-10-02 11:03 UTC (permalink / raw)
To: Akihiko Odaki, qemu-devel, QEMU Trivial
23.07.2024 11:49, Akihiko Odaki wrote:
> Commit 2523baf7fb4d ("qemu-keymap: Make references to allocations
> static") made references to allocations static to ensure LeakSanitizer
> can track them. This trick unfortunately did not work with gcc version
> 14.0.1; that compiler is clever enough to know that the value of the
> "state" variable is only referred in the current execution of the
> function and to put it on the stack.
>
> Release references to allocations and suppress the error once for all.
Applied to the trivial-patches tree. Thanks!
/mjt
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-10-02 11:04 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-23 8:49 [PATCH] qemu-keymap: Release local allocation references Akihiko Odaki
2024-10-01 18:59 ` Marc-André Lureau
2024-10-02 11:03 ` Michael Tokarev
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).