[PATCH] block: remove 'detached-header' option from opts after use

Daniel P. Berrangé posted 1 patch 4 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20250919103810.1513109-1-berrange@redhat.com
Maintainers: Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>
block/crypto.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] block: remove 'detached-header' option from opts after use
Posted by Daniel P. Berrangé 4 months, 3 weeks ago
The code for creating LUKS devices references a 'detached-header'
option in the QemuOpts  data, but does not consume (remove) the
option.

Thus when the code later tries to convert the remaining unused
QemuOpts into a QCryptoBlockCreateOptions struct, an error is
reported by the QAPI code that 'detached-header' is not a valid
field.

This fixes a regression caused by

  commit e818c01ae6e7c54c7019baaf307be59d99ce80b9
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   Mon Feb 19 15:12:59 2024 +0000

    qapi: drop unused QCryptoBlockCreateOptionsLUKS.detached-header

which identified that the QAPI field was unused, but failed to
realize the QemuOpts -> QCryptoBlockCreateOptions conversion
was seeing the left-over 'detached-header' optino which had not
been removed from QemuOpts.

This problem was identified by the 'luks-detached-header' I/O
test, but unfortunate I/O tests are not run regularly for the
LUKS format.

Fixes: e818c01ae6e7c54c7019baaf307be59d99ce80b9
Reported-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 block/crypto.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/block/crypto.c b/block/crypto.c
index d4226cc68a..17b4749a1e 100644
--- a/block/crypto.c
+++ b/block/crypto.c
@@ -792,7 +792,7 @@ block_crypto_co_create_opts_luks(BlockDriver *drv, const char *filename,
     char *buf = NULL;
     int64_t size;
     bool detached_hdr =
-        qemu_opt_get_bool(opts, "detached-header", false);
+        qemu_opt_get_bool_del(opts, "detached-header", false);
     unsigned int cflags = 0;
     int ret;
     Error *local_err = NULL;
-- 
2.50.1


Re: [PATCH] block: remove 'detached-header' option from opts after use
Posted by Eric Blake 4 months, 2 weeks ago
On Fri, Sep 19, 2025 at 11:38:10AM +0100, Daniel P. Berrangé wrote:
> The code for creating LUKS devices references a 'detached-header'
> option in the QemuOpts  data, but does not consume (remove) the
> option.
> 
> Thus when the code later tries to convert the remaining unused
> QemuOpts into a QCryptoBlockCreateOptions struct, an error is
> reported by the QAPI code that 'detached-header' is not a valid
> field.
> 
> This fixes a regression caused by
> 
>   commit e818c01ae6e7c54c7019baaf307be59d99ce80b9
>   Author: Daniel P. Berrangé <berrange@redhat.com>
>   Date:   Mon Feb 19 15:12:59 2024 +0000
> 
>     qapi: drop unused QCryptoBlockCreateOptionsLUKS.detached-header
> 
> which identified that the QAPI field was unused, but failed to
> realize the QemuOpts -> QCryptoBlockCreateOptions conversion
> was seeing the left-over 'detached-header' optino which had not

option

> been removed from QemuOpts.
> 
> This problem was identified by the 'luks-detached-header' I/O
> test, but unfortunate I/O tests are not run regularly for the
> LUKS format.
> 
> Fixes: e818c01ae6e7c54c7019baaf307be59d99ce80b9
> Reported-by: Thomas Huth <thuth@redhat.com>
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>  block/crypto.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Eric Blake <eblake@redhat.com>

> 
> diff --git a/block/crypto.c b/block/crypto.c
> index d4226cc68a..17b4749a1e 100644
> --- a/block/crypto.c
> +++ b/block/crypto.c
> @@ -792,7 +792,7 @@ block_crypto_co_create_opts_luks(BlockDriver *drv, const char *filename,
>      char *buf = NULL;
>      int64_t size;
>      bool detached_hdr =
> -        qemu_opt_get_bool(opts, "detached-header", false);
> +        qemu_opt_get_bool_del(opts, "detached-header", false);
>      unsigned int cflags = 0;
>      int ret;
>      Error *local_err = NULL;
> -- 
> 2.50.1
> 
> 

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.
Virtualization:  qemu.org | libguestfs.org


Re: [PATCH] block: remove 'detached-header' option from opts after use
Posted by Kevin Wolf 4 months, 2 weeks ago
Am 22.09.2025 um 14:37 hat Eric Blake geschrieben:
> On Fri, Sep 19, 2025 at 11:38:10AM +0100, Daniel P. Berrangé wrote:
> > The code for creating LUKS devices references a 'detached-header'
> > option in the QemuOpts  data, but does not consume (remove) the
> > option.
> > 
> > Thus when the code later tries to convert the remaining unused
> > QemuOpts into a QCryptoBlockCreateOptions struct, an error is
> > reported by the QAPI code that 'detached-header' is not a valid
> > field.
> > 
> > This fixes a regression caused by
> > 
> >   commit e818c01ae6e7c54c7019baaf307be59d99ce80b9
> >   Author: Daniel P. Berrangé <berrange@redhat.com>
> >   Date:   Mon Feb 19 15:12:59 2024 +0000
> > 
> >     qapi: drop unused QCryptoBlockCreateOptionsLUKS.detached-header
> > 
> > which identified that the QAPI field was unused, but failed to
> > realize the QemuOpts -> QCryptoBlockCreateOptions conversion
> > was seeing the left-over 'detached-header' optino which had not
> 
> option
> 
> > been removed from QemuOpts.
> > 
> > This problem was identified by the 'luks-detached-header' I/O
> > test, but unfortunate I/O tests are not run regularly for the

I assume this should be "unfortunately".

> > LUKS format.
> > 
> > Fixes: e818c01ae6e7c54c7019baaf307be59d99ce80b9
> > Reported-by: Thomas Huth <thuth@redhat.com>
> > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> > ---
> >  block/crypto.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> Reviewed-by: Eric Blake <eblake@redhat.com>

Thanks, applied to the block branch.

Kevin