]> git.baikalelectronics.ru Git - kernel.git/commit
pinctrl: mediatek: use spin lock in mtk_rmw
authorTzung-Bi Shih <tzungbi@google.com>
Mon, 19 Apr 2021 09:34:49 +0000 (17:34 +0800)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 21 Apr 2021 23:53:29 +0000 (01:53 +0200)
commit2de6b39629ad3cd0561213770a001abcfd20176f
tree5329e9b104e268542412f6ea14c9cf5e90432900
parent53ca553c96789103fab1bab5e53073875e0a6754
pinctrl: mediatek: use spin lock in mtk_rmw

Commit 90e2774dc252 ("pinctrl: add lock in mtk_rmw function.") uses
mutex lock in mtk_rmw.  However the function is possible called from
atomic context.

For example call trace:
  mutex_lock+0x28/0x64
  mtk_rmw+0x38/0x80
  [snip]
  max98357a_daiops_trigger+0x8c/0x9c
  soc_pcm_trigger+0x5c/0x10c

The max98357a_daiops_trigger() could run in either atomic or non-atomic
context.  As a result, dmesg shows some similar messages: "BUG: sleeping
function called from invalid context at kernel/locking/mutex.c:254".

Uses spin lock in mtk_rmw instead.

Fixes: 90e2774dc252 ("pinctrl: add lock in mtk_rmw function.")
Signed-off-by: Tzung-Bi Shih <tzungbi@google.com>
Link: https://lore.kernel.org/r/20210419093449.3125704-1-tzungbi@google.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/mediatek/pinctrl-moore.c
drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c
drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.h
drivers/pinctrl/mediatek/pinctrl-paris.c