[next:master 156/212] fs/binfmt_elf.c:158:18: note: in expansion of macro 'min'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   30404ddcb1872c8a571fa0889935ff65677e4c78
commit: aef93cafef35b8830fc973be43f0745f9c16eff4 [156/212] binfmt_elf.c: use get_random_int() to fix entropy depleting
config: make ARCH=mn10300 asb2364_defconfig

All warnings:

   In file included from include/asm-generic/bug.h:13:0,
                    from arch/mn10300/include/asm/bug.h:35,
                    from include/linux/bug.h:4,
                    from include/linux/thread_info.h:11,
                    from include/asm-generic/preempt.h:4,
                    from arch/mn10300/include/generated/asm/preempt.h:1,
                    from include/linux/preempt.h:18,
                    from include/linux/spinlock.h:50,
                    from include/linux/seqlock.h:35,
                    from include/linux/time.h:5,
                    from include/linux/stat.h:18,
                    from include/linux/module.h:10,
                    from fs/binfmt_elf.c:12:
   fs/binfmt_elf.c: In function 'get_atrandom_bytes':
   include/linux/kernel.h:713:17: warning: comparison of distinct pointer types lacks a cast
     (void) (&_min1 == &_min2);  \
                    ^
>> fs/binfmt_elf.c:158:18: note: in expansion of macro 'min'
      size_t chunk = min(nbytes, sizeof(random_variable));
                     ^

vim +/min +158 fs/binfmt_elf.c

^1da177e Linus Torvalds      2005-04-16    6   * "UNIX SYSTEM V RELEASE 4 Programmers Guide: Ansi C and Programming Support
^1da177e Linus Torvalds      2005-04-16    7   * Tools".
^1da177e Linus Torvalds      2005-04-16    8   *
^1da177e Linus Torvalds      2005-04-16    9   * Copyright 1993, 1994: Eric Youngdale (ericy@xxxxxxxx).
^1da177e Linus Torvalds      2005-04-16   10   */
^1da177e Linus Torvalds      2005-04-16   11  
^1da177e Linus Torvalds      2005-04-16  @12  #include <linux/module.h>
^1da177e Linus Torvalds      2005-04-16   13  #include <linux/kernel.h>
^1da177e Linus Torvalds      2005-04-16   14  #include <linux/fs.h>
^1da177e Linus Torvalds      2005-04-16   15  #include <linux/mm.h>
^1da177e Linus Torvalds      2005-04-16   16  #include <linux/mman.h>
^1da177e Linus Torvalds      2005-04-16   17  #include <linux/errno.h>
^1da177e Linus Torvalds      2005-04-16   18  #include <linux/signal.h>
^1da177e Linus Torvalds      2005-04-16   19  #include <linux/binfmts.h>
^1da177e Linus Torvalds      2005-04-16   20  #include <linux/string.h>
^1da177e Linus Torvalds      2005-04-16   21  #include <linux/file.h>
^1da177e Linus Torvalds      2005-04-16   22  #include <linux/slab.h>
^1da177e Linus Torvalds      2005-04-16   23  #include <linux/personality.h>
^1da177e Linus Torvalds      2005-04-16   24  #include <linux/elfcore.h>
^1da177e Linus Torvalds      2005-04-16   25  #include <linux/init.h>
^1da177e Linus Torvalds      2005-04-16   26  #include <linux/highuid.h>
^1da177e Linus Torvalds      2005-04-16   27  #include <linux/compiler.h>
^1da177e Linus Torvalds      2005-04-16   28  #include <linux/highmem.h>
^1da177e Linus Torvalds      2005-04-16   29  #include <linux/pagemap.h>
2aa362c4 Denys Vlasenko      2012-10-04   30  #include <linux/vmalloc.h>
^1da177e Linus Torvalds      2005-04-16   31  #include <linux/security.h>
^1da177e Linus Torvalds      2005-04-16   32  #include <linux/random.h>
f4e5cc2c Jesper Juhl         2006-06-23   33  #include <linux/elf.h>
7e80d0d0 Alexey Dobriyan     2007-05-08   34  #include <linux/utsname.h>
088e7af7 Daisuke HATAYAMA    2010-03-05   35  #include <linux/coredump.h>
6fac4829 Frederic Weisbecker 2012-11-13   36  #include <linux/sched.h>
^1da177e Linus Torvalds      2005-04-16   37  #include <asm/uaccess.h>
^1da177e Linus Torvalds      2005-04-16   38  #include <asm/param.h>
^1da177e Linus Torvalds      2005-04-16   39  #include <asm/page.h>
^1da177e Linus Torvalds      2005-04-16   40  
2aa362c4 Denys Vlasenko      2012-10-04   41  #ifndef user_long_t
2aa362c4 Denys Vlasenko      2012-10-04   42  #define user_long_t long
2aa362c4 Denys Vlasenko      2012-10-04   43  #endif
49ae4d4b Denys Vlasenko      2012-10-04   44  #ifndef user_siginfo_t
49ae4d4b Denys Vlasenko      2012-10-04   45  #define user_siginfo_t siginfo_t
49ae4d4b Denys Vlasenko      2012-10-04   46  #endif
49ae4d4b Denys Vlasenko      2012-10-04   47  
71613c3b Al Viro             2012-10-20   48  static int load_elf_binary(struct linux_binprm *bprm);
bb1ad820 Andrew Morton       2008-01-30   49  static unsigned long elf_map(struct file *, unsigned long, struct elf_phdr *,
bb1ad820 Andrew Morton       2008-01-30   50  				int, int, unsigned long);
^1da177e Linus Torvalds      2005-04-16   51  
69369a70 Josh Triplett       2014-04-03   52  #ifdef CONFIG_USELIB
69369a70 Josh Triplett       2014-04-03   53  static int load_elf_library(struct file *);
69369a70 Josh Triplett       2014-04-03   54  #else
69369a70 Josh Triplett       2014-04-03   55  #define load_elf_library NULL
69369a70 Josh Triplett       2014-04-03   56  #endif
69369a70 Josh Triplett       2014-04-03   57  
^1da177e Linus Torvalds      2005-04-16   58  /*
^1da177e Linus Torvalds      2005-04-16   59   * If we don't support core dumping, then supply a NULL so we
^1da177e Linus Torvalds      2005-04-16   60   * don't even try.
^1da177e Linus Torvalds      2005-04-16   61   */
698ba7b5 Christoph Hellwig   2009-12-15   62  #ifdef CONFIG_ELF_CORE
f6151dfe Masami Hiramatsu    2009-12-17   63  static int elf_core_dump(struct coredump_params *cprm);
^1da177e Linus Torvalds      2005-04-16   64  #else
^1da177e Linus Torvalds      2005-04-16   65  #define elf_core_dump	NULL
^1da177e Linus Torvalds      2005-04-16   66  #endif
^1da177e Linus Torvalds      2005-04-16   67  
^1da177e Linus Torvalds      2005-04-16   68  #if ELF_EXEC_PAGESIZE > PAGE_SIZE
f4e5cc2c Jesper Juhl         2006-06-23   69  #define ELF_MIN_ALIGN	ELF_EXEC_PAGESIZE
^1da177e Linus Torvalds      2005-04-16   70  #else
f4e5cc2c Jesper Juhl         2006-06-23   71  #define ELF_MIN_ALIGN	PAGE_SIZE
^1da177e Linus Torvalds      2005-04-16   72  #endif
^1da177e Linus Torvalds      2005-04-16   73  
^1da177e Linus Torvalds      2005-04-16   74  #ifndef ELF_CORE_EFLAGS
^1da177e Linus Torvalds      2005-04-16   75  #define ELF_CORE_EFLAGS	0
^1da177e Linus Torvalds      2005-04-16   76  #endif
^1da177e Linus Torvalds      2005-04-16   77  
^1da177e Linus Torvalds      2005-04-16   78  #define ELF_PAGESTART(_v) ((_v) & ~(unsigned long)(ELF_MIN_ALIGN-1))
^1da177e Linus Torvalds      2005-04-16   79  #define ELF_PAGEOFFSET(_v) ((_v) & (ELF_MIN_ALIGN-1))
^1da177e Linus Torvalds      2005-04-16   80  #define ELF_PAGEALIGN(_v) (((_v) + ELF_MIN_ALIGN - 1) & ~(ELF_MIN_ALIGN - 1))
^1da177e Linus Torvalds      2005-04-16   81  
^1da177e Linus Torvalds      2005-04-16   82  static struct linux_binfmt elf_format = {
f670d0ec Mikael Pettersson   2011-01-12   83  	.module		= THIS_MODULE,
f670d0ec Mikael Pettersson   2011-01-12   84  	.load_binary	= load_elf_binary,
f670d0ec Mikael Pettersson   2011-01-12   85  	.load_shlib	= load_elf_library,
f670d0ec Mikael Pettersson   2011-01-12   86  	.core_dump	= elf_core_dump,
f670d0ec Mikael Pettersson   2011-01-12   87  	.min_coredump	= ELF_EXEC_PAGESIZE,
^1da177e Linus Torvalds      2005-04-16   88  };
^1da177e Linus Torvalds      2005-04-16   89  
d4e3cc38 Andrew Morton       2007-07-21   90  #define BAD_ADDR(x) ((unsigned long)(x) >= TASK_SIZE)
^1da177e Linus Torvalds      2005-04-16   91  
^1da177e Linus Torvalds      2005-04-16   92  static int set_brk(unsigned long start, unsigned long end)
^1da177e Linus Torvalds      2005-04-16   93  {
^1da177e Linus Torvalds      2005-04-16   94  	start = ELF_PAGEALIGN(start);
^1da177e Linus Torvalds      2005-04-16   95  	end = ELF_PAGEALIGN(end);
^1da177e Linus Torvalds      2005-04-16   96  	if (end > start) {
^1da177e Linus Torvalds      2005-04-16   97  		unsigned long addr;
e4eb1ff6 Linus Torvalds      2012-04-20   98  		addr = vm_brk(start, end - start);
^1da177e Linus Torvalds      2005-04-16   99  		if (BAD_ADDR(addr))
^1da177e Linus Torvalds      2005-04-16  100  			return addr;
^1da177e Linus Torvalds      2005-04-16  101  	}
^1da177e Linus Torvalds      2005-04-16  102  	current->mm->start_brk = current->mm->brk = end;
^1da177e Linus Torvalds      2005-04-16  103  	return 0;
^1da177e Linus Torvalds      2005-04-16  104  }
^1da177e Linus Torvalds      2005-04-16  105  
^1da177e Linus Torvalds      2005-04-16  106  /* We need to explicitly zero any fractional pages
^1da177e Linus Torvalds      2005-04-16  107     after the data section (i.e. bss).  This would
^1da177e Linus Torvalds      2005-04-16  108     contain the junk from the file that should not
f4e5cc2c Jesper Juhl         2006-06-23  109     be in memory
f4e5cc2c Jesper Juhl         2006-06-23  110   */
^1da177e Linus Torvalds      2005-04-16  111  static int padzero(unsigned long elf_bss)
^1da177e Linus Torvalds      2005-04-16  112  {
^1da177e Linus Torvalds      2005-04-16  113  	unsigned long nbyte;
^1da177e Linus Torvalds      2005-04-16  114  
^1da177e Linus Torvalds      2005-04-16  115  	nbyte = ELF_PAGEOFFSET(elf_bss);
^1da177e Linus Torvalds      2005-04-16  116  	if (nbyte) {
^1da177e Linus Torvalds      2005-04-16  117  		nbyte = ELF_MIN_ALIGN - nbyte;
^1da177e Linus Torvalds      2005-04-16  118  		if (clear_user((void __user *) elf_bss, nbyte))
^1da177e Linus Torvalds      2005-04-16  119  			return -EFAULT;
^1da177e Linus Torvalds      2005-04-16  120  	}
^1da177e Linus Torvalds      2005-04-16  121  	return 0;
^1da177e Linus Torvalds      2005-04-16  122  }
^1da177e Linus Torvalds      2005-04-16  123  
09c6dd3c Ohad Ben-Cohen      2008-02-03  124  /* Let's use some macros to make this stack manipulation a little clearer */
^1da177e Linus Torvalds      2005-04-16  125  #ifdef CONFIG_STACK_GROWSUP
^1da177e Linus Torvalds      2005-04-16  126  #define STACK_ADD(sp, items) ((elf_addr_t __user *)(sp) + (items))
^1da177e Linus Torvalds      2005-04-16  127  #define STACK_ROUND(sp, items) \
^1da177e Linus Torvalds      2005-04-16  128  	((15 + (unsigned long) ((sp) + (items))) &~ 15UL)
f4e5cc2c Jesper Juhl         2006-06-23  129  #define STACK_ALLOC(sp, len) ({ \
f4e5cc2c Jesper Juhl         2006-06-23  130  	elf_addr_t __user *old_sp = (elf_addr_t __user *)sp; sp += len; \
f4e5cc2c Jesper Juhl         2006-06-23  131  	old_sp; })
^1da177e Linus Torvalds      2005-04-16  132  #else
^1da177e Linus Torvalds      2005-04-16  133  #define STACK_ADD(sp, items) ((elf_addr_t __user *)(sp) - (items))
^1da177e Linus Torvalds      2005-04-16  134  #define STACK_ROUND(sp, items) \
^1da177e Linus Torvalds      2005-04-16  135  	(((unsigned long) (sp - items)) &~ 15UL)
^1da177e Linus Torvalds      2005-04-16  136  #define STACK_ALLOC(sp, len) ({ sp -= len ; sp; })
^1da177e Linus Torvalds      2005-04-16  137  #endif
^1da177e Linus Torvalds      2005-04-16  138  
483fad1c Nathan Lynch        2008-07-22  139  #ifndef ELF_BASE_PLATFORM
483fad1c Nathan Lynch        2008-07-22  140  /*
483fad1c Nathan Lynch        2008-07-22  141   * AT_BASE_PLATFORM indicates the "real" hardware/microarchitecture.
483fad1c Nathan Lynch        2008-07-22  142   * If the arch defines ELF_BASE_PLATFORM (in asm/elf.h), the value
483fad1c Nathan Lynch        2008-07-22  143   * will be copied to the user stack in the same manner as AT_PLATFORM.
483fad1c Nathan Lynch        2008-07-22  144   */
483fad1c Nathan Lynch        2008-07-22  145  #define ELF_BASE_PLATFORM NULL
483fad1c Nathan Lynch        2008-07-22  146  #endif
483fad1c Nathan Lynch        2008-07-22  147  
aef93caf Jeff Liu            2014-06-20  148  /*
aef93caf Jeff Liu            2014-06-20  149   * Use get_random_int() to implement AT_RANDOM while avoiding depletion
aef93caf Jeff Liu            2014-06-20  150   * of the entropy pool.
aef93caf Jeff Liu            2014-06-20  151   */
aef93caf Jeff Liu            2014-06-20  152  static void get_atrandom_bytes(unsigned char *buf, size_t nbytes)
aef93caf Jeff Liu            2014-06-20  153  {
aef93caf Jeff Liu            2014-06-20  154  	unsigned char *p = buf;
aef93caf Jeff Liu            2014-06-20  155  
aef93caf Jeff Liu            2014-06-20  156  	while (nbytes) {
aef93caf Jeff Liu            2014-06-20  157  		unsigned int random_variable;
aef93caf Jeff Liu            2014-06-20 @158  		size_t chunk = min(nbytes, sizeof(random_variable));
aef93caf Jeff Liu            2014-06-20  159  
aef93caf Jeff Liu            2014-06-20  160  		random_variable = get_random_int();
aef93caf Jeff Liu            2014-06-20  161  		memcpy(p, &random_variable, chunk);

---
0-DAY kernel build testing backend              Open Source Technology Center
http://lists.01.org/mailman/listinfo/kbuild                 Intel Corporation

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]