bonding: add arp_ip_target checks when install the module
Subsystems (3)
PATCH 1/1 bonding: add arp_ip_target checks when install the module
When I install the bonding with the wrong arp_ip_target, just like arp_ip_target=500.500.500.500, the arp_ip_target was transfored to 245.245.245.244 and stored in 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 and return 0, also use the micro IS_IP_TARGET_UNUSABLE_ADDRESS to simplify the code.
--- drivers/net/bonding/bond_main.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/net/bonding/bond_main.c +3 -3
@@ -4157,9 +4157,9 @@ static int bond_check_params(struct bond_params *params) (arp_ip_count < BOND_MAX_ARP_TARGETS) && arp_ip_target[i]; i++) {/* not complete check, but should be good enough to catch mistakes */ -__be32 ip =in_aton (arp_ip_target[i]); -if (!isdigit (arp_ip_target[i][0 ]) || ip ==0 || - ip ==htonl (INADDR_BROADCAST )) { +__be32 ip; +if (!in4_pton (arp_ip_target[i],-1 , (u8 *)&ip,-1 ,NULL ) || +IS_IP_TARGET_UNUSABLE_ADDRESS (ip)) {pr_warning ("Warning: bad arp_ip_target module parameter (%s), ARP monitoring will not be performed\n" , arp_ip_target[i]); arp_interval =0 ;
Signature · 1 line
1.7.12
From: Ding Tianhong <[email protected]>
Date: Wed, 4 Dec 2013 18:59:31 +0800
Quoted 11 lines
When I install the bonding with the wrong
arp_ip_target, just like arp_ip_target=500.500.500.500, thearp_ip_targetwas transfored to 245.245.245.244 and stored in 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 and return 0, also use the microIS_IP_TARGET_UNUSABLE_ADDRESSto simplify the code.Signed-off-by Ding Tianhong <[email protected]>
Applied, thank you.