From: Ding Tianhong <dthxman@gmail.com>
To: Veaceslav Falico <vfalico@redhat.com>
Cc: Ding Tianhong <dingtianhong@huawei.com>,
Jay Vosburgh <fubar@us.ibm.com>,
Andy Gospodarek <andy@greyhouse.net>,
"David S. Miller" <davem@davemloft.net>,
Nikolay Aleksandrov <nikolay@redhat.com>,
Netdev <netdev@vger.kernel.org>
Subject: Re: [PATCH net RESEND] bonding: add ip checks when store ip target
Date: Wed, 13 Nov 2013 22:35:47 +0800 [thread overview]
Message-ID: <52838E43.9080505@gmail.com> (raw)
In-Reply-To: <20131113100000.GH19702@redhat.com>
于 2013/11/13 18:00, Veaceslav Falico 写道:
> On Wed, Nov 13, 2013 at 10:19:02AM +0800, Ding Tianhong wrote:
>> I met a Bug when I add ip target with the wrong ip address:
>>
>> echo +500.500.500.500 > /sys/class/net/bond0/bonding/arp_ip_target
>>
>> the wrong ip address will transfor to 245.245.245.244 and add
>> to the ip target success, it is uncorrect, so I add checks to avoid
>> adding wrong address.
>>
>> The in4_pton() will set wrong ip address to 0.0.0.0, it will return by
>> the next check and will not add to ip target.
>>
>> Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
>> ---
>> drivers/net/bonding/bond_sysfs.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/bonding/bond_sysfs.c
>> b/drivers/net/bonding/bond_sysfs.c
>> index ec9b646..e0c97fb 100644
>> --- a/drivers/net/bonding/bond_sysfs.c
>> +++ b/drivers/net/bonding/bond_sysfs.c
>> @@ -653,7 +653,7 @@ static ssize_t bonding_store_arp_targets(struct
>> device *d,
>> int ind, i, j, ret = -EINVAL;
>>
>> targets = bond->params.arp_targets;
>> - newtarget = in_aton(buf + 1);
>> + in4_pton(buf + 1, strlen(buf) - 1, (u8 *)&newtarget, -1, NULL);
>
> No need for strlen(buf)-1, if you specify -1 it will compute it by
> itself.
>
> Also, you might simplify the code a bit in the function. Otherwise -
> looks
> good, thank you.
>
> Untested patch:
>
> diff --git a/drivers/net/bonding/bond_sysfs.c
> b/drivers/net/bonding/bond_sysfs.c
> index c29b836..e3fff6e 100644
> --- a/drivers/net/bonding/bond_sysfs.c
> +++ b/drivers/net/bonding/bond_sysfs.c
> @@ -661,16 +661,16 @@ static ssize_t bonding_store_arp_targets(struct
> device *d,
> unsigned long *targets_rx;
> int ind, i, j, ret = -EINVAL;
>
> + if (!in4_pton(buf + 1, -1, (u8 *)&newtarget, -1, NULL)) {
> + pr_err("%s: invalid ARP target specified, use +<addr> or -<addr>\n",
> + bond->dev->name);
> + goto out;
> + }
> +
> targets = bond->params.arp_targets;
> - newtarget = in_aton(buf + 1);
> +
> /* look for adds */
> if (buf[0] == '+') {
> - if ((newtarget == 0) || (newtarget == htonl(INADDR_BROADCAST))) {
> - pr_err("%s: invalid ARP target %pI4 specified for addition\n",
> - bond->dev->name, &newtarget);
> - goto out;
> - }
> -
> if (bond_get_targets_ip(targets, newtarget) != -1) { /* dup */
> pr_err("%s: ARP target %pI4 is already present\n",
> bond->dev->name, &newtarget);
> @@ -693,12 +693,6 @@ static ssize_t bonding_store_arp_targets(struct
> device *d,
> targets[ind] = newtarget;
> write_unlock_bh(&bond->lock);
> } else if (buf[0] == '-') {
> - if ((newtarget == 0) || (newtarget == htonl(INADDR_BROADCAST))) {
> - pr_err("%s: invalid ARP target %pI4 specified for removal\n",
> - bond->dev->name, &newtarget);
> - goto out;
> - }
> -
> ind = bond_get_targets_ip(targets, newtarget);
> if (ind == -1) {
> pr_err("%s: unable to remove nonexistent ARP target %pI4.\n",
> --
Although there is no substantial changes, but more simple more
beautiful, I'll take it,
resend it later, thanks for your opinion.
Regards
Ding
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
prev parent reply other threads:[~2013-11-13 14:47 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-13 2:19 [PATCH net RESEND] bonding: add ip checks when store ip target Ding Tianhong
2013-11-13 10:00 ` Veaceslav Falico
2013-11-13 14:35 ` Ding Tianhong [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=52838E43.9080505@gmail.com \
--to=dthxman@gmail.com \
--cc=andy@greyhouse.net \
--cc=davem@davemloft.net \
--cc=dingtianhong@huawei.com \
--cc=fubar@us.ibm.com \
--cc=netdev@vger.kernel.org \
--cc=nikolay@redhat.com \
--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.