Module Name: src Committed By: thorpej Date: Sat Oct 10 20:27:55 UTC 2020
Modified Files: src/sys/dev/ic: siisata.c Log Message: In siisata_intr_port(), skip reading the error condition if ata_queue_get_active_xfer() returns NULL. PR kern/55682. Fix suggested by mlelstv@. To generate a diff of this commit: cvs rdiff -u -r1.42 -r1.43 src/sys/dev/ic/siisata.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/ic/siisata.c diff -u src/sys/dev/ic/siisata.c:1.42 src/sys/dev/ic/siisata.c:1.43 --- src/sys/dev/ic/siisata.c:1.42 Mon Apr 13 10:49:34 2020 +++ src/sys/dev/ic/siisata.c Sat Oct 10 20:27:54 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: siisata.c,v 1.42 2020/04/13 10:49:34 jdolecek Exp $ */ +/* $NetBSD: siisata.c,v 1.43 2020/10/10 20:27:54 thorpej Exp $ */ /* from ahcisata_core.c */ @@ -79,7 +79,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: siisata.c,v 1.42 2020/04/13 10:49:34 jdolecek Exp $"); +__KERNEL_RCSID(0, "$NetBSD: siisata.c,v 1.43 2020/10/10 20:27:54 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -540,10 +540,9 @@ siisata_intr_port(struct siisata_channel tfd = ATACH_ERR_ST(WDCE_CRC, WDCS_ERR); if (ec <= PR_PCE_DATAFISERROR) { - if (ec == PR_PCE_DEVICEERROR - && (chp->ch_flags & ATACH_NCQ) == 0) { - xfer = ata_queue_get_active_xfer(chp); - + if (ec == PR_PCE_DEVICEERROR && + (chp->ch_flags & ATACH_NCQ) == 0 && + (xfer = ata_queue_get_active_xfer(chp)) != NULL) { /* read in specific information about error */ uint32_t prbfis = bus_space_read_stream_4( sc->sc_prt, sc->sc_prh,