Commit 9a2225f2 authored by Jiri Slaby (SUSE)'s avatar Jiri Slaby (SUSE) Committed by Greg Kroah-Hartman
Browse files

serial: 8250_core: use guard() in serial_unlink_irq_chain()



Having all the new guards, use them in the 8250 code. This improves
readability, makes error handling easier, and marks locked portions of
code explicit.

serial_unlink_irq_chain() is done separately here because with the
guard() used, those BUG_ON()s can be switched WARN_ON()s as we can
actually handle the conditions and return (despite something went really
wrong).

Signed-off-by: default avatar"Jiri Slaby (SUSE)" <jirislaby@kernel.org>
Link: https://lore.kernel.org/r/20250814072456.182853-11-jirislaby@kernel.org


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b339809e
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -178,20 +178,22 @@ static void serial_unlink_irq_chain(struct uart_8250_port *up)
{
	struct irq_info *i;

	mutex_lock(&hash_mutex);
	guard(mutex)(&hash_mutex);

	hash_for_each_possible(irq_lists, i, node, up->port.irq)
		if (i->irq == up->port.irq)
			break;

	BUG_ON(i == NULL);
	BUG_ON(i->head == NULL);
		if (i->irq == up->port.irq) {
			if (WARN_ON(i->head == NULL))
				return;

			if (list_empty(i->head))
				free_irq(up->port.irq, i);

			serial_do_unlink(i, up);
	mutex_unlock(&hash_mutex);

			return;
		}

	WARN_ON(1);
}

/*