* [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.