decompressor: provide missing prototypes

Message ID 20230517131936.936840-1-arnd@kernel.org
State New
Headers
Series decompressor: provide missing prototypes |

Commit Message

Arnd Bergmann May 17, 2023, 1:19 p.m. UTC
  From: Arnd Bergmann <arnd@arndb.de>

The entry points for the decompressor don't always have a prototype
included in the .c file:

lib/decompress_inflate.c:42:17: error: no previous prototype for '__gunzip' [-Werror=missing-prototypes]
lib/decompress_unxz.c:251:17: error: no previous prototype for 'unxz' [-Werror=missing-prototypes]
lib/decompress_unzstd.c:331:17: error: no previous prototype for 'unzstd' [-Werror=missing-prototypes]

include the correct headers for unxz and unzstd, and mark the
inflate function above as unconditionally 'static' to avoid
these warnings.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 lib/decompress_inflate.c | 2 +-
 lib/decompress_unxz.c    | 2 ++
 lib/decompress_unzstd.c  | 2 ++
 3 files changed, 5 insertions(+), 1 deletion(-)
  

Comments

Andrew Morton May 17, 2023, 8:49 p.m. UTC | #1
On Wed, 17 May 2023 15:19:31 +0200 Arnd Bergmann <arnd@kernel.org> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
> 
> The entry points for the decompressor don't always have a prototype
> included in the .c file:
> 
> lib/decompress_inflate.c:42:17: error: no previous prototype for '__gunzip' [-Werror=missing-prototypes]
> lib/decompress_unxz.c:251:17: error: no previous prototype for 'unxz' [-Werror=missing-prototypes]
> lib/decompress_unzstd.c:331:17: error: no previous prototype for 'unzstd' [-Werror=missing-prototypes]
> 
> include the correct headers for unxz and unzstd, and mark the
> inflate function above as unconditionally 'static' to avoid
> these warnings.

These are errors, not warnings?

Under what circumstances do they occur?

Shouldn't we cc:stable?  If so, do we have a suitable Fixes: target?
  
Arnd Bergmann May 18, 2023, 1:23 p.m. UTC | #2
On Wed, May 17, 2023, at 22:49, Andrew Morton wrote:
> On Wed, 17 May 2023 15:19:31 +0200 Arnd Bergmann <arnd@kernel.org> wrote:
>
>> From: Arnd Bergmann <arnd@arndb.de>
>> 
>> The entry points for the decompressor don't always have a prototype
>> included in the .c file:
>> 
>> lib/decompress_inflate.c:42:17: error: no previous prototype for '__gunzip' [-Werror=missing-prototypes]
>> lib/decompress_unxz.c:251:17: error: no previous prototype for 'unxz' [-Werror=missing-prototypes]
>> lib/decompress_unzstd.c:331:17: error: no previous prototype for 'unzstd' [-Werror=missing-prototypes]
>> 
>> include the correct headers for unxz and unzstd, and mark the
>> inflate function above as unconditionally 'static' to avoid
>> these warnings.
>
> These are errors, not warnings?
>
> Under what circumstances do they occur?

Running "make W=1" turns these errors on as warnings, enabling
CONFIG_WERROR turns all warnings into errors.

> Shouldn't we cc:stable?  If so, do we have a suitable Fixes: target?

I have sent 140 patches for these, there is probably no point in backporting
them all. My hope is that we can enable -Wmissing-prototypes by default
after these are all merged, but that patch would not get backported
either.

I meant to include a link with the explanations to

https://people.kernel.org/arnd/missing-prototype-warnings-in-the-kernel

in my series but didn't have that in the separate patches.

     Arnd
  

Patch

diff --git a/lib/decompress_inflate.c b/lib/decompress_inflate.c
index 6130c42b8e59..e19199f4a684 100644
--- a/lib/decompress_inflate.c
+++ b/lib/decompress_inflate.c
@@ -39,7 +39,7 @@  static long INIT nofill(void *buffer, unsigned long len)
 }
 
 /* Included from initramfs et al code */
-STATIC int INIT __gunzip(unsigned char *buf, long len,
+static int INIT __gunzip(unsigned char *buf, long len,
 		       long (*fill)(void*, unsigned long),
 		       long (*flush)(void*, unsigned long),
 		       unsigned char *out_buf, long out_len,
diff --git a/lib/decompress_unxz.c b/lib/decompress_unxz.c
index 9f4262ee33a5..353268b9f129 100644
--- a/lib/decompress_unxz.c
+++ b/lib/decompress_unxz.c
@@ -102,6 +102,8 @@ 
  */
 #ifdef STATIC
 #	define XZ_PREBOOT
+#else
+#include <linux/decompress/unxz.h>
 #endif
 #ifdef __KERNEL__
 #	include <linux/decompress/mm.h>
diff --git a/lib/decompress_unzstd.c b/lib/decompress_unzstd.c
index a512b99ae16a..bba2c0bb10cb 100644
--- a/lib/decompress_unzstd.c
+++ b/lib/decompress_unzstd.c
@@ -69,6 +69,8 @@ 
 # define UNZSTD_PREBOOT
 # include "xxhash.c"
 # include "zstd/decompress_sources.h"
+#else
+#include <linux/decompress/unzstd.h>
 #endif
 
 #include <linux/decompress/mm.h>