All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/net/ethernet/intel/ice/ice_flow.c:663 ice_flow_xtract_fld() error: testing array offset 'sib' after use.
Date: Wed, 23 Feb 2022 02:55:04 +0800	[thread overview]
Message-ID: <202202230223.ZeDCP365-lkp@intel.com> (raw)

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

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Qi Zhang <qi.z.zhang@intel.com>
CC: Tony Nguyen <anthony.l.nguyen@intel.com>
CC: Dan Nowlin <dan.nowlin@intel.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   038101e6b2cd5c55f888f85db42ea2ad3aecb4b6
commit: b199dddbd399536d5470e10e6bfd7d0e1b5fb71a ice: Support non word aligned input set field
date:   11 months ago
:::::: branch date: 26 hours ago
:::::: commit date: 11 months ago
config: ia64-randconfig-m031-20220220 (https://download.01.org/0day-ci/archive/20220223/202202230223.ZeDCP365-lkp(a)intel.com/config)
compiler: ia64-linux-gcc (GCC) 11.2.0

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

New smatch warnings:
drivers/net/ethernet/intel/ice/ice_flow.c:663 ice_flow_xtract_fld() error: testing array offset 'sib' after use.

Old smatch warnings:
drivers/net/ethernet/intel/ice/ice_flow.c:1698 ice_add_rss_cfg_sync() error: we previously assumed 'prof' could be null (see line 1680)

vim +/sib +663 drivers/net/ethernet/intel/ice/ice_flow.c

31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  511  
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  512  /**
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  513   * ice_flow_xtract_fld - Create an extraction sequence entry for the given field
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  514   * @hw: pointer to the HW struct
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  515   * @params: information about the flow to be processed
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  516   * @seg: packet segment index of the field to be extracted
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  517   * @fld: ID of field to be extracted
b199dddbd39953 Qi Zhang              2021-03-09  518   * @match: bit field of all fields
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  519   *
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  520   * This function determines the protocol ID, offset, and size of the given
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  521   * field. It then allocates one or more extraction sequence entries for the
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  522   * given field, and fill the entries with protocol ID and offset information.
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  523   */
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  524  static enum ice_status
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  525  ice_flow_xtract_fld(struct ice_hw *hw, struct ice_flow_prof_params *params,
b199dddbd39953 Qi Zhang              2021-03-09  526  		    u8 seg, enum ice_flow_field fld, u64 match)
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  527  {
b199dddbd39953 Qi Zhang              2021-03-09  528  	enum ice_flow_field sib = ICE_FLOW_FIELD_IDX_MAX;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  529  	enum ice_prot_id prot_id = ICE_PROT_ID_INVAL;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  530  	u8 fv_words = hw->blk[params->blk].es.fvw;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  531  	struct ice_flow_fld_info *flds;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  532  	u16 cnt, ese_bits, i;
b199dddbd39953 Qi Zhang              2021-03-09  533  	u16 sib_mask = 0;
b199dddbd39953 Qi Zhang              2021-03-09  534  	u16 mask;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  535  	u16 off;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  536  
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  537  	flds = params->prof->segs[seg].fields;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  538  
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  539  	switch (fld) {
390bd141808d50 Qi Zhang              2021-03-09  540  	case ICE_FLOW_FIELD_IDX_ETH_DA:
390bd141808d50 Qi Zhang              2021-03-09  541  	case ICE_FLOW_FIELD_IDX_ETH_SA:
390bd141808d50 Qi Zhang              2021-03-09  542  	case ICE_FLOW_FIELD_IDX_S_VLAN:
390bd141808d50 Qi Zhang              2021-03-09  543  	case ICE_FLOW_FIELD_IDX_C_VLAN:
390bd141808d50 Qi Zhang              2021-03-09  544  		prot_id = seg == 0 ? ICE_PROT_MAC_OF_OR_S : ICE_PROT_MAC_IL;
390bd141808d50 Qi Zhang              2021-03-09  545  		break;
390bd141808d50 Qi Zhang              2021-03-09  546  	case ICE_FLOW_FIELD_IDX_ETH_TYPE:
390bd141808d50 Qi Zhang              2021-03-09  547  		prot_id = seg == 0 ? ICE_PROT_ETYPE_OL : ICE_PROT_ETYPE_IL;
390bd141808d50 Qi Zhang              2021-03-09  548  		break;
b199dddbd39953 Qi Zhang              2021-03-09  549  	case ICE_FLOW_FIELD_IDX_IPV4_DSCP:
b199dddbd39953 Qi Zhang              2021-03-09  550  		prot_id = seg == 0 ? ICE_PROT_IPV4_OF_OR_S : ICE_PROT_IPV4_IL;
b199dddbd39953 Qi Zhang              2021-03-09  551  		break;
b199dddbd39953 Qi Zhang              2021-03-09  552  	case ICE_FLOW_FIELD_IDX_IPV6_DSCP:
b199dddbd39953 Qi Zhang              2021-03-09  553  		prot_id = seg == 0 ? ICE_PROT_IPV6_OF_OR_S : ICE_PROT_IPV6_IL;
b199dddbd39953 Qi Zhang              2021-03-09  554  		break;
b199dddbd39953 Qi Zhang              2021-03-09  555  	case ICE_FLOW_FIELD_IDX_IPV4_TTL:
b199dddbd39953 Qi Zhang              2021-03-09  556  	case ICE_FLOW_FIELD_IDX_IPV4_PROT:
b199dddbd39953 Qi Zhang              2021-03-09  557  		prot_id = seg == 0 ? ICE_PROT_IPV4_OF_OR_S : ICE_PROT_IPV4_IL;
b199dddbd39953 Qi Zhang              2021-03-09  558  
b199dddbd39953 Qi Zhang              2021-03-09  559  		/* TTL and PROT share the same extraction seq. entry.
b199dddbd39953 Qi Zhang              2021-03-09  560  		 * Each is considered a sibling to the other in terms of sharing
b199dddbd39953 Qi Zhang              2021-03-09  561  		 * the same extraction sequence entry.
b199dddbd39953 Qi Zhang              2021-03-09  562  		 */
b199dddbd39953 Qi Zhang              2021-03-09  563  		if (fld == ICE_FLOW_FIELD_IDX_IPV4_TTL)
b199dddbd39953 Qi Zhang              2021-03-09  564  			sib = ICE_FLOW_FIELD_IDX_IPV4_PROT;
b199dddbd39953 Qi Zhang              2021-03-09  565  		else if (fld == ICE_FLOW_FIELD_IDX_IPV4_PROT)
b199dddbd39953 Qi Zhang              2021-03-09  566  			sib = ICE_FLOW_FIELD_IDX_IPV4_TTL;
b199dddbd39953 Qi Zhang              2021-03-09  567  
b199dddbd39953 Qi Zhang              2021-03-09  568  		/* If the sibling field is also included, that field's
b199dddbd39953 Qi Zhang              2021-03-09  569  		 * mask needs to be included.
b199dddbd39953 Qi Zhang              2021-03-09  570  		 */
b199dddbd39953 Qi Zhang              2021-03-09  571  		if (match & BIT(sib))
b199dddbd39953 Qi Zhang              2021-03-09  572  			sib_mask = ice_flds_info[sib].mask;
b199dddbd39953 Qi Zhang              2021-03-09  573  		break;
b199dddbd39953 Qi Zhang              2021-03-09  574  	case ICE_FLOW_FIELD_IDX_IPV6_TTL:
b199dddbd39953 Qi Zhang              2021-03-09  575  	case ICE_FLOW_FIELD_IDX_IPV6_PROT:
b199dddbd39953 Qi Zhang              2021-03-09  576  		prot_id = seg == 0 ? ICE_PROT_IPV6_OF_OR_S : ICE_PROT_IPV6_IL;
b199dddbd39953 Qi Zhang              2021-03-09  577  
b199dddbd39953 Qi Zhang              2021-03-09  578  		/* TTL and PROT share the same extraction seq. entry.
b199dddbd39953 Qi Zhang              2021-03-09  579  		 * Each is considered a sibling to the other in terms of sharing
b199dddbd39953 Qi Zhang              2021-03-09  580  		 * the same extraction sequence entry.
b199dddbd39953 Qi Zhang              2021-03-09  581  		 */
b199dddbd39953 Qi Zhang              2021-03-09  582  		if (fld == ICE_FLOW_FIELD_IDX_IPV6_TTL)
b199dddbd39953 Qi Zhang              2021-03-09  583  			sib = ICE_FLOW_FIELD_IDX_IPV6_PROT;
b199dddbd39953 Qi Zhang              2021-03-09  584  		else if (fld == ICE_FLOW_FIELD_IDX_IPV6_PROT)
b199dddbd39953 Qi Zhang              2021-03-09  585  			sib = ICE_FLOW_FIELD_IDX_IPV6_TTL;
b199dddbd39953 Qi Zhang              2021-03-09  586  
b199dddbd39953 Qi Zhang              2021-03-09  587  		/* If the sibling field is also included, that field's
b199dddbd39953 Qi Zhang              2021-03-09  588  		 * mask needs to be included.
b199dddbd39953 Qi Zhang              2021-03-09  589  		 */
b199dddbd39953 Qi Zhang              2021-03-09  590  		if (match & BIT(sib))
b199dddbd39953 Qi Zhang              2021-03-09  591  			sib_mask = ice_flds_info[sib].mask;
b199dddbd39953 Qi Zhang              2021-03-09  592  		break;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  593  	case ICE_FLOW_FIELD_IDX_IPV4_SA:
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  594  	case ICE_FLOW_FIELD_IDX_IPV4_DA:
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  595  		prot_id = seg == 0 ? ICE_PROT_IPV4_OF_OR_S : ICE_PROT_IPV4_IL;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  596  		break;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  597  	case ICE_FLOW_FIELD_IDX_IPV6_SA:
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  598  	case ICE_FLOW_FIELD_IDX_IPV6_DA:
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  599  		prot_id = seg == 0 ? ICE_PROT_IPV6_OF_OR_S : ICE_PROT_IPV6_IL;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  600  		break;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  601  	case ICE_FLOW_FIELD_IDX_TCP_SRC_PORT:
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  602  	case ICE_FLOW_FIELD_IDX_TCP_DST_PORT:
390bd141808d50 Qi Zhang              2021-03-09  603  	case ICE_FLOW_FIELD_IDX_TCP_FLAGS:
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  604  		prot_id = ICE_PROT_TCP_IL;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  605  		break;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  606  	case ICE_FLOW_FIELD_IDX_UDP_SRC_PORT:
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  607  	case ICE_FLOW_FIELD_IDX_UDP_DST_PORT:
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  608  		prot_id = ICE_PROT_UDP_IL_OR_S;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  609  		break;
1c01c8c6c969a9 Md Fahad Iqbal Polash 2020-01-17  610  	case ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT:
1c01c8c6c969a9 Md Fahad Iqbal Polash 2020-01-17  611  	case ICE_FLOW_FIELD_IDX_SCTP_DST_PORT:
1c01c8c6c969a9 Md Fahad Iqbal Polash 2020-01-17  612  		prot_id = ICE_PROT_SCTP_IL;
1c01c8c6c969a9 Md Fahad Iqbal Polash 2020-01-17  613  		break;
390bd141808d50 Qi Zhang              2021-03-09  614  	case ICE_FLOW_FIELD_IDX_ARP_SIP:
390bd141808d50 Qi Zhang              2021-03-09  615  	case ICE_FLOW_FIELD_IDX_ARP_DIP:
390bd141808d50 Qi Zhang              2021-03-09  616  	case ICE_FLOW_FIELD_IDX_ARP_SHA:
390bd141808d50 Qi Zhang              2021-03-09  617  	case ICE_FLOW_FIELD_IDX_ARP_DHA:
390bd141808d50 Qi Zhang              2021-03-09  618  	case ICE_FLOW_FIELD_IDX_ARP_OP:
390bd141808d50 Qi Zhang              2021-03-09  619  		prot_id = ICE_PROT_ARP_OF;
390bd141808d50 Qi Zhang              2021-03-09  620  		break;
390bd141808d50 Qi Zhang              2021-03-09  621  	case ICE_FLOW_FIELD_IDX_ICMP_TYPE:
390bd141808d50 Qi Zhang              2021-03-09  622  	case ICE_FLOW_FIELD_IDX_ICMP_CODE:
390bd141808d50 Qi Zhang              2021-03-09  623  		/* ICMP type and code share the same extraction seq. entry */
390bd141808d50 Qi Zhang              2021-03-09  624  		prot_id = (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_IPV4) ?
390bd141808d50 Qi Zhang              2021-03-09  625  				ICE_PROT_ICMP_IL : ICE_PROT_ICMPV6_IL;
b199dddbd39953 Qi Zhang              2021-03-09  626  		sib = fld == ICE_FLOW_FIELD_IDX_ICMP_TYPE ?
b199dddbd39953 Qi Zhang              2021-03-09  627  			ICE_FLOW_FIELD_IDX_ICMP_CODE :
b199dddbd39953 Qi Zhang              2021-03-09  628  			ICE_FLOW_FIELD_IDX_ICMP_TYPE;
390bd141808d50 Qi Zhang              2021-03-09  629  		break;
a4e82a81f57387 Tony Nguyen           2020-05-06  630  	case ICE_FLOW_FIELD_IDX_GRE_KEYID:
a4e82a81f57387 Tony Nguyen           2020-05-06  631  		prot_id = ICE_PROT_GRE_OF;
a4e82a81f57387 Tony Nguyen           2020-05-06  632  		break;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  633  	default:
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  634  		return ICE_ERR_NOT_IMPL;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  635  	}
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  636  
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  637  	/* Each extraction sequence entry is a word in size, and extracts a
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  638  	 * word-aligned offset from a protocol header.
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  639  	 */
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  640  	ese_bits = ICE_FLOW_FV_EXTRACT_SZ * BITS_PER_BYTE;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  641  
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  642  	flds[fld].xtrct.prot_id = prot_id;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  643  	flds[fld].xtrct.off = (ice_flds_info[fld].off / ese_bits) *
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  644  		ICE_FLOW_FV_EXTRACT_SZ;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  645  	flds[fld].xtrct.disp = (u8)(ice_flds_info[fld].off % ese_bits);
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  646  	flds[fld].xtrct.idx = params->es_cnt;
b199dddbd39953 Qi Zhang              2021-03-09  647  	flds[fld].xtrct.mask = ice_flds_info[fld].mask;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  648  
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  649  	/* Adjust the next field-entry index after accommodating the number of
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  650  	 * entries this field consumes
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  651  	 */
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  652  	cnt = DIV_ROUND_UP(flds[fld].xtrct.disp + ice_flds_info[fld].size,
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  653  			   ese_bits);
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  654  
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  655  	/* Fill in the extraction sequence entries needed for this field */
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  656  	off = flds[fld].xtrct.off;
b199dddbd39953 Qi Zhang              2021-03-09  657  	mask = flds[fld].xtrct.mask;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  658  	for (i = 0; i < cnt; i++) {
b199dddbd39953 Qi Zhang              2021-03-09  659  		/* Only consume an extraction sequence entry if there is no
b199dddbd39953 Qi Zhang              2021-03-09  660  		 * sibling field associated with this field or the sibling entry
b199dddbd39953 Qi Zhang              2021-03-09  661  		 * already extracts the word shared with this field.
b199dddbd39953 Qi Zhang              2021-03-09  662  		 */
b199dddbd39953 Qi Zhang              2021-03-09 @663  		if (sib == ICE_FLOW_FIELD_IDX_MAX ||
b199dddbd39953 Qi Zhang              2021-03-09  664  		    flds[sib].xtrct.prot_id == ICE_PROT_ID_INVAL ||
b199dddbd39953 Qi Zhang              2021-03-09  665  		    flds[sib].xtrct.off != off) {
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  666  			u8 idx;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  667  
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  668  			/* Make sure the number of extraction sequence required
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  669  			 * does not exceed the block's capability
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  670  			 */
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  671  			if (params->es_cnt >= fv_words)
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  672  				return ICE_ERR_MAX_LIMIT;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  673  
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  674  			/* some blocks require a reversed field vector layout */
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  675  			if (hw->blk[params->blk].es.reverse)
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  676  				idx = fv_words - params->es_cnt - 1;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  677  			else
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  678  				idx = params->es_cnt;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  679  
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  680  			params->es[idx].prot_id = prot_id;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  681  			params->es[idx].off = off;
b199dddbd39953 Qi Zhang              2021-03-09  682  			params->mask[idx] = mask | sib_mask;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  683  			params->es_cnt++;
b199dddbd39953 Qi Zhang              2021-03-09  684  		}
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  685  
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  686  		off += ICE_FLOW_FV_EXTRACT_SZ;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  687  	}
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  688  
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  689  	return 0;
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  690  }
31ad4e4ee1e4e2 Tony Nguyen           2020-01-17  691  

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

             reply	other threads:[~2022-02-22 18:55 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-22 18:55 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-03-14 16:43 drivers/net/ethernet/intel/ice/ice_flow.c:663 ice_flow_xtract_fld() error: testing array offset 'sib' after use kernel test robot
2022-03-13 14:45 kernel test robot
2022-02-26  5:05 kernel test robot
2022-02-24 22:33 kernel test robot
2022-02-20 22:04 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=202202230223.ZeDCP365-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.