diff options
Diffstat (limited to 'arch/um/sys-i386/ldt.c')
-rw-r--r-- | arch/um/sys-i386/ldt.c | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/arch/um/sys-i386/ldt.c b/arch/um/sys-i386/ldt.c index a939a7ef0227..762a12aec757 100644 --- a/arch/um/sys-i386/ldt.c +++ b/arch/um/sys-i386/ldt.c | |||
@@ -19,72 +19,6 @@ | |||
19 | 19 | ||
20 | extern int modify_ldt(int func, void *ptr, unsigned long bytecount); | 20 | extern int modify_ldt(int func, void *ptr, unsigned long bytecount); |
21 | 21 | ||
22 | #ifdef CONFIG_MODE_TT | ||
23 | |||
24 | static long do_modify_ldt_tt(int func, void __user *ptr, | ||
25 | unsigned long bytecount) | ||
26 | { | ||
27 | struct user_desc info; | ||
28 | int res = 0; | ||
29 | void *buf = NULL; | ||
30 | void *p = NULL; /* What we pass to host. */ | ||
31 | |||
32 | switch(func){ | ||
33 | case 1: | ||
34 | case 0x11: /* write_ldt */ | ||
35 | /* Do this check now to avoid overflows. */ | ||
36 | if (bytecount != sizeof(struct user_desc)) { | ||
37 | res = -EINVAL; | ||
38 | goto out; | ||
39 | } | ||
40 | |||
41 | if(copy_from_user(&info, ptr, sizeof(info))) { | ||
42 | res = -EFAULT; | ||
43 | goto out; | ||
44 | } | ||
45 | |||
46 | p = &info; | ||
47 | break; | ||
48 | case 0: | ||
49 | case 2: /* read_ldt */ | ||
50 | |||
51 | /* The use of info avoids kmalloc on the write case, not on the | ||
52 | * read one. */ | ||
53 | buf = kmalloc(bytecount, GFP_KERNEL); | ||
54 | if (!buf) { | ||
55 | res = -ENOMEM; | ||
56 | goto out; | ||
57 | } | ||
58 | p = buf; | ||
59 | break; | ||
60 | default: | ||
61 | res = -ENOSYS; | ||
62 | goto out; | ||
63 | } | ||
64 | |||
65 | res = modify_ldt(func, p, bytecount); | ||
66 | if(res < 0) | ||
67 | goto out; | ||
68 | |||
69 | switch(func){ | ||
70 | case 0: | ||
71 | case 2: | ||
72 | /* Modify_ldt was for reading and returned the number of read | ||
73 | * bytes.*/ | ||
74 | if(copy_to_user(ptr, p, res)) | ||
75 | res = -EFAULT; | ||
76 | break; | ||
77 | } | ||
78 | |||
79 | out: | ||
80 | kfree(buf); | ||
81 | return res; | ||
82 | } | ||
83 | |||
84 | #endif | ||
85 | |||
86 | #ifdef CONFIG_MODE_SKAS | ||
87 | |||
88 | #include "skas.h" | 22 | #include "skas.h" |
89 | #include "skas_ptrace.h" | 23 | #include "skas_ptrace.h" |
90 | #include "asm/mmu_context.h" | 24 | #include "asm/mmu_context.h" |
@@ -569,7 +503,6 @@ void free_ldt(struct mmu_context_skas * mm) | |||
569 | } | 503 | } |
570 | mm->ldt.entry_count = 0; | 504 | mm->ldt.entry_count = 0; |
571 | } | 505 | } |
572 | #endif | ||
573 | 506 | ||
574 | int sys_modify_ldt(int func, void __user *ptr, unsigned long bytecount) | 507 | int sys_modify_ldt(int func, void __user *ptr, unsigned long bytecount) |
575 | { | 508 | { |