Bug 835935 - document a change in the vsyscalls in the v3.2 kernels
Summary: document a change in the vsyscalls in the v3.2 kernels
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: Release_Notes
Version: 2.2
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: 2.2
: ---
Assignee: Tomas Capek
QA Contact: ecs-bugs
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2012-06-27 14:58 UTC by Beth Uptagrafft
Modified: 2012-09-20 01:01 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-09-20 01:01:40 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Beth Uptagrafft 2012-06-27 14:58:00 UTC
There has been a change in the vsyscalls in the v3.2 kernels which includes the MRG / rt kernels and we think it would be good to alert the customer of this change 

The kernel parameter options are documented in Documentation/kernel-parameters.txt in the vsyscall section.

Vsyscalls are used in many binaries and in some important libraries such as glibc. They allow certain calls such as gettimeofday() to work without changing from user-mode to kernel-mode. This works by having the kernel map memory to user space with read-only values of the current time. This memory also includes native code that emulates the system call, in this case reading the current time and returning the value.

Since this native code is at a fixed address, it could theoretically be used in security exploits. This has now been changed to make it a little more secure by emulating the vsyscalls and removing dangerous instructions from the vsyscall page. The vsyscalls are now emulated by being trapped in the kernel. This emulation occurs without breaking any APIs. It could potentially be slower than the old native code.

This kernel emulation of vsyscalls in the new default and you don't need to do anything to get it. It is also the configuration we have used when testing the MRG kernel.

You can explicitly request it with the kernel parameter. (but this is not necessary)

vsyscall=emulate

However, if you want the vsyscalls to operate as they did previously, you can use the kernel parameter
 
vsyscall=native

There is also a third option which provides the most security but could break existing binaries and critical libraries such as glibc, so it is not recommended. However, if you think you need it you get it with

vsyscall=none.


Note You need to log in before you can comment on or make changes to this bug.