Index: uspace/lib/ext4/src/superblock.c
===================================================================
--- uspace/lib/ext4/src/superblock.c	(revision ea50e6715564d0b1b526855dda7bc8f2f776dab7)
+++ uspace/lib/ext4/src/superblock.c	(revision f35749ea567f56991e775945db2ae2ded40751e6)
@@ -1231,15 +1231,13 @@
 	/* Preserve physical block data */
 	rc = block_read_direct(service_id, first_block, 1, tmp_sb);
-	if (rc != EOK) {
-		free(tmp_sb);
-		return rc;
+	if (rc == EOK) {
+		/* Write the superblock */
+		void *sb_pos = tmp_sb + EXT4_SUPERBLOCK_OFFSET % phys_block_size;
+		memcpy(sb_pos, sb, EXT4_SUPERBLOCK_SIZE);
+
+		/* Write physical block to device */
+		rc = block_write_direct(service_id, first_block, 1, tmp_sb);
 	}
 
-	/* Write the superblock */
-	void *sb_pos = tmp_sb + EXT4_SUPERBLOCK_OFFSET % phys_block_size;
-	memcpy(sb_pos, sb, EXT4_SUPERBLOCK_SIZE);
-
-	/* Write physical block to device */
-	rc = block_write_direct(service_id, first_block, 1, tmp_sb);
 	free(tmp_sb);
 	return rc;
