Commit 69696826 authored by Takashi Sakamoto's avatar Takashi Sakamoto
Browse files

firewire: ohci: move self_id_complete tracepoint after validating register

The value of OHCI1394_SelfIDCount register includes an error-indicating
bit. It is safer to place the tracepoint probe after validating the
register value.

Link: https://lore.kernel.org/r/20250823030954.268412-2-o-takashi@sakamocchi.jp


Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
parent 8748368c
Loading
Loading
Loading
Loading
+4 −8
Original line number Diff line number Diff line
@@ -1863,6 +1863,9 @@ static void bus_reset_work(struct work_struct *work)
		ohci_notice(ohci, "self ID receive error\n");
		return;
	}

	trace_self_id_complete(ohci->card.index, reg, ohci->self_id, has_be_header_quirk(ohci));

	/*
	 * The count in the SelfIDCount register is the number of
	 * bytes in the self ID receive buffer.  Since we also receive
@@ -2024,15 +2027,8 @@ static irqreturn_t irq_handler(int irq, void *data)
	if (event & OHCI1394_busReset)
		reg_write(ohci, OHCI1394_IntMaskClear, OHCI1394_busReset);

	if (event & OHCI1394_selfIDComplete) {
		if (trace_self_id_complete_enabled()) {
			u32 reg = reg_read(ohci, OHCI1394_SelfIDCount);

			trace_self_id_complete(ohci->card.index, reg, ohci->self_id,
					       has_be_header_quirk(ohci));
		}
	if (event & OHCI1394_selfIDComplete)
		queue_work(selfid_workqueue, &ohci->bus_reset_work);
	}

	if (event & OHCI1394_RQPkt)
		queue_work(ohci->card.async_wq, &ohci->ar_request_ctx.work);