All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Fainelli <f.fainelli@gmail.com>
To: Petri Gynther <pgynther@google.com>
Cc: netdev@vger.kernel.org, David Miller <davem@davemloft.net>,
	jaedon.shin@gmail.com
Subject: Re: [PATCH net 1/3] net: bcmgenet: fix off-by-one in incrementing read pointer
Date: Fri, 10 Oct 2014 09:41:13 -0700	[thread overview]
Message-ID: <54380C29.9010704@gmail.com> (raw)
In-Reply-To: <CAGXr9JHBVW9rOiSUCCsVnYp73OPdyynP35xiAnKjRsVCf8fK9Q@mail.gmail.com>

On 10/09/2014 11:01 PM, Petri Gynther wrote:
> Hi Florian,
> 
> On Thu, Oct 9, 2014 at 6:06 PM, Florian Fainelli <f.fainelli@gmail.com> wrote:
>> Commit b629be5c8399d7c423b92135eb43a86c924d1cbc ("net: bcmgenet: check
>> harder for out of memory conditions") moved the increment of the local
>> read pointer *before* reading from the hardware descriptor using
>> dmadesc_get_length_status(), which creates an off-by-one situation.
>>
>> Fix this by moving again the read_ptr increment after we have read the
>> hardware descriptor to get both the control block and the read pointer
>> back in sync.
>>
>> Fixes: b629be5c8399 ("net: bcmgenet: check harder for out of memory conditions")
>> Reported-by: Jaedon Shin <jaedon.shin@gmail.com>
>> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
>> ---
>>  drivers/net/ethernet/broadcom/genet/bcmgenet.c | 6 +++---
>>  1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
>> index fff2634b6f34..f1bcebcbba80 100644
>> --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
>> +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
>> @@ -1287,9 +1287,6 @@ static unsigned int bcmgenet_desc_rx(struct bcmgenet_priv *priv,
>>
>>                 rxpktprocessed++;
>>
>> -               priv->rx_read_ptr++;
>> -               priv->rx_read_ptr &= (priv->num_rx_bds - 1);
>> -
> 
> Wouldn't it be better to move the three lines:
> rxpktprocessed++;
> priv->rx_read_ptr++;
> priv->rx_read_ptr &= (priv->num_rx_bds - 1)
> 
> as the last lines of the while-loop, after the CB refill?

That's basically what Jaedon did in his first patch, I don't have strong
objections in doing that if you think that makes it look clearer.

> 
> -- Petri
> 
> 
>>                 /* We do not have a backing SKB, so we do not have a
>>                  * corresponding DMA mapping for this incoming packet since
>>                  * bcmgenet_rx_refill always either has both skb and mapping or
>> @@ -1332,6 +1329,9 @@ static unsigned int bcmgenet_desc_rx(struct bcmgenet_priv *priv,
>>                           __func__, p_index, priv->rx_c_index,
>>                           priv->rx_read_ptr, dma_length_status);
>>
>> +               priv->rx_read_ptr++;
>> +               priv->rx_read_ptr &= (priv->num_rx_bds - 1);
>> +
>>                 if (unlikely(!(dma_flag & DMA_EOP) || !(dma_flag & DMA_SOP))) {
>>                         netif_err(priv, rx_status, dev,
>>                                   "dropping fragmented packet!\n");
>> --
>> 1.9.1
>>

  reply	other threads:[~2014-10-10 16:41 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-10  1:06 [PATCH net 0/3] net: bcmgenet & systemport fixes Florian Fainelli
2014-10-10  1:06 ` [PATCH net 1/3] net: bcmgenet: fix off-by-one in incrementing read pointer Florian Fainelli
2014-10-10  6:01   ` Petri Gynther
2014-10-10 16:41     ` Florian Fainelli [this message]
2014-10-10 17:17       ` Petri Gynther
2014-10-10 17:18         ` Florian Fainelli
2014-10-10  1:06 ` [PATCH net 2/3] net: bcmgenet: avoid unbalanced enable_irq_wake calls Florian Fainelli
2014-10-10  1:06 ` [PATCH net 3/3] net: systemport: " Florian Fainelli

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=54380C29.9010704@gmail.com \
    --to=f.fainelli@gmail.com \
    --cc=davem@davemloft.net \
    --cc=jaedon.shin@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=pgynther@google.com \
    /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.