All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Hansen <dave.hansen@intel.com>
To: Ram Pai <linuxram@us.ibm.com>,
	shuahkh@osg.samsung.com, linux-kselftest@vger.kernel.org
Cc: mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org,
	linux-mm@kvack.org, x86@kernel.org, linux-arch@vger.kernel.org,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	mingo@redhat.com, akpm@linux-foundation.org,
	benh@kernel.crashing.org, paulus@samba.org,
	khandual@linux.vnet.ibm.com, aneesh.kumar@linux.vnet.ibm.com,
	bsingharora@gmail.com, hbabu@us.ibm.com, mhocko@kernel.org,
	bauerman@linux.vnet.ibm.com, ebiederm@xmission.com,
	arnd@arndb.de
Subject: Re: [PATCH v12 09/22] selftests/vm: fix alloc_random_pkey() to make it really random
Date: Fri, 16 Mar 2018 15:13:06 -0700	[thread overview]
Message-ID: <9e410d84-3cd3-edf5-4699-26fcc2bbb393@intel.com> (raw)
In-Reply-To: <1519264541-7621-10-git-send-email-linuxram@us.ibm.com>

On 02/21/2018 05:55 PM, Ram Pai wrote:
> alloc_random_pkey() was allocating the same pkey every time.
> Not all pkeys were geting tested. fixed it.
...
> @@ -602,13 +603,15 @@ int alloc_random_pkey(void)
>  	int alloced_pkeys[NR_PKEYS];
>  	int nr_alloced = 0;
>  	int random_index;
> +
>  	memset(alloced_pkeys, 0, sizeof(alloced_pkeys));
> +	srand((unsigned int)time(NULL));
>  
>  	/* allocate every possible key and make a note of which ones we got */
>  	max_nr_pkey_allocs = NR_PKEYS;
> -	max_nr_pkey_allocs = 1;
>  	for (i = 0; i < max_nr_pkey_allocs; i++) {
>  		int new_pkey = alloc_pkey();

The srand() is probably useful, but won't this always just do a single
alloc_pkey() now?  That seems like it will mean we always use the first
one the kernel gives us, which isn't random.

> -	dprintf1("%s()::%d, ret: %d pkey_reg: 0x%x shadow: 0x%x\n", __func__,
> -			__LINE__, ret, __rdpkey_reg(), shadow_pkey_reg);
> +	dprintf1("%s()::%d, ret: %d pkey_reg: 0x%x shadow: 0x%016lx\n",
> +		__func__, __LINE__, ret, __rdpkey_reg(), shadow_pkey_reg);
>  	return ret;
>  }

This belonged in the pkey_reg_t patch, I think.


WARNING: multiple messages have this Message-ID (diff)
From: Dave Hansen <dave.hansen@intel.com>
To: Ram Pai <linuxram@us.ibm.com>,
	shuahkh@osg.samsung.com, linux-kselftest@vger.kernel.org
Cc: mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org,
	linux-mm@kvack.org, x86@kernel.org, linux-arch@vger.kernel.org,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	mingo@redhat.com, akpm@linux-foundation.org,
	benh@kernel.crashing.org, paulus@samba.org,
	khandual@linux.vnet.ibm.com, aneesh.kumar@linux.vnet.ibm.com,
	bsingharora@gmail.com, hbabu@us.ibm.com, mhocko@kernel.org,
	bauerman@linux.vnet.ibm.com, ebiederm@xmission.com,
	arnd@arndb.de
Subject: Re: [PATCH v12 09/22] selftests/vm: fix alloc_random_pkey() to make it really random
Date: Fri, 16 Mar 2018 15:13:06 -0700	[thread overview]
Message-ID: <9e410d84-3cd3-edf5-4699-26fcc2bbb393@intel.com> (raw)
In-Reply-To: <1519264541-7621-10-git-send-email-linuxram@us.ibm.com>

On 02/21/2018 05:55 PM, Ram Pai wrote:
> alloc_random_pkey() was allocating the same pkey every time.
> Not all pkeys were geting tested. fixed it.
...
> @@ -602,13 +603,15 @@ int alloc_random_pkey(void)
>  	int alloced_pkeys[NR_PKEYS];
>  	int nr_alloced = 0;
>  	int random_index;
> +
>  	memset(alloced_pkeys, 0, sizeof(alloced_pkeys));
> +	srand((unsigned int)time(NULL));
>  
>  	/* allocate every possible key and make a note of which ones we got */
>  	max_nr_pkey_allocs = NR_PKEYS;
> -	max_nr_pkey_allocs = 1;
>  	for (i = 0; i < max_nr_pkey_allocs; i++) {
>  		int new_pkey = alloc_pkey();

The srand() is probably useful, but won't this always just do a single
alloc_pkey() now?  That seems like it will mean we always use the first
one the kernel gives us, which isn't random.

> -	dprintf1("%s()::%d, ret: %d pkey_reg: 0x%x shadow: 0x%x\n", __func__,
> -			__LINE__, ret, __rdpkey_reg(), shadow_pkey_reg);
> +	dprintf1("%s()::%d, ret: %d pkey_reg: 0x%x shadow: 0x%016lx\n",
> +		__func__, __LINE__, ret, __rdpkey_reg(), shadow_pkey_reg);
>  	return ret;
>  }

This belonged in the pkey_reg_t patch, I think.

--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: dave.hansen at intel.com (Dave Hansen)
Subject: [PATCH v12 09/22] selftests/vm: fix alloc_random_pkey() to make it really random
Date: Fri, 16 Mar 2018 15:13:06 -0700	[thread overview]
Message-ID: <9e410d84-3cd3-edf5-4699-26fcc2bbb393@intel.com> (raw)
In-Reply-To: <1519264541-7621-10-git-send-email-linuxram@us.ibm.com>

On 02/21/2018 05:55 PM, Ram Pai wrote:
> alloc_random_pkey() was allocating the same pkey every time.
> Not all pkeys were geting tested. fixed it.
...
> @@ -602,13 +603,15 @@ int alloc_random_pkey(void)
>  	int alloced_pkeys[NR_PKEYS];
>  	int nr_alloced = 0;
>  	int random_index;
> +
>  	memset(alloced_pkeys, 0, sizeof(alloced_pkeys));
> +	srand((unsigned int)time(NULL));
>  
>  	/* allocate every possible key and make a note of which ones we got */
>  	max_nr_pkey_allocs = NR_PKEYS;
> -	max_nr_pkey_allocs = 1;
>  	for (i = 0; i < max_nr_pkey_allocs; i++) {
>  		int new_pkey = alloc_pkey();

The srand() is probably useful, but won't this always just do a single
alloc_pkey() now?  That seems like it will mean we always use the first
one the kernel gives us, which isn't random.

> -	dprintf1("%s()::%d, ret: %d pkey_reg: 0x%x shadow: 0x%x\n", __func__,
> -			__LINE__, ret, __rdpkey_reg(), shadow_pkey_reg);
> +	dprintf1("%s()::%d, ret: %d pkey_reg: 0x%x shadow: 0x%016lx\n",
> +		__func__, __LINE__, ret, __rdpkey_reg(), shadow_pkey_reg);
>  	return ret;
>  }

This belonged in the pkey_reg_t patch, I think.

--
To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: dave.hansen@intel.com (Dave Hansen)
Subject: [PATCH v12 09/22] selftests/vm: fix alloc_random_pkey() to make it really random
Date: Fri, 16 Mar 2018 15:13:06 -0700	[thread overview]
Message-ID: <9e410d84-3cd3-edf5-4699-26fcc2bbb393@intel.com> (raw)
Message-ID: <20180316221306.yhDTeJgM9kqh8m_WUP1QbBZBSw7AoJcXM2cDw5Urz14@z> (raw)
In-Reply-To: <1519264541-7621-10-git-send-email-linuxram@us.ibm.com>

On 02/21/2018 05:55 PM, Ram Pai wrote:
> alloc_random_pkey() was allocating the same pkey every time.
> Not all pkeys were geting tested. fixed it.
...
> @@ -602,13 +603,15 @@ int alloc_random_pkey(void)
>  	int alloced_pkeys[NR_PKEYS];
>  	int nr_alloced = 0;
>  	int random_index;
> +
>  	memset(alloced_pkeys, 0, sizeof(alloced_pkeys));
> +	srand((unsigned int)time(NULL));
>  
>  	/* allocate every possible key and make a note of which ones we got */
>  	max_nr_pkey_allocs = NR_PKEYS;
> -	max_nr_pkey_allocs = 1;
>  	for (i = 0; i < max_nr_pkey_allocs; i++) {
>  		int new_pkey = alloc_pkey();

The srand() is probably useful, but won't this always just do a single
alloc_pkey() now?  That seems like it will mean we always use the first
one the kernel gives us, which isn't random.

> -	dprintf1("%s()::%d, ret: %d pkey_reg: 0x%x shadow: 0x%x\n", __func__,
> -			__LINE__, ret, __rdpkey_reg(), shadow_pkey_reg);
> +	dprintf1("%s()::%d, ret: %d pkey_reg: 0x%x shadow: 0x%016lx\n",
> +		__func__, __LINE__, ret, __rdpkey_reg(), shadow_pkey_reg);
>  	return ret;
>  }

This belonged in the pkey_reg_t patch, I think.

--
To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2018-03-16 22:13 UTC|newest]

Thread overview: 220+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-22  1:55 [PATCH v12 00/22] selftests, powerpc, x86 : Memory Protection Keys Ram Pai
2018-02-22  1:55 ` Ram Pai
2018-02-22  1:55 ` Ram Pai
2018-02-22  1:55 ` Ram Pai
2018-02-22  1:55 ` linuxram
2018-02-22  1:55 ` [PATCH v12 01/22] selftests/x86: Move protecton key selftest to arch neutral directory Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-02-22  5:51   ` Ingo Molnar
2018-02-22  5:51     ` Ingo Molnar
2018-02-22  5:51     ` Ingo Molnar
2018-02-22  5:51     ` Ingo Molnar
2018-02-22  5:51     ` mingo
2018-02-22  1:55 ` [PATCH v12 02/22] selftests/vm: rename all references to pkru to a generic name Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 21:55   ` Dave Hansen
2018-03-16 21:55     ` Dave Hansen
2018-03-16 21:55     ` dave.hansen
2018-03-16 21:55     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 03/22] selftests/vm: move generic definitions to header file Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-02-22  1:55 ` [PATCH v12 04/22] selftests/vm: typecast the pkey register Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 21:58   ` Dave Hansen
2018-03-16 21:58     ` Dave Hansen
2018-03-16 21:58     ` dave.hansen
2018-03-16 21:58     ` Dave Hansen
2018-03-26 19:38     ` Thiago Jung Bauermann
2018-03-26 19:38       ` Thiago Jung Bauermann
2018-03-26 19:38       ` bauerman
2018-03-26 19:38       ` Thiago Jung Bauermann
2018-02-22  1:55 ` [PATCH v12 05/22] selftests/vm: generic function to handle shadow key register Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:05   ` Dave Hansen
2018-03-16 22:05     ` Dave Hansen
2018-03-16 22:05     ` dave.hansen
2018-03-16 22:05     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 06/22] selftests/vm: fix the wrong assert in pkey_disable_set() Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:06   ` Dave Hansen
2018-03-16 22:06     ` Dave Hansen
2018-03-16 22:06     ` dave.hansen
2018-03-16 22:06     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 07/22] selftests/vm: fixed bugs in pkey_disable_clear() Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:08   ` Dave Hansen
2018-03-16 22:08     ` Dave Hansen
2018-03-16 22:08     ` dave.hansen
2018-03-16 22:08     ` Dave Hansen
2018-03-28 20:47     ` Thiago Jung Bauermann
2018-03-28 20:47       ` Thiago Jung Bauermann
2018-03-28 20:47       ` bauerman
2018-03-28 20:47       ` Thiago Jung Bauermann
2018-03-28 20:55       ` Dave Hansen
2018-03-28 20:55         ` Dave Hansen
2018-03-28 20:55         ` dave.hansen
2018-03-28 20:55         ` Dave Hansen
2018-03-28 23:51         ` Thiago Jung Bauermann
2018-03-28 23:51           ` Thiago Jung Bauermann
2018-03-28 23:51           ` bauerman
2018-03-28 23:51           ` Thiago Jung Bauermann
2018-02-22  1:55 ` [PATCH v12 08/22] selftests/vm: clear the bits in shadow reg when a pkey is freed Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:10   ` Dave Hansen
2018-03-16 22:10     ` Dave Hansen
2018-03-16 22:10     ` dave.hansen
2018-03-16 22:10     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 09/22] selftests/vm: fix alloc_random_pkey() to make it really random Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:13   ` Dave Hansen [this message]
2018-03-16 22:13     ` Dave Hansen
2018-03-16 22:13     ` dave.hansen
2018-03-16 22:13     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 10/22] selftests/vm: introduce two arch independent abstraction Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:15   ` Dave Hansen
2018-03-16 22:15     ` Dave Hansen
2018-03-16 22:15     ` dave.hansen
2018-03-16 22:15     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 11/22] selftests/vm: pkey register should match shadow pkey Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:19   ` Dave Hansen
2018-03-16 22:19     ` Dave Hansen
2018-03-16 22:19     ` dave.hansen
2018-03-16 22:19     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 12/22] selftests/vm: generic cleanup Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:22   ` Dave Hansen
2018-03-16 22:22     ` Dave Hansen
2018-03-16 22:22     ` dave.hansen
2018-03-16 22:22     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 13/22] selftests/vm: powerpc implementation for generic abstraction Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:23   ` Dave Hansen
2018-03-16 22:23     ` Dave Hansen
2018-03-16 22:23     ` dave.hansen
2018-03-16 22:23     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 14/22] selftests/vm: clear the bits in shadow reg when a pkey is freed Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:24   ` Dave Hansen
2018-03-16 22:24     ` Dave Hansen
2018-03-16 22:24     ` dave.hansen
2018-03-16 22:24     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 15/22] selftests/vm: powerpc implementation to check support for pkey Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:26   ` Dave Hansen
2018-03-16 22:26     ` Dave Hansen
2018-03-16 22:26     ` dave.hansen
2018-03-16 22:26     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 16/22] selftests/vm: fix an assertion in test_pkey_alloc_exhaust() Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:28   ` Dave Hansen
2018-03-16 22:28     ` Dave Hansen
2018-03-16 22:28     ` dave.hansen
2018-03-16 22:28     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 17/22] selftests/vm: associate key on a mapped page and detect access violation Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:30   ` Dave Hansen
2018-03-16 22:30     ` Dave Hansen
2018-03-16 22:30     ` dave.hansen
2018-03-16 22:30     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 18/22] selftests/vm: associate key on a mapped page and detect write violation Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:30   ` Dave Hansen
2018-03-16 22:30     ` Dave Hansen
2018-03-16 22:30     ` dave.hansen
2018-03-16 22:30     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 19/22] selftests/vm: detect write violation on a mapped access-denied-key page Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:31   ` Dave Hansen
2018-03-16 22:31     ` Dave Hansen
2018-03-16 22:31     ` dave.hansen
2018-03-16 22:31     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 20/22] selftests/vm: testcases must restore pkey-permissions Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:32   ` Dave Hansen
2018-03-16 22:32     ` Dave Hansen
2018-03-16 22:32     ` dave.hansen
2018-03-16 22:32     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 21/22] selftests/vm: sub-page allocator Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-03-16 22:33   ` Dave Hansen
2018-03-16 22:33     ` Dave Hansen
2018-03-16 22:33     ` dave.hansen
2018-03-16 22:33     ` Dave Hansen
2018-02-22  1:55 ` [PATCH v12 22/22] selftests/vm: Fix deadlock in protection_keys.c Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` Ram Pai
2018-02-22  1:55   ` linuxram
2018-02-25 23:19   ` Balbir Singh
2018-02-25 23:19     ` Balbir Singh
2018-02-25 23:19     ` Balbir Singh
2018-02-25 23:19     ` bsingharora
2018-03-16 22:34   ` Dave Hansen
2018-03-16 22:34     ` Dave Hansen
2018-03-16 22:34     ` dave.hansen
2018-03-16 22:34     ` Dave Hansen

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=9e410d84-3cd3-edf5-4699-26fcc2bbb393@intel.com \
    --to=dave.hansen@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=aneesh.kumar@linux.vnet.ibm.com \
    --cc=arnd@arndb.de \
    --cc=bauerman@linux.vnet.ibm.com \
    --cc=benh@kernel.crashing.org \
    --cc=bsingharora@gmail.com \
    --cc=ebiederm@xmission.com \
    --cc=hbabu@us.ibm.com \
    --cc=khandual@linux.vnet.ibm.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=linuxram@us.ibm.com \
    --cc=mhocko@kernel.org \
    --cc=mingo@redhat.com \
    --cc=mpe@ellerman.id.au \
    --cc=paulus@samba.org \
    --cc=shuahkh@osg.samsung.com \
    --cc=x86@kernel.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.