be more careful about cleaning up
diff --git a/util-linux/fdflush.c b/util-linux/fdflush.c
index a4245c7..0756ddf 100644
--- a/util-linux/fdflush.c
+++ b/util-linux/fdflush.c
@@ -32,16 +32,23 @@
 
 extern int fdflush_main(int argc, char **argv)
 {
-	int fd;
+	int fd, result;
 
 	if (argc <= 1)
 		show_usage();
 	if ((fd = open(*(++argv), 0)) < 0)
 		goto die_the_death;
 
-	if (ioctl(fd, FDFLUSH, 0))
+	result = ioctl(fd, FDFLUSH, 0);
+#ifdef CONFIG_FEATURE_CLEAN_UP
+	close(fd);
+#endif
+	if (result) {
 		goto die_the_death;
+	}
 
+	/* Don't bother closing.  Exit does
+	 * that, so we can save a few bytes */
 	return EXIT_SUCCESS;
 
 die_the_death:
diff --git a/util-linux/freeramdisk.c b/util-linux/freeramdisk.c
index aabb5f9..dd7700c 100644
--- a/util-linux/freeramdisk.c
+++ b/util-linux/freeramdisk.c
@@ -37,20 +37,25 @@
 extern int
 freeramdisk_main(int argc, char **argv)
 {
+	int result;
 	FILE *f;
 
-	if (argc != 2 || *argv[1] == '-') {
+	if (argc != 2) {
 		show_usage();
 	}
 
 	f = xfopen(argv[1], "r+");
 	
-	if (ioctl(fileno(f), BLKFLSBUF) < 0) {
+	result = ioctl(fileno(f), BLKFLSBUF);
+#ifdef CONFIG_FEATURE_CLEAN_UP
+	fclose(f);
+#endif
+	if (result < 0) {
 		perror_msg_and_die("failed ioctl on %s", argv[1]);
 	}
+
 	/* Don't bother closing.  Exit does
 	 * that, so we can save a few bytes */
-	/* close(f); */
 	return EXIT_SUCCESS;
 }