Module Name: src
Committed By: mlelstv
Date: Wed Sep 25 16:21:14 UTC 2019
Modified Files:
src/sys/dev/sdmmc: if_bwfm_sdio.c
Log Message:
Use correct function to verify if a task has been queued. Avoids race
that can corrupt the task queue.
To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/dev/sdmmc/if_bwfm_sdio.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/sdmmc/if_bwfm_sdio.c
diff -u src/sys/dev/sdmmc/if_bwfm_sdio.c:1.5 src/sys/dev/sdmmc/if_bwfm_sdio.c:1.6
--- src/sys/dev/sdmmc/if_bwfm_sdio.c:1.5 Fri Sep 13 11:21:03 2019
+++ src/sys/dev/sdmmc/if_bwfm_sdio.c Wed Sep 25 16:21:14 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: if_bwfm_sdio.c,v 1.5 2019/09/13 11:21:03 mlelstv Exp $ */
+/* $NetBSD: if_bwfm_sdio.c,v 1.6 2019/09/25 16:21:14 mlelstv Exp $ */
/* $OpenBSD: if_bwfm_sdio.c,v 1.1 2017/10/11 17:19:50 patrick Exp $ */
/*
* Copyright (c) 2010-2016 Broadcom Corporation
@@ -1267,10 +1267,9 @@ bwfm_sdio_intr(void *v)
DPRINTF(("%s: sdio_intr\n", DEVNAME(sc)));
mutex_enter(&sc->sc_intr_lock);
- if (!sc->sc_task_queued) {
- sc->sc_task_queued = true;
+ if (!sdmmc_task_pending(&sc->sc_task))
sdmmc_add_task(sc->sc_sf[1]->sc, &sc->sc_task);
- }
+ sc->sc_task_queued = true;
mutex_exit(&sc->sc_intr_lock);
return 1;
}