aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Strobl <marius@FreeBSD.org>2021-01-21 23:09:09 +0000
committerMarius Strobl <marius@FreeBSD.org>2021-01-21 23:18:40 +0000
commit3b433ed76500f1dde444bed736f9f36695cb93a0 (patch)
treea8bc6a83ad99702d11bb82340e7f1a28faa0a219
parent2dcbf0462e17db1b0a8cc99d1f95a7b0ba6437b2 (diff)
downloadsrc-3b433ed76500f1dde444bed736f9f36695cb93a0.tar.gz
src-3b433ed76500f1dde444bed736f9f36695cb93a0.zip
mmcsd(4): properly set BIO error when partition switching fails
While at it, remove redundant braces and goto in mmcsd_task(). Reported by: Coverity CID: 1419639
-rw-r--r--sys/dev/mmc/mmcsd.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/sys/dev/mmc/mmcsd.c b/sys/dev/mmc/mmcsd.c
index 2a55a9be1548..5e821586f722 100644
--- a/sys/dev/mmc/mmcsd.c
+++ b/sys/dev/mmc/mmcsd.c
@@ -1440,6 +1440,7 @@ mmcsd_task(void *arg)
mmcbus = sc->mmcbus;
while (1) {
+ bio_error = 0;
MMCSD_DISK_LOCK(part);
do {
if (part->running == 0)
@@ -1481,21 +1482,18 @@ mmcsd_task(void *arg)
if (block < part->eend && end > part->eblock)
part->eblock = part->eend = 0;
block = mmcsd_rw(part, bp);
- } else if (bp->bio_cmd == BIO_DELETE) {
+ } else if (bp->bio_cmd == BIO_DELETE)
block = mmcsd_delete(part, bp);
- } else {
+ else
bio_error = EOPNOTSUPP;
- goto release;
- }
release:
MMCBUS_RELEASE_BUS(mmcbus, dev);
if (block < end) {
bp->bio_error = (bio_error == 0) ? EIO : bio_error;
bp->bio_resid = (end - block) * sz;
bp->bio_flags |= BIO_ERROR;
- } else {
+ } else
bp->bio_resid = 0;
- }
biodone(bp);
}
out: