DF-4939 / fix.diff
--- a/sys/dev/netif/ic/if_ic.c 2026-09-25 07:24:38.504972636 +0000 +++ b/sys/dev/netif/ic/if_ic.c 2026-09-25 07:24:51.912799296 +0000 @@ -190,11 +190,14 @@ if ((error = iicbus_request_bus(parent, icdev, IIC_WAIT|IIC_INTR))) return (error); - sc->ic_obuf = kmalloc(sc->ic_if.if_mtu + ICHDRLEN, - M_DEVBUF, M_WAITOK); - - sc->ic_ifbuf = kmalloc(sc->ic_if.if_mtu + ICHDRLEN, - M_DEVBUF, M_WAITOK); + /* reuse buffers retained from a previous up (DF-4939) */ + if (sc->ic_obuf == NULL) + sc->ic_obuf = kmalloc(sc->ic_if.if_mtu + ICHDRLEN, + M_DEVBUF, M_WAITOK); + + if (sc->ic_ifbuf == NULL) + sc->ic_ifbuf = kmalloc(sc->ic_if.if_mtu + ICHDRLEN, + M_DEVBUF, M_WAITOK); iicbus_reset(parent, IIC_FASTEST, 0, NULL); |