lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 19 Sep 2022 22:04:08 +1000
From:   Nicholas Piggin <npiggin@...il.com>
To:     Nick Terrell <terrelln@...com>
Cc:     Nicholas Piggin <npiggin@...il.com>,
        Masahiro Yamada <masahiroy@...nel.org>,
        linux-kernel@...r.kernel.org, linux-kbuild@...r.kernel.org
Subject: [PATCH] lib: zstd: build common files separately for compress and decompress

It is possible for compress to be built as a module and decompress to
be built in, and kernel and module C flags can be different. This can
cause module built code to be linked into the kernel or vice versa.

Use symbolic links from the common code to compression and decompression
module directories to avoid this problem.

Signed-off-by: Nicholas Piggin <npiggin@...il.com>
---
I'm not sure if this is the preferred way to fix it. I hadn't
thought about this problem before but now I notice it in zstd
it seems like it could be a pitfall in other parts of the kernel
as well. Is there a better way to solve it? Or some way to
automatically detect the conflict and fail the build rather than
silently succeed?

Thanks,
Nick

 lib/zstd/Makefile                           | 20 ++++++++++----------
 lib/zstd/compress/common/bitstream.h        |  1 +
 lib/zstd/compress/common/compiler.h         |  1 +
 lib/zstd/compress/common/cpu.h              |  1 +
 lib/zstd/compress/common/debug.c            |  1 +
 lib/zstd/compress/common/debug.h            |  1 +
 lib/zstd/compress/common/entropy_common.c   |  1 +
 lib/zstd/compress/common/error_private.c    |  1 +
 lib/zstd/compress/common/error_private.h    |  1 +
 lib/zstd/compress/common/fse.h              |  1 +
 lib/zstd/compress/common/fse_decompress.c   |  1 +
 lib/zstd/compress/common/huf.h              |  1 +
 lib/zstd/compress/common/mem.h              |  1 +
 lib/zstd/compress/common/zstd_common.c      |  1 +
 lib/zstd/compress/common/zstd_deps.h        |  1 +
 lib/zstd/compress/common/zstd_internal.h    |  1 +
 lib/zstd/decompress/common/bitstream.h      |  1 +
 lib/zstd/decompress/common/compiler.h       |  1 +
 lib/zstd/decompress/common/cpu.h            |  1 +
 lib/zstd/decompress/common/debug.c          |  1 +
 lib/zstd/decompress/common/debug.h          |  1 +
 lib/zstd/decompress/common/entropy_common.c |  1 +
 lib/zstd/decompress/common/error_private.c  |  1 +
 lib/zstd/decompress/common/error_private.h  |  1 +
 lib/zstd/decompress/common/fse.h            |  1 +
 lib/zstd/decompress/common/fse_decompress.c |  1 +
 lib/zstd/decompress/common/huf.h            |  1 +
 lib/zstd/decompress/common/mem.h            |  1 +
 lib/zstd/decompress/common/zstd_common.c    |  1 +
 lib/zstd/decompress/common/zstd_deps.h      |  1 +
 lib/zstd/decompress/common/zstd_internal.h  |  1 +
 31 files changed, 40 insertions(+), 10 deletions(-)
 create mode 120000 lib/zstd/compress/common/bitstream.h
 create mode 120000 lib/zstd/compress/common/compiler.h
 create mode 120000 lib/zstd/compress/common/cpu.h
 create mode 120000 lib/zstd/compress/common/debug.c
 create mode 120000 lib/zstd/compress/common/debug.h
 create mode 120000 lib/zstd/compress/common/entropy_common.c
 create mode 120000 lib/zstd/compress/common/error_private.c
 create mode 120000 lib/zstd/compress/common/error_private.h
 create mode 120000 lib/zstd/compress/common/fse.h
 create mode 120000 lib/zstd/compress/common/fse_decompress.c
 create mode 120000 lib/zstd/compress/common/huf.h
 create mode 120000 lib/zstd/compress/common/mem.h
 create mode 120000 lib/zstd/compress/common/zstd_common.c
 create mode 120000 lib/zstd/compress/common/zstd_deps.h
 create mode 120000 lib/zstd/compress/common/zstd_internal.h
 create mode 120000 lib/zstd/decompress/common/bitstream.h
 create mode 120000 lib/zstd/decompress/common/compiler.h
 create mode 120000 lib/zstd/decompress/common/cpu.h
 create mode 120000 lib/zstd/decompress/common/debug.c
 create mode 120000 lib/zstd/decompress/common/debug.h
 create mode 120000 lib/zstd/decompress/common/entropy_common.c
 create mode 120000 lib/zstd/decompress/common/error_private.c
 create mode 120000 lib/zstd/decompress/common/error_private.h
 create mode 120000 lib/zstd/decompress/common/fse.h
 create mode 120000 lib/zstd/decompress/common/fse_decompress.c
 create mode 120000 lib/zstd/decompress/common/huf.h
 create mode 120000 lib/zstd/decompress/common/mem.h
 create mode 120000 lib/zstd/decompress/common/zstd_common.c
 create mode 120000 lib/zstd/decompress/common/zstd_deps.h
 create mode 120000 lib/zstd/decompress/common/zstd_internal.h

diff --git a/lib/zstd/Makefile b/lib/zstd/Makefile
index fc45339fc3a3..6d785268f8c3 100644
--- a/lib/zstd/Makefile
+++ b/lib/zstd/Makefile
@@ -13,11 +13,11 @@ obj-$(CONFIG_ZSTD_DECOMPRESS) += zstd_decompress.o
 
 zstd_compress-y := \
 		zstd_compress_module.o \
-		common/debug.o \
-		common/entropy_common.o \
-		common/error_private.o \
-		common/fse_decompress.o \
-		common/zstd_common.o \
+		compress/common/debug.o \
+		compress/common/entropy_common.o \
+		compress/common/error_private.o \
+		compress/common/fse_decompress.o \
+		compress/common/zstd_common.o \
 		compress/fse_compress.o \
 		compress/hist.o \
 		compress/huf_compress.o \
@@ -33,11 +33,11 @@ zstd_compress-y := \
 
 zstd_decompress-y := \
 		zstd_decompress_module.o \
-		common/debug.o \
-		common/entropy_common.o \
-		common/error_private.o \
-		common/fse_decompress.o \
-		common/zstd_common.o \
+		decompress/common/debug.o \
+		decompress/common/entropy_common.o \
+		decompress/common/error_private.o \
+		decompress/common/fse_decompress.o \
+		decompress/common/zstd_common.o \
 		decompress/huf_decompress.o \
 		decompress/zstd_ddict.o \
 		decompress/zstd_decompress.o \
diff --git a/lib/zstd/compress/common/bitstream.h b/lib/zstd/compress/common/bitstream.h
new file mode 120000
index 000000000000..de97b72f47ce
--- /dev/null
+++ b/lib/zstd/compress/common/bitstream.h
@@ -0,0 +1 @@
+../../common/bitstream.h
\ No newline at end of file
diff --git a/lib/zstd/compress/common/compiler.h b/lib/zstd/compress/common/compiler.h
new file mode 120000
index 000000000000..a316286adf05
--- /dev/null
+++ b/lib/zstd/compress/common/compiler.h
@@ -0,0 +1 @@
+../../common/compiler.h
\ No newline at end of file
diff --git a/lib/zstd/compress/common/cpu.h b/lib/zstd/compress/common/cpu.h
new file mode 120000
index 000000000000..35282be494a2
--- /dev/null
+++ b/lib/zstd/compress/common/cpu.h
@@ -0,0 +1 @@
+../../common/cpu.h
\ No newline at end of file
diff --git a/lib/zstd/compress/common/debug.c b/lib/zstd/compress/common/debug.c
new file mode 120000
index 000000000000..5d7b272026d6
--- /dev/null
+++ b/lib/zstd/compress/common/debug.c
@@ -0,0 +1 @@
+../../common/debug.c
\ No newline at end of file
diff --git a/lib/zstd/compress/common/debug.h b/lib/zstd/compress/common/debug.h
new file mode 120000
index 000000000000..15c1e1cd5c95
--- /dev/null
+++ b/lib/zstd/compress/common/debug.h
@@ -0,0 +1 @@
+../../common/debug.h
\ No newline at end of file
diff --git a/lib/zstd/compress/common/entropy_common.c b/lib/zstd/compress/common/entropy_common.c
new file mode 120000
index 000000000000..221119c32817
--- /dev/null
+++ b/lib/zstd/compress/common/entropy_common.c
@@ -0,0 +1 @@
+../../common/entropy_common.c
\ No newline at end of file
diff --git a/lib/zstd/compress/common/error_private.c b/lib/zstd/compress/common/error_private.c
new file mode 120000
index 000000000000..f87d3cf6851f
--- /dev/null
+++ b/lib/zstd/compress/common/error_private.c
@@ -0,0 +1 @@
+../../common/error_private.c
\ No newline at end of file
diff --git a/lib/zstd/compress/common/error_private.h b/lib/zstd/compress/common/error_private.h
new file mode 120000
index 000000000000..30d469222942
--- /dev/null
+++ b/lib/zstd/compress/common/error_private.h
@@ -0,0 +1 @@
+../../common/error_private.h
\ No newline at end of file
diff --git a/lib/zstd/compress/common/fse.h b/lib/zstd/compress/common/fse.h
new file mode 120000
index 000000000000..29c44ebdd2da
--- /dev/null
+++ b/lib/zstd/compress/common/fse.h
@@ -0,0 +1 @@
+../../common/fse.h
\ No newline at end of file
diff --git a/lib/zstd/compress/common/fse_decompress.c b/lib/zstd/compress/common/fse_decompress.c
new file mode 120000
index 000000000000..658e375541f1
--- /dev/null
+++ b/lib/zstd/compress/common/fse_decompress.c
@@ -0,0 +1 @@
+../../common/fse_decompress.c
\ No newline at end of file
diff --git a/lib/zstd/compress/common/huf.h b/lib/zstd/compress/common/huf.h
new file mode 120000
index 000000000000..7c9142232da6
--- /dev/null
+++ b/lib/zstd/compress/common/huf.h
@@ -0,0 +1 @@
+../../common/huf.h
\ No newline at end of file
diff --git a/lib/zstd/compress/common/mem.h b/lib/zstd/compress/common/mem.h
new file mode 120000
index 000000000000..0d9921eb1ca4
--- /dev/null
+++ b/lib/zstd/compress/common/mem.h
@@ -0,0 +1 @@
+../../common/mem.h
\ No newline at end of file
diff --git a/lib/zstd/compress/common/zstd_common.c b/lib/zstd/compress/common/zstd_common.c
new file mode 120000
index 000000000000..5a7475cd3b87
--- /dev/null
+++ b/lib/zstd/compress/common/zstd_common.c
@@ -0,0 +1 @@
+../../common/zstd_common.c
\ No newline at end of file
diff --git a/lib/zstd/compress/common/zstd_deps.h b/lib/zstd/compress/common/zstd_deps.h
new file mode 120000
index 000000000000..21b3a7e967da
--- /dev/null
+++ b/lib/zstd/compress/common/zstd_deps.h
@@ -0,0 +1 @@
+../../common/zstd_deps.h
\ No newline at end of file
diff --git a/lib/zstd/compress/common/zstd_internal.h b/lib/zstd/compress/common/zstd_internal.h
new file mode 120000
index 000000000000..3bf2b94e718f
--- /dev/null
+++ b/lib/zstd/compress/common/zstd_internal.h
@@ -0,0 +1 @@
+../../common/zstd_internal.h
\ No newline at end of file
diff --git a/lib/zstd/decompress/common/bitstream.h b/lib/zstd/decompress/common/bitstream.h
new file mode 120000
index 000000000000..de97b72f47ce
--- /dev/null
+++ b/lib/zstd/decompress/common/bitstream.h
@@ -0,0 +1 @@
+../../common/bitstream.h
\ No newline at end of file
diff --git a/lib/zstd/decompress/common/compiler.h b/lib/zstd/decompress/common/compiler.h
new file mode 120000
index 000000000000..a316286adf05
--- /dev/null
+++ b/lib/zstd/decompress/common/compiler.h
@@ -0,0 +1 @@
+../../common/compiler.h
\ No newline at end of file
diff --git a/lib/zstd/decompress/common/cpu.h b/lib/zstd/decompress/common/cpu.h
new file mode 120000
index 000000000000..35282be494a2
--- /dev/null
+++ b/lib/zstd/decompress/common/cpu.h
@@ -0,0 +1 @@
+../../common/cpu.h
\ No newline at end of file
diff --git a/lib/zstd/decompress/common/debug.c b/lib/zstd/decompress/common/debug.c
new file mode 120000
index 000000000000..5d7b272026d6
--- /dev/null
+++ b/lib/zstd/decompress/common/debug.c
@@ -0,0 +1 @@
+../../common/debug.c
\ No newline at end of file
diff --git a/lib/zstd/decompress/common/debug.h b/lib/zstd/decompress/common/debug.h
new file mode 120000
index 000000000000..15c1e1cd5c95
--- /dev/null
+++ b/lib/zstd/decompress/common/debug.h
@@ -0,0 +1 @@
+../../common/debug.h
\ No newline at end of file
diff --git a/lib/zstd/decompress/common/entropy_common.c b/lib/zstd/decompress/common/entropy_common.c
new file mode 120000
index 000000000000..221119c32817
--- /dev/null
+++ b/lib/zstd/decompress/common/entropy_common.c
@@ -0,0 +1 @@
+../../common/entropy_common.c
\ No newline at end of file
diff --git a/lib/zstd/decompress/common/error_private.c b/lib/zstd/decompress/common/error_private.c
new file mode 120000
index 000000000000..f87d3cf6851f
--- /dev/null
+++ b/lib/zstd/decompress/common/error_private.c
@@ -0,0 +1 @@
+../../common/error_private.c
\ No newline at end of file
diff --git a/lib/zstd/decompress/common/error_private.h b/lib/zstd/decompress/common/error_private.h
new file mode 120000
index 000000000000..30d469222942
--- /dev/null
+++ b/lib/zstd/decompress/common/error_private.h
@@ -0,0 +1 @@
+../../common/error_private.h
\ No newline at end of file
diff --git a/lib/zstd/decompress/common/fse.h b/lib/zstd/decompress/common/fse.h
new file mode 120000
index 000000000000..29c44ebdd2da
--- /dev/null
+++ b/lib/zstd/decompress/common/fse.h
@@ -0,0 +1 @@
+../../common/fse.h
\ No newline at end of file
diff --git a/lib/zstd/decompress/common/fse_decompress.c b/lib/zstd/decompress/common/fse_decompress.c
new file mode 120000
index 000000000000..658e375541f1
--- /dev/null
+++ b/lib/zstd/decompress/common/fse_decompress.c
@@ -0,0 +1 @@
+../../common/fse_decompress.c
\ No newline at end of file
diff --git a/lib/zstd/decompress/common/huf.h b/lib/zstd/decompress/common/huf.h
new file mode 120000
index 000000000000..7c9142232da6
--- /dev/null
+++ b/lib/zstd/decompress/common/huf.h
@@ -0,0 +1 @@
+../../common/huf.h
\ No newline at end of file
diff --git a/lib/zstd/decompress/common/mem.h b/lib/zstd/decompress/common/mem.h
new file mode 120000
index 000000000000..0d9921eb1ca4
--- /dev/null
+++ b/lib/zstd/decompress/common/mem.h
@@ -0,0 +1 @@
+../../common/mem.h
\ No newline at end of file
diff --git a/lib/zstd/decompress/common/zstd_common.c b/lib/zstd/decompress/common/zstd_common.c
new file mode 120000
index 000000000000..5a7475cd3b87
--- /dev/null
+++ b/lib/zstd/decompress/common/zstd_common.c
@@ -0,0 +1 @@
+../../common/zstd_common.c
\ No newline at end of file
diff --git a/lib/zstd/decompress/common/zstd_deps.h b/lib/zstd/decompress/common/zstd_deps.h
new file mode 120000
index 000000000000..21b3a7e967da
--- /dev/null
+++ b/lib/zstd/decompress/common/zstd_deps.h
@@ -0,0 +1 @@
+../../common/zstd_deps.h
\ No newline at end of file
diff --git a/lib/zstd/decompress/common/zstd_internal.h b/lib/zstd/decompress/common/zstd_internal.h
new file mode 120000
index 000000000000..3bf2b94e718f
--- /dev/null
+++ b/lib/zstd/decompress/common/zstd_internal.h
@@ -0,0 +1 @@
+../../common/zstd_internal.h
\ No newline at end of file
-- 
2.37.2

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ