[PATCH] mkswap: unbreak -c ("check") option.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In the check_blocks() loop, current_page is not incremented. Because of this
bug, the loop does not end when the end of the device is reached.  Instead it
tries to continue reading, which of course fails, and eventually mkswap aborts
("too many bad pages").

Note that this can only be tested with swap partitions, mkswap ignores the -c
option for swap files.

Signed-off-by: Peter De Wachter <pdewacht@xxxxxxxxx>
---
 disk-utils/mkswap.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/disk-utils/mkswap.c b/disk-utils/mkswap.c
index bb97210..bdfa8f7 100644
--- a/disk-utils/mkswap.c
+++ b/disk-utils/mkswap.c
@@ -309,9 +309,9 @@ check_blocks(void) {
 		    current_page*pagesize)
 			die(_("seek failed in check_blocks"));
 		if ((do_seek = (pagesize != read(DEV, buffer, pagesize)))) {
-			page_bad(current_page++);
-			continue;
+			page_bad(current_page);
 		}
+		current_page++;
 	}
 	if (badpages == 1)
 		printf(_("one bad page\n"));
-- 
1.6.3.3

--
To unsubscribe from this list: send the line "unsubscribe util-linux-ng" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux