aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding
diff options
context:
space:
mode:
authorNikolay Aleksandrov <nikolay@redhat.com>2014-01-23 17:43:43 -0500
committerDavid S. Miller <davem@davemloft.net>2014-01-23 19:10:24 -0500
commit0681a28264dcf948e0236adb7bf505a638c4dec1 (patch)
tree3c458ee6d99ef77af54bbb4a4b556f533e67aa3f /drivers/net/bonding
parent237266f76d417b5fb1984ac3774e3a4fe070fe5d (diff)
bonding: fix u64 division
After the option conversion downdelay and updelay divide a u64 and on a 32 bit this causes the following errors: ERROR: "__udivdi3" [drivers/net/bonding/bonding.ko] undefined! ERROR: "__umoddi3" [drivers/net/bonding/bonding.ko] undefined! Fix it by using a normal int instead because newval->value is capped at INT_MAX by the way the option is defined. Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bonding')
-rw-r--r--drivers/net/bonding/bond_options.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/drivers/net/bonding/bond_options.c b/drivers/net/bonding/bond_options.c
index 4cee04aa6eb3..11cb943222d5 100644
--- a/drivers/net/bonding/bond_options.c
+++ b/drivers/net/bonding/bond_options.c
@@ -727,19 +727,21 @@ int bond_option_miimon_set(struct bonding *bond, struct bond_opt_value *newval)
727 727
728int bond_option_updelay_set(struct bonding *bond, struct bond_opt_value *newval) 728int bond_option_updelay_set(struct bonding *bond, struct bond_opt_value *newval)
729{ 729{
730 int value = newval->value;
731
730 if (!bond->params.miimon) { 732 if (!bond->params.miimon) {
731 pr_err("%s: Unable to set up delay as MII monitoring is disabled\n", 733 pr_err("%s: Unable to set up delay as MII monitoring is disabled\n",
732 bond->dev->name); 734 bond->dev->name);
733 return -EPERM; 735 return -EPERM;
734 } 736 }
735 if ((newval->value % bond->params.miimon) != 0) { 737 if ((value % bond->params.miimon) != 0) {
736 pr_warn("%s: Warning: up delay (%llu) is not a multiple of miimon (%d), updelay rounded to %llu ms\n", 738 pr_warn("%s: Warning: up delay (%d) is not a multiple of miimon (%d), updelay rounded to %d ms\n",
737 bond->dev->name, newval->value, 739 bond->dev->name, value,
738 bond->params.miimon, 740 bond->params.miimon,
739 (newval->value / bond->params.miimon) * 741 (value / bond->params.miimon) *
740 bond->params.miimon); 742 bond->params.miimon);
741 } 743 }
742 bond->params.updelay = newval->value / bond->params.miimon; 744 bond->params.updelay = value / bond->params.miimon;
743 pr_info("%s: Setting up delay to %d.\n", 745 pr_info("%s: Setting up delay to %d.\n",
744 bond->dev->name, 746 bond->dev->name,
745 bond->params.updelay * bond->params.miimon); 747 bond->params.updelay * bond->params.miimon);
@@ -750,19 +752,21 @@ int bond_option_updelay_set(struct bonding *bond, struct bond_opt_value *newval)
750int bond_option_downdelay_set(struct bonding *bond, 752int bond_option_downdelay_set(struct bonding *bond,
751 struct bond_opt_value *newval) 753 struct bond_opt_value *newval)
752{ 754{
755 int value = newval->value;
756
753 if (!bond->params.miimon) { 757 if (!bond->params.miimon) {
754 pr_err("%s: Unable to set down delay as MII monitoring is disabled\n", 758 pr_err("%s: Unable to set down delay as MII monitoring is disabled\n",
755 bond->dev->name); 759 bond->dev->name);
756 return -EPERM; 760 return -EPERM;
757 } 761 }
758 if ((newval->value % bond->params.miimon) != 0) { 762 if ((value % bond->params.miimon) != 0) {
759 pr_warn("%s: Warning: down delay (%llu) is not a multiple of miimon (%d), delay rounded to %llu ms\n", 763 pr_warn("%s: Warning: down delay (%d) is not a multiple of miimon (%d), delay rounded to %d ms\n",
760 bond->dev->name, newval->value, 764 bond->dev->name, value,
761 bond->params.miimon, 765 bond->params.miimon,
762 (newval->value / bond->params.miimon) * 766 (value / bond->params.miimon) *
763 bond->params.miimon); 767 bond->params.miimon);
764 } 768 }
765 bond->params.downdelay = newval->value / bond->params.miimon; 769 bond->params.downdelay = value / bond->params.miimon;
766 pr_info("%s: Setting down delay to %d.\n", 770 pr_info("%s: Setting down delay to %d.\n",
767 bond->dev->name, 771 bond->dev->name,
768 bond->params.downdelay * bond->params.miimon); 772 bond->params.downdelay * bond->params.miimon);