diff --git a/fs/seq_file.c b/fs/seq_file.c diff --git a/fs/xattr.c b/fs/xattr.c diff --git a/include/linux/gfp.h b/include/linux/gfp.h --- a/include/linux/gfp.h +++ b/include/linux/gfp.h @@ -40,6 +40,7 @@ struct vm_area_struct; #define __GFP_ZERO 0x8000u /* Return zeroed page on success */ #define __GFP_NOMEMALLOC 0x10000u /* Don't use emergency reserves */ #define __GFP_NORECLAIM 0x20000u /* No realy zone reclaim during allocation */ +#define __GFP_VALID 0x80000000u /* valid GFP flags */ #define __GFP_BITS_SHIFT 20 /* Room for 20 __GFP_FOO bits */ #define __GFP_BITS_MASK ((1 << __GFP_BITS_SHIFT) - 1) @@ -50,12 +51,12 @@ struct vm_area_struct; __GFP_NOFAIL|__GFP_NORETRY|__GFP_NO_GROW|__GFP_COMP| \ __GFP_NOMEMALLOC|__GFP_NORECLAIM) -#define GFP_ATOMIC (__GFP_HIGH) -#define GFP_NOIO (__GFP_WAIT) -#define GFP_NOFS (__GFP_WAIT | __GFP_IO) -#define GFP_KERNEL (__GFP_WAIT | __GFP_IO | __GFP_FS) -#define GFP_USER (__GFP_WAIT | __GFP_IO | __GFP_FS) -#define GFP_HIGHUSER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HIGHMEM) +#define GFP_ATOMIC (__GFP_VALID | __GFP_HIGH) +#define GFP_NOIO (__GFP_VALID | __GFP_WAIT) +#define GFP_NOFS (__GFP_VALID | __GFP_WAIT | __GFP_IO) +#define GFP_KERNEL (__GFP_VALID | __GFP_WAIT | __GFP_IO | __GFP_FS) +#define GFP_USER (__GFP_VALID | __GFP_WAIT | __GFP_IO | __GFP_FS) +#define GFP_HIGHUSER (__GFP_VALID | __GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HIGHMEM) /* Flag - indicates that the buffer will be suitable for DMA. Ignored on some platforms, used as appropriate on others */ diff --git a/include/linux/slab.h b/include/linux/slab.h --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -78,6 +78,10 @@ extern void *__kmalloc(size_t, unsigned static inline void *kmalloc(size_t size, unsigned int __nocast flags) { + if (__builtin_constant_p(flags) && !(flags & __GFP_VALID)) { + extern void __your_kmalloc_flags_are_not_valid(void); + __your_kmalloc_flags_are_not_valid(); + } if (__builtin_constant_p(size)) { int i = 0; #define CACHE(x) \