Re: [PATCH] lib/xz: replace min_t with min
From: Nathan Chancellor
Date: Wed Jun 10 2026 - 19:23:50 EST
On Tue, Jun 09, 2026 at 06:00:28PM +0300, Lasse Collin wrote:
> From: Thorsten Blum <thorsten.blum@xxxxxxxxx>
>
> Use the simpler min() macro since the values are unsigned and
> compatible.
>
> Signed-off-by: Thorsten Blum <thorsten.blum@xxxxxxxxx>
> Reviewed-by: Lasse Collin <lasse.collin@xxxxxxxxxxx>
> Signed-off-by: Lasse Collin <lasse.collin@xxxxxxxxxxx>
...
> diff --git a/lib/xz/xz_dec_lzma2.c b/lib/xz/xz_dec_lzma2.c
> index 4b783ac94e71..9d80342b9c6b 100644
> --- a/lib/xz/xz_dec_lzma2.c
> +++ b/lib/xz/xz_dec_lzma2.c
> @@ -354,7 +354,7 @@ static bool dict_repeat(struct dictionary *dict, uint32_t *len, uint32_t dist)
> if (dist >= dict->full || dist >= dict->size)
> return false;
>
> - left = min_t(size_t, dict->limit - dict->pos, *len);
> + left = min(dict->limit - dict->pos, *len);
> *len -= left;
>
> back = dict->pos - dist - 1;
> @@ -1098,9 +1098,8 @@ enum xz_ret xz_dec_lzma2_run(struct xz_dec_lzma2 *s, struct xz_buf *b)
> * the output buffer yet, we may run this loop
> * multiple times without changing s->lzma2.sequence.
> */
> - dict_limit(&s->dict, min_t(size_t,
> - b->out_size - b->out_pos,
> - s->lzma2.uncompressed));
> + dict_limit(&s->dict, min(b->out_size - b->out_pos,
> + s->lzma2.uncompressed));
> if (!lzma2_lzma(s, b))
> return XZ_DATA_ERROR;
>
These two hunks from this change in -next as 1003161e12ac ("lib/xz:
replace min_t with min") cause warnings in the arch/powerpc/boot code,
as it uses an old, simple version of min() and max() that does not have
the improvements done in d03eba99f5bf ("minmax: allow
min()/max()/clamp() if the arguments have the same signedness."):
In file included from arch/powerpc/boot/ops.h:13,
from arch/powerpc/boot/decompress.c:12:
arch/powerpc/boot/../../../lib/xz/xz_dec_lzma2.c: In function 'dict_repeat':
arch/powerpc/boot/types.h:31:21: warning: comparison of distinct pointer types lacks a cast [-Wcompare-distinct-pointer-types]
31 | (void) (&_x == &_y); \
| ^~
arch/powerpc/boot/../../../lib/xz/xz_dec_lzma2.c:357:16: note: in expansion of macro 'min'
357 | left = min(dict->limit - dict->pos, *len);
| ^~~
arch/powerpc/boot/../../../lib/xz/xz_dec_lzma2.c: In function 'xz_dec_lzma2_run':
arch/powerpc/boot/types.h:31:21: warning: comparison of distinct pointer types lacks a cast [-Wcompare-distinct-pointer-types]
31 | (void) (&_x == &_y); \
| ^~
arch/powerpc/boot/../../../lib/xz/xz_dec_lzma2.c:1101:46: note: in expansion of macro 'min'
1101 | dict_limit(&s->dict, min(b->out_size - b->out_pos,
| ^~~
We could try to update arch/powerpc/boot/types.h with the current min()
and max() versions but that will require dragging in many other macros.
Could try to make the Linux headers work as is to reduce duplication but
that is likely quite involved (and maybe even undesirable). Backing out
of these two changes is likely a better solution, at least for now.
--
Cheers,
Nathan