From b3b293c9fccd089712b97ea047299497bd10d874 Mon Sep 17 00:00:00 2001 From: Coleman Kane Date: Sun, 5 Dec 2021 15:18:46 -0500 Subject: [PATCH] Linux 5.16: Resolve ZSTD_isError symbol collision in Linux kernel Newer zstd code introduced in the main kernel tree now creates a symbol collision with ZSTD_isError in our ZSTD code. This change relabels our implementation with a ZFS-specific symbol name, and undoes some macro-based micro-optimizations that conflict with the attempt to rename our internal-use version. Reviewed-by: Tony Hutter Reviewed-by: Brian Behlendorf Signed-off-by: Coleman Kane Closes #12819 --- module/zstd/include/zstd_compat_wrapper.h | 1 + module/zstd/lib/zstd.c | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/module/zstd/include/zstd_compat_wrapper.h b/module/zstd/include/zstd_compat_wrapper.h index 71adc78040..339713590f 100644 --- a/module/zstd/include/zstd_compat_wrapper.h +++ b/module/zstd/include/zstd_compat_wrapper.h @@ -406,6 +406,7 @@ zfs_ZSTD_insertAndFindFirstIndex_internal #define ZSTD_insertBlock zfs_ZSTD_insertBlock #define ZSTD_invalidateRepCodes zfs_ZSTD_invalidateRepCodes +#define ZSTD_isError zfs_ZSTD_isError #define ZSTD_isFrame zfs_ZSTD_isFrame #define ZSTD_ldm_adjustParameters zfs_ZSTD_ldm_adjustParameters #define ZSTD_ldm_blockCompress zfs_ZSTD_ldm_blockCompress diff --git a/module/zstd/lib/zstd.c b/module/zstd/lib/zstd.c index acdd4d9dac..2766e5b74f 100644 --- a/module/zstd/lib/zstd.c +++ b/module/zstd/lib/zstd.c @@ -6340,7 +6340,6 @@ extern "C" { /* ---- static assert (debug) --- */ #define ZSTD_STATIC_ASSERT(c) DEBUG_STATIC_ASSERT(c) -#define ZSTD_isError ERR_isError /* for inlining */ #define FSE_isError ERR_isError #define HUF_isError ERR_isError @@ -7347,7 +7346,6 @@ const char* ZSTD_versionString(void) { return ZSTD_VERSION_STRING; } /*-**************************************** * ZSTD Error Management ******************************************/ -#undef ZSTD_isError /* defined within zstd_internal.h */ /*! ZSTD_isError() : * tells if a return value is an error code * symbol is required for external callers */