[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] xen/rwlock: Don't perpeuatite broken API in new logic
The single user wants this the sane way around. Write it as a normal static inline just like rspin_lock(). Fixes: cc3e8df542ed ("xen/spinlock: add rspin_[un]lock_irq[save|restore]()") Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- CC: Juergen Gross <jgross@xxxxxxxx> CC: George Dunlap <George.Dunlap@xxxxxxxxxx> CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Stefano Stabellini <sstabellini@xxxxxxxxxx> CC: Julien Grall <julien@xxxxxxx> --- xen/drivers/char/console.c | 6 +----- xen/include/xen/spinlock.h | 14 ++++++++------ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index ccd5f8cc149f..349ce2a50d96 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -1159,11 +1159,7 @@ void console_end_log_everything(void) unsigned long console_lock_recursive_irqsave(void) { - unsigned long flags; - - rspin_lock_irqsave(&console_lock, flags); - - return flags; + return rspin_lock_irqsave(&console_lock); } void console_unlock_recursive_irqrestore(unsigned long flags) diff --git a/xen/include/xen/spinlock.h b/xen/include/xen/spinlock.h index 593cba640ee6..f210aa77f581 100644 --- a/xen/include/xen/spinlock.h +++ b/xen/include/xen/spinlock.h @@ -278,12 +278,6 @@ static always_inline void spin_lock_if(bool condition, spinlock_t *l) */ bool _rspin_trylock(rspinlock_t *lock); void _rspin_lock(rspinlock_t *lock); -#define rspin_lock_irqsave(l, f) \ - ({ \ - BUILD_BUG_ON(sizeof(f) != sizeof(unsigned long)); \ - (f) = _rspin_lock_irqsave(l); \ - block_lock_speculation(); \ - }) unsigned long _rspin_lock_irqsave(rspinlock_t *lock); void _rspin_unlock(rspinlock_t *lock); void _rspin_unlock_irqrestore(rspinlock_t *lock, unsigned long flags); @@ -294,6 +288,14 @@ static always_inline void rspin_lock(rspinlock_t *lock) block_lock_speculation(); } +static always_inline unsigned long rspin_lock_irqsave(rspinlock_t *lock) +{ + unsigned long flags = _rspin_lock_irqsave(lock); + + block_lock_speculation(); + return flags; +} + #define rspin_trylock(l) lock_evaluate_nospec(_rspin_trylock(l)) #define rspin_unlock(l) _rspin_unlock(l) #define rspin_unlock_irqrestore(l, f) _rspin_unlock_irqrestore(l, f) base-commit: d2276b86e5eb8dd2617d917f7b49cdd1f29ac299 -- 2.30.2
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |