.. | .. |
---|
912 | 912 | if (lgr->terminating) |
---|
913 | 913 | return; /* lgr already terminating */ |
---|
914 | 914 | /* cancel free_work sync, will terminate when lgr->freeing is set */ |
---|
915 | | - cancel_delayed_work_sync(&lgr->free_work); |
---|
| 915 | + cancel_delayed_work(&lgr->free_work); |
---|
916 | 916 | lgr->terminating = 1; |
---|
917 | 917 | |
---|
918 | 918 | /* kill remaining link group connections */ |
---|
.. | .. |
---|
1101 | 1101 | { |
---|
1102 | 1102 | struct smc_link_group *lgr, *n; |
---|
1103 | 1103 | |
---|
| 1104 | + spin_lock_bh(&smc_lgr_list.lock); |
---|
1104 | 1105 | list_for_each_entry_safe(lgr, n, &smc_lgr_list.list, list) { |
---|
1105 | 1106 | struct smc_link *link; |
---|
1106 | 1107 | |
---|
.. | .. |
---|
1115 | 1116 | if (link) |
---|
1116 | 1117 | smc_llc_add_link_local(link); |
---|
1117 | 1118 | } |
---|
| 1119 | + spin_unlock_bh(&smc_lgr_list.lock); |
---|
1118 | 1120 | } |
---|
1119 | 1121 | |
---|
1120 | 1122 | /* link is down - switch connections to alternate link, |
---|