@@ -265,19 +265,19 @@ dpusm_provider_register(dpusm_t *dpusm, struct module *module, const dpusm_pf_t
265
265
return - EINVAL ;
266
266
}
267
267
268
- mutex_lock ( & dpusm -> lock ); ;
268
+ while ( mutex_lock_interruptible ( & dpusm -> lock )) ;
269
269
270
270
dpusm_ph_t * * found = find_provider (dpusm , module_name (module ));
271
271
if (found ) {
272
272
printk ("%s: DPUSM Provider with the name \"%s\" (%p) already exists. %zu providers registered.\n" ,
273
273
__func__ , module_name (module ), * found , dpusm -> count );
274
- mutex_unlock (& dpusm -> lock );;
274
+ mutex_unlock (& dpusm -> lock );
275
275
return - EEXIST ;
276
276
}
277
277
278
278
dpusm_ph_t * provider = dpusmph_init (module , funcs );
279
279
if (!provider ) {
280
- mutex_unlock (& dpusm -> lock );;
280
+ mutex_unlock (& dpusm -> lock );
281
281
return - ECANCELED ;
282
282
}
283
283
@@ -286,7 +286,7 @@ dpusm_provider_register(dpusm_t *dpusm, struct module *module, const dpusm_pf_t
286
286
printk ("%s: DPUSM Provider \"%s\" (%p) added. Now %zu providers registered.\n" ,
287
287
__func__ , module_name (module ), provider , dpusm -> count );
288
288
289
- mutex_unlock (& dpusm -> lock );;
289
+ mutex_unlock (& dpusm -> lock );
290
290
291
291
return 0 ;
292
292
}
@@ -322,20 +322,20 @@ dpusm_provider_unregister_handle(dpusm_t *dpusm, dpusm_ph_t **provider) {
322
322
323
323
int
324
324
dpusm_provider_unregister (dpusm_t * dpusm , struct module * module ) {
325
- mutex_lock ( & dpusm -> lock ); ;
325
+ while ( mutex_lock_interruptible ( & dpusm -> lock )) ;
326
326
327
327
dpusm_ph_t * * provider = find_provider (dpusm , module_name (module ));
328
328
if (!provider ) {
329
329
printk ("%s: Could not find provider with name \"%s\"\n" , __func__ , module_name (module ));
330
- mutex_unlock (& dpusm -> lock );;
330
+ mutex_unlock (& dpusm -> lock );
331
331
return DPUSM_ERROR ;
332
332
}
333
333
334
334
void * addr = * provider ;
335
335
const int rc = dpusm_provider_unregister_handle (dpusm , provider );
336
336
printk ("%s: Unregistered \"%s\" (%p): %d\n" , __func__ , module_name (module ), addr , rc );
337
337
338
- mutex_unlock (& dpusm -> lock );;
338
+ mutex_unlock (& dpusm -> lock );
339
339
return rc ;
340
340
}
341
341
@@ -347,7 +347,7 @@ dpusm_provider_unregister(dpusm_t *dpusm, struct module *module) {
347
347
/* get a provider by name */
348
348
dpusm_ph_t * *
349
349
dpusm_provider_get (dpusm_t * dpusm , const char * name ) {
350
- mutex_lock ( & dpusm -> lock );
350
+ while ( mutex_lock_interruptible ( & dpusm -> lock ) );
351
351
dpusm_ph_t * * provider = find_provider (dpusm , name );
352
352
if (provider ) {
353
353
struct module * module = (* provider )-> module ;
@@ -407,7 +407,7 @@ dpusm_provider_put(dpusm_t *dpusm, void *handle) {
407
407
}
408
408
409
409
void dpusm_provider_invalidate (dpusm_t * dpusm , const char * name ) {
410
- mutex_lock ( & dpusm -> lock ); ;
410
+ while ( mutex_lock_interruptible ( & dpusm -> lock )) ;
411
411
dpusm_ph_t * * provider = find_provider (dpusm , name );
412
412
if (provider && * provider ) {
413
413
(* provider )-> funcs = NULL ;
@@ -420,5 +420,5 @@ void dpusm_provider_invalidate(dpusm_t *dpusm, const char *name) {
420
420
printk ("%s: Error: Did not find provider \"%s\"\n" ,
421
421
__func__ , name );
422
422
}
423
- mutex_unlock (& dpusm -> lock );;
423
+ mutex_unlock (& dpusm -> lock );
424
424
}
0 commit comments