Messages in this thread | | | Date | Wed, 01 Oct 2014 11:01:27 -0700 | From | "H. Peter Anvin" <> | Subject | Re: [PATCH] x86, kaslr: avoid setup_data when picking location |
| |
On 09/11/2014 09:19 AM, Kees Cook wrote: > --- a/arch/x86/boot/compressed/aslr.c > +++ b/arch/x86/boot/compressed/aslr.c > @@ -183,12 +183,27 @@ static void mem_avoid_init(unsigned long input, unsigned long input_size, > static bool mem_avoid_overlap(struct mem_vector *img) > { > int i; > + struct setup_data *ptr; > > for (i = 0; i < MEM_AVOID_MAX; i++) { > if (mem_overlaps(img, &mem_avoid[i])) > return true; > } > > + /* Avoid all entries in the setup_data linked list. */ > + ptr = (struct setup_data *)(unsigned long)real_mode->hdr.setup_data; > + while (ptr) { > + struct mem_vector avoid; > + > + avoid.start = (u64)ptr; > + avoid.size = sizeof(*ptr) + ptr->len; > + > + if (mem_overlaps(img, &avoid)) > + return true; > + > + ptr = (struct setup_data *)(unsigned long)ptr->next; > + } > + > return false; > } > >
The use of (u64) in the assignment to avoid.start gives a nuisance warning on 32 bits.
-hpa
| |