@@ -99,33 +99,25 @@ int irq_bypass_register_producer(struct irq_bypass_producer *producer,
99
99
if (WARN_ON_ONCE (producer -> eventfd ))
100
100
return - EINVAL ;
101
101
102
- mutex_lock (& lock );
102
+ guard ( mutex ) (& lock );
103
103
104
104
list_for_each_entry (tmp , & producers , node ) {
105
- if (tmp -> eventfd == eventfd ) {
106
- ret = - EBUSY ;
107
- goto out_err ;
108
- }
105
+ if (tmp -> eventfd == eventfd )
106
+ return - EBUSY ;
109
107
}
110
108
111
109
list_for_each_entry (consumer , & consumers , node ) {
112
110
if (consumer -> eventfd == eventfd ) {
113
111
ret = __connect (producer , consumer );
114
112
if (ret )
115
- goto out_err ;
113
+ return ret ;
116
114
break ;
117
115
}
118
116
}
119
117
120
118
producer -> eventfd = eventfd ;
121
119
list_add (& producer -> node , & producers );
122
-
123
- mutex_unlock (& lock );
124
-
125
120
return 0 ;
126
- out_err :
127
- mutex_unlock (& lock );
128
- return ret ;
129
121
}
130
122
EXPORT_SYMBOL_GPL (irq_bypass_register_producer );
131
123
@@ -141,14 +133,13 @@ void irq_bypass_unregister_producer(struct irq_bypass_producer *producer)
141
133
if (!producer -> eventfd )
142
134
return ;
143
135
144
- mutex_lock (& lock );
136
+ guard ( mutex ) (& lock );
145
137
146
138
if (producer -> consumer )
147
139
__disconnect (producer , producer -> consumer );
148
140
149
141
producer -> eventfd = NULL ;
150
142
list_del (& producer -> node );
151
- mutex_unlock (& lock );
152
143
}
153
144
EXPORT_SYMBOL_GPL (irq_bypass_unregister_producer );
154
145
@@ -173,33 +164,25 @@ int irq_bypass_register_consumer(struct irq_bypass_consumer *consumer,
173
164
if (!consumer -> add_producer || !consumer -> del_producer )
174
165
return - EINVAL ;
175
166
176
- mutex_lock (& lock );
167
+ guard ( mutex ) (& lock );
177
168
178
169
list_for_each_entry (tmp , & consumers , node ) {
179
- if (tmp -> eventfd == eventfd ) {
180
- ret = - EBUSY ;
181
- goto out_err ;
182
- }
170
+ if (tmp -> eventfd == eventfd )
171
+ return - EBUSY ;
183
172
}
184
173
185
174
list_for_each_entry (producer , & producers , node ) {
186
175
if (producer -> eventfd == eventfd ) {
187
176
ret = __connect (producer , consumer );
188
177
if (ret )
189
- goto out_err ;
178
+ return ret ;
190
179
break ;
191
180
}
192
181
}
193
182
194
183
consumer -> eventfd = eventfd ;
195
184
list_add (& consumer -> node , & consumers );
196
-
197
- mutex_unlock (& lock );
198
-
199
185
return 0 ;
200
- out_err :
201
- mutex_unlock (& lock );
202
- return ret ;
203
186
}
204
187
EXPORT_SYMBOL_GPL (irq_bypass_register_consumer );
205
188
@@ -215,13 +198,12 @@ void irq_bypass_unregister_consumer(struct irq_bypass_consumer *consumer)
215
198
if (!consumer -> eventfd )
216
199
return ;
217
200
218
- mutex_lock (& lock );
201
+ guard ( mutex ) (& lock );
219
202
220
203
if (consumer -> producer )
221
204
__disconnect (consumer -> producer , consumer );
222
205
223
206
consumer -> eventfd = NULL ;
224
207
list_del (& consumer -> node );
225
- mutex_unlock (& lock );
226
208
}
227
209
EXPORT_SYMBOL_GPL (irq_bypass_unregister_consumer );
0 commit comments