Bug 148839

Summary: vdso doesn't work on i686
Product: [Fedora] Fedora Reporter: H.J. Lu <hongjiu.lu>
Component: kernelAssignee: Dave Jones <davej>
Status: CLOSED DUPLICATE QA Contact: Brian Brock <bbrock>
Severity: medium Docs Contact:
Priority: medium    
Version: 3CC: mingo, pfrields, wtogami
Target Milestone: ---   
Target Release: ---   
Hardware: i686   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2005-04-11 20:23:24 EDT Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
Attachments:
Description Flags
Output from serial console none

Description H.J. Lu 2005-02-15 20:48:07 EST
I tried vdso=1 with kernel-2.6.10-1.766_FC3 on Pentium 4. Kernel
crashed immediately. 2.6.11-rc4 works fine.
Comment 1 H.J. Lu 2005-02-15 20:49:23 EST
Created attachment 111121 [details]
Output from serial console

This is the kernel output from the serial console.
Comment 2 Dave Jones 2005-02-15 20:59:17 EST
2.6.9-5.EL.hjl.0.3smp

a) sounds like this should be a rhel bug
b) what modifications are in this kernel ?
Comment 3 H.J. Lu 2005-02-16 11:55:48 EST
It happened with both FC3 and RHEL 4 kernels. I just happened to
have a serial cable on my RHEL 4 machine. I don't think it is
unrelated to my modification. I verified it with the unmodified
2.6.10-1.766_FC3 UP and SMP kernel binary rpms.
Comment 4 H.J. Lu 2005-02-16 12:47:04 EST
I meant to say that the crash is unrelated to my changes.
Comment 5 H.J. Lu 2005-02-16 14:30:07 EST
I don't see how this code in sysenter.c:

        addr = do_mmap(NULL, 0, 4096, PROT_READ | PROT_EXEC,
MAP_PRIVATE, 0);         current->mm->context.vdso = (void *)addr;
        ti->sysenter_return = (void *)addr +
(long)&SYSENTER_RETURN_OFFSET;
        if (addr != -1) {                 vma = find_vma(current->mm,
addr);
                if (vma) {
                        pgprot_val(vma->vm_page_prot) &= ~_PAGE_RW;
                        get_page(sysenter_page);
                        install_page(current->mm, vma, addr,
                                        sysenter_page, vma->vm_page_prot);

                }         }

will work since install_page expects a file backed page while
sysenter_page isn't backed by a file at all. Another thing,
map_vsyscall may be called before sysenter_setup such that
sysenter_page may be NULL.
Comment 6 Dave Jones 2005-04-11 20:23:24 EDT

*** This bug has been marked as a duplicate of 139318 ***