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;
 }

Reply via email to