docs: locking: Discourage from calling disable_irq() in atomic

Correct the example in the documentation so that disable_irq() is not being
called in atomic context.

disable_irq() calls sleeping synchronize_irq(), it's not allowed to call
them in atomic context.

Signed-off-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Manfred Spraul <manfred@colorfullife.com>
Cc: linux-doc@vger.kernel.org
Link: https://lore.kernel.org/lkml/87k02wbs2n.ffs@tglx/
Link: https://lore.kernel.org/r/20221212163715.830315-1-alexander.sverdlin@siemens.com
This commit is contained in:
Alexander Sverdlin 2022-12-12 17:37:15 +01:00 committed by Thomas Gleixner
parent 17549b0f18
commit 379af13b31
2 changed files with 4 additions and 4 deletions

View file

@ -1277,11 +1277,11 @@ Manfred Spraul points out that you can still do this, even if the data
is very occasionally accessed in user context or softirqs/tasklets. The is very occasionally accessed in user context or softirqs/tasklets. The
irq handler doesn't use a lock, and all other accesses are done as so:: irq handler doesn't use a lock, and all other accesses are done as so::
spin_lock(&lock); mutex_lock(&lock);
disable_irq(irq); disable_irq(irq);
... ...
enable_irq(irq); enable_irq(irq);
spin_unlock(&lock); mutex_unlock(&lock);
The disable_irq() prevents the irq handler from running The disable_irq() prevents the irq handler from running
(and waits for it to finish if it's currently running on other CPUs). (and waits for it to finish if it's currently running on other CPUs).

View file

@ -1307,11 +1307,11 @@ se i dati vengono occasionalmente utilizzati da un contesto utente o
da un'interruzione software. Il gestore d'interruzione non utilizza alcun da un'interruzione software. Il gestore d'interruzione non utilizza alcun
*lock*, e tutti gli altri accessi verranno fatti così:: *lock*, e tutti gli altri accessi verranno fatti così::
spin_lock(&lock); mutex_lock(&lock);
disable_irq(irq); disable_irq(irq);
... ...
enable_irq(irq); enable_irq(irq);
spin_unlock(&lock); mutex_unlock(&lock);
La funzione disable_irq() impedisce al gestore d'interruzioni La funzione disable_irq() impedisce al gestore d'interruzioni
d'essere eseguito (e aspetta che finisca nel caso fosse in esecuzione su d'essere eseguito (e aspetta che finisca nel caso fosse in esecuzione su