* [PATCH] hpsa: fix uninitialized trans_support in hpsa_put_ctlr_into_performant_mode() @ 2014-04-10 22:17 ` scameron 0 siblings, 0 replies; 9+ messages in thread From: scameron-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8 @ 2014-04-10 22:17 UTC (permalink / raw) To: James Bottomley Cc: linux-scsi, Baoquan He, linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, open list:INTEL IOMMU (VT-d), Davidlohr Bueso, scameron-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8, Bjorn Helgaas, Jiang Liu Without this, you'll see a null pointer dereference in hpsa_enter_performant_mode(). Signed-off-by: Stephen M. Cameron <scameron-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8@public.gmane.org> --- drivers/scsi/hpsa.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c index 8cf4a0c..ef4dfdd 100644 --- a/drivers/scsi/hpsa.c +++ b/drivers/scsi/hpsa.c @@ -7463,6 +7463,10 @@ static void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) if (hpsa_simple_mode) return; + trans_support = readl(&(h->cfgtable->TransportSupport)); + if (!(trans_support & PERFORMANT_MODE)) + return; + /* Check for I/O accelerator mode support */ if (trans_support & CFGTBL_Trans_io_accel1) { transMethod |= CFGTBL_Trans_io_accel1 | -- 1.7.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH] hpsa: fix uninitialized trans_support in hpsa_put_ctlr_into_performant_mode() @ 2014-04-10 22:17 ` scameron 0 siblings, 0 replies; 9+ messages in thread From: scameron @ 2014-04-10 22:17 UTC (permalink / raw) To: James Bottomley Cc: Bjorn Helgaas, Davidlohr Bueso, Baoquan He, linux-kernel@vger.kernel.org, linux-scsi, linux-pci@vger.kernel.org, Joerg Roedel, open list:INTEL IOMMU (VT-d), Jiang Liu, scameron Without this, you'll see a null pointer dereference in hpsa_enter_performant_mode(). Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com> --- drivers/scsi/hpsa.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c index 8cf4a0c..ef4dfdd 100644 --- a/drivers/scsi/hpsa.c +++ b/drivers/scsi/hpsa.c @@ -7463,6 +7463,10 @@ static void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) if (hpsa_simple_mode) return; + trans_support = readl(&(h->cfgtable->TransportSupport)); + if (!(trans_support & PERFORMANT_MODE)) + return; + /* Check for I/O accelerator mode support */ if (trans_support & CFGTBL_Trans_io_accel1) { transMethod |= CFGTBL_Trans_io_accel1 | -- 1.7.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] hpsa: fix uninitialized trans_support in hpsa_put_ctlr_into_performant_mode() 2014-04-10 22:17 ` scameron (?) @ 2014-04-10 22:37 ` Davidlohr Bueso -1 siblings, 0 replies; 9+ messages in thread From: Davidlohr Bueso @ 2014-04-10 22:37 UTC (permalink / raw) To: scameron Cc: James Bottomley, Bjorn Helgaas, Baoquan He, linux-kernel@vger.kernel.org, linux-scsi, linux-pci@vger.kernel.org, Joerg Roedel, open list:INTEL IOMMU (VT-d), Jiang Liu On Thu, 2014-04-10 at 17:17 -0500, scameron@beardog.cce.hp.com wrote: > Without this, you'll see a null pointer dereference in > hpsa_enter_performant_mode(). So I'm not surprised that this patch doesn't solve the problem I am seeing with DMAR and the hpsa driver hard lockup. In any case it should address Baoquan's original report, so it confirms that it is in fact two different sets of issues. ^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <20140410221704.GA22465-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8@public.gmane.org>]
* Re: [PATCH] hpsa: fix uninitialized trans_support in hpsa_put_ctlr_into_performant_mode() 2014-04-10 22:17 ` scameron @ 2014-04-11 3:11 ` Baoquan He -1 siblings, 0 replies; 9+ messages in thread From: Baoquan He @ 2014-04-11 3:11 UTC (permalink / raw) To: scameron-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8 Cc: linux-scsi, linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, James Bottomley, open list:INTEL IOMMU (VT-d), Davidlohr Bueso, Bjorn Helgaas, Jiang Liu This patch works for me. Tested-by: Baoquan He <bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> Thanks Baoquan On 04/10/14 at 05:17pm, scameron-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8@public.gmane.org wrote: > > Without this, you'll see a null pointer dereference in > hpsa_enter_performant_mode(). > > Signed-off-by: Stephen M. Cameron <scameron-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8@public.gmane.org> > --- > drivers/scsi/hpsa.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c > index 8cf4a0c..ef4dfdd 100644 > --- a/drivers/scsi/hpsa.c > +++ b/drivers/scsi/hpsa.c > @@ -7463,6 +7463,10 @@ static void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) > if (hpsa_simple_mode) > return; > > + trans_support = readl(&(h->cfgtable->TransportSupport)); > + if (!(trans_support & PERFORMANT_MODE)) > + return; > + > /* Check for I/O accelerator mode support */ > if (trans_support & CFGTBL_Trans_io_accel1) { > transMethod |= CFGTBL_Trans_io_accel1 | > -- > 1.7.1 > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] hpsa: fix uninitialized trans_support in hpsa_put_ctlr_into_performant_mode() @ 2014-04-11 3:11 ` Baoquan He 0 siblings, 0 replies; 9+ messages in thread From: Baoquan He @ 2014-04-11 3:11 UTC (permalink / raw) To: scameron Cc: James Bottomley, Bjorn Helgaas, Davidlohr Bueso, linux-kernel@vger.kernel.org, linux-scsi, linux-pci@vger.kernel.org, Joerg Roedel, open list:INTEL IOMMU (VT-d), Jiang Liu This patch works for me. Tested-by: Baoquan He <bhe@redhat.com> Thanks Baoquan On 04/10/14 at 05:17pm, scameron@beardog.cce.hp.com wrote: > > Without this, you'll see a null pointer dereference in > hpsa_enter_performant_mode(). > > Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com> > --- > drivers/scsi/hpsa.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c > index 8cf4a0c..ef4dfdd 100644 > --- a/drivers/scsi/hpsa.c > +++ b/drivers/scsi/hpsa.c > @@ -7463,6 +7463,10 @@ static void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) > if (hpsa_simple_mode) > return; > > + trans_support = readl(&(h->cfgtable->TransportSupport)); > + if (!(trans_support & PERFORMANT_MODE)) > + return; > + > /* Check for I/O accelerator mode support */ > if (trans_support & CFGTBL_Trans_io_accel1) { > transMethod |= CFGTBL_Trans_io_accel1 | > -- > 1.7.1 > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] hpsa: fix uninitialized trans_support in hpsa_put_ctlr_into_performant_mode() 2014-04-10 22:17 ` scameron @ 2014-04-14 15:45 ` James Bottomley -1 siblings, 0 replies; 9+ messages in thread From: James Bottomley @ 2014-04-14 15:45 UTC (permalink / raw) To: scameron-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8 Cc: linux-scsi, Baoquan He, linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, open list:INTEL IOMMU (VT-d), Davidlohr Bueso, Bjorn Helgaas, Jiang Liu Your subject line is very tame. It should be the one line summary of why we apply the patch, so it should read something like hpsa: fix NULL deref in performant mode On Thu, 2014-04-10 at 17:17 -0500, scameron-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8@public.gmane.org wrote: > Without this, you'll see a null pointer dereference in > hpsa_enter_performant_mode(). The description should be more comprehensible. I'm clear that the use before initialisation is a bug ... I'm less clear on why it causes an oops. > Signed-off-by: Stephen M. Cameron <scameron-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8@public.gmane.org> > --- > drivers/scsi/hpsa.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c > index 8cf4a0c..ef4dfdd 100644 > --- a/drivers/scsi/hpsa.c > +++ b/drivers/scsi/hpsa.c > @@ -7463,6 +7463,10 @@ static void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) > if (hpsa_simple_mode) > return; > > + trans_support = readl(&(h->cfgtable->TransportSupport)); > + if (!(trans_support & PERFORMANT_MODE)) > + return; > + > /* Check for I/O accelerator mode support */ > if (trans_support & CFGTBL_Trans_io_accel1) { > transMethod |= CFGTBL_Trans_io_accel1 | Shouldn't you be moving this check from its previous location, rather than adding a new one that makes the original obsolete? James --- diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c index 8cf4a0c..9a6e4a2 100644 --- a/drivers/scsi/hpsa.c +++ b/drivers/scsi/hpsa.c @@ -7463,6 +7463,10 @@ static void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) if (hpsa_simple_mode) return; + trans_support = readl(&(h->cfgtable->TransportSupport)); + if (!(trans_support & PERFORMANT_MODE)) + return; + /* Check for I/O accelerator mode support */ if (trans_support & CFGTBL_Trans_io_accel1) { transMethod |= CFGTBL_Trans_io_accel1 | @@ -7479,10 +7483,6 @@ static void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) } /* TODO, check that this next line h->nreply_queues is correct */ - trans_support = readl(&(h->cfgtable->TransportSupport)); - if (!(trans_support & PERFORMANT_MODE)) - return; - h->nreply_queues = h->msix_vector > 0 ? h->msix_vector : 1; hpsa_get_max_perf_mode_cmds(h); /* Performant mode ring buffer and supporting data structures */ ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] hpsa: fix uninitialized trans_support in hpsa_put_ctlr_into_performant_mode() @ 2014-04-14 15:45 ` James Bottomley 0 siblings, 0 replies; 9+ messages in thread From: James Bottomley @ 2014-04-14 15:45 UTC (permalink / raw) To: scameron Cc: Bjorn Helgaas, Davidlohr Bueso, Baoquan He, linux-kernel@vger.kernel.org, linux-scsi, linux-pci@vger.kernel.org, Joerg Roedel, open list:INTEL IOMMU (VT-d), Jiang Liu Your subject line is very tame. It should be the one line summary of why we apply the patch, so it should read something like hpsa: fix NULL deref in performant mode On Thu, 2014-04-10 at 17:17 -0500, scameron@beardog.cce.hp.com wrote: > Without this, you'll see a null pointer dereference in > hpsa_enter_performant_mode(). The description should be more comprehensible. I'm clear that the use before initialisation is a bug ... I'm less clear on why it causes an oops. > Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com> > --- > drivers/scsi/hpsa.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c > index 8cf4a0c..ef4dfdd 100644 > --- a/drivers/scsi/hpsa.c > +++ b/drivers/scsi/hpsa.c > @@ -7463,6 +7463,10 @@ static void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) > if (hpsa_simple_mode) > return; > > + trans_support = readl(&(h->cfgtable->TransportSupport)); > + if (!(trans_support & PERFORMANT_MODE)) > + return; > + > /* Check for I/O accelerator mode support */ > if (trans_support & CFGTBL_Trans_io_accel1) { > transMethod |= CFGTBL_Trans_io_accel1 | Shouldn't you be moving this check from its previous location, rather than adding a new one that makes the original obsolete? James --- diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c index 8cf4a0c..9a6e4a2 100644 --- a/drivers/scsi/hpsa.c +++ b/drivers/scsi/hpsa.c @@ -7463,6 +7463,10 @@ static void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) if (hpsa_simple_mode) return; + trans_support = readl(&(h->cfgtable->TransportSupport)); + if (!(trans_support & PERFORMANT_MODE)) + return; + /* Check for I/O accelerator mode support */ if (trans_support & CFGTBL_Trans_io_accel1) { transMethod |= CFGTBL_Trans_io_accel1 | @@ -7479,10 +7483,6 @@ static void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) } /* TODO, check that this next line h->nreply_queues is correct */ - trans_support = readl(&(h->cfgtable->TransportSupport)); - if (!(trans_support & PERFORMANT_MODE)) - return; - h->nreply_queues = h->msix_vector > 0 ? h->msix_vector : 1; hpsa_get_max_perf_mode_cmds(h); /* Performant mode ring buffer and supporting data structures */ ^ permalink raw reply related [flat|nested] 9+ messages in thread
[parent not found: <1397490316.2207.23.camel-sFMDBYUN5F8GjUHQrlYNx2Wm91YjaHnnhRte9Li2A+AAvxtiuMwx3w@public.gmane.org>]
* Re: [PATCH] hpsa: fix uninitialized trans_support in hpsa_put_ctlr_into_performant_mode() 2014-04-14 15:45 ` James Bottomley @ 2014-04-14 15:52 ` scameron -1 siblings, 0 replies; 9+ messages in thread From: scameron-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8 @ 2014-04-14 15:52 UTC (permalink / raw) To: James Bottomley Cc: linux-scsi, Baoquan He, linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, open list:INTEL IOMMU (VT-d), Davidlohr Bueso, scameron-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8, Bjorn Helgaas, Jiang Liu On Mon, Apr 14, 2014 at 08:45:16AM -0700, James Bottomley wrote: > Your subject line is very tame. It should be the one line summary of > why we apply the patch, so it should read something like > > hpsa: fix NULL deref in performant mode > > On Thu, 2014-04-10 at 17:17 -0500, scameron-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8@public.gmane.org wrote: > > Without this, you'll see a null pointer dereference in > > hpsa_enter_performant_mode(). > > The description should be more comprehensible. > > I'm clear that the use before initialisation is a bug ... I'm less clear > on why it causes an oops. > > > Signed-off-by: Stephen M. Cameron <scameron-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8@public.gmane.org> > > --- > > drivers/scsi/hpsa.c | 4 ++++ > > 1 files changed, 4 insertions(+), 0 deletions(-) > > > > diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c > > index 8cf4a0c..ef4dfdd 100644 > > --- a/drivers/scsi/hpsa.c > > +++ b/drivers/scsi/hpsa.c > > @@ -7463,6 +7463,10 @@ static void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) > > if (hpsa_simple_mode) > > return; > > > > + trans_support = readl(&(h->cfgtable->TransportSupport)); > > + if (!(trans_support & PERFORMANT_MODE)) > > + return; > > + > > /* Check for I/O accelerator mode support */ > > if (trans_support & CFGTBL_Trans_io_accel1) { > > transMethod |= CFGTBL_Trans_io_accel1 | > > Shouldn't you be moving this check from its previous location, rather > than adding a new one that makes the original obsolete? Oh... I didn't notice that. So that's what happened to that hunk. Yes, that is what should be done. I will resend the patch after fixing up this and the commit message. -- steve > > James > > --- > > diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c > index 8cf4a0c..9a6e4a2 100644 > --- a/drivers/scsi/hpsa.c > +++ b/drivers/scsi/hpsa.c > @@ -7463,6 +7463,10 @@ static void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) > if (hpsa_simple_mode) > return; > > + trans_support = readl(&(h->cfgtable->TransportSupport)); > + if (!(trans_support & PERFORMANT_MODE)) > + return; > + > /* Check for I/O accelerator mode support */ > if (trans_support & CFGTBL_Trans_io_accel1) { > transMethod |= CFGTBL_Trans_io_accel1 | > @@ -7479,10 +7483,6 @@ static void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) > } > > /* TODO, check that this next line h->nreply_queues is correct */ > - trans_support = readl(&(h->cfgtable->TransportSupport)); > - if (!(trans_support & PERFORMANT_MODE)) > - return; > - > h->nreply_queues = h->msix_vector > 0 ? h->msix_vector : 1; > hpsa_get_max_perf_mode_cmds(h); > /* Performant mode ring buffer and supporting data structures */ > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] hpsa: fix uninitialized trans_support in hpsa_put_ctlr_into_performant_mode() @ 2014-04-14 15:52 ` scameron 0 siblings, 0 replies; 9+ messages in thread From: scameron @ 2014-04-14 15:52 UTC (permalink / raw) To: James Bottomley Cc: Bjorn Helgaas, Davidlohr Bueso, Baoquan He, linux-kernel@vger.kernel.org, linux-scsi, linux-pci@vger.kernel.org, Joerg Roedel, open list:INTEL IOMMU (VT-d), Jiang Liu, scameron On Mon, Apr 14, 2014 at 08:45:16AM -0700, James Bottomley wrote: > Your subject line is very tame. It should be the one line summary of > why we apply the patch, so it should read something like > > hpsa: fix NULL deref in performant mode > > On Thu, 2014-04-10 at 17:17 -0500, scameron@beardog.cce.hp.com wrote: > > Without this, you'll see a null pointer dereference in > > hpsa_enter_performant_mode(). > > The description should be more comprehensible. > > I'm clear that the use before initialisation is a bug ... I'm less clear > on why it causes an oops. > > > Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com> > > --- > > drivers/scsi/hpsa.c | 4 ++++ > > 1 files changed, 4 insertions(+), 0 deletions(-) > > > > diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c > > index 8cf4a0c..ef4dfdd 100644 > > --- a/drivers/scsi/hpsa.c > > +++ b/drivers/scsi/hpsa.c > > @@ -7463,6 +7463,10 @@ static void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) > > if (hpsa_simple_mode) > > return; > > > > + trans_support = readl(&(h->cfgtable->TransportSupport)); > > + if (!(trans_support & PERFORMANT_MODE)) > > + return; > > + > > /* Check for I/O accelerator mode support */ > > if (trans_support & CFGTBL_Trans_io_accel1) { > > transMethod |= CFGTBL_Trans_io_accel1 | > > Shouldn't you be moving this check from its previous location, rather > than adding a new one that makes the original obsolete? Oh... I didn't notice that. So that's what happened to that hunk. Yes, that is what should be done. I will resend the patch after fixing up this and the commit message. -- steve > > James > > --- > > diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c > index 8cf4a0c..9a6e4a2 100644 > --- a/drivers/scsi/hpsa.c > +++ b/drivers/scsi/hpsa.c > @@ -7463,6 +7463,10 @@ static void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) > if (hpsa_simple_mode) > return; > > + trans_support = readl(&(h->cfgtable->TransportSupport)); > + if (!(trans_support & PERFORMANT_MODE)) > + return; > + > /* Check for I/O accelerator mode support */ > if (trans_support & CFGTBL_Trans_io_accel1) { > transMethod |= CFGTBL_Trans_io_accel1 | > @@ -7479,10 +7483,6 @@ static void hpsa_put_ctlr_into_performant_mode(struct ctlr_info *h) > } > > /* TODO, check that this next line h->nreply_queues is correct */ > - trans_support = readl(&(h->cfgtable->TransportSupport)); > - if (!(trans_support & PERFORMANT_MODE)) > - return; > - > h->nreply_queues = h->msix_vector > 0 ? h->msix_vector : 1; > hpsa_get_max_perf_mode_cmds(h); > /* Performant mode ring buffer and supporting data structures */ > ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2014-04-14 15:53 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-10 22:17 [PATCH] hpsa: fix uninitialized trans_support in hpsa_put_ctlr_into_performant_mode() scameron-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8
2014-04-10 22:17 ` scameron
2014-04-10 22:37 ` Davidlohr Bueso
[not found] ` <20140410221704.GA22465-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8@public.gmane.org>
2014-04-11 3:11 ` Baoquan He
2014-04-11 3:11 ` Baoquan He
2014-04-14 15:45 ` James Bottomley
2014-04-14 15:45 ` James Bottomley
[not found] ` <1397490316.2207.23.camel-sFMDBYUN5F8GjUHQrlYNx2Wm91YjaHnnhRte9Li2A+AAvxtiuMwx3w@public.gmane.org>
2014-04-14 15:52 ` scameron-3C9H9nn4BS4HL6m8NFMY+dBPR1lH4CV8
2014-04-14 15:52 ` scameron
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.