All of lore.kernel.org
 help / color / mirror / Atom feed
* [next:master 156/212] fs/binfmt_elf.c:158:18: note: in expansion of macro 'min'
       [not found] <53aa90d2.Yd3WgTmElIsuiwuV%fengguang.wu@intel.com>
@ 2014-06-25 10:02 ` Fengguang Wu
  2014-06-25 11:30   ` Jeff Liu
  0 siblings, 1 reply; 12+ messages in thread
From: Fengguang Wu @ 2014-06-25 10:02 UTC (permalink / raw)
  To: Jeff Liu; +Cc: kbuild-all, Andrew Morton, Linux Memory Management List

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@cais.com).
^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@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [next:master 156/212] fs/binfmt_elf.c:158:18: note: in expansion of macro 'min'
  2014-06-25 10:02 ` [next:master 156/212] fs/binfmt_elf.c:158:18: note: in expansion of macro 'min' Fengguang Wu
@ 2014-06-25 11:30   ` Jeff Liu
  2014-06-25 19:59     ` Andrew Morton
  2014-06-25 22:44     ` David Rientjes
  0 siblings, 2 replies; 12+ messages in thread
From: Jeff Liu @ 2014-06-25 11:30 UTC (permalink / raw)
  To: Fengguang Wu; +Cc: kbuild-all, Andrew Morton, Linux Memory Management List


On 06/25/2014 18:02 PM, Fengguang Wu wrote:
> 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));

I remember we have the same report on arch mn10300 about half a year ago, but the code
is correct. :)


Cheers,
-Jeff

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [next:master 156/212] fs/binfmt_elf.c:158:18: note: in expansion of macro 'min'
  2014-06-25 11:30   ` Jeff Liu
@ 2014-06-25 19:59     ` Andrew Morton
  2014-06-26  1:45       ` Jeff Liu
  2014-06-25 22:44     ` David Rientjes
  1 sibling, 1 reply; 12+ messages in thread
From: Andrew Morton @ 2014-06-25 19:59 UTC (permalink / raw)
  To: Jeff Liu; +Cc: Fengguang Wu, kbuild-all, Linux Memory Management List

On Wed, 25 Jun 2014 19:30:27 +0800 Jeff Liu <jeff.liu@oracle.com> wrote:

> 
> On 06/25/2014 18:02 PM, Fengguang Wu wrote:
> > 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));
> 
> I remember we have the same report on arch mn10300 about half a year ago, but the code
> is correct. :)

We really need to do something about this patch - it's been stuck in
-mm for ever.

I have a note here that Stephan Mueller identified issues with it but I
don't recall what they were - do you? 

Maybe you could go back through the list dicussion, identify all/any
issues which were raised, update the changelog to address them then
resend it, copying people who were involved in the earlier discussion?

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [next:master 156/212] fs/binfmt_elf.c:158:18: note: in expansion of macro 'min'
  2014-06-25 11:30   ` Jeff Liu
  2014-06-25 19:59     ` Andrew Morton
@ 2014-06-25 22:44     ` David Rientjes
  2014-06-26  2:01       ` Jeff Liu
  1 sibling, 1 reply; 12+ messages in thread
From: David Rientjes @ 2014-06-25 22:44 UTC (permalink / raw)
  To: Jeff Liu
  Cc: Fengguang Wu, kbuild-all, Andrew Morton, Linux Memory Management List

On Wed, 25 Jun 2014, Jeff Liu wrote:

> >    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));
> 
> I remember we have the same report on arch mn10300 about half a year ago, but the code
> is correct. :)
> 

Casting the sizeof operator to size_t would fix this issue on am33.

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [next:master 156/212] fs/binfmt_elf.c:158:18: note: in expansion of macro 'min'
  2014-06-25 19:59     ` Andrew Morton
@ 2014-06-26  1:45       ` Jeff Liu
  0 siblings, 0 replies; 12+ messages in thread
From: Jeff Liu @ 2014-06-26  1:45 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Fengguang Wu, kbuild-all, Linux Memory Management List


On 06/26/2014 03:59 PM, Andrew Morton wrote:
> On Wed, 25 Jun 2014 19:30:27 +0800 Jeff Liu <jeff.liu@oracle.com> wrote:
> 
>>
>> On 06/25/2014 18:02 PM, Fengguang Wu wrote:

<snip>

>>>    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));
>>
>> I remember we have the same report on arch mn10300 about half a year ago, but the code
>> is correct. :)
> 
> We really need to do something about this patch - it's been stuck in
> -mm for ever.
> 
> I have a note here that Stephan Mueller identified issues with it but I
> don't recall what they were - do you? 

Yes, Stephan noted a couple of issues here:
https://lkml.org/lkml/2012/12/14/267

> 
> Maybe you could go back through the list dicussion, identify all/any
> issues which were raised, update the changelog to address them then
> resend it, copying people who were involved in the earlier discussion?

Ok, I'll take care of it.


Cheers,
-Jeff

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [next:master 156/212] fs/binfmt_elf.c:158:18: note: in expansion of macro 'min'
  2014-06-25 22:44     ` David Rientjes
@ 2014-06-26  2:01       ` Jeff Liu
  2014-06-26  6:19         ` David Rientjes
  0 siblings, 1 reply; 12+ messages in thread
From: Jeff Liu @ 2014-06-26  2:01 UTC (permalink / raw)
  To: David Rientjes
  Cc: Fengguang Wu, kbuild-all, Andrew Morton, Linux Memory Management List


On 06/26/2014 06:44 AM, David Rientjes wrote:
> On Wed, 25 Jun 2014, Jeff Liu wrote:
> 
>>>    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));
>>
>> I remember we have the same report on arch mn10300 about half a year ago, but the code
>> is correct. :)
>>
> 
> Casting the sizeof operator to size_t would fix this issue on am33.

Thanks for pointing this out, I once considered to use min_t() to do explicitly casting.
However, both values to compare are already size_t, maybe this depending on the compiler's
result of what sizeof() would be...


Cheers,
-Jeff

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [next:master 156/212] fs/binfmt_elf.c:158:18: note: in expansion of macro 'min'
  2014-06-26  2:01       ` Jeff Liu
@ 2014-06-26  6:19         ` David Rientjes
  2014-06-26  6:33           ` Jeff Liu
  0 siblings, 1 reply; 12+ messages in thread
From: David Rientjes @ 2014-06-26  6:19 UTC (permalink / raw)
  To: Jeff Liu
  Cc: Fengguang Wu, kbuild-all, Andrew Morton, Linux Memory Management List

On Thu, 26 Jun 2014, Jeff Liu wrote:

> >>>    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));
> >>
> >> I remember we have the same report on arch mn10300 about half a year ago, but the code
> >> is correct. :)
> >>
> > 
> > Casting the sizeof operator to size_t would fix this issue on am33.
> 
> Thanks for pointing this out, I once considered to use min_t() to do explicitly casting.
> However, both values to compare are already size_t, maybe this depending on the compiler's
> result of what sizeof() would be...
> 

Have you read arch/mn10300/include/uapi/asm/posix_types.h?  am33 defines 
this to be unsigned int for gcc version 4.  You would not see this warning 
with gcc major version != 4 or if you do what I suggested and cast it to 
size_t.

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [next:master 156/212] fs/binfmt_elf.c:158:18: note: in expansion of macro 'min'
  2014-06-26  6:19         ` David Rientjes
@ 2014-06-26  6:33           ` Jeff Liu
  2014-06-26  7:47             ` Fengguang Wu
  0 siblings, 1 reply; 12+ messages in thread
From: Jeff Liu @ 2014-06-26  6:33 UTC (permalink / raw)
  To: David Rientjes
  Cc: Fengguang Wu, kbuild-all, Andrew Morton, Linux Memory Management List


On 06/26/2014 14:19 PM, David Rientjes wrote:
> On Thu, 26 Jun 2014, Jeff Liu wrote:
> 
>>>>>    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));
>>>>
>>>> I remember we have the same report on arch mn10300 about half a year ago, but the code
>>>> is correct. :)
>>>>
>>>
>>> Casting the sizeof operator to size_t would fix this issue on am33.
>>
>> Thanks for pointing this out, I once considered to use min_t() to do explicitly casting.
>> However, both values to compare are already size_t, maybe this depending on the compiler's
>> result of what sizeof() would be...
>>
> 
> Have you read arch/mn10300/include/uapi/asm/posix_types.h?  am33 defines 
> this to be unsigned int for gcc version 4.  You would not see this warning 
> with gcc major version != 4 or if you do what I suggested and cast it to 
> size_t.

Ah, that solves it, thanks! 0day tests with am33 cross compiler version 4.6.3.

Cheers,
-Jeff

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [next:master 156/212] fs/binfmt_elf.c:158:18: note: in expansion of macro 'min'
  2014-06-26  6:33           ` Jeff Liu
@ 2014-06-26  7:47             ` Fengguang Wu
  2014-06-30 22:52               ` [patch] binfmt_elf.c: use get_random_int() to fix entropy depleting fix David Rientjes
  0 siblings, 1 reply; 12+ messages in thread
From: Fengguang Wu @ 2014-06-26  7:47 UTC (permalink / raw)
  To: Jeff Liu
  Cc: David Rientjes, kbuild-all, Andrew Morton, Linux Memory Management List

On Thu, Jun 26, 2014 at 02:33:04PM +0800, Jeff Liu wrote:
> 
> On 06/26/2014 14:19 PM, David Rientjes wrote:
> > On Thu, 26 Jun 2014, Jeff Liu wrote:
> > 
> >>>>>    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));
> >>>>
> >>>> I remember we have the same report on arch mn10300 about half a year ago, but the code
> >>>> is correct. :)
> >>>>
> >>>
> >>> Casting the sizeof operator to size_t would fix this issue on am33.
> >>
> >> Thanks for pointing this out, I once considered to use min_t() to do explicitly casting.
> >> However, both values to compare are already size_t, maybe this depending on the compiler's
> >> result of what sizeof() would be...
> >>
> > 
> > Have you read arch/mn10300/include/uapi/asm/posix_types.h?  am33 defines 
> > this to be unsigned int for gcc version 4.  You would not see this warning 
> > with gcc major version != 4 or if you do what I suggested and cast it to 
> > size_t.
> 
> Ah, that solves it, thanks! 0day tests with am33 cross compiler version 4.6.3.

And it'll soon be upgraded to 4.9.0. :)

Thanks,
Fengguang

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [patch] binfmt_elf.c: use get_random_int() to fix entropy depleting fix
  2014-06-26  7:47             ` Fengguang Wu
@ 2014-06-30 22:52               ` David Rientjes
  2014-06-30 23:05                 ` Kees Cook
  2014-06-30 23:06                 ` Andrew Morton
  0 siblings, 2 replies; 12+ messages in thread
From: David Rientjes @ 2014-06-30 22:52 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Fengguang Wu, Jeff Liu, Kees Cook, linux-mm

The type of size_t on am33 is unsigned int for gcc major versions >= 4.

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: David Rientjes <rientjes@google.com>
---
 fs/binfmt_elf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -155,7 +155,7 @@ static void get_atrandom_bytes(unsigned char *buf, size_t nbytes)
 
 	while (nbytes) {
 		unsigned int random_variable;
-		size_t chunk = min(nbytes, sizeof(random_variable));
+		size_t chunk = min(nbytes, (size_t)sizeof(random_variable));
 
 		random_variable = get_random_int();
 		memcpy(p, &random_variable, chunk);

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [patch] binfmt_elf.c: use get_random_int() to fix entropy depleting fix
  2014-06-30 22:52               ` [patch] binfmt_elf.c: use get_random_int() to fix entropy depleting fix David Rientjes
@ 2014-06-30 23:05                 ` Kees Cook
  2014-06-30 23:06                 ` Andrew Morton
  1 sibling, 0 replies; 12+ messages in thread
From: Kees Cook @ 2014-06-30 23:05 UTC (permalink / raw)
  To: David Rientjes; +Cc: Andrew Morton, Fengguang Wu, Jeff Liu, linux-mm

On Mon, Jun 30, 2014 at 3:52 PM, David Rientjes <rientjes@google.com> wrote:
> The type of size_t on am33 is unsigned int for gcc major versions >= 4.
>
> Reported-by: Fengguang Wu <fengguang.wu@intel.com>
> Signed-off-by: David Rientjes <rientjes@google.com>
> ---
>  fs/binfmt_elf.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
> --- a/fs/binfmt_elf.c
> +++ b/fs/binfmt_elf.c
> @@ -155,7 +155,7 @@ static void get_atrandom_bytes(unsigned char *buf, size_t nbytes)
>
>         while (nbytes) {
>                 unsigned int random_variable;
> -               size_t chunk = min(nbytes, sizeof(random_variable));
> +               size_t chunk = min(nbytes, (size_t)sizeof(random_variable));
>
>                 random_variable = get_random_int();
>                 memcpy(p, &random_variable, chunk);

If you have the compiler warning still, that's handy to include in the
commit message. Regardless, seems good to me.

Acked-by: Kees Cook <keescook@chromium.org>

Thanks!

-Kees

-- 
Kees Cook
Chrome OS Security

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [patch] binfmt_elf.c: use get_random_int() to fix entropy depleting fix
  2014-06-30 22:52               ` [patch] binfmt_elf.c: use get_random_int() to fix entropy depleting fix David Rientjes
  2014-06-30 23:05                 ` Kees Cook
@ 2014-06-30 23:06                 ` Andrew Morton
  1 sibling, 0 replies; 12+ messages in thread
From: Andrew Morton @ 2014-06-30 23:06 UTC (permalink / raw)
  To: David Rientjes; +Cc: Fengguang Wu, Jeff Liu, Kees Cook, linux-mm

On Mon, 30 Jun 2014 15:52:05 -0700 (PDT) David Rientjes <rientjes@google.com> wrote:

> The type of size_t on am33 is unsigned int for gcc major versions >= 4.
> 
> ...
>
> --- a/fs/binfmt_elf.c
> +++ b/fs/binfmt_elf.c
> @@ -155,7 +155,7 @@ static void get_atrandom_bytes(unsigned char *buf, size_t nbytes)
>  
>  	while (nbytes) {
>  		unsigned int random_variable;
> -		size_t chunk = min(nbytes, sizeof(random_variable));
> +		size_t chunk = min(nbytes, (size_t)sizeof(random_variable));
>  
>  		random_variable = get_random_int();
>  		memcpy(p, &random_variable, chunk);

I did it using min_t the other day.  I suppose using the cast is a
little clearer about the cause of the problem, but if it doesn't have a
code comment the janitors will come along and convert it to min_t.

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2014-06-30 23:06 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <53aa90d2.Yd3WgTmElIsuiwuV%fengguang.wu@intel.com>
2014-06-25 10:02 ` [next:master 156/212] fs/binfmt_elf.c:158:18: note: in expansion of macro 'min' Fengguang Wu
2014-06-25 11:30   ` Jeff Liu
2014-06-25 19:59     ` Andrew Morton
2014-06-26  1:45       ` Jeff Liu
2014-06-25 22:44     ` David Rientjes
2014-06-26  2:01       ` Jeff Liu
2014-06-26  6:19         ` David Rientjes
2014-06-26  6:33           ` Jeff Liu
2014-06-26  7:47             ` Fengguang Wu
2014-06-30 22:52               ` [patch] binfmt_elf.c: use get_random_int() to fix entropy depleting fix David Rientjes
2014-06-30 23:05                 ` Kees Cook
2014-06-30 23:06                 ` Andrew Morton

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.