Skip to content

Commit

Permalink
bonding: Remove trailing NULs from sysfs interface.
Browse files Browse the repository at this point in the history
From: Wagner Ferenc <wferi@niif.hu>

Also remove trailing spaces from multivalued files.

This fixes output like for example:

$ od -c /sys/class/net/bond0/bonding/slaves
0000000   e   t   h   -   l   e   f   t       e   t   h   -   r   i   g
0000020   h   t      \n  \0
0000025

It mostly entails deleting '+1'-s after sprintf() calls: the return value
of sprintf is the number of characters printed, without the closing NUL,
ie. exactly what the sysfs interface requires.  The three multivalue
cases are different, because they also have to swallow back a trailing
space.

Signed-off-by: Ferenc Wagner <wferi@niif.hu>
Acked-by: Jay Vosburgh <fubar@us.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Wagner Ferenc authored and Jeff Garzik committed Dec 7, 2007
1 parent 2c5ea0f commit 7bd4650
Showing 1 changed file with 30 additions and 36 deletions.
66 changes: 30 additions & 36 deletions drivers/net/bonding/bond_sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -86,14 +86,13 @@ static ssize_t bonding_show_bonds(struct class *cls, char *buffer)
/* not enough space for another interface name */
if ((PAGE_SIZE - res) > 10)
res = PAGE_SIZE - 10;
res += sprintf(buffer + res, "++more++");
res += sprintf(buffer + res, "++more++ ");
break;
}
res += sprintf(buffer + res, "%s ",
bond->dev->name);
}
res += sprintf(buffer + res, "\n");
res++;
if (res) buffer[res-1] = '\n'; /* eat the leftover space */
up_read(&(bonding_rwsem));
return res;
}
Expand Down Expand Up @@ -235,14 +234,13 @@ static ssize_t bonding_show_slaves(struct device *d,
/* not enough space for another interface name */
if ((PAGE_SIZE - res) > 10)
res = PAGE_SIZE - 10;
res += sprintf(buf + res, "++more++");
res += sprintf(buf + res, "++more++ ");
break;
}
res += sprintf(buf + res, "%s ", slave->dev->name);
}
read_unlock(&bond->lock);
res += sprintf(buf + res, "\n");
res++;
if (res) buf[res-1] = '\n'; /* eat the leftover space */
return res;
}

Expand Down Expand Up @@ -406,7 +404,7 @@ static ssize_t bonding_show_mode(struct device *d,

return sprintf(buf, "%s %d\n",
bond_mode_tbl[bond->params.mode].modename,
bond->params.mode) + 1;
bond->params.mode);
}

static ssize_t bonding_store_mode(struct device *d,
Expand Down Expand Up @@ -463,11 +461,11 @@ static ssize_t bonding_show_xmit_hash(struct device *d,
if ((bond->params.mode != BOND_MODE_XOR) &&
(bond->params.mode != BOND_MODE_8023AD)) {
// Not Applicable
count = sprintf(buf, "NA\n") + 1;
count = sprintf(buf, "NA\n");
} else {
count = sprintf(buf, "%s %d\n",
xmit_hashtype_tbl[bond->params.xmit_policy].modename,
bond->params.xmit_policy) + 1;
bond->params.xmit_policy);
}

return count;
Expand Down Expand Up @@ -527,7 +525,7 @@ static ssize_t bonding_show_arp_validate(struct device *d,

return sprintf(buf, "%s %d\n",
arp_validate_tbl[bond->params.arp_validate].modename,
bond->params.arp_validate) + 1;
bond->params.arp_validate);
}

static ssize_t bonding_store_arp_validate(struct device *d,
Expand Down Expand Up @@ -627,7 +625,7 @@ static ssize_t bonding_show_arp_interval(struct device *d,
{
struct bonding *bond = to_bond(d);

return sprintf(buf, "%d\n", bond->params.arp_interval) + 1;
return sprintf(buf, "%d\n", bond->params.arp_interval);
}

static ssize_t bonding_store_arp_interval(struct device *d,
Expand Down Expand Up @@ -711,10 +709,7 @@ static ssize_t bonding_show_arp_targets(struct device *d,
res += sprintf(buf + res, "%u.%u.%u.%u ",
NIPQUAD(bond->params.arp_targets[i]));
}
if (res)
res--; /* eat the leftover space */
res += sprintf(buf + res, "\n");
res++;
if (res) buf[res-1] = '\n'; /* eat the leftover space */
return res;
}

Expand Down Expand Up @@ -815,7 +810,7 @@ static ssize_t bonding_show_downdelay(struct device *d,
{
struct bonding *bond = to_bond(d);

return sprintf(buf, "%d\n", bond->params.downdelay * bond->params.miimon) + 1;
return sprintf(buf, "%d\n", bond->params.downdelay * bond->params.miimon);
}

static ssize_t bonding_store_downdelay(struct device *d,
Expand Down Expand Up @@ -872,7 +867,7 @@ static ssize_t bonding_show_updelay(struct device *d,
{
struct bonding *bond = to_bond(d);

return sprintf(buf, "%d\n", bond->params.updelay * bond->params.miimon) + 1;
return sprintf(buf, "%d\n", bond->params.updelay * bond->params.miimon);

}

Expand Down Expand Up @@ -936,7 +931,7 @@ static ssize_t bonding_show_lacp(struct device *d,

return sprintf(buf, "%s %d\n",
bond_lacp_tbl[bond->params.lacp_fast].modename,
bond->params.lacp_fast) + 1;
bond->params.lacp_fast);
}

static ssize_t bonding_store_lacp(struct device *d,
Expand Down Expand Up @@ -992,7 +987,7 @@ static ssize_t bonding_show_miimon(struct device *d,
{
struct bonding *bond = to_bond(d);

return sprintf(buf, "%d\n", bond->params.miimon) + 1;
return sprintf(buf, "%d\n", bond->params.miimon);
}

static ssize_t bonding_store_miimon(struct device *d,
Expand Down Expand Up @@ -1083,9 +1078,9 @@ static ssize_t bonding_show_primary(struct device *d,
struct bonding *bond = to_bond(d);

if (bond->primary_slave)
count = sprintf(buf, "%s\n", bond->primary_slave->dev->name) + 1;
count = sprintf(buf, "%s\n", bond->primary_slave->dev->name);
else
count = sprintf(buf, "\n") + 1;
count = sprintf(buf, "\n");

return count;
}
Expand Down Expand Up @@ -1149,7 +1144,7 @@ static ssize_t bonding_show_carrier(struct device *d,
{
struct bonding *bond = to_bond(d);

return sprintf(buf, "%d\n", bond->params.use_carrier) + 1;
return sprintf(buf, "%d\n", bond->params.use_carrier);
}

static ssize_t bonding_store_carrier(struct device *d,
Expand Down Expand Up @@ -1198,9 +1193,9 @@ static ssize_t bonding_show_active_slave(struct device *d,
read_unlock(&bond->curr_slave_lock);

if (USES_PRIMARY(bond->params.mode) && curr)
count = sprintf(buf, "%s\n", curr->dev->name) + 1;
count = sprintf(buf, "%s\n", curr->dev->name);
else
count = sprintf(buf, "\n") + 1;
count = sprintf(buf, "\n");
return count;
}

Expand Down Expand Up @@ -1295,7 +1290,7 @@ static ssize_t bonding_show_mii_status(struct device *d,
curr = bond->curr_active_slave;
read_unlock(&bond->curr_slave_lock);

return sprintf(buf, "%s\n", (curr) ? "up" : "down") + 1;
return sprintf(buf, "%s\n", (curr) ? "up" : "down");
}
static DEVICE_ATTR(mii_status, S_IRUGO, bonding_show_mii_status, NULL);

Expand All @@ -1312,10 +1307,10 @@ static ssize_t bonding_show_ad_aggregator(struct device *d,

if (bond->params.mode == BOND_MODE_8023AD) {
struct ad_info ad_info;
count = sprintf(buf, "%d\n", (bond_3ad_get_active_agg_info(bond, &ad_info)) ? 0 : ad_info.aggregator_id) + 1;
count = sprintf(buf, "%d\n", (bond_3ad_get_active_agg_info(bond, &ad_info)) ? 0 : ad_info.aggregator_id);
}
else
count = sprintf(buf, "\n") + 1;
count = sprintf(buf, "\n");

return count;
}
Expand All @@ -1334,10 +1329,10 @@ static ssize_t bonding_show_ad_num_ports(struct device *d,

if (bond->params.mode == BOND_MODE_8023AD) {
struct ad_info ad_info;
count = sprintf(buf, "%d\n", (bond_3ad_get_active_agg_info(bond, &ad_info)) ? 0: ad_info.ports) + 1;
count = sprintf(buf, "%d\n", (bond_3ad_get_active_agg_info(bond, &ad_info)) ? 0: ad_info.ports);
}
else
count = sprintf(buf, "\n") + 1;
count = sprintf(buf, "\n");

return count;
}
Expand All @@ -1356,10 +1351,10 @@ static ssize_t bonding_show_ad_actor_key(struct device *d,

if (bond->params.mode == BOND_MODE_8023AD) {
struct ad_info ad_info;
count = sprintf(buf, "%d\n", (bond_3ad_get_active_agg_info(bond, &ad_info)) ? 0 : ad_info.actor_key) + 1;
count = sprintf(buf, "%d\n", (bond_3ad_get_active_agg_info(bond, &ad_info)) ? 0 : ad_info.actor_key);
}
else
count = sprintf(buf, "\n") + 1;
count = sprintf(buf, "\n");

return count;
}
Expand All @@ -1378,10 +1373,10 @@ static ssize_t bonding_show_ad_partner_key(struct device *d,

if (bond->params.mode == BOND_MODE_8023AD) {
struct ad_info ad_info;
count = sprintf(buf, "%d\n", (bond_3ad_get_active_agg_info(bond, &ad_info)) ? 0 : ad_info.partner_key) + 1;
count = sprintf(buf, "%d\n", (bond_3ad_get_active_agg_info(bond, &ad_info)) ? 0 : ad_info.partner_key);
}
else
count = sprintf(buf, "\n") + 1;
count = sprintf(buf, "\n");

return count;
}
Expand All @@ -1403,12 +1398,11 @@ static ssize_t bonding_show_ad_partner_mac(struct device *d,
struct ad_info ad_info;
if (!bond_3ad_get_active_agg_info(bond, &ad_info)) {
count = sprintf(buf,"%s\n",
print_mac(mac, ad_info.partner_system))
+ 1;
print_mac(mac, ad_info.partner_system));
}
}
else
count = sprintf(buf, "\n") + 1;
count = sprintf(buf, "\n");

return count;
}
Expand Down

0 comments on commit 7bd4650

Please sign in to comment.