patches/linux/3.0.4/100-headers_install-fix-__packed-in-exported-kernel-head.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Fri Nov 04 19:22:29 2011 +0100 (2011-11-04)
branch1.13
changeset 2736 0bda1e67d615
permissions -rw-r--r--
kernel/linux: fix packed attribute in exported headers

UBI headers (and maybe others as well) are broken because the 'packed'
attribute is not sanitised when the headers are exported to userspace.

Apply the fix from upstream:
https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=f210735fe2f17a6225432ee3d1239bcf23a8659c

(Also, buildroot does the same, BTW)

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@2736
     1
commit f210735fe2f17a6225432ee3d1239bcf23a8659c
yann@2736
     2
Author: Markus Trippelsdorf <markus@trippelsdorf.de>
yann@2736
     3
Date:   Fri Jun 24 15:51:00 2011 +0200
yann@2736
     4
yann@2736
     5
    headers_install: fix __packed in exported kernel headers
yann@2736
     6
    
yann@2736
     7
    checkpatch.pl warns about using __attribute__((packed)) in kernel
yann@2736
     8
    headers: "__packed is preferred over __attribute__((packed))". If one
yann@2736
     9
    follows that advice it could cause problems in the exported header
yann@2736
    10
    files, because the outside world doesn't know about this shortcut.
yann@2736
    11
    
yann@2736
    12
    For example busybox will fail to compile:
yann@2736
    13
     CC      miscutils/ubi_attach_detach.o
yann@2736
    14
     In file included from miscutils/ubi_attach_detach.c:27:0:
yann@2736
    15
     /usr/include/mtd/ubi-user.h:330:3: error: conflicting types for ‘__packed’
yann@2736
    16
     /usr/include/mtd/ubi-user.h:314:3: note: previous declaration of ‘__packed’ was here
yann@2736
    17
    ...
yann@2736
    18
    
yann@2736
    19
    Fix the problem by substituting __packed with __attribute__((packed)) in
yann@2736
    20
    the header_install.pl script.
yann@2736
    21
    
yann@2736
    22
    Cc: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
yann@2736
    23
    CC: Joe Perches <joe@perches.com>
yann@2736
    24
    Signed-off-by: Markus Trippelsdorf <markus@trippelsdorf.de>
yann@2736
    25
    Signed-off-by: Michal Marek <mmarek@suse.cz>
yann@2736
    26
yann@2736
    27
diff --git a/scripts/headers_install.pl b/scripts/headers_install.pl
yann@2736
    28
index efb3be1..48462be 100644
yann@2736
    29
--- a/scripts/headers_install.pl
yann@2736
    30
+++ b/scripts/headers_install.pl
yann@2736
    31
@@ -35,6 +35,7 @@ foreach my $file (@files) {
yann@2736
    32
 		$line =~ s/([\s(])__iomem\s/$1/g;
yann@2736
    33
 		$line =~ s/\s__attribute_const__\s/ /g;
yann@2736
    34
 		$line =~ s/\s__attribute_const__$//g;
yann@2736
    35
+		$line =~ s/\b__packed\b/__attribute__((packed))/g;
yann@2736
    36
 		$line =~ s/^#include <linux\/compiler.h>//;
yann@2736
    37
 		$line =~ s/(^|\s)(inline)\b/$1__$2__/g;
yann@2736
    38
 		$line =~ s/(^|\s)(asm)\b(\s|[(]|$)/$1__$2__$3/g;