static int bond_option_arp_ip_target_add(struct bonding *bond, __be32 target)
 {
-       int ret;
-
-       /* not to race with bond_arp_rcv */
-       write_lock_bh(&bond->lock);
-       ret = _bond_option_arp_ip_target_add(bond, target);
-       write_unlock_bh(&bond->lock);
-
-       return ret;
+       return _bond_option_arp_ip_target_add(bond, target);
 }
 
 static int bond_option_arp_ip_target_rem(struct bonding *bond, __be32 target)
 
        netdev_info(bond->dev, "Removing ARP target %pI4\n", &target);
 
-       /* not to race with bond_arp_rcv */
-       write_lock_bh(&bond->lock);
-
        bond_for_each_slave(bond, slave, iter) {
                targets_rx = slave->target_last_arp_rx;
                for (i = ind; (i < BOND_MAX_ARP_TARGETS-1) && targets[i+1]; i++)
                targets[i] = targets[i+1];
        targets[i] = 0;
 
-       write_unlock_bh(&bond->lock);
-
        return 0;
 }
 
 {
        int i;
 
-       /* not to race with bond_arp_rcv */
-       write_lock_bh(&bond->lock);
        for (i = 0; i < BOND_MAX_ARP_TARGETS; i++)
                _bond_options_arp_ip_target_set(bond, i, 0, 0);
-       write_unlock_bh(&bond->lock);
 }
 
 static int bond_option_arp_ip_targets_set(struct bonding *bond,
        struct slave *slave;
 
        block_netpoll_tx();
-       read_lock(&bond->lock);
        write_lock_bh(&bond->curr_slave_lock);
 
        p = strchr(primary, '\n');
 
 out:
        write_unlock_bh(&bond->curr_slave_lock);
-       read_unlock(&bond->lock);
        unblock_netpoll_tx();
 
        return 0;