posix-timers: Annotate lock_timer()
lock_timer() conditionally grabs it_lock in case of returning non-NULL but unlock_timer() releases it unconditionally. This leads sparse to complain about the lock context imbalance. Rename and wrap lock_timer using __cond_lock() macro to make sparse happy. Signed-off-by: Namhyung Kim <namhyung@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Родитель
dd6414b50f
Коммит
20f33a03f0
|
@ -145,7 +145,13 @@ static int common_timer_del(struct k_itimer *timer);
|
|||
|
||||
static enum hrtimer_restart posix_timer_fn(struct hrtimer *data);
|
||||
|
||||
static struct k_itimer *lock_timer(timer_t timer_id, unsigned long *flags);
|
||||
static struct k_itimer *__lock_timer(timer_t timer_id, unsigned long *flags);
|
||||
|
||||
#define lock_timer(tid, flags) \
|
||||
({ struct k_itimer *__timr; \
|
||||
__cond_lock(&__timr->it_lock, __timr = __lock_timer(tid, flags)); \
|
||||
__timr; \
|
||||
})
|
||||
|
||||
static inline void unlock_timer(struct k_itimer *timr, unsigned long flags)
|
||||
{
|
||||
|
@ -619,7 +625,7 @@ out:
|
|||
* the find to the timer lock. To avoid a dead lock, the timer id MUST
|
||||
* be release with out holding the timer lock.
|
||||
*/
|
||||
static struct k_itimer *lock_timer(timer_t timer_id, unsigned long *flags)
|
||||
static struct k_itimer *__lock_timer(timer_t timer_id, unsigned long *flags)
|
||||
{
|
||||
struct k_itimer *timr;
|
||||
/*
|
||||
|
|
Загрузка…
Ссылка в новой задаче