diff options
author | Julia Lawall <julia@diku.dk> | 2008-01-09 02:48:20 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:01:05 -0500 |
commit | 4cec72c890d3a465eed08c24a4a2bfe25650318f (patch) | |
tree | 71cd934f540055e67f447f3fa2f95e66b13512e0 /net | |
parent | cdcb006fbe7a74b5f7827f5c5c27e11399a2fab7 (diff) |
[TIPC]: Use tipc_port_unlock
The file net/tipc/port.c takes a lock using the function tipc_port_lock and
then releases the lock sometimes using tipc_port_unlock and sometimes using
spin_unlock_bh(p_ptr->publ.lock). tipc_port_unlock simply does the
spin_unlock_bh, but it seems cleaner to use it everywhere.
The problem was fixed using the following semantic patch.
(http://www.emn.fr/x-info/coccinelle/)
// <smpl>
@@
struct port *p_ptr;
@@
p_ptr = tipc_port_lock(...)
...
(
p_ptr = tipc_port_lock(...);
|
?- spin_unlock_bh(p_ptr->publ.lock);
+ tipc_port_unlock(p_ptr);
)
// </smpl>
Signed-off-by: Julia Lawall <julia@diku.dk>
Acked-by: Jon Paul Maloy <maloy@donjonn.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/tipc/port.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/net/tipc/port.c b/net/tipc/port.c index 76088153524c..f508614ca59b 100644 --- a/net/tipc/port.c +++ b/net/tipc/port.c | |||
@@ -340,7 +340,7 @@ int tipc_portunreliable(u32 ref, unsigned int *isunreliable) | |||
340 | if (!p_ptr) | 340 | if (!p_ptr) |
341 | return -EINVAL; | 341 | return -EINVAL; |
342 | *isunreliable = port_unreliable(p_ptr); | 342 | *isunreliable = port_unreliable(p_ptr); |
343 | spin_unlock_bh(p_ptr->publ.lock); | 343 | tipc_port_unlock(p_ptr); |
344 | return TIPC_OK; | 344 | return TIPC_OK; |
345 | } | 345 | } |
346 | 346 | ||
@@ -369,7 +369,7 @@ int tipc_portunreturnable(u32 ref, unsigned int *isunrejectable) | |||
369 | if (!p_ptr) | 369 | if (!p_ptr) |
370 | return -EINVAL; | 370 | return -EINVAL; |
371 | *isunrejectable = port_unreturnable(p_ptr); | 371 | *isunrejectable = port_unreturnable(p_ptr); |
372 | spin_unlock_bh(p_ptr->publ.lock); | 372 | tipc_port_unlock(p_ptr); |
373 | return TIPC_OK; | 373 | return TIPC_OK; |
374 | } | 374 | } |
375 | 375 | ||
@@ -843,7 +843,7 @@ static void port_dispatcher_sigh(void *dummy) | |||
843 | u32 peer_port = port_peerport(p_ptr); | 843 | u32 peer_port = port_peerport(p_ptr); |
844 | u32 peer_node = port_peernode(p_ptr); | 844 | u32 peer_node = port_peernode(p_ptr); |
845 | 845 | ||
846 | spin_unlock_bh(p_ptr->publ.lock); | 846 | tipc_port_unlock(p_ptr); |
847 | if (unlikely(!connected)) { | 847 | if (unlikely(!connected)) { |
848 | if (unlikely(published)) | 848 | if (unlikely(published)) |
849 | goto reject; | 849 | goto reject; |
@@ -867,7 +867,7 @@ static void port_dispatcher_sigh(void *dummy) | |||
867 | case TIPC_DIRECT_MSG:{ | 867 | case TIPC_DIRECT_MSG:{ |
868 | tipc_msg_event cb = up_ptr->msg_cb; | 868 | tipc_msg_event cb = up_ptr->msg_cb; |
869 | 869 | ||
870 | spin_unlock_bh(p_ptr->publ.lock); | 870 | tipc_port_unlock(p_ptr); |
871 | if (unlikely(connected)) | 871 | if (unlikely(connected)) |
872 | goto reject; | 872 | goto reject; |
873 | if (unlikely(!cb)) | 873 | if (unlikely(!cb)) |
@@ -882,7 +882,7 @@ static void port_dispatcher_sigh(void *dummy) | |||
882 | case TIPC_NAMED_MSG:{ | 882 | case TIPC_NAMED_MSG:{ |
883 | tipc_named_msg_event cb = up_ptr->named_msg_cb; | 883 | tipc_named_msg_event cb = up_ptr->named_msg_cb; |
884 | 884 | ||
885 | spin_unlock_bh(p_ptr->publ.lock); | 885 | tipc_port_unlock(p_ptr); |
886 | if (unlikely(connected)) | 886 | if (unlikely(connected)) |
887 | goto reject; | 887 | goto reject; |
888 | if (unlikely(!cb)) | 888 | if (unlikely(!cb)) |
@@ -913,7 +913,7 @@ err: | |||
913 | u32 peer_port = port_peerport(p_ptr); | 913 | u32 peer_port = port_peerport(p_ptr); |
914 | u32 peer_node = port_peernode(p_ptr); | 914 | u32 peer_node = port_peernode(p_ptr); |
915 | 915 | ||
916 | spin_unlock_bh(p_ptr->publ.lock); | 916 | tipc_port_unlock(p_ptr); |
917 | if (!connected || !cb) | 917 | if (!connected || !cb) |
918 | break; | 918 | break; |
919 | if (msg_origport(msg) != peer_port) | 919 | if (msg_origport(msg) != peer_port) |
@@ -929,7 +929,7 @@ err: | |||
929 | case TIPC_DIRECT_MSG:{ | 929 | case TIPC_DIRECT_MSG:{ |
930 | tipc_msg_err_event cb = up_ptr->err_cb; | 930 | tipc_msg_err_event cb = up_ptr->err_cb; |
931 | 931 | ||
932 | spin_unlock_bh(p_ptr->publ.lock); | 932 | tipc_port_unlock(p_ptr); |
933 | if (connected || !cb) | 933 | if (connected || !cb) |
934 | break; | 934 | break; |
935 | skb_pull(buf, msg_hdr_sz(msg)); | 935 | skb_pull(buf, msg_hdr_sz(msg)); |
@@ -942,7 +942,7 @@ err: | |||
942 | tipc_named_msg_err_event cb = | 942 | tipc_named_msg_err_event cb = |
943 | up_ptr->named_err_cb; | 943 | up_ptr->named_err_cb; |
944 | 944 | ||
945 | spin_unlock_bh(p_ptr->publ.lock); | 945 | tipc_port_unlock(p_ptr); |
946 | if (connected || !cb) | 946 | if (connected || !cb) |
947 | break; | 947 | break; |
948 | dseq.type = msg_nametype(msg); | 948 | dseq.type = msg_nametype(msg); |
@@ -1107,7 +1107,7 @@ int tipc_portimportance(u32 ref, unsigned int *importance) | |||
1107 | if (!p_ptr) | 1107 | if (!p_ptr) |
1108 | return -EINVAL; | 1108 | return -EINVAL; |
1109 | *importance = (unsigned int)msg_importance(&p_ptr->publ.phdr); | 1109 | *importance = (unsigned int)msg_importance(&p_ptr->publ.phdr); |
1110 | spin_unlock_bh(p_ptr->publ.lock); | 1110 | tipc_port_unlock(p_ptr); |
1111 | return TIPC_OK; | 1111 | return TIPC_OK; |
1112 | } | 1112 | } |
1113 | 1113 | ||
@@ -1122,7 +1122,7 @@ int tipc_set_portimportance(u32 ref, unsigned int imp) | |||
1122 | if (!p_ptr) | 1122 | if (!p_ptr) |
1123 | return -EINVAL; | 1123 | return -EINVAL; |
1124 | msg_set_importance(&p_ptr->publ.phdr, (u32)imp); | 1124 | msg_set_importance(&p_ptr->publ.phdr, (u32)imp); |
1125 | spin_unlock_bh(p_ptr->publ.lock); | 1125 | tipc_port_unlock(p_ptr); |
1126 | return TIPC_OK; | 1126 | return TIPC_OK; |
1127 | } | 1127 | } |
1128 | 1128 | ||