diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2007-10-21 21:24:24 -0400 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2007-10-23 01:49:56 -0400 |
commit | 2d37f94a28170ca656438758fca577acb49a7932 (patch) | |
tree | 21049219a98d314a2c442293e512b74d879e6270 /drivers/lguest/x86 | |
parent | 56ae43dfe233323683248a5c553bad7160db2fa5 (diff) |
generalize lgread_u32/lgwrite_u32.
Jes complains that page table code still uses lgread_u32 even though
it now uses general kernel pte types. The best thing to do is to
generalize lgread_u32 and lgwrite_u32.
This means we lose the efficiency of getuser(). We could potentially
regain it if we used __copy_from_user instead of copy_from_user, but
I'm not certain that our range check is equivalent to access_ok() on
all platforms.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Acked-by: Jes Sorensen <jes@sgi.com>
Diffstat (limited to 'drivers/lguest/x86')
-rw-r--r-- | drivers/lguest/x86/core.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/lguest/x86/core.c b/drivers/lguest/x86/core.c index ef976ccb4192..9eed12d5a395 100644 --- a/drivers/lguest/x86/core.c +++ b/drivers/lguest/x86/core.c | |||
@@ -222,7 +222,7 @@ static int emulate_insn(struct lguest *lg) | |||
222 | return 0; | 222 | return 0; |
223 | 223 | ||
224 | /* Decoding x86 instructions is icky. */ | 224 | /* Decoding x86 instructions is icky. */ |
225 | lgread(lg, &insn, physaddr, 1); | 225 | insn = lgread(lg, physaddr, u8); |
226 | 226 | ||
227 | /* 0x66 is an "operand prefix". It means it's using the upper 16 bits | 227 | /* 0x66 is an "operand prefix". It means it's using the upper 16 bits |
228 | of the eax register. */ | 228 | of the eax register. */ |
@@ -230,7 +230,7 @@ static int emulate_insn(struct lguest *lg) | |||
230 | shift = 16; | 230 | shift = 16; |
231 | /* The instruction is 1 byte so far, read the next byte. */ | 231 | /* The instruction is 1 byte so far, read the next byte. */ |
232 | insnlen = 1; | 232 | insnlen = 1; |
233 | lgread(lg, &insn, physaddr + insnlen, 1); | 233 | insn = lgread(lg, physaddr + insnlen, u8); |
234 | } | 234 | } |
235 | 235 | ||
236 | /* We can ignore the lower bit for the moment and decode the 4 opcodes | 236 | /* We can ignore the lower bit for the moment and decode the 4 opcodes |