[APPLIED] [PATCH 1/1] UBUNTU: SAUCE: headers_install: fix #include "..." usage for userspace
Leann Ogasawara
leann.ogasawara at canonical.com
Fri Sep 16 17:03:05 UTC 2011
On Fri, 2011-09-16 at 13:20 +0100, Andy Whitcroft wrote:
> When headers are converted to userspace headers they may include
> relative includes. For example x86 has the following in its
> asm/posix_types.h:
>
> # ifdef __i386__
> # include "posix_types_32.h"
> # else
> # include "posix_types_64.h"
> # endif
>
> However this is not safe in the face of the gcc option -I- which removes
> "the directory the file I am being included from" from the search list.
>
> Convert these references to <dir/...> form avoiding this.
>
> BugLink: http://bugs.launchpad.net/bugs/824377
> Signed-off-by: Andy Whitcroft <apw at canonical.com>
Signed-off-by: Leann Ogasawara <leann.ogasawara at canonical.com>
Applied to Oneiric master-next.
Thanks,
Leann
> ---
> scripts/Makefile.headersinst | 4 ++--
> scripts/headers_install.pl | 8 +++++++-
> 2 files changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/scripts/Makefile.headersinst b/scripts/Makefile.headersinst
> index a57f5bd..b4018c5 100644
> --- a/scripts/Makefile.headersinst
> +++ b/scripts/Makefile.headersinst
> @@ -50,8 +50,8 @@ printdir = $(patsubst $(INSTALL_HDR_PATH)/%/,%,$(dir $@))
> quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\
> file$(if $(word 2, $(all-files)),s))
> cmd_install = \
> - $(PERL) $< $(srctree)/$(obj) $(install) $(SRCARCH) $(header-y); \
> - $(PERL) $< $(objtree)/$(obj) $(install) $(SRCARCH) $(objhdr-y); \
> + $(PERL) $< $(srctree)/$(obj) $(install) $(SRCARCH) $(printdir) $(header-y); \
> + $(PERL) $< $(objtree)/$(obj) $(install) $(SRCARCH) $(printdir) $(objhdr-y); \
> for F in $(wrapper-files); do \
> echo "\#include <asm-generic/$$F>" > $(install)/$$F; \
> done; \
> diff --git a/scripts/headers_install.pl b/scripts/headers_install.pl
> index efb3be1..0425f5f 100644
> --- a/scripts/headers_install.pl
> +++ b/scripts/headers_install.pl
> @@ -18,7 +18,9 @@
>
> use strict;
>
> -my ($readdir, $installdir, $arch, @files) = @ARGV;
> +my ($readdir, $installdir, $arch, $printdir, @files) = @ARGV;
> +
> +$printdir =~ s@^include/@@;
>
> my $unifdef = "scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__";
>
> @@ -30,6 +32,10 @@ foreach my $file (@files) {
> open(my $out, '>', $tmpfile)
> or die "$tmpfile: $!\n";
> while (my $line = <$in>) {
> + # Any #include which uses "" and does not have a path needs
> + # rewriting so that the resultant user space headers are
> + # safe against the use of -I-.
> + $line =~ s/^(\s*#\s*include\s+)"([^\/]*?)"/$1<$printdir\/$2>/;
> $line =~ s/([\s(])__user\s/$1/g;
> $line =~ s/([\s(])__force\s/$1/g;
> $line =~ s/([\s(])__iomem\s/$1/g;
> --
> 1.7.4.1
>
>
More information about the kernel-team
mailing list