@@ -70,20 +70,17 @@ static DEFINE_SPINLOCK(rtcdev_lock);
70
70
*/
71
71
struct rtc_device * alarmtimer_get_rtcdev (void )
72
72
{
73
- unsigned long flags ;
74
73
struct rtc_device * ret ;
75
74
76
- spin_lock_irqsave ( & rtcdev_lock , flags );
75
+ guard ( spinlock_irqsave )( & rtcdev_lock );
77
76
ret = rtcdev ;
78
- spin_unlock_irqrestore (& rtcdev_lock , flags );
79
77
80
78
return ret ;
81
79
}
82
80
EXPORT_SYMBOL_GPL (alarmtimer_get_rtcdev );
83
81
84
82
static int alarmtimer_rtc_add_device (struct device * dev )
85
83
{
86
- unsigned long flags ;
87
84
struct rtc_device * rtc = to_rtc_device (dev );
88
85
struct platform_device * pdev ;
89
86
int ret = 0 ;
@@ -101,25 +98,18 @@ static int alarmtimer_rtc_add_device(struct device *dev)
101
98
if (!IS_ERR (pdev ))
102
99
device_init_wakeup (& pdev -> dev , true);
103
100
104
- spin_lock_irqsave (& rtcdev_lock , flags );
105
- if (!IS_ERR (pdev ) && !rtcdev ) {
106
- if (!try_module_get (rtc -> owner )) {
101
+ scoped_guard (spinlock_irqsave , & rtcdev_lock ) {
102
+ if (!IS_ERR (pdev ) && !rtcdev && try_module_get (rtc -> owner )) {
103
+ rtcdev = rtc ;
104
+ /* hold a reference so it doesn't go away */
105
+ get_device (dev );
106
+ pdev = NULL ;
107
+ } else {
107
108
ret = -1 ;
108
- goto unlock ;
109
109
}
110
-
111
- rtcdev = rtc ;
112
- /* hold a reference so it doesn't go away */
113
- get_device (dev );
114
- pdev = NULL ;
115
- } else {
116
- ret = -1 ;
117
110
}
118
- unlock :
119
- spin_unlock_irqrestore (& rtcdev_lock , flags );
120
111
121
112
platform_device_unregister (pdev );
122
-
123
113
return ret ;
124
114
}
125
115
@@ -198,7 +188,7 @@ static enum hrtimer_restart alarmtimer_fired(struct hrtimer *timer)
198
188
struct alarm * alarm = container_of (timer , struct alarm , timer );
199
189
struct alarm_base * base = & alarm_bases [alarm -> type ];
200
190
201
- scoped_guard (spinlock_irqsave , & base -> lock )
191
+ scoped_guard (spinlock_irqsave , & base -> lock )
202
192
alarmtimer_dequeue (base , alarm );
203
193
204
194
if (alarm -> function )
@@ -228,17 +218,16 @@ EXPORT_SYMBOL_GPL(alarm_expires_remaining);
228
218
static int alarmtimer_suspend (struct device * dev )
229
219
{
230
220
ktime_t min , now , expires ;
231
- int i , ret , type ;
232
221
struct rtc_device * rtc ;
233
- unsigned long flags ;
234
222
struct rtc_time tm ;
223
+ int i , ret , type ;
235
224
236
- spin_lock_irqsave ( & freezer_delta_lock , flags );
237
- min = freezer_delta ;
238
- expires = freezer_expires ;
239
- type = freezer_alarmtype ;
240
- freezer_delta = 0 ;
241
- spin_unlock_irqrestore ( & freezer_delta_lock , flags );
225
+ scoped_guard ( spinlock_irqsave , & freezer_delta_lock ) {
226
+ min = freezer_delta ;
227
+ expires = freezer_expires ;
228
+ type = freezer_alarmtype ;
229
+ freezer_delta = 0 ;
230
+ }
242
231
243
232
rtc = alarmtimer_get_rtcdev ();
244
233
/* If we have no rtcdev, just return */
@@ -251,9 +240,8 @@ static int alarmtimer_suspend(struct device *dev)
251
240
struct timerqueue_node * next ;
252
241
ktime_t delta ;
253
242
254
- spin_lock_irqsave (& base -> lock , flags );
255
- next = timerqueue_getnext (& base -> timerqueue );
256
- spin_unlock_irqrestore (& base -> lock , flags );
243
+ scoped_guard (spinlock_irqsave , & base -> lock )
244
+ next = timerqueue_getnext (& base -> timerqueue );
257
245
if (!next )
258
246
continue ;
259
247
delta = ktime_sub (next -> expires , base -> get_ktime ());
@@ -352,13 +340,12 @@ EXPORT_SYMBOL_GPL(alarm_init);
352
340
void alarm_start (struct alarm * alarm , ktime_t start )
353
341
{
354
342
struct alarm_base * base = & alarm_bases [alarm -> type ];
355
- unsigned long flags ;
356
343
357
- spin_lock_irqsave ( & base -> lock , flags );
358
- alarm -> node .expires = start ;
359
- alarmtimer_enqueue (base , alarm );
360
- hrtimer_start (& alarm -> timer , alarm -> node .expires , HRTIMER_MODE_ABS );
361
- spin_unlock_irqrestore ( & base -> lock , flags );
344
+ scoped_guard ( spinlock_irqsave , & base -> lock ) {
345
+ alarm -> node .expires = start ;
346
+ alarmtimer_enqueue (base , alarm );
347
+ hrtimer_start (& alarm -> timer , alarm -> node .expires , HRTIMER_MODE_ABS );
348
+ }
362
349
363
350
trace_alarmtimer_start (alarm , base -> get_ktime ());
364
351
}
@@ -381,13 +368,11 @@ EXPORT_SYMBOL_GPL(alarm_start_relative);
381
368
void alarm_restart (struct alarm * alarm )
382
369
{
383
370
struct alarm_base * base = & alarm_bases [alarm -> type ];
384
- unsigned long flags ;
385
371
386
- spin_lock_irqsave ( & base -> lock , flags );
372
+ guard ( spinlock_irqsave )( & base -> lock );
387
373
hrtimer_set_expires (& alarm -> timer , alarm -> node .expires );
388
374
hrtimer_restart (& alarm -> timer );
389
375
alarmtimer_enqueue (base , alarm );
390
- spin_unlock_irqrestore (& base -> lock , flags );
391
376
}
392
377
EXPORT_SYMBOL_GPL (alarm_restart );
393
378
@@ -401,14 +386,13 @@ EXPORT_SYMBOL_GPL(alarm_restart);
401
386
int alarm_try_to_cancel (struct alarm * alarm )
402
387
{
403
388
struct alarm_base * base = & alarm_bases [alarm -> type ];
404
- unsigned long flags ;
405
389
int ret ;
406
390
407
- spin_lock_irqsave ( & base -> lock , flags );
408
- ret = hrtimer_try_to_cancel (& alarm -> timer );
409
- if (ret >= 0 )
410
- alarmtimer_dequeue (base , alarm );
411
- spin_unlock_irqrestore ( & base -> lock , flags );
391
+ scoped_guard ( spinlock_irqsave , & base -> lock ) {
392
+ ret = hrtimer_try_to_cancel (& alarm -> timer );
393
+ if (ret >= 0 )
394
+ alarmtimer_dequeue (base , alarm );
395
+ }
412
396
413
397
trace_alarmtimer_cancel (alarm , base -> get_ktime ());
414
398
return ret ;
@@ -479,7 +463,6 @@ EXPORT_SYMBOL_GPL(alarm_forward_now);
479
463
static void alarmtimer_freezerset (ktime_t absexp , enum alarmtimer_type type )
480
464
{
481
465
struct alarm_base * base ;
482
- unsigned long flags ;
483
466
ktime_t delta ;
484
467
485
468
switch (type ) {
@@ -498,13 +481,12 @@ static void alarmtimer_freezerset(ktime_t absexp, enum alarmtimer_type type)
498
481
499
482
delta = ktime_sub (absexp , base -> get_ktime ());
500
483
501
- spin_lock_irqsave ( & freezer_delta_lock , flags );
484
+ guard ( spinlock_irqsave )( & freezer_delta_lock );
502
485
if (!freezer_delta || (delta < freezer_delta )) {
503
486
freezer_delta = delta ;
504
487
freezer_expires = absexp ;
505
488
freezer_alarmtype = type ;
506
489
}
507
- spin_unlock_irqrestore (& freezer_delta_lock , flags );
508
490
}
509
491
510
492
/**
0 commit comments