Bug 151452 - vdso: should make sysenter (and maybe sysexit) work with exec-shield
Summary: vdso: should make sysenter (and maybe sysexit) work with exec-shield
Keywords:
Status: CLOSED WORKSFORME
Alias: None
Product: Fedora
Classification: Fedora
Component: kernel
Version: rawhide
Hardware: i686
OS: Linux
medium
low
Target Milestone: ---
Assignee: Roland McGrath
QA Contact: Brian Brock
URL:
Whiteboard:
Depends On: 151450
Blocks:
TreeView+ depends on / blocked
 
Reported: 2005-03-18 02:35 UTC by Roland McGrath
Modified: 2007-11-30 22:11 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2005-04-06 08:17:46 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Roland McGrath 2005-03-18 02:35:53 UTC
The sysenter variant of the vDSO cannot be used with exec-shield because of two
constraints in the sysexit instruction.  

First we should try using sysenter and not using sysexit, which may have a
performance improvement vs using int.

The first issue is conflicts with cs segment limits used by exec-shield.
sysexit cannot be used when cs segment limits are being used.  But, newer
processors have NX support and do not need to use segment limits.
We should conditionalize sysexit use on that.

The second issue is sysexit's constant return EIP value.
When using exec-shield, the correct value differs in each process.
It may be feasible to rewrite the MSR on context switches or something similar,
would have to compare the performance of this to the iret return path.

Comment 1 Roland McGrath 2005-03-18 03:25:39 UTC
Hmm, looks like Ingo already added some cleverness to address the sysexit trouble.
And, sysenter use is disabled when NX is not available.

So, this is probably all good to go when bug #151450 is fixed.

Comment 2 Roland McGrath 2005-04-06 08:17:46 UTC
sysenter works fine when the generic vdso issues are fixed


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