Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 Apr 2025 14:10:24 +0000
From:      "Dave Cottlehuber" <dch@skunkwerks.at>
To:        "Warner Losh" <imp@bsdimp.com>, "Gleb Smirnoff" <glebius@freebsd.org>
Cc:        freebsd-current <freebsd-current@freebsd.org>
Subject:   Re: April 2025 stabilization week
Message-ID:  <a08c5872-0cf3-4bbf-b2fd-61cceb8980bc@app.fastmail.com>
In-Reply-To: <447332f8-a8bc-4b90-a605-4c705a58f491@app.fastmail.com>
References:  <aAX7DZ-zFkOyOhij@cell.glebi.us> <CANCZdfoRA-q_CVkBAxYwQH%2BrDq1T%2Be3=4xQpF=UgSYMr7KZA3w@mail.gmail.com> <447332f8-a8bc-4b90-a605-4c705a58f491@app.fastmail.com>

index | next in thread | previous in thread | raw e-mail

On Thu, 24 Apr 2025, at 14:04, Dave Cottlehuber wrote:
> On Mon, 21 Apr 2025, at 14:22, Warner Losh wrote:
>> Please note: Gleb is on vacation this week, so I'll be coordinating
>> stab-week this time. Please be sure to cc me on any problems you
>> encounter.

> from https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=286045 Darius
> suggested guarding sc->intr_handler, and with that
> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=259480&action=diff
> I can boot successfully again:
>
> THREAD_SLEEPING_OK();
> 	error = iichid_cmd_read(sc, sc->intr_buf, sc->intr_bufsize, &actual);
> 	THREAD_NO_SLEEPING();
> 	if (error == 0) {
> 		if (sc->power_on) {
> 			if (actual != 0)
> L#635	**********	sc->intr_handler(sc->intr_ctx, sc->intr_buf,
> 			  actual);
> 			else
> 				DPRINTF(sc, "no data received\n");
> 		}
> 	} else
> 		DPRINTF(sc, "read error occurred: %d\n", error);
>
> 	iicbus_release_bus(parent, sc->dev);
> }
>
> I have no idea why/how we get to here with null sc->intr_handler though.
>
> A+
> Dave

workaround below:

>From 2f8ea6473c2ece8387691a950b8f9e9ec7b8f8bf Mon Sep 17 00:00:00 2001
From: Dave Cottlehuber <dch@FreeBSD.org>
Date: Fri, 11 Apr 2025 22:24:07 +0000
Subject: [PATCH] iichid: panic

---
 sys/dev/iicbus/iichid.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/dev/iicbus/iichid.c b/sys/dev/iicbus/iichid.c
index b86858791a4d5c4ef790ce4ca0761a2af85a5142..88706ecf460c6f3ca6e8e317a28df220bdad0b97 100644
--- a/sys/dev/iicbus/iichid.c
+++ b/sys/dev/iicbus/iichid.c
@@ -631,7 +631,7 @@ iichid_intr(void *context)
 	THREAD_NO_SLEEPING();
 	if (error == 0) {
 		if (sc->power_on) {
-			if (actual != 0)
+			if ((actual != 0) && (sc->intr_handler != NULL))
 				sc->intr_handler(sc->intr_ctx, sc->intr_buf,
 				    actual);
 			else


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?a08c5872-0cf3-4bbf-b2fd-61cceb8980bc>