All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Nick Terrell <terrelln@fb.com>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
	Linux Memory Management List <linux-mm@kvack.org>
Subject: [linux-next:master 6210/13128] lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands
Date: Thu, 4 Nov 2021 21:24:32 +0800	[thread overview]
Message-ID: <202111042124.mRUZspCS-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 9480 bytes --]

INFO skip CC on NO_CC_LKML=Too large changeset: 39854 lines

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   8a796a1dfca2780321755033a74bca2bbe651680
commit: ecea7adad80d9d230df766345e5f8061792da00d [6210/13128] lib: zstd: Upgrade to latest upstream zstd version 1.4.10
config: riscv-buildonly-randconfig-r002-20211104 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 847a6807332b13f43704327c2d30103ec0347c77)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=ecea7adad80d9d230df766345e5f8061792da00d
        git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
        git fetch --no-tags linux-next master
        git checkout ecea7adad80d9d230df766345e5f8061792da00d
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=riscv 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
                           (BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/zstd/decompress/../common/compiler.h:127:38: note: expanded from macro 'LIKELY'
   #define LIKELY(x) (__builtin_expect((x), 1))
                                       ~^~
   lib/zstd/decompress/huf_decompress.c:890:25: note: cast one or both operands to int to silence this warning
>> lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
                           (BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/zstd/decompress/../common/compiler.h:127:38: note: expanded from macro 'LIKELY'
   #define LIKELY(x) (__builtin_expect((x), 1))
                                        ^
   lib/zstd/decompress/huf_decompress.c:890:25: note: cast one or both operands to int to silence this warning
>> lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
                           (BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/zstd/decompress/../common/compiler.h:127:38: note: expanded from macro 'LIKELY'
   #define LIKELY(x) (__builtin_expect((x), 1))
                                        ^
   lib/zstd/decompress/huf_decompress.c:890:25: note: cast one or both operands to int to silence this warning
   3 errors generated.


vim +890 lib/zstd/decompress/huf_decompress.c

   802	
   803	FORCE_INLINE_TEMPLATE size_t
   804	HUF_decompress4X2_usingDTable_internal_body(
   805	          void* dst,  size_t dstSize,
   806	    const void* cSrc, size_t cSrcSize,
   807	    const HUF_DTable* DTable)
   808	{
   809	    if (cSrcSize < 10) return ERROR(corruption_detected);   /* strict minimum : jump table + 1 byte per stream */
   810	
   811	    {   const BYTE* const istart = (const BYTE*) cSrc;
   812	        BYTE* const ostart = (BYTE*) dst;
   813	        BYTE* const oend = ostart + dstSize;
   814	        BYTE* const olimit = oend - (sizeof(size_t)-1);
   815	        const void* const dtPtr = DTable+1;
   816	        const HUF_DEltX2* const dt = (const HUF_DEltX2*)dtPtr;
   817	
   818	        /* Init */
   819	        BIT_DStream_t bitD1;
   820	        BIT_DStream_t bitD2;
   821	        BIT_DStream_t bitD3;
   822	        BIT_DStream_t bitD4;
   823	        size_t const length1 = MEM_readLE16(istart);
   824	        size_t const length2 = MEM_readLE16(istart+2);
   825	        size_t const length3 = MEM_readLE16(istart+4);
   826	        size_t const length4 = cSrcSize - (length1 + length2 + length3 + 6);
   827	        const BYTE* const istart1 = istart + 6;  /* jumpTable */
   828	        const BYTE* const istart2 = istart1 + length1;
   829	        const BYTE* const istart3 = istart2 + length2;
   830	        const BYTE* const istart4 = istart3 + length3;
   831	        size_t const segmentSize = (dstSize+3) / 4;
   832	        BYTE* const opStart2 = ostart + segmentSize;
   833	        BYTE* const opStart3 = opStart2 + segmentSize;
   834	        BYTE* const opStart4 = opStart3 + segmentSize;
   835	        BYTE* op1 = ostart;
   836	        BYTE* op2 = opStart2;
   837	        BYTE* op3 = opStart3;
   838	        BYTE* op4 = opStart4;
   839	        U32 endSignal = 1;
   840	        DTableDesc const dtd = HUF_getDTableDesc(DTable);
   841	        U32 const dtLog = dtd.tableLog;
   842	
   843	        if (length4 > cSrcSize) return ERROR(corruption_detected);   /* overflow */
   844	        CHECK_F( BIT_initDStream(&bitD1, istart1, length1) );
   845	        CHECK_F( BIT_initDStream(&bitD2, istart2, length2) );
   846	        CHECK_F( BIT_initDStream(&bitD3, istart3, length3) );
   847	        CHECK_F( BIT_initDStream(&bitD4, istart4, length4) );
   848	
   849	        /* 16-32 symbols per loop (4-8 symbols per stream) */
   850	        for ( ; (endSignal) & (op4 < olimit); ) {
   851	#if defined(__clang__) && (defined(__x86_64__) || defined(__i386__))
   852	            HUF_DECODE_SYMBOLX2_2(op1, &bitD1);
   853	            HUF_DECODE_SYMBOLX2_1(op1, &bitD1);
   854	            HUF_DECODE_SYMBOLX2_2(op1, &bitD1);
   855	            HUF_DECODE_SYMBOLX2_0(op1, &bitD1);
   856	            HUF_DECODE_SYMBOLX2_2(op2, &bitD2);
   857	            HUF_DECODE_SYMBOLX2_1(op2, &bitD2);
   858	            HUF_DECODE_SYMBOLX2_2(op2, &bitD2);
   859	            HUF_DECODE_SYMBOLX2_0(op2, &bitD2);
   860	            endSignal &= BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished;
   861	            endSignal &= BIT_reloadDStreamFast(&bitD2) == BIT_DStream_unfinished;
   862	            HUF_DECODE_SYMBOLX2_2(op3, &bitD3);
   863	            HUF_DECODE_SYMBOLX2_1(op3, &bitD3);
   864	            HUF_DECODE_SYMBOLX2_2(op3, &bitD3);
   865	            HUF_DECODE_SYMBOLX2_0(op3, &bitD3);
   866	            HUF_DECODE_SYMBOLX2_2(op4, &bitD4);
   867	            HUF_DECODE_SYMBOLX2_1(op4, &bitD4);
   868	            HUF_DECODE_SYMBOLX2_2(op4, &bitD4);
   869	            HUF_DECODE_SYMBOLX2_0(op4, &bitD4);
   870	            endSignal &= BIT_reloadDStreamFast(&bitD3) == BIT_DStream_unfinished;
   871	            endSignal &= BIT_reloadDStreamFast(&bitD4) == BIT_DStream_unfinished;
   872	#else
   873	            HUF_DECODE_SYMBOLX2_2(op1, &bitD1);
   874	            HUF_DECODE_SYMBOLX2_2(op2, &bitD2);
   875	            HUF_DECODE_SYMBOLX2_2(op3, &bitD3);
   876	            HUF_DECODE_SYMBOLX2_2(op4, &bitD4);
   877	            HUF_DECODE_SYMBOLX2_1(op1, &bitD1);
   878	            HUF_DECODE_SYMBOLX2_1(op2, &bitD2);
   879	            HUF_DECODE_SYMBOLX2_1(op3, &bitD3);
   880	            HUF_DECODE_SYMBOLX2_1(op4, &bitD4);
   881	            HUF_DECODE_SYMBOLX2_2(op1, &bitD1);
   882	            HUF_DECODE_SYMBOLX2_2(op2, &bitD2);
   883	            HUF_DECODE_SYMBOLX2_2(op3, &bitD3);
   884	            HUF_DECODE_SYMBOLX2_2(op4, &bitD4);
   885	            HUF_DECODE_SYMBOLX2_0(op1, &bitD1);
   886	            HUF_DECODE_SYMBOLX2_0(op2, &bitD2);
   887	            HUF_DECODE_SYMBOLX2_0(op3, &bitD3);
   888	            HUF_DECODE_SYMBOLX2_0(op4, &bitD4);
   889	            endSignal = (U32)LIKELY(
 > 890	                        (BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
   891	                      & (BIT_reloadDStreamFast(&bitD2) == BIT_DStream_unfinished)
   892	                      & (BIT_reloadDStreamFast(&bitD3) == BIT_DStream_unfinished)
   893	                      & (BIT_reloadDStreamFast(&bitD4) == BIT_DStream_unfinished));
   894	#endif
   895	        }
   896	
   897	        /* check corruption */
   898	        if (op1 > opStart2) return ERROR(corruption_detected);
   899	        if (op2 > opStart3) return ERROR(corruption_detected);
   900	        if (op3 > opStart4) return ERROR(corruption_detected);
   901	        /* note : op4 already verified within main loop */
   902	
   903	        /* finish bitStreams one by one */
   904	        HUF_decodeStreamX2(op1, &bitD1, opStart2, dt, dtLog);
   905	        HUF_decodeStreamX2(op2, &bitD2, opStart3, dt, dtLog);
   906	        HUF_decodeStreamX2(op3, &bitD3, opStart4, dt, dtLog);
   907	        HUF_decodeStreamX2(op4, &bitD4, oend,     dt, dtLog);
   908	
   909	        /* check */
   910	        { U32 const endCheck = BIT_endOfDStream(&bitD1) & BIT_endOfDStream(&bitD2) & BIT_endOfDStream(&bitD3) & BIT_endOfDStream(&bitD4);
   911	          if (!endCheck) return ERROR(corruption_detected); }
   912	
   913	        /* decoded size */
   914	        return dstSize;
   915	    }
   916	}
   917	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 27291 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [linux-next:master 6210/13128] lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands
Date: Thu, 04 Nov 2021 21:24:32 +0800	[thread overview]
Message-ID: <202111042124.mRUZspCS-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 9652 bytes --]

INFO skip CC on NO_CC_LKML=Too large changeset: 39854 lines

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   8a796a1dfca2780321755033a74bca2bbe651680
commit: ecea7adad80d9d230df766345e5f8061792da00d [6210/13128] lib: zstd: Upgrade to latest upstream zstd version 1.4.10
config: riscv-buildonly-randconfig-r002-20211104 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 847a6807332b13f43704327c2d30103ec0347c77)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=ecea7adad80d9d230df766345e5f8061792da00d
        git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
        git fetch --no-tags linux-next master
        git checkout ecea7adad80d9d230df766345e5f8061792da00d
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=riscv 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
                           (BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/zstd/decompress/../common/compiler.h:127:38: note: expanded from macro 'LIKELY'
   #define LIKELY(x) (__builtin_expect((x), 1))
                                       ~^~
   lib/zstd/decompress/huf_decompress.c:890:25: note: cast one or both operands to int to silence this warning
>> lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
                           (BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/zstd/decompress/../common/compiler.h:127:38: note: expanded from macro 'LIKELY'
   #define LIKELY(x) (__builtin_expect((x), 1))
                                        ^
   lib/zstd/decompress/huf_decompress.c:890:25: note: cast one or both operands to int to silence this warning
>> lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
                           (BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/zstd/decompress/../common/compiler.h:127:38: note: expanded from macro 'LIKELY'
   #define LIKELY(x) (__builtin_expect((x), 1))
                                        ^
   lib/zstd/decompress/huf_decompress.c:890:25: note: cast one or both operands to int to silence this warning
   3 errors generated.


vim +890 lib/zstd/decompress/huf_decompress.c

   802	
   803	FORCE_INLINE_TEMPLATE size_t
   804	HUF_decompress4X2_usingDTable_internal_body(
   805	          void* dst,  size_t dstSize,
   806	    const void* cSrc, size_t cSrcSize,
   807	    const HUF_DTable* DTable)
   808	{
   809	    if (cSrcSize < 10) return ERROR(corruption_detected);   /* strict minimum : jump table + 1 byte per stream */
   810	
   811	    {   const BYTE* const istart = (const BYTE*) cSrc;
   812	        BYTE* const ostart = (BYTE*) dst;
   813	        BYTE* const oend = ostart + dstSize;
   814	        BYTE* const olimit = oend - (sizeof(size_t)-1);
   815	        const void* const dtPtr = DTable+1;
   816	        const HUF_DEltX2* const dt = (const HUF_DEltX2*)dtPtr;
   817	
   818	        /* Init */
   819	        BIT_DStream_t bitD1;
   820	        BIT_DStream_t bitD2;
   821	        BIT_DStream_t bitD3;
   822	        BIT_DStream_t bitD4;
   823	        size_t const length1 = MEM_readLE16(istart);
   824	        size_t const length2 = MEM_readLE16(istart+2);
   825	        size_t const length3 = MEM_readLE16(istart+4);
   826	        size_t const length4 = cSrcSize - (length1 + length2 + length3 + 6);
   827	        const BYTE* const istart1 = istart + 6;  /* jumpTable */
   828	        const BYTE* const istart2 = istart1 + length1;
   829	        const BYTE* const istart3 = istart2 + length2;
   830	        const BYTE* const istart4 = istart3 + length3;
   831	        size_t const segmentSize = (dstSize+3) / 4;
   832	        BYTE* const opStart2 = ostart + segmentSize;
   833	        BYTE* const opStart3 = opStart2 + segmentSize;
   834	        BYTE* const opStart4 = opStart3 + segmentSize;
   835	        BYTE* op1 = ostart;
   836	        BYTE* op2 = opStart2;
   837	        BYTE* op3 = opStart3;
   838	        BYTE* op4 = opStart4;
   839	        U32 endSignal = 1;
   840	        DTableDesc const dtd = HUF_getDTableDesc(DTable);
   841	        U32 const dtLog = dtd.tableLog;
   842	
   843	        if (length4 > cSrcSize) return ERROR(corruption_detected);   /* overflow */
   844	        CHECK_F( BIT_initDStream(&bitD1, istart1, length1) );
   845	        CHECK_F( BIT_initDStream(&bitD2, istart2, length2) );
   846	        CHECK_F( BIT_initDStream(&bitD3, istart3, length3) );
   847	        CHECK_F( BIT_initDStream(&bitD4, istart4, length4) );
   848	
   849	        /* 16-32 symbols per loop (4-8 symbols per stream) */
   850	        for ( ; (endSignal) & (op4 < olimit); ) {
   851	#if defined(__clang__) && (defined(__x86_64__) || defined(__i386__))
   852	            HUF_DECODE_SYMBOLX2_2(op1, &bitD1);
   853	            HUF_DECODE_SYMBOLX2_1(op1, &bitD1);
   854	            HUF_DECODE_SYMBOLX2_2(op1, &bitD1);
   855	            HUF_DECODE_SYMBOLX2_0(op1, &bitD1);
   856	            HUF_DECODE_SYMBOLX2_2(op2, &bitD2);
   857	            HUF_DECODE_SYMBOLX2_1(op2, &bitD2);
   858	            HUF_DECODE_SYMBOLX2_2(op2, &bitD2);
   859	            HUF_DECODE_SYMBOLX2_0(op2, &bitD2);
   860	            endSignal &= BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished;
   861	            endSignal &= BIT_reloadDStreamFast(&bitD2) == BIT_DStream_unfinished;
   862	            HUF_DECODE_SYMBOLX2_2(op3, &bitD3);
   863	            HUF_DECODE_SYMBOLX2_1(op3, &bitD3);
   864	            HUF_DECODE_SYMBOLX2_2(op3, &bitD3);
   865	            HUF_DECODE_SYMBOLX2_0(op3, &bitD3);
   866	            HUF_DECODE_SYMBOLX2_2(op4, &bitD4);
   867	            HUF_DECODE_SYMBOLX2_1(op4, &bitD4);
   868	            HUF_DECODE_SYMBOLX2_2(op4, &bitD4);
   869	            HUF_DECODE_SYMBOLX2_0(op4, &bitD4);
   870	            endSignal &= BIT_reloadDStreamFast(&bitD3) == BIT_DStream_unfinished;
   871	            endSignal &= BIT_reloadDStreamFast(&bitD4) == BIT_DStream_unfinished;
   872	#else
   873	            HUF_DECODE_SYMBOLX2_2(op1, &bitD1);
   874	            HUF_DECODE_SYMBOLX2_2(op2, &bitD2);
   875	            HUF_DECODE_SYMBOLX2_2(op3, &bitD3);
   876	            HUF_DECODE_SYMBOLX2_2(op4, &bitD4);
   877	            HUF_DECODE_SYMBOLX2_1(op1, &bitD1);
   878	            HUF_DECODE_SYMBOLX2_1(op2, &bitD2);
   879	            HUF_DECODE_SYMBOLX2_1(op3, &bitD3);
   880	            HUF_DECODE_SYMBOLX2_1(op4, &bitD4);
   881	            HUF_DECODE_SYMBOLX2_2(op1, &bitD1);
   882	            HUF_DECODE_SYMBOLX2_2(op2, &bitD2);
   883	            HUF_DECODE_SYMBOLX2_2(op3, &bitD3);
   884	            HUF_DECODE_SYMBOLX2_2(op4, &bitD4);
   885	            HUF_DECODE_SYMBOLX2_0(op1, &bitD1);
   886	            HUF_DECODE_SYMBOLX2_0(op2, &bitD2);
   887	            HUF_DECODE_SYMBOLX2_0(op3, &bitD3);
   888	            HUF_DECODE_SYMBOLX2_0(op4, &bitD4);
   889	            endSignal = (U32)LIKELY(
 > 890	                        (BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
   891	                      & (BIT_reloadDStreamFast(&bitD2) == BIT_DStream_unfinished)
   892	                      & (BIT_reloadDStreamFast(&bitD3) == BIT_DStream_unfinished)
   893	                      & (BIT_reloadDStreamFast(&bitD4) == BIT_DStream_unfinished));
   894	#endif
   895	        }
   896	
   897	        /* check corruption */
   898	        if (op1 > opStart2) return ERROR(corruption_detected);
   899	        if (op2 > opStart3) return ERROR(corruption_detected);
   900	        if (op3 > opStart4) return ERROR(corruption_detected);
   901	        /* note : op4 already verified within main loop */
   902	
   903	        /* finish bitStreams one by one */
   904	        HUF_decodeStreamX2(op1, &bitD1, opStart2, dt, dtLog);
   905	        HUF_decodeStreamX2(op2, &bitD2, opStart3, dt, dtLog);
   906	        HUF_decodeStreamX2(op3, &bitD3, opStart4, dt, dtLog);
   907	        HUF_decodeStreamX2(op4, &bitD4, oend,     dt, dtLog);
   908	
   909	        /* check */
   910	        { U32 const endCheck = BIT_endOfDStream(&bitD1) & BIT_endOfDStream(&bitD2) & BIT_endOfDStream(&bitD3) & BIT_endOfDStream(&bitD4);
   911	          if (!endCheck) return ERROR(corruption_detected); }
   912	
   913	        /* decoded size */
   914	        return dstSize;
   915	    }
   916	}
   917	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 27291 bytes --]

             reply	other threads:[~2021-11-04 13:24 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-04 13:24 kernel test robot [this message]
2021-11-04 13:24 ` [linux-next:master 6210/13128] lib/zstd/decompress/huf_decompress.c:890:25: error: use of bitwise '&' with boolean operands kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202111042124.mRUZspCS-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-mm@kvack.org \
    --cc=llvm@lists.linux.dev \
    --cc=terrelln@fb.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.