Messages in this thread | | | From | Andy Lutomirski <> | Date | Wed, 6 Jul 2016 07:21:57 -0700 | Subject | Re: [PATCHv2 2/6] x86/vdso: introduce do_map_vdso() and vdso_type enum |
| |
On Wed, Jun 29, 2016 at 3:57 AM, Dmitry Safonov <dsafonov@virtuozzo.com> wrote: > Make in-kernel API to map vDSO blobs on x86.
I think the addr calculation was already confusing and is now even worse. How about simplifying it? Get rid of calculate_addr entirely and push the vdso_addr calls into arch_setup_additional_pages, etc. Then just use addr directly in the map_vdso code.
> +int do_map_vdso(vdso_type type, unsigned long addr, bool randomize_addr) > { > - if (vdso32_enabled != 1) /* Other values all mean "disabled" */ > - return 0; > - > - return map_vdso(&vdso_image_32, false); > -} > + switch (type) { > +#if defined(CONFIG_X86_32) || defined(CONFIG_IA32_EMULATION) > + case VDSO_32: > + if (vdso32_enabled != 1) /* Other values all mean "disabled" */ > + return 0; > + /* vDSO aslr turned off for i386 vDSO */ > + return map_vdso(&vdso_image_32, addr, false); > +#endif > +#ifdef CONFIG_X86_64 > + case VDSO_64: > + if (!vdso64_enabled) > + return 0; > + return map_vdso(&vdso_image_64, addr, randomize_addr); > +#endif > +#ifdef CONFIG_X86_X32_ABI > + case VDSO_X32: > + if (!vdso64_enabled) > + return 0; > + return map_vdso(&vdso_image_x32, addr, randomize_addr); > #endif > + default: > + return -EINVAL; > + } > +}
Why is this better than just passing the vdso_image pointer in?
| |