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 <d...@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

Reply via email to