aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-imx-2.6.35.3/devtmpfs-init-options-alignment.patch
blob: 19e5ef2fe6973a0ad92ebb6f9b3b536fd1b977e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Make the devtmpfs options static. This works around an issue that is still
under investigation.

The toolchain assumes it can generate unaligned accesses for ARMv6+, as these
cores can handle this, PROVIDED the bit is set in the CP15 control register.

However, Linux sets this bit lazely (upon first trap), which does not work for
kernel space code.

There was a lengthy thread over this, the agreement was the kernel should not
have non-aligned structures on stacks anyway.

Forcing this structure to be aligned on the stack did not help, unsure why.
This requires further investigation.

This fixes a kernel failure if devtmpfs was enabled in the kernel config.

Signed-off-by: Leon Woestenberg <leon@sidebranch.com>
diff -Nur orig/drivers/base/devtmpfs.c git/drivers/base/devtmpfs.c
--- orig/drivers/base/devtmpfs.c	2011-12-22 15:11:18.752904263 +0100
+++ git/drivers/base/devtmpfs.c	2011-12-22 18:03:09.060928840 +0100
@@ -365,6 +365,8 @@
 	return err;
 }
 
+static char options[] = "mode=0755";
+
 /*
  * Create devtmpfs instance, driver-core devices will add their device
  * nodes here.
@@ -373,7 +375,6 @@
 {
 	int err;
 	struct vfsmount *mnt;
-	char options[] = "mode=0755";
 
 	err = register_filesystem(&dev_fs_type);
 	if (err) {