lkml.org 
[lkml]   [2023]   [Mar]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 4/7] sempahore: add a helper for a concurrency limiter
On (23/03/30 20:45), Luis Chamberlain wrote:
[..]
> -static DEFINE_SEMAPHORE(console_sem);
> +static DEFINE_MUTEX(console_sem);
> HLIST_HEAD(console_list);
> EXPORT_SYMBOL_GPL(console_list);
> DEFINE_STATIC_SRCU(console_srcu);
> @@ -309,7 +309,7 @@ EXPORT_SYMBOL(console_srcu_read_unlock);
> * macros instead of functions so that _RET_IP_ contains useful information.
> */
> #define down_console_sem() do { \
> - down(&console_sem);\
> + mutex_lock(&console_sem);\
> mutex_acquire(&console_lock_dep_map, 0, 0, _RET_IP_);\
> } while (0)
>
> @@ -324,7 +324,7 @@ static int __down_trylock_console_sem(unsigned long ip)
> * deadlock in printk()->down_trylock_console_sem() otherwise.
> */
> printk_safe_enter_irqsave(flags);
> - lock_failed = down_trylock(&console_sem);
> + lock_failed = !mutex_trylock(&console_sem);
> printk_safe_exit_irqrestore(flags);
>
> if (lock_failed)
> @@ -341,7 +341,7 @@ static void __up_console_sem(unsigned long ip)
> mutex_release(&console_lock_dep_map, ip);
>
> printk_safe_enter_irqsave(flags);
> - up(&console_sem);
> + mutex_unlock(&console_sem);

mutex_unlock() does not like when its called from IRQ, so this is not
going to work very well.

\
 
 \ /
  Last update: 2023-03-31 06:12    [W:0.047 / U:0.600 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site