diff mbox

Bunch of serial warnings in next at least with omap-serial

Message ID 572911BF.8000803@hurleysoftware.com (mailing list archive)
State New, archived
Headers show

Commit Message

Peter Hurley May 3, 2016, 9:01 p.m. UTC
Hi Tony,

On 05/03/2016 01:39 PM, Tony Lindgren wrote:
> Hi Peter,
> 
> Looks like probably commit 4047b37122d1 ("serial: core: Prevent unsafe
> uart port access, part 1") in Linux next causes tons of warnings with at
> least omap-serial. It does not revert cleanly I have not tested with that
> reverted. Any ideas? Dmesg output of the errors below.

Thanks for the report.
Patch below should fix that.

--- >% ---
Subject: [PATCH] serial: core: Fix port mutex assert if lockdep disabled

commit 4047b37122d1 ("serial: core: Prevent unsafe uart port access,
part 1") added lockdep assertion for port mutex but fails to check
if debug_locks has disabled lockdep (so lock state is no longer
reliable).

Use lockdep_assert_held() instead, which properly checks lockdep
state as well.

Reported-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
---
 drivers/tty/serial/serial_core.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

Comments

Tony Lindgren May 3, 2016, 9:58 p.m. UTC | #1
* Peter Hurley <peter@hurleysoftware.com> [160503 14:03]:
> Hi Tony,
> 
> On 05/03/2016 01:39 PM, Tony Lindgren wrote:
> > Hi Peter,
> > 
> > Looks like probably commit 4047b37122d1 ("serial: core: Prevent unsafe
> > uart port access, part 1") in Linux next causes tons of warnings with at
> > least omap-serial. It does not revert cleanly I have not tested with that
> > reverted. Any ideas? Dmesg output of the errors below.
> 
> Thanks for the report.
> Patch below should fix that.

Yes thanks that fixes it:

Tested-by: Tony Lindgren <tony@atomide.com>
diff mbox

Patch

diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
index 0e66923..b88a054 100644
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
@@ -95,9 +95,7 @@  static inline void uart_port_deref(struct uart_port *uport)
 
 static inline struct uart_port *uart_port_check(struct uart_state *state)
 {
-#ifdef CONFIG_LOCKDEP
-	WARN_ON(!lockdep_is_held(&state->port.mutex));
-#endif
+	lockdep_assert_held(&state->port.mutex);
 	return state->uart_port;
 }