mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-17 01:51:00 +03:00
92fca1c2d0
abd_t differs in size depending on whether or not ZFS_DEBUG is set. It
turns out that libzpool is built with FORCEDEBUG_CPPFLAGS, which sets
-DZFS_DEBUG, and so it always has a larger abd_t with extra debug
fields, regardless of whether or not --enable-debug is set.
zdb, ztest and zhack are also all built with FORCEDEBUG_CPPFLAGS, so had
the same idea of the size of abd_t, but zstream was not, and used the
"smaller" abd_t. In practice this didn't matter because it never used
abd_t directly.
This changed in b4d81b1a6
, zstream was switched to use stack ABDs for
compression. When built with --enable-debug, zstream implicitly gets
ZFS_DEBUG, and everything was fine. Productions builds without that flag
ends up with the smaller abd_t, which is now mismatched with libzpool,
and causes stack overruns in zstream recompress.
The simplest fix for now is to compile zstream with FORCEDEBUG_CPPFLAGS
like the other binaries. This commit does that.
Sponsored-by: Klara, Inc.
Sponsored-by: Wasabi Technology, Inc.
Reviewed-by: Allan Jude <allan@klarasystems.com>
Reviewed-by: Rich Ercolani <rincebrain@gmail.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
Issue #16476
Closes #16477
24 lines
474 B
Makefile
24 lines
474 B
Makefile
zstream_CPPFLAGS = $(AM_CPPFLAGS) $(FORCEDEBUG_CPPFLAGS)
|
|
|
|
sbin_PROGRAMS += zstream
|
|
CPPCHECKTARGETS += zstream
|
|
|
|
zstream_SOURCES = \
|
|
%D%/zstream.c \
|
|
%D%/zstream.h \
|
|
%D%/zstream_decompress.c \
|
|
%D%/zstream_dump.c \
|
|
%D%/zstream_recompress.c \
|
|
%D%/zstream_redup.c \
|
|
%D%/zstream_token.c
|
|
|
|
zstream_LDADD = \
|
|
libzfs.la \
|
|
libzfs_core.la \
|
|
libzpool.la \
|
|
libnvpair.la
|
|
|
|
PHONY += install-exec-hook
|
|
install-exec-hook:
|
|
cd $(DESTDIR)$(sbindir) && $(LN_S) -f zstream zstreamdump
|