linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [Outreachy kernel] [PATCH v2] net: ethernet: Drop unnecessary continue
@ 2018-03-03 16:14 Arushi Singhal
  2018-03-05  1:57 ` [Outreachy kernel] " Jakub Kicinski
  2018-03-07 15:39 ` David Miller
  0 siblings, 2 replies; 7+ messages in thread
From: Arushi Singhal @ 2018-03-03 16:14 UTC (permalink / raw)
  To: jdmason
  Cc: Jakub Kicinski, netdev, linux-kernel, oss-drivers, outreachy-kernel

Continue at the bottom of a loop are removed.
Issue found using drop_continue.cocci Coccinelle script.

Signed-off-by: Arushi Singhal <arushisinghal19971997@gmail.com>
---
Changes in v2:
- Braces is dropped from if with single statement.

 drivers/net/ethernet/amd/ni65.c                   | 4 +---
 drivers/net/ethernet/neterion/s2io.c              | 4 +---
 drivers/net/ethernet/netronome/nfp/nfp_net_main.c | 4 +---
 3 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/amd/ni65.c b/drivers/net/ethernet/amd/ni65.c
index e248d1a..8931ce6 100644
--- a/drivers/net/ethernet/amd/ni65.c
+++ b/drivers/net/ethernet/amd/ni65.c
@@ -435,10 +435,8 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr)
 		}
 		if(cards[i].vendor_id) {
 			for(j=0;j<3;j++)
-				if(inb(ioaddr+cards[i].addr_offset+j) != cards[i].vendor_id[j]) {
+				if(inb(ioaddr+cards[i].addr_offset+j) != cards[i].vendor_id[j])
 					release_region(ioaddr, cards[i].total_size);
-					continue;
-			  }
 		}
 		break;
 	}
diff --git a/drivers/net/ethernet/neterion/s2io.c b/drivers/net/ethernet/neterion/s2io.c
index b8983e7..4738bc7 100644
--- a/drivers/net/ethernet/neterion/s2io.c
+++ b/drivers/net/ethernet/neterion/s2io.c
@@ -3679,11 +3679,9 @@ static void restore_xmsi_data(struct s2io_nic *nic)
 		writeq(nic->msix_info[i].data, &bar0->xmsi_data);
 		val64 = (s2BIT(7) | s2BIT(15) | vBIT(msix_index, 26, 6));
 		writeq(val64, &bar0->xmsi_access);
-		if (wait_for_msix_trans(nic, msix_index)) {
+		if (wait_for_msix_trans(nic, msix_index))
 			DBG_PRINT(ERR_DBG, "%s: index: %d failed\n",
 				  __func__, msix_index);
-			continue;
-		}
 	}
 }
 
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_main.c b/drivers/net/ethernet/netronome/nfp/nfp_net_main.c
index 15fa47f..5cd4f3f 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_main.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_main.c
@@ -258,10 +258,8 @@ nfp_net_pf_alloc_vnics(struct nfp_pf *pf, void __iomem *ctrl_bar,
 		ctrl_bar += NFP_PF_CSR_SLICE_SIZE;
 
 		/* Kill the vNIC if app init marked it as invalid */
-		if (nn->port && nn->port->type == NFP_PORT_INVALID) {
+		if (nn->port && nn->port->type == NFP_PORT_INVALID)
 			nfp_net_pf_free_vnic(pf, nn);
-			continue;
-		}
 	}
 
 	if (list_empty(&pf->vnics))
-- 
2.7.4

-- 
You received this message because you are subscribed to the Google Groups "outreachy-kernel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com.
To post to this group, send email to outreachy-kernel@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/20180303161456.GA20194%40seema-Inspiron-15-3567.
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Outreachy kernel] Re: [PATCH v2] net: ethernet: Drop unnecessary continue
  2018-03-03 16:14 [Outreachy kernel] [PATCH v2] net: ethernet: Drop unnecessary continue Arushi Singhal
@ 2018-03-05  1:57 ` Jakub Kicinski
  2018-03-07 15:39 ` David Miller
  1 sibling, 0 replies; 7+ messages in thread
From: Jakub Kicinski @ 2018-03-05  1:57 UTC (permalink / raw)
  To: Arushi Singhal
  Cc: jdmason, netdev, linux-kernel, oss-drivers, outreachy-kernel

On Sat, 3 Mar 2018 21:44:56 +0530, Arushi Singhal wrote:
> diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_main.c b/drivers/net/ethernet/netronome/nfp/nfp_net_main.c
> index 15fa47f..5cd4f3f 100644
> --- a/drivers/net/ethernet/netronome/nfp/nfp_net_main.c
> +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_main.c
> @@ -258,10 +258,8 @@ nfp_net_pf_alloc_vnics(struct nfp_pf *pf, void __iomem *ctrl_bar,
>  		ctrl_bar += NFP_PF_CSR_SLICE_SIZE;
>  
>  		/* Kill the vNIC if app init marked it as invalid */
> -		if (nn->port && nn->port->type == NFP_PORT_INVALID) {
> +		if (nn->port && nn->port->type == NFP_PORT_INVALID)
>  			nfp_net_pf_free_vnic(pf, nn);
> -			continue;
> -		}

This is an error handling path so the continue makes sense here to
indicate the processing can't ever fall through if more statements are
ever added to the loop.  But OK.

>  	}
>  
>  	if (list_empty(&pf->vnics))

-- 
You received this message because you are subscribed to the Google Groups "outreachy-kernel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com.
To post to this group, send email to outreachy-kernel@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/20180304175713.25a44ac6%40cakuba.netronome.com.
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Outreachy kernel] Re: [PATCH v2] net: ethernet: Drop unnecessary continue
  2018-03-03 16:14 [Outreachy kernel] [PATCH v2] net: ethernet: Drop unnecessary continue Arushi Singhal
  2018-03-05  1:57 ` [Outreachy kernel] " Jakub Kicinski
@ 2018-03-07 15:39 ` David Miller
  2018-03-07 16:52   ` Arushi Singhal
  1 sibling, 1 reply; 7+ messages in thread
From: David Miller @ 2018-03-07 15:39 UTC (permalink / raw)
  To: arushisinghal19971997
  Cc: jdmason, jakub.kicinski, netdev, linux-kernel, oss-drivers,
	outreachy-kernel

From: Arushi Singhal <arushisinghal19971997@gmail.com>
Date: Sat, 3 Mar 2018 21:44:56 +0530

> Continue at the bottom of a loop are removed.
> Issue found using drop_continue.cocci Coccinelle script.
> 
> Signed-off-by: Arushi Singhal <arushisinghal19971997@gmail.com>
> ---
> Changes in v2:
> - Braces is dropped from if with single statement.

Sorry there is no way I am applying this.

Just blindly removing continue statements that some static checker
or compiler warning mentions is completely unacceptable.

Actually _LOOK_ at this code:

>  		if(cards[i].vendor_id) {
>  			for(j=0;j<3;j++)
> -				if(inb(ioaddr+cards[i].addr_offset+j) != cards[i].vendor_id[j]) {
> +				if(inb(ioaddr+cards[i].addr_offset+j) != cards[i].vendor_id[j])
>  					release_region(ioaddr, cards[i].total_size);
> -					continue;
> -			  }
>  		}

The extraneous continue statement is the _least_ of the problems here.

This code, if the if() statement triggers, will release the ioaddr
region and then _CONTINUE_ the for(j) loop, and try to access the
registers using the same 'ioaddr' again.

That's actually a _REAL_ bug, and you're making it seem like
the behavior is intentional by editing it like this.

And the bug probably exists because this entire sequence has
misaligned closing curly braces.  It makes it look like
the continue is for the outer loop, which would be fine.

But it's not.  It's for the inner loop, and this causes the "use
ioaddr after releasing it" bug.

Please do not submit patches like this one, it makes for a lot of
wasted auditing and review for people.  The onus is on you to read
and understand the code you are editing before submitting your
changes.

Thank you.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Outreachy kernel] Re: [PATCH v2] net: ethernet: Drop unnecessary continue
  2018-03-07 15:39 ` David Miller
@ 2018-03-07 16:52   ` Arushi Singhal
  2018-03-07 17:01     ` David Miller
  2018-03-07 19:41     ` Julia Lawall
  0 siblings, 2 replies; 7+ messages in thread
From: Arushi Singhal @ 2018-03-07 16:52 UTC (permalink / raw)
  To: David Miller
  Cc: jdmason, Jakub Kicinski, Linux Kernel Network Developers, LKML,
	oss-drivers, outreachy-kernel

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

On Wed, Mar 7, 2018 at 9:09 PM, David Miller <davem@davemloft.net> wrote:

> From: Arushi Singhal <arushisinghal19971997@gmail.com>
> Date: Sat, 3 Mar 2018 21:44:56 +0530
>
> > Continue at the bottom of a loop are removed.
> > Issue found using drop_continue.cocci Coccinelle script.
> >
> > Signed-off-by: Arushi Singhal <arushisinghal19971997@gmail.com>
> > ---
> > Changes in v2:
> > - Braces is dropped from if with single statement.
>
> Sorry there is no way I am applying this.
>
> Just blindly removing continue statements that some static checker
> or compiler warning mentions is completely unacceptable.
>
> Actually _LOOK_ at this code:
>
> >               if(cards[i].vendor_id) {
> >                       for(j=0;j<3;j++)
> > -                             if(inb(ioaddr+cards[i].addr_offset+j) !=
> cards[i].vendor_id[j]) {
> > +                             if(inb(ioaddr+cards[i].addr_offset+j) !=
> cards[i].vendor_id[j])
> >                                       release_region(ioaddr,
> cards[i].total_size);
> > -                                     continue;
> > -                       }
> >               }
>
> The extraneous continue statement is the _least_ of the problems here.
>

Hello David

Yes you are correct.


>
> This code, if the if() statement triggers, will release the ioaddr
> region and then _CONTINUE_ the for(j) loop, and try to access the
> registers using the same 'ioaddr' again.
>
> That's actually a _REAL_ bug, and you're making it seem like
> the behavior is intentional by editing it like this.
>
> And the bug probably exists because this entire sequence has
> misaligned closing curly braces.  It makes it look like
> the continue is for the outer loop, which would be fine.
>
> But it's not.  It's for the inner loop, and this causes the "use
> ioaddr after releasing it" bug.
>

Yes I know it's for the inner loop.
But I am not able to find, where I am wrong here

For example
*BEFORE:-*
for(i=1;i<10;i++)
       if (expr1)
          {
             statement;
             continue;
          }

*After My Patch*
for(i=1;i<10;i++)
    if (expr1)
       statement;

I am not understanding where I am getting wrong in understanding this.
For me both are equivalent.

I Agree with Jakub reply:-
"This is an error handling path so the continue makes sense here to
indicate the processing can't ever fall through if more statements are
ever added to the loop.  But OK."

Thanks
Arushi


> Please do not submit patches like this one, it makes for a lot of
> wasted auditing and review for people.  The onus is on you to read
> and understand the code you are editing before submitting your
> changes.
>
> Thank you.
>
>

-- 
You received this message because you are subscribed to the Google Groups "outreachy-kernel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com.
To post to this group, send email to outreachy-kernel@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/CA%2BXqjF8_axeTnahPmokxmDnm4NmWo8QWSEmLejN4fO1nAiDaBA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

[-- Attachment #2: Type: text/html, Size: 5123 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Outreachy kernel] Re: [PATCH v2] net: ethernet: Drop unnecessary continue
  2018-03-07 16:52   ` Arushi Singhal
@ 2018-03-07 17:01     ` David Miller
  2018-03-07 19:41     ` Julia Lawall
  1 sibling, 0 replies; 7+ messages in thread
From: David Miller @ 2018-03-07 17:01 UTC (permalink / raw)
  To: arushisinghal19971997
  Cc: jdmason, jakub.kicinski, netdev, linux-kernel, oss-drivers,
	outreachy-kernel

From: Arushi Singhal <arushisinghal19971997@gmail.com>
Date: Wed, 7 Mar 2018 22:22:13 +0530

> Yes I know it's for the inner loop.
> But I am not able to find, where I am wrong here

You are making what is essentially a nop change to a piece of code,
which if you had instead read carefully would have instead inspired
you to fix a real genuine bug instead.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Outreachy kernel] Re: [PATCH v2] net: ethernet: Drop unnecessary continue
  2018-03-07 16:52   ` Arushi Singhal
  2018-03-07 17:01     ` David Miller
@ 2018-03-07 19:41     ` Julia Lawall
  2018-03-08  2:57       ` Arushi Singhal
  1 sibling, 1 reply; 7+ messages in thread
From: Julia Lawall @ 2018-03-07 19:41 UTC (permalink / raw)
  To: Arushi Singhal
  Cc: David Miller, jdmason, Jakub Kicinski,
	Linux Kernel Network Developers, LKML, oss-drivers,
	outreachy-kernel

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



On Wed, 7 Mar 2018, Arushi Singhal wrote:

>
>
> On Wed, Mar 7, 2018 at 9:09 PM, David Miller <davem@davemloft.net> wrote:
>       From: Arushi Singhal <arushisinghal19971997@gmail.com>
>       Date: Sat, 3 Mar 2018 21:44:56 +0530
>
>       > Continue at the bottom of a loop are removed.
>       > Issue found using drop_continue.cocci Coccinelle script.
>       >
>       > Signed-off-by: Arushi Singhal
>       <arushisinghal19971997@gmail.com>
>       > ---
>       > Changes in v2:
>       > - Braces is dropped from if with single statement.
>
>       Sorry there is no way I am applying this.
>
>       Just blindly removing continue statements that some static
>       checker
>       or compiler warning mentions is completely unacceptable.
>
>       Actually _LOOK_ at this code:
>
>       >               if(cards[i].vendor_id) {
>       >                       for(j=0;j<3;j++)
>       > -                           
>        if(inb(ioaddr+cards[i].addr_offset+j) != cards[i].vendor_id[j])
>       {
>       > +                           
>        if(inb(ioaddr+cards[i].addr_offset+j) != cards[i].vendor_id[j])
>       >                                       release_region(ioaddr,
>       cards[i].total_size);
>       > -                                     continue;
>       > -                       }
>       >               }
>
>       The extraneous continue statement is the _least_ of the problems
>       here.
>
>
> Hello David
>
> Yes you are correct.
>  
>
>       This code, if the if() statement triggers, will release the
>       ioaddr
>       region and then _CONTINUE_ the for(j) loop, and try to access
>       the
>       registers using the same 'ioaddr' again.
>
>       That's actually a _REAL_ bug, and you're making it seem like
>       the behavior is intentional by editing it like this.
>
>       And the bug probably exists because this entire sequence has
>       misaligned closing curly braces.  It makes it look like
>       the continue is for the outer loop, which would be fine.
>
>       But it's not.  It's for the inner loop, and this causes the "use
>       ioaddr after releasing it" bug.
>
>
> Yes I know it's for the inner loop.
> But I am not able to find, where I am wrong here

Arushi,

You are preserving the current behavior and David is telling you that the
current behavior is incorrect.  He doesn't want a patch that changes the
code but preesrves the current (wrong) behavior, because that somehow
contributes to the illusion that the incorrect code is correct.

julia

>
> For example
> BEFORE:-
> for(i=1;i<10;i++)
>        if (expr1)
>           {
>              statement;
>              continue;
>           }
>  
> After My Patch
> for(i=1;i<10;i++)
>     if (expr1)        
>        statement;
>
> I am not understanding where I am getting wrong in understanding this.
> For me both are equivalent.
>
> I Agree with Jakub reply:-
> "This is an error handling path so the continue makes sense here to
> indicate the processing can't ever fall through if more statements are
> ever added to the loop.  But OK."
>
> Thanks
> Arushi
>
>
>       Please do not submit patches like this one, it makes for a lot
>       of
>       wasted auditing and review for people.  The onus is on you to
>       read
>       and understand the code you are editing before submitting your
>       changes.
>
>       Thank you.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "outreachy-kernel" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to outreachy-kernel+unsubscribe@googlegroups.com.
> To post to this group, send email to outreachy-kernel@googlegroups.com.
> To view this discussion on the web visithttps://groups.google.com/d/msgid/outreachy-kernel/CA%2BXqjF8_axeTnahPmokxm
> Dnm4NmWo8QWSEmLejN4fO1nAiDaBA%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.
>
>

-- 
You received this message because you are subscribed to the Google Groups "outreachy-kernel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com.
To post to this group, send email to outreachy-kernel@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/alpine.DEB.2.20.1803072039260.2814%40hadrien.
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Outreachy kernel] Re: [PATCH v2] net: ethernet: Drop unnecessary continue
  2018-03-07 19:41     ` Julia Lawall
@ 2018-03-08  2:57       ` Arushi Singhal
  0 siblings, 0 replies; 7+ messages in thread
From: Arushi Singhal @ 2018-03-08  2:57 UTC (permalink / raw)
  To: Julia Lawall
  Cc: David Miller, jdmason, Jakub Kicinski,
	Linux Kernel Network Developers, LKML, oss-drivers,
	outreachy-kernel

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

On Thu, Mar 8, 2018 at 1:11 AM, Julia Lawall <julia.lawall@lip6.fr> wrote:

>
>
> On Wed, 7 Mar 2018, Arushi Singhal wrote:
>
> >
> >
> > On Wed, Mar 7, 2018 at 9:09 PM, David Miller <davem@davemloft.net>
> wrote:
> >       From: Arushi Singhal <arushisinghal19971997@gmail.com>
> >       Date: Sat, 3 Mar 2018 21:44:56 +0530
> >
> >       > Continue at the bottom of a loop are removed.
> >       > Issue found using drop_continue.cocci Coccinelle script.
> >       >
> >       > Signed-off-by: Arushi Singhal
> >       <arushisinghal19971997@gmail.com>
> >       > ---
> >       > Changes in v2:
> >       > - Braces is dropped from if with single statement.
> >
> >       Sorry there is no way I am applying this.
> >
> >       Just blindly removing continue statements that some static
> >       checker
> >       or compiler warning mentions is completely unacceptable.
> >
> >       Actually _LOOK_ at this code:
> >
> >       >               if(cards[i].vendor_id) {
> >       >                       for(j=0;j<3;j++)
> >       > -
> >        if(inb(ioaddr+cards[i].addr_offset+j) != cards[i].vendor_id[j])
> >       {
> >       > +
> >        if(inb(ioaddr+cards[i].addr_offset+j) != cards[i].vendor_id[j])
> >       >                                       release_region(ioaddr,
> >       cards[i].total_size);
> >       > -                                     continue;
> >       > -                       }
> >       >               }
> >
> >       The extraneous continue statement is the _least_ of the problems
> >       here.
> >
> >
> > Hello David
> >
> > Yes you are correct.
> >
> >
> >       This code, if the if() statement triggers, will release the
> >       ioaddr
> >       region and then _CONTINUE_ the for(j) loop, and try to access
> >       the
> >       registers using the same 'ioaddr' again.
> >
> >       That's actually a _REAL_ bug, and you're making it seem like
> >       the behavior is intentional by editing it like this.
> >
> >       And the bug probably exists because this entire sequence has
> >       misaligned closing curly braces.  It makes it look like
> >       the continue is for the outer loop, which would be fine.
> >
> >       But it's not.  It's for the inner loop, and this causes the "use
> >       ioaddr after releasing it" bug.
> >
> >
> > Yes I know it's for the inner loop.
> > But I am not able to find, where I am wrong here
>
> Arushi,
>
> You are preserving the current behavior and David is telling you that the
> current behavior is incorrect.  He doesn't want a patch that changes the
> code but preesrves the current (wrong) behavior, because that somehow
> contributes to the illusion that the incorrect code is correct.
>

Thanks Julia :) for explaining it further.
Arushi

>
> julia
>
> >
> > For example
> > BEFORE:-
> > for(i=1;i<10;i++)
> >        if (expr1)
> >           {
> >              statement;
> >              continue;
> >           }
> >
> > After My Patch
> > for(i=1;i<10;i++)
> >     if (expr1)
> >        statement;
> >
> > I am not understanding where I am getting wrong in understanding this.
> > For me both are equivalent.
> >
> > I Agree with Jakub reply:-
> > "This is an error handling path so the continue makes sense here to
> > indicate the processing can't ever fall through if more statements are
> > ever added to the loop.  But OK."
> >
> > Thanks
> > Arushi
> >
> >
> >       Please do not submit patches like this one, it makes for a lot
> >       of
> >       wasted auditing and review for people.  The onus is on you to
> >       read
> >       and understand the code you are editing before submitting your
> >       changes.
> >
> >       Thank you.
> >
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "outreachy-kernel" group.
> > To unsubscribe from this group and stop receiving emails from it, send an
> > email to outreachy-kernel+unsubscribe@googlegroups.com.
> > To post to this group, send email to outreachy-kernel@googlegroups.com.
> > To view this discussion on the web visithttps://groups.google.
> com/d/msgid/outreachy-kernel/CA%2BXqjF8_axeTnahPmokxm
> > Dnm4NmWo8QWSEmLejN4fO1nAiDaBA%40mail.gmail.com.
> > For more options, visit https://groups.google.com/d/optout.
> >
> >

-- 
You received this message because you are subscribed to the Google Groups "outreachy-kernel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com.
To post to this group, send email to outreachy-kernel@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/CA%2BXqjF_9sMh2G6wX4SW75iXbUw%3DBt6J0AE4_rjqrNB_UAKcZtA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

[-- Attachment #2: Type: text/html, Size: 7620 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2018-03-08  2:57 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-03 16:14 [Outreachy kernel] [PATCH v2] net: ethernet: Drop unnecessary continue Arushi Singhal
2018-03-05  1:57 ` [Outreachy kernel] " Jakub Kicinski
2018-03-07 15:39 ` David Miller
2018-03-07 16:52   ` Arushi Singhal
2018-03-07 17:01     ` David Miller
2018-03-07 19:41     ` Julia Lawall
2018-03-08  2:57       ` Arushi Singhal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).