summaryrefslogtreecommitdiff
path: root/package/busybox/busybox-1.10.2-mdev.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/busybox/busybox-1.10.2-mdev.patch')
-rw-r--r--package/busybox/busybox-1.10.2-mdev.patch31
1 files changed, 31 insertions, 0 deletions
diff --git a/package/busybox/busybox-1.10.2-mdev.patch b/package/busybox/busybox-1.10.2-mdev.patch
new file mode 100644
index 000000000..37271beaa
--- /dev/null
+++ b/package/busybox/busybox-1.10.2-mdev.patch
@@ -0,0 +1,31 @@
+--- busybox-1.10.2/util-linux/mdev.c Thu May 8 17:22:48 2008
++++ busybox-1.10.2-mdev/util-linux/mdev.c Sat May 24 18:43:40 2008
+@@ -72,8 +72,14 @@
+ /* Determine device name, type, major and minor */
+ device_name = bb_basename(path);
+ /* http://kernel.org/doc/pending/hotplug.txt says that only
+- * "/sys/block/..." is for block devices. "sys/bus" etc is not! */
+- type = (strncmp(&path[5], "block/", 6) == 0 ? S_IFBLK : S_IFCHR);
++ * "/sys/block/..." is for block devices. "/sys/bus" etc is not!
++ * Since kernel 2.6.25 block devices are also in /sys/class/block. */
++ /* TODO: would it be acceptable to just use strstr(path, "/block/")? */
++ if (strncmp(&path[5], "class/block/"+6, 6) != 0
++ && strncmp(&path[5], "class/block/", 12) != 0)
++ type = S_IFCHR;
++ else
++ type = S_IFBLK;
+
+ if (ENABLE_FEATURE_MDEV_CONF) {
+ FILE *fp;
+@@ -172,8 +178,9 @@
+ /* substitute %1..9 with off[1..9], if any */
+ n = 0;
+ s = val;
+- while (*s && *s++ == '%')
+- n++;
++ while (*s)
++ if (*s++ == '%')
++ n++;
+
+ p = alias = xzalloc(strlen(val) + n * strlen(device_name));
+ s = val + 1;