Fix problem with undefined umode_t type in 3.3 kernel headers

The 3.3 kernel headers define the umode_t type within a __KERNEL__
preprocessor ifdef region. This results in a broken kernel header in the
buildroot toolchain.

[Peter: This is discussed upstream here:
https://bugzilla.kernel.org/show_bug.cgi?id=42986
Long term socat/syslinux should stop using this header, but this hasn't
been fixed upstream yet]
Signed-off-by: Simon Dawson <spdawson@gmail.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
This commit is contained in:
Simon Dawson 2012-03-24 09:14:44 +00:00 committed by Peter Korsgaard
parent d0e5eb281f
commit a3daa6f785
1 changed files with 22 additions and 0 deletions

View File

@ -0,0 +1,22 @@
Fix a problem with the 3.3 kernel headers. Specifically, the umode_t type
is defined within a __KERNEL__ preprocessor ifdef region, and so the type
is not usable by non-kernel code. Visit the following URL for more details.
* http://www.spinics.net/lists/linux-fsdevel/msg52638.html
The commit that created the problem can be seen at the following URL.
* http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=commitdiff;h=0583fcc96bb117763c0fa74c123573c0112dec65
diff -Nur a/include/linux/ext2_fs.h b/include/linux/ext2_fs.h
--- a/include/linux/ext2_fs.h 2012-03-18 23:15:34.000000000 +0000
+++ b/include/linux/ext2_fs.h 2012-03-21 11:47:53.015548437 +0000
@@ -209,7 +209,7 @@
#define EXT2_OTHER_FLMASK (EXT2_NODUMP_FL | EXT2_NOATIME_FL)
/* Mask out flags that are inappropriate for the given type of inode. */
-static inline __u32 ext2_mask_flags(umode_t mode, __u32 flags)
+static inline __u32 ext2_mask_flags(unsigned short mode, __u32 flags)
{
if (S_ISDIR(mode))
return flags;