lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 1 Dec 2009 20:30:36 -0500
From:	Philip Wernersbach <philip.wernersbach@...il.com>
To:	linux-kernel@...r.kernel.org
Subject: [PATCH] ext2/3 as ext4

Hello Everyone,
     Below is a small patch I wrote for kernel version 2.6.31.6. It
causes ext2/3 filesystems to be mounted using the ext4 driver, in a
way that is transparent to the userspace (and kernelspace for that
matter, as long as the code uses the kernel's mounting API) and
requires no change to the userspace (/kernelspace). This patch is
useful because: 1) It allows minimalist kernel fanatics, like myself,
to drop 2 drivers from their builds without any loss in functionality.
2) It allows the ext2/3 filesystems to take advantage of the
performance/general improvements in the ext4 driver. 3) In the future,
with this patch, the ext2/3 driver code could be dropped from the
kernel without any loss in functionality. I have been using this patch
for 2 months now with no flaws on my home Linux box, which uses ext3
drives on a daily basis.

Let me know if you use this patch, if enough people use it I will
write a proper KCONFIG and submit it for inclusion into the kernel.

So without further ado, here is the patch.

Sincerely,
Philip Wernersbach <philip.wernersbach@...il.com>

--- linux-2.6.31.6.orig/fs/namespace.c  2009-11-28 22:30:07.178682500 -0500
+++ linux-2.6.31.6/fs/namespace.c       2009-11-28 22:32:42.813462139 -0500
@@ -6,6 +6,8 @@
 *
 * Based on code from fs/super.c, copyright Linus Torvalds and others.
 * Heavily rewritten.
+ *
+ * Uses ext2/3 as ext4 patch by Philip Wernersbach (November 2009)
 */

 #include <linux/syscalls.h>
@@ -1838,6 +1840,34 @@
       return n;
 }

+/*
+ * compare_fs_names(char *fs1, char *fs2) - Part of the ext2/3 as ext4 patch
+ *
+ * The following is a standard string compare function, made to compare
+ * filesystem names, it returns 0 if they equal, and 1 if they do not.
+ * It only handles strings up to 255 characters though, so be cautious.
+ */
+static int compare_fs_names(char *fs1, char *fs2)
+{
+               int i;
+
+               if (fs1 == 0L || fs2 == 0L) return 1;
+
+               for (i=0;i<256;i++)
+               {
+                       if (fs1[i] != fs2[i])
+                               return 1;
+                       if (fs1[i] == 0 && fs2[i] == 0)
+                               return 0;
+                       if (fs1[i] == 0)
+                               return 1;
+                       if (fs2[i] == 0)
+                               return 1;
+               }
+               return 0;
+}
+
+
 int copy_mount_options(const void __user * data, unsigned long *where)
 {
       int i;
@@ -1891,6 +1921,22 @@
       struct path path;
       int retval = 0;
       int mnt_flags = 0;
+
+       /*
+        * This causes ext2 filesystems to be mounted with the ext4 driver.
+        *
+        * Part of the ext2/3 as ext4 patch.
+        */
+       if (compare_fs_names(type_page, "ext2") == 0)
+               type_page[3] = '4';
+
+       /*
+        * This causes ext3 filesystems to be mounted with the ext4 driver.
+        *
+        * Part of the ext2/3 as ext4 patch.
+        */
+       if (compare_fs_names(type_page, "ext3") == 0)
+               type_page[3] = '4';

       /* Discard magic */
       if ((flags & MS_MGC_MSK) == MS_MGC_VAL)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ