diff options
Diffstat (limited to 'net/ax25')
-rw-r--r-- | net/ax25/ax25_iface.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/net/ax25/ax25_iface.c b/net/ax25/ax25_iface.c index 8443af57a374..71338f112108 100644 --- a/net/ax25/ax25_iface.c +++ b/net/ax25/ax25_iface.c | |||
@@ -61,27 +61,24 @@ void ax25_protocol_release(unsigned int pid) | |||
61 | 61 | ||
62 | write_lock_bh(&protocol_list_lock); | 62 | write_lock_bh(&protocol_list_lock); |
63 | protocol = protocol_list; | 63 | protocol = protocol_list; |
64 | if (protocol == NULL) { | 64 | if (protocol == NULL) |
65 | write_unlock_bh(&protocol_list_lock); | 65 | goto out; |
66 | return; | ||
67 | } | ||
68 | 66 | ||
69 | if (protocol->pid == pid) { | 67 | if (protocol->pid == pid) { |
70 | protocol_list = protocol->next; | 68 | protocol_list = protocol->next; |
71 | write_unlock_bh(&protocol_list_lock); | 69 | goto out; |
72 | return; | ||
73 | } | 70 | } |
74 | 71 | ||
75 | while (protocol != NULL && protocol->next != NULL) { | 72 | while (protocol != NULL && protocol->next != NULL) { |
76 | if (protocol->next->pid == pid) { | 73 | if (protocol->next->pid == pid) { |
77 | s = protocol->next; | 74 | s = protocol->next; |
78 | protocol->next = protocol->next->next; | 75 | protocol->next = protocol->next->next; |
79 | write_unlock_bh(&protocol_list_lock); | 76 | goto out; |
80 | return; | ||
81 | } | 77 | } |
82 | 78 | ||
83 | protocol = protocol->next; | 79 | protocol = protocol->next; |
84 | } | 80 | } |
81 | out: | ||
85 | write_unlock_bh(&protocol_list_lock); | 82 | write_unlock_bh(&protocol_list_lock); |
86 | } | 83 | } |
87 | 84 | ||