cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

decompress.c (1766B)


      1// SPDX-License-Identifier: GPL-2.0
      2#define _LINUX_STRING_H_
      3
      4#include <linux/compiler.h>	/* for inline */
      5#include <linux/types.h>	/* for size_t */
      6#include <linux/stddef.h>	/* for NULL */
      7#include <linux/linkage.h>
      8#include <asm/string.h>
      9#include "misc.h"
     10
     11#define STATIC static
     12#define STATIC_RW_DATA	/* non-static please */
     13
     14/* Diagnostic functions */
     15#ifdef DEBUG
     16#  define Assert(cond,msg) {if(!(cond)) error(msg);}
     17#  define Trace(x) fprintf x
     18#  define Tracev(x) {if (verbose) fprintf x ;}
     19#  define Tracevv(x) {if (verbose>1) fprintf x ;}
     20#  define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
     21#  define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
     22#else
     23#  define Assert(cond,msg)
     24#  define Trace(x)
     25#  define Tracev(x)
     26#  define Tracevv(x)
     27#  define Tracec(c,x)
     28#  define Tracecv(c,x)
     29#endif
     30
     31/* Not needed, but used in some headers pulled in by decompressors */
     32extern char * strstr(const char * s1, const char *s2);
     33extern size_t strlen(const char *s);
     34extern int memcmp(const void *cs, const void *ct, size_t count);
     35extern char * strchrnul(const char *, int);
     36
     37#ifdef CONFIG_KERNEL_GZIP
     38#include "../../../../lib/decompress_inflate.c"
     39#endif
     40
     41#ifdef CONFIG_KERNEL_LZO
     42#include "../../../../lib/decompress_unlzo.c"
     43#endif
     44
     45#ifdef CONFIG_KERNEL_LZMA
     46#include "../../../../lib/decompress_unlzma.c"
     47#endif
     48
     49#ifdef CONFIG_KERNEL_XZ
     50/* Prevent KASAN override of string helpers in decompressor */
     51#undef memmove
     52#define memmove memmove
     53#undef memcpy
     54#define memcpy memcpy
     55#include "../../../../lib/decompress_unxz.c"
     56#endif
     57
     58#ifdef CONFIG_KERNEL_LZ4
     59#include "../../../../lib/decompress_unlz4.c"
     60#endif
     61
     62int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x))
     63{
     64	return __decompress(input, len, NULL, NULL, output, 0, NULL, error);
     65}