All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: net/netfilter/nf_tables_api.c:8291:2: warning: Value stored to 'size' is never read [clang-analyzer-deadcode.DeadStores]
Date: Sun, 30 Jan 2022 22:38:17 +0800	[thread overview]
Message-ID: <202201302204.8UDi2PBh-lkp@intel.com> (raw)

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

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Pablo Neira Ayuso <pablo@netfilter.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   24f4db1f3a2725a6308105081d822b26889e1018
commit: 12e4ecfa244be2f117ef5304d2d866b65e70bff3 netfilter: nf_tables: add register tracking infrastructure
date:   3 weeks ago
:::::: branch date: 3 hours ago
:::::: commit date: 3 weeks ago
config: riscv-randconfig-c006-20220129 (https://download.01.org/0day-ci/archive/20220130/202201302204.8UDi2PBh-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 33b45ee44b1f32ffdbc995e6fec806271b4b3ba4)
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/torvalds/linux.git/commit/?id=12e4ecfa244be2f117ef5304d2d866b65e70bff3
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 12e4ecfa244be2f117ef5304d2d866b65e70bff3
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv clang-analyzer 

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


clang-analyzer warnings: (new ones prefixed by >>)
                              ^~~~~~~~~
   net/netfilter/nf_tables_api.c:8270:6: note: Assuming field 'blob_next' is null
           if (chain->blob_next || !nft_is_active_next(net, chain))
               ^~~~~~~~~~~~~~~~
   net/netfilter/nf_tables_api.c:8270:6: note: Left side of '||' is false
   net/netfilter/nf_tables_api.c:8270:27: note: Assuming the condition is true
           if (chain->blob_next || !nft_is_active_next(net, chain))
                                    ^
   include/net/netfilter/nf_tables.h:1419:3: note: expanded from macro 'nft_is_active_next'
           (((__obj)->genmask & nft_genmask_next(__net)) == 0)
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/netfilter/nf_tables_api.c:8270:2: note: Taking false branch
           if (chain->blob_next || !nft_is_active_next(net, chain))
           ^
   net/netfilter/nf_tables_api.c:8276:2: note: Loop condition is true.  Entering loop body
           list_for_each_entry_continue(rule, &chain->rules, list) {
           ^
   include/linux/list.h:666:2: note: expanded from macro 'list_for_each_entry_continue'
           for (pos = list_next_entry(pos, member);                        \
           ^
   net/netfilter/nf_tables_api.c:8277:7: note: Assuming the condition is true
                   if (nft_is_active_next(net, rule)) {
                       ^
   include/net/netfilter/nf_tables.h:1419:3: note: expanded from macro 'nft_is_active_next'
           (((__obj)->genmask & nft_genmask_next(__net)) == 0)
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/netfilter/nf_tables_api.c:8277:3: note: Taking true branch
                   if (nft_is_active_next(net, rule)) {
                   ^
   net/netfilter/nf_tables_api.c:8278:14: note: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage
                           data_size += sizeof(*prule) + rule->dlen;
                           ~~~~~~~~~ ^
   net/netfilter/nf_tables_api.c:8283:12: warning: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage [clang-analyzer-core.uninitialized.Assign]
           data_size += offsetof(struct nft_rule_dp, data);        /* last rule */
                     ^
   net/netfilter/nf_tables_api.c:8603:6: note: Assuming the condition is false
           if (list_empty(&nft_net->commit_list)) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/netfilter/nf_tables_api.c:8603:2: note: Taking false branch
           if (list_empty(&nft_net->commit_list)) {
           ^
   net/netfilter/nf_tables_api.c:8609:2: note: Taking false branch
           if (nf_tables_validate(net) < 0)
           ^
   net/netfilter/nf_tables_api.c:8613:6: note: Assuming 'err' is >= 0
           if (err < 0)
               ^~~~~~~
   net/netfilter/nf_tables_api.c:8613:2: note: Taking false branch
           if (err < 0)
           ^
   net/netfilter/nf_tables_api.c:8617:2: note: Loop condition is true.  Entering loop body
           list_for_each_entry_safe(trans, next, &nft_net->commit_list, list) {
           ^
   include/linux/list.h:717:2: note: expanded from macro 'list_for_each_entry_safe'
           for (pos = list_first_entry(head, typeof(*pos), member),        \
           ^
   net/netfilter/nf_tables_api.c:8621:7: note: 'ret' is 0
                   if (ret) {
                       ^~~
   net/netfilter/nf_tables_api.c:8621:3: note: Taking false branch
                   if (ret) {
                   ^
   net/netfilter/nf_tables_api.c:8626:7: note: Assuming field 'msg_type' is not equal to NFT_MSG_NEWRULE
                   if (trans->msg_type == NFT_MSG_NEWRULE ||
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/netfilter/nf_tables_api.c:8626:7: note: Left side of '||' is false
   net/netfilter/nf_tables_api.c:8627:7: note: Assuming field 'msg_type' is equal to NFT_MSG_DELRULE
                       trans->msg_type == NFT_MSG_DELRULE) {
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/netfilter/nf_tables_api.c:8626:3: note: Taking true branch
                   if (trans->msg_type == NFT_MSG_NEWRULE ||
                   ^
   net/netfilter/nf_tables_api.c:8630:10: note: Calling 'nf_tables_commit_chain_prepare'
                           ret = nf_tables_commit_chain_prepare(net, chain);
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/netfilter/nf_tables_api.c:8263:21: note: 'data_size' declared without an initial value
           unsigned int size, data_size;
                              ^~~~~~~~~
   net/netfilter/nf_tables_api.c:8270:6: note: Assuming field 'blob_next' is null
           if (chain->blob_next || !nft_is_active_next(net, chain))
               ^~~~~~~~~~~~~~~~
   net/netfilter/nf_tables_api.c:8270:6: note: Left side of '||' is false
   net/netfilter/nf_tables_api.c:8270:27: note: Assuming the condition is true
           if (chain->blob_next || !nft_is_active_next(net, chain))
                                    ^
   include/net/netfilter/nf_tables.h:1419:3: note: expanded from macro 'nft_is_active_next'
           (((__obj)->genmask & nft_genmask_next(__net)) == 0)
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/netfilter/nf_tables_api.c:8270:2: note: Taking false branch
           if (chain->blob_next || !nft_is_active_next(net, chain))
           ^
   net/netfilter/nf_tables_api.c:8276:2: note: Loop condition is false. Execution continues on line 8283
           list_for_each_entry_continue(rule, &chain->rules, list) {
           ^
   include/linux/list.h:666:2: note: expanded from macro 'list_for_each_entry_continue'
           for (pos = list_next_entry(pos, member);                        \
           ^
   net/netfilter/nf_tables_api.c:8283:12: note: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage
           data_size += offsetof(struct nft_rule_dp, data);        /* last rule */
           ~~~~~~~~~ ^
>> net/netfilter/nf_tables_api.c:8291:2: warning: Value stored to 'size' is never read [clang-analyzer-deadcode.DeadStores]
           size = 0;
           ^      ~
   net/netfilter/nf_tables_api.c:8291:2: note: Value stored to 'size' is never read
           size = 0;
           ^      ~
   net/netfilter/nf_tables_api.c:8327:3: warning: Value stored to 'size' is never read [clang-analyzer-deadcode.DeadStores]
                   size = 0;
                   ^      ~
   net/netfilter/nf_tables_api.c:8327:3: note: Value stored to 'size' is never read
                   size = 0;
                   ^      ~
   net/netfilter/nf_tables_api.c:9019:2: warning: Use of memory after it is freed [clang-analyzer-unix.Malloc]
           list_for_each_entry_safe_reverse(trans, next,
           ^
   include/linux/list.h:765:7: note: expanded from macro 'list_for_each_entry_safe_reverse'
                   n = list_prev_entry(pos, member);                       \
                       ^
   include/linux/list.h:565:2: note: expanded from macro 'list_prev_entry'
           list_entry((pos)->member.prev, typeof(*(pos)), member)
           ^
   include/linux/list.h:513:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^
   include/linux/container_of.h:18:25: note: expanded from macro 'container_of'
           void *__mptr = (void *)(ptr);                                   \
                                  ^
   net/netfilter/nf_tables_api.c:9791:6: note: Assuming the condition is true
           if (!list_empty(&nft_net->commit_list))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/netfilter/nf_tables_api.c:9791:2: note: Taking true branch
           if (!list_empty(&nft_net->commit_list))
           ^
   net/netfilter/nf_tables_api.c:9792:3: note: Calling '__nf_tables_abort'
                   __nf_tables_abort(net, NFNL_ABORT_NONE);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/netfilter/nf_tables_api.c:8877:6: note: 'action' is not equal to NFNL_ABORT_VALIDATE
           if (action == NFNL_ABORT_VALIDATE &&
               ^~~~~~
   net/netfilter/nf_tables_api.c:8877:36: note: Left side of '&&' is false
           if (action == NFNL_ABORT_VALIDATE &&
                                             ^
   net/netfilter/nf_tables_api.c:8881:2: note: Loop condition is true.  Entering loop body
           list_for_each_entry_safe_reverse(trans, next, &nft_net->commit_list,
           ^
   include/linux/list.h:764:2: note: expanded from macro 'list_for_each_entry_safe_reverse'
           for (pos = list_last_entry(head, typeof(*pos), member),         \
           ^
   net/netfilter/nf_tables_api.c:8883:3: note: Control jumps to 'case NFT_MSG_DELFLOWTABLE:'  at line 9004
                   switch (trans->msg_type) {
                   ^
   net/netfilter/nf_tables_api.c:9005:8: note: Assuming field 'update' is false
                           if (nft_trans_flowtable_update(trans)) {
                               ^
   include/net/netfilter/nf_tables.h:1594:2: note: expanded from macro 'nft_trans_flowtable_update'
           (((struct nft_trans_flowtable *)trans->data)->update)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/netfilter/nf_tables_api.c:9005:4: note: Taking false branch
                           if (nft_trans_flowtable_update(trans)) {
                           ^
   net/netfilter/nf_tables_api.c:9012:4: note: Calling 'nft_trans_destroy'
                           nft_trans_destroy(trans);
                           ^~~~~~~~~~~~~~~~~~~~~~~~
   net/netfilter/nf_tables_api.c:171:2: note: Memory is released
           kfree(trans);
           ^~~~~~~~~~~~
   net/netfilter/nf_tables_api.c:9012:4: note: Returning; memory was released via 1st parameter
                           nft_trans_destroy(trans);
                           ^~~~~~~~~~~~~~~~~~~~~~~~
   net/netfilter/nf_tables_api.c:9013:4: note:  Execution continues on line 8881
                           break;
                           ^
   net/netfilter/nf_tables_api.c:8881:2: note: Loop condition is false. Execution continues on line 9017
           list_for_each_entry_safe_reverse(trans, next, &nft_net->commit_list,
           ^
   include/linux/list.h:764:2: note: expanded from macro 'list_for_each_entry_safe_reverse'
           for (pos = list_last_entry(head, typeof(*pos), member),         \
           ^
   net/netfilter/nf_tables_api.c:9019:2: note: Use of memory after it is freed
           list_for_each_entry_safe_reverse(trans, next,
           ^
   include/linux/list.h:765:7: note: expanded from macro 'list_for_each_entry_safe_reverse'
                   n = list_prev_entry(pos, member);                       \
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:565:2: note: expanded from macro 'list_prev_entry'
           list_entry((pos)->member.prev, typeof(*(pos)), member)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:513:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/container_of.h:18:25: note: expanded from macro 'container_of'
           void *__mptr = (void *)(ptr);                                   \
                                  ^~~~~
   Suppressed 6 warnings (4 in non-user code, 2 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   8 warnings generated.
   net/bluetooth/hci_event.c:1144:37: warning: Value stored to 'rp' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct hci_rp_read_local_oob_data *rp = (void *) skb->data;
                                              ^~   ~~~~~~~~~~~~~~~~~~
   net/bluetooth/hci_event.c:1144:37: note: Value stored to 'rp' during its initialization is never read
           struct hci_rp_read_local_oob_data *rp = (void *) skb->data;

vim +/size +8291 net/netfilter/nf_tables_api.c

ffe8923f109b7e Florian Westphal  2020-07-24  8258  
0cbc06b3faba75 Florian Westphal  2018-05-25  8259  static int nf_tables_commit_chain_prepare(struct net *net, struct nft_chain *chain)
0cbc06b3faba75 Florian Westphal  2018-05-25  8260  {
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8261  	const struct nft_expr *expr, *last;
12e4ecfa244be2 Pablo Neira Ayuso 2022-01-09  8262  	struct nft_regs_track track = {};
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8263  	unsigned int size, data_size;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8264  	void *data, *data_boundary;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8265  	struct nft_rule_dp *prule;
0cbc06b3faba75 Florian Westphal  2018-05-25  8266  	struct nft_rule *rule;
0cbc06b3faba75 Florian Westphal  2018-05-25  8267  	int i;
0cbc06b3faba75 Florian Westphal  2018-05-25  8268  
0cbc06b3faba75 Florian Westphal  2018-05-25  8269  	/* already handled or inactive chain? */
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8270  	if (chain->blob_next || !nft_is_active_next(net, chain))
0cbc06b3faba75 Florian Westphal  2018-05-25  8271  		return 0;
0cbc06b3faba75 Florian Westphal  2018-05-25  8272  
0cbc06b3faba75 Florian Westphal  2018-05-25  8273  	rule = list_entry(&chain->rules, struct nft_rule, list);
0cbc06b3faba75 Florian Westphal  2018-05-25  8274  	i = 0;
0cbc06b3faba75 Florian Westphal  2018-05-25  8275  
0cbc06b3faba75 Florian Westphal  2018-05-25 @8276  	list_for_each_entry_continue(rule, &chain->rules, list) {
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8277  		if (nft_is_active_next(net, rule)) {
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8278  			data_size += sizeof(*prule) + rule->dlen;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8279  			if (data_size > INT_MAX)
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8280  				return -ENOMEM;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8281  		}
0cbc06b3faba75 Florian Westphal  2018-05-25  8282  	}
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8283  	data_size += offsetof(struct nft_rule_dp, data);	/* last rule */
0cbc06b3faba75 Florian Westphal  2018-05-25  8284  
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8285  	chain->blob_next = nf_tables_chain_alloc_rules(data_size);
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8286  	if (!chain->blob_next)
0cbc06b3faba75 Florian Westphal  2018-05-25  8287  		return -ENOMEM;
0cbc06b3faba75 Florian Westphal  2018-05-25  8288  
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8289  	data = (void *)chain->blob_next->data;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8290  	data_boundary = data + data_size;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09 @8291  	size = 0;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8292  
0cbc06b3faba75 Florian Westphal  2018-05-25  8293  	list_for_each_entry_continue(rule, &chain->rules, list) {
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8294  		if (!nft_is_active_next(net, rule))
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8295  			continue;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8296  
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8297  		prule = (struct nft_rule_dp *)data;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8298  		data += offsetof(struct nft_rule_dp, data);
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8299  		if (WARN_ON_ONCE(data > data_boundary))
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8300  			return -ENOMEM;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8301  
12e4ecfa244be2 Pablo Neira Ayuso 2022-01-09  8302  		size = 0;
12e4ecfa244be2 Pablo Neira Ayuso 2022-01-09  8303  		track.last = last;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8304  		nft_rule_for_each_expr(expr, last, rule) {
12e4ecfa244be2 Pablo Neira Ayuso 2022-01-09  8305  			track.cur = expr;
12e4ecfa244be2 Pablo Neira Ayuso 2022-01-09  8306  
12e4ecfa244be2 Pablo Neira Ayuso 2022-01-09  8307  			if (expr->ops->reduce &&
12e4ecfa244be2 Pablo Neira Ayuso 2022-01-09  8308  			    expr->ops->reduce(&track, expr)) {
12e4ecfa244be2 Pablo Neira Ayuso 2022-01-09  8309  				expr = track.cur;
12e4ecfa244be2 Pablo Neira Ayuso 2022-01-09  8310  				continue;
12e4ecfa244be2 Pablo Neira Ayuso 2022-01-09  8311  			}
12e4ecfa244be2 Pablo Neira Ayuso 2022-01-09  8312  
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8313  			if (WARN_ON_ONCE(data + expr->ops->size > data_boundary))
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8314  				return -ENOMEM;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8315  
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8316  			memcpy(data + size, expr, expr->ops->size);
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8317  			size += expr->ops->size;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8318  		}
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8319  		if (WARN_ON_ONCE(size >= 1 << 12))
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8320  			return -ENOMEM;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8321  
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8322  		prule->handle = rule->handle;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8323  		prule->dlen = size;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8324  		prule->is_last = 0;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8325  
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8326  		data += size;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8327  		size = 0;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8328  		chain->blob_next->size += (unsigned long)(data - (void *)prule);
0cbc06b3faba75 Florian Westphal  2018-05-25  8329  	}
0cbc06b3faba75 Florian Westphal  2018-05-25  8330  
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8331  	prule = (struct nft_rule_dp *)data;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8332  	data += offsetof(struct nft_rule_dp, data);
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8333  	if (WARN_ON_ONCE(data > data_boundary))
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8334  		return -ENOMEM;
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8335  
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8336  	nft_last_rule(chain->blob_next, prule);
2c865a8a28a10e Pablo Neira Ayuso 2022-01-09  8337  
0cbc06b3faba75 Florian Westphal  2018-05-25  8338  	return 0;
0cbc06b3faba75 Florian Westphal  2018-05-25  8339  }
0cbc06b3faba75 Florian Westphal  2018-05-25  8340  

:::::: The code at line 8291 was first introduced by commit
:::::: 2c865a8a28a10e9800a3dd07ca339d24563e3d65 netfilter: nf_tables: add rule blob layout

:::::: TO: Pablo Neira Ayuso <pablo@netfilter.org>
:::::: CC: Pablo Neira Ayuso <pablo@netfilter.org>

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

                 reply	other threads:[~2022-01-30 14:38 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=202201302204.8UDi2PBh-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /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.