From 92eea1bc414a7b6faedaf812c33ede17403fcaf7 Mon Sep 17 00:00:00 2001 From: Sami Tolvanen Date: Mon, 27 Apr 2015 11:24:29 +0100 Subject: Handle BLKDISCARD failures In the block updater, if BLKDISCARD fails, the error is silently ignored and some of the blocks may not be erased. This means the target partition will have inconsistent contents. If the ioctl fails, return an error and abort the update. Bug: 20614277 Change-Id: I33867ba9337c514de8ffae59f28584b285324067 (cherry picked from commit cc2428c8181d18c9a88db908fa4eabd2db5601ad) --- updater/blockimg.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/updater/blockimg.c b/updater/blockimg.c index a0e9aec6a..0e2ba4441 100644 --- a/updater/blockimg.c +++ b/updater/blockimg.c @@ -1424,7 +1424,6 @@ static int PerformCommandErase(CommandParameters* params) { if (!S_ISBLK(st.st_mode)) { fprintf(stderr, "not a block device; skipping erase\n"); - rc = 0; goto pceout; } @@ -1448,7 +1447,7 @@ static int PerformCommandErase(CommandParameters* params) { if (ioctl(params->fd, BLKDISCARD, &blocks) == -1) { fprintf(stderr, "BLKDISCARD ioctl failed: %s\n", strerror(errno)); - // Continue anyway, nothing we can do + goto pceout; } } } -- cgit v1.2.3