All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nikolay Aleksandrov <nikolay@redhat.com>
To: Nikolay Aleksandrov <nikolay@redhat.com>, netdev@vger.kernel.org
Cc: Andy Gospodarek <andy@greyhouse.net>,
	Jay Vosburgh <fubar@us.ibm.com>,
	Veaceslav Falico <vfalico@redhat.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <eric.dumazet@gmail.com>
Subject: Re: [PATCH net] bonding: add ACCESS_ONCE() and change local var names
Date: Thu, 05 Dec 2013 15:27:10 +0100	[thread overview]
Message-ID: <52A08D3E.4070900@redhat.com> (raw)
In-Reply-To: <1386252644-3536-1-git-send-email-nikolay@redhat.com>

On 12/05/2013 03:10 PM, Nikolay Aleksandrov wrote:
> We use bond->params.packets_per_slave without any locking in 2 places:
> bond_rr_gen_id() and bonding_show_packets_per_slave(), so as a
> precaution and to show what's intended, add ACCESS_ONCE() when fetching
> it in the local variable.
> Also rename the local variables to pps_tmp so they're not with the name
> of the module parameter to avoid confusion.
> 
> CC: Andy Gospodarek <andy@greyhouse.net>
> CC: Jay Vosburgh <fubar@us.ibm.com>
> CC: Veaceslav Falico <vfalico@redhat.com>
> CC: David S. Miller <davem@davemloft.net>
> CC: Eric Dumazet <eric.dumazet@gmail.com>
> Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com>
> ---
> Please note that this patch is on top of the one I posted earlier today
> ("bonding: fix packets_per_slave showing").
> Also I'm not adding ACCESS_ONCE() to bond_check_params() now as we don't
> export almost anything through /sys/module/bonding/parameters and moreover
> it's a new feature and thus net-next material if such an export is to be
> made.
> 
>  drivers/net/bonding/bond_main.c  | 7 +++----
>  drivers/net/bonding/bond_sysfs.c | 8 ++++----
>  2 files changed, 7 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
> index 36eab0c..3ec3036 100644
> --- a/drivers/net/bonding/bond_main.c
> +++ b/drivers/net/bonding/bond_main.c
> @@ -3590,10 +3590,10 @@ void bond_xmit_slave_id(struct bonding *bond, struct sk_buff *skb, int slave_id)
>   */
>  static u32 bond_rr_gen_slave_id(struct bonding *bond)
>  {
> -	int packets_per_slave = bond->params.packets_per_slave;
> +	int pps_tmp = ACCESS_ONCE(bond->params.packets_per_slave);
>  	u32 slave_id;
>  
> -	switch (packets_per_slave) {
> +	switch (pps_tmp) {
>  	case 0:
>  		slave_id = prandom_u32();
>  		break;
> @@ -3601,8 +3601,7 @@ static u32 bond_rr_gen_slave_id(struct bonding *bond)
>  		slave_id = bond->rr_tx_counter;
>  		break;
>  	default:
> -		slave_id = reciprocal_divide(bond->rr_tx_counter,
> -					     packets_per_slave);
> +		slave_id = reciprocal_divide(bond->rr_tx_counter, pps_tmp);
>  		break;
>  	}
>  	bond->rr_tx_counter++;
> diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c
> index 0ae580b..1a0ae85 100644
> --- a/drivers/net/bonding/bond_sysfs.c
> +++ b/drivers/net/bonding/bond_sysfs.c
> @@ -1635,12 +1635,12 @@ static ssize_t bonding_show_packets_per_slave(struct device *d,
>  					      char *buf)
>  {
>  	struct bonding *bond = to_bond(d);
> -	unsigned int packets_per_slave = bond->params.packets_per_slave;
> +	unsigned int pps_tmp = ACCESS_ONCE(bond->params.packets_per_slave);
>  
> -	if (packets_per_slave > 1)
> -		packets_per_slave = reciprocal_value(packets_per_slave);
> +	if (pps_tmp > 1)
> +		pps_tmp = reciprocal_value(pps_tmp);
>  
> -	return sprintf(buf, "%u\n", packets_per_slave);
> +	return sprintf(buf, "%u\n", pps_tmp);
>  }
>  
>  static ssize_t bonding_store_packets_per_slave(struct device *d,
> 
Self-nak
please disregard this patch and sorry for the noise. I'm so blind...

Nik

      reply	other threads:[~2013-12-05 14:31 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-05 14:10 [PATCH net] bonding: add ACCESS_ONCE() and change local var names Nikolay Aleksandrov
2013-12-05 14:27 ` Nikolay Aleksandrov [this message]

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=52A08D3E.4070900@redhat.com \
    --to=nikolay@redhat.com \
    --cc=andy@greyhouse.net \
    --cc=davem@davemloft.net \
    --cc=eric.dumazet@gmail.com \
    --cc=fubar@us.ibm.com \
    --cc=netdev@vger.kernel.org \
    --cc=vfalico@redhat.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.