@@ -577,8 +577,8 @@ static struct sk_buff *amt_build_igmp_gq(struct amt_dev *amt)
577577 return skb ;
578578}
579579
580- static void __amt_update_gw_status (struct amt_dev * amt , enum amt_status status ,
581- bool validate )
580+ static void amt_update_gw_status (struct amt_dev * amt , enum amt_status status ,
581+ bool validate )
582582{
583583 if (validate && amt -> status >= status )
584584 return ;
@@ -600,14 +600,6 @@ static void __amt_update_relay_status(struct amt_tunnel_list *tunnel,
600600 tunnel -> status = status ;
601601}
602602
603- static void amt_update_gw_status (struct amt_dev * amt , enum amt_status status ,
604- bool validate )
605- {
606- spin_lock_bh (& amt -> lock );
607- __amt_update_gw_status (amt , status , validate );
608- spin_unlock_bh (& amt -> lock );
609- }
610-
611603static void amt_update_relay_status (struct amt_tunnel_list * tunnel ,
612604 enum amt_status status , bool validate )
613605{
@@ -700,9 +692,7 @@ static void amt_send_discovery(struct amt_dev *amt)
700692 if (unlikely (net_xmit_eval (err )))
701693 amt -> dev -> stats .tx_errors ++ ;
702694
703- spin_lock_bh (& amt -> lock );
704- __amt_update_gw_status (amt , AMT_STATUS_SENT_DISCOVERY , true);
705- spin_unlock_bh (& amt -> lock );
695+ amt_update_gw_status (amt , AMT_STATUS_SENT_DISCOVERY , true);
706696out :
707697 rcu_read_unlock ();
708698}
@@ -937,18 +927,14 @@ static void amt_secret_work(struct work_struct *work)
937927
938928static void amt_event_send_discovery (struct amt_dev * amt )
939929{
940- spin_lock_bh (& amt -> lock );
941930 if (amt -> status > AMT_STATUS_SENT_DISCOVERY )
942931 goto out ;
943932 get_random_bytes (& amt -> nonce , sizeof (__be32 ));
944- spin_unlock_bh (& amt -> lock );
945933
946934 amt_send_discovery (amt );
947- spin_lock_bh (& amt -> lock );
948935out :
949936 mod_delayed_work (amt_wq , & amt -> discovery_wq ,
950937 msecs_to_jiffies (AMT_DISCOVERY_TIMEOUT ));
951- spin_unlock_bh (& amt -> lock );
952938}
953939
954940static void amt_discovery_work (struct work_struct * work )
@@ -966,7 +952,6 @@ static void amt_event_send_request(struct amt_dev *amt)
966952{
967953 u32 exp ;
968954
969- spin_lock_bh (& amt -> lock );
970955 if (amt -> status < AMT_STATUS_RECEIVED_ADVERTISEMENT )
971956 goto out ;
972957
@@ -976,21 +961,18 @@ static void amt_event_send_request(struct amt_dev *amt)
976961 amt -> ready4 = false;
977962 amt -> ready6 = false;
978963 amt -> remote_ip = 0 ;
979- __amt_update_gw_status (amt , AMT_STATUS_INIT , false);
964+ amt_update_gw_status (amt , AMT_STATUS_INIT , false);
980965 amt -> req_cnt = 0 ;
981966 goto out ;
982967 }
983- spin_unlock_bh (& amt -> lock );
984968
985969 amt_send_request (amt , false);
986970 amt_send_request (amt , true);
987- spin_lock_bh (& amt -> lock );
988- __amt_update_gw_status (amt , AMT_STATUS_SENT_REQUEST , true);
971+ amt_update_gw_status (amt , AMT_STATUS_SENT_REQUEST , true);
989972 amt -> req_cnt ++ ;
990973out :
991974 exp = min_t (u32 , (1 * (1 << amt -> req_cnt )), AMT_MAX_REQ_TIMEOUT );
992975 mod_delayed_work (amt_wq , & amt -> req_wq , msecs_to_jiffies (exp * 1000 ));
993- spin_unlock_bh (& amt -> lock );
994976}
995977
996978static void amt_req_work (struct work_struct * work )
@@ -2386,12 +2368,10 @@ static bool amt_membership_query_handler(struct amt_dev *amt,
23862368 ihv3 = skb_pull (skb , sizeof (* iph ) + AMT_IPHDR_OPTS );
23872369 skb_reset_transport_header (skb );
23882370 skb_push (skb , sizeof (* iph ) + AMT_IPHDR_OPTS );
2389- spin_lock_bh (& amt -> lock );
23902371 amt -> ready4 = true;
23912372 amt -> mac = amtmq -> response_mac ;
23922373 amt -> req_cnt = 0 ;
23932374 amt -> qi = ihv3 -> qqic ;
2394- spin_unlock_bh (& amt -> lock );
23952375 skb -> protocol = htons (ETH_P_IP );
23962376 eth -> h_proto = htons (ETH_P_IP );
23972377 ip_eth_mc_map (iph -> daddr , eth -> h_dest );
@@ -2411,12 +2391,10 @@ static bool amt_membership_query_handler(struct amt_dev *amt,
24112391 mld2q = skb_pull (skb , sizeof (* ip6h ) + AMT_IP6HDR_OPTS );
24122392 skb_reset_transport_header (skb );
24132393 skb_push (skb , sizeof (* ip6h ) + AMT_IP6HDR_OPTS );
2414- spin_lock_bh (& amt -> lock );
24152394 amt -> ready6 = true;
24162395 amt -> mac = amtmq -> response_mac ;
24172396 amt -> req_cnt = 0 ;
24182397 amt -> qi = mld2q -> mld2q_qqic ;
2419- spin_unlock_bh (& amt -> lock );
24202398 skb -> protocol = htons (ETH_P_IPV6 );
24212399 eth -> h_proto = htons (ETH_P_IPV6 );
24222400 ipv6_eth_mc_map (& ip6h -> daddr , eth -> h_dest );
0 commit comments