diff options
Diffstat (limited to 'arch/ia64/ia32/sys_ia32.c')
-rw-r--r-- | arch/ia64/ia32/sys_ia32.c | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/arch/ia64/ia32/sys_ia32.c b/arch/ia64/ia32/sys_ia32.c index bf196cbb3796..f4430bb4bbdc 100644 --- a/arch/ia64/ia32/sys_ia32.c +++ b/arch/ia64/ia32/sys_ia32.c | |||
@@ -118,41 +118,6 @@ sys32_execve (char __user *name, compat_uptr_t __user *argv, compat_uptr_t __use | |||
118 | return error; | 118 | return error; |
119 | } | 119 | } |
120 | 120 | ||
121 | int cp_compat_stat(struct kstat *stat, struct compat_stat __user *ubuf) | ||
122 | { | ||
123 | compat_ino_t ino; | ||
124 | int err; | ||
125 | |||
126 | if ((u64) stat->size > MAX_NON_LFS || | ||
127 | !old_valid_dev(stat->dev) || | ||
128 | !old_valid_dev(stat->rdev)) | ||
129 | return -EOVERFLOW; | ||
130 | |||
131 | ino = stat->ino; | ||
132 | if (sizeof(ino) < sizeof(stat->ino) && ino != stat->ino) | ||
133 | return -EOVERFLOW; | ||
134 | |||
135 | if (clear_user(ubuf, sizeof(*ubuf))) | ||
136 | return -EFAULT; | ||
137 | |||
138 | err = __put_user(old_encode_dev(stat->dev), &ubuf->st_dev); | ||
139 | err |= __put_user(ino, &ubuf->st_ino); | ||
140 | err |= __put_user(stat->mode, &ubuf->st_mode); | ||
141 | err |= __put_user(stat->nlink, &ubuf->st_nlink); | ||
142 | err |= __put_user(high2lowuid(stat->uid), &ubuf->st_uid); | ||
143 | err |= __put_user(high2lowgid(stat->gid), &ubuf->st_gid); | ||
144 | err |= __put_user(old_encode_dev(stat->rdev), &ubuf->st_rdev); | ||
145 | err |= __put_user(stat->size, &ubuf->st_size); | ||
146 | err |= __put_user(stat->atime.tv_sec, &ubuf->st_atime); | ||
147 | err |= __put_user(stat->atime.tv_nsec, &ubuf->st_atime_nsec); | ||
148 | err |= __put_user(stat->mtime.tv_sec, &ubuf->st_mtime); | ||
149 | err |= __put_user(stat->mtime.tv_nsec, &ubuf->st_mtime_nsec); | ||
150 | err |= __put_user(stat->ctime.tv_sec, &ubuf->st_ctime); | ||
151 | err |= __put_user(stat->ctime.tv_nsec, &ubuf->st_ctime_nsec); | ||
152 | err |= __put_user(stat->blksize, &ubuf->st_blksize); | ||
153 | err |= __put_user(stat->blocks, &ubuf->st_blocks); | ||
154 | return err; | ||
155 | } | ||
156 | 121 | ||
157 | #if PAGE_SHIFT > IA32_PAGE_SHIFT | 122 | #if PAGE_SHIFT > IA32_PAGE_SHIFT |
158 | 123 | ||
@@ -1148,68 +1113,12 @@ sys32_pipe (int __user *fd) | |||
1148 | return retval; | 1113 | return retval; |
1149 | } | 1114 | } |
1150 | 1115 | ||
1151 | static inline long | ||
1152 | get_tv32 (struct timeval *o, struct compat_timeval __user *i) | ||
1153 | { | ||
1154 | return (!access_ok(VERIFY_READ, i, sizeof(*i)) || | ||
1155 | (__get_user(o->tv_sec, &i->tv_sec) | __get_user(o->tv_usec, &i->tv_usec))); | ||
1156 | } | ||
1157 | |||
1158 | static inline long | ||
1159 | put_tv32 (struct compat_timeval __user *o, struct timeval *i) | ||
1160 | { | ||
1161 | return (!access_ok(VERIFY_WRITE, o, sizeof(*o)) || | ||
1162 | (__put_user(i->tv_sec, &o->tv_sec) | __put_user(i->tv_usec, &o->tv_usec))); | ||
1163 | } | ||
1164 | |||
1165 | asmlinkage unsigned long | 1116 | asmlinkage unsigned long |
1166 | sys32_alarm (unsigned int seconds) | 1117 | sys32_alarm (unsigned int seconds) |
1167 | { | 1118 | { |
1168 | return alarm_setitimer(seconds); | 1119 | return alarm_setitimer(seconds); |
1169 | } | 1120 | } |
1170 | 1121 | ||
1171 | /* Translations due to time_t size differences. Which affects all | ||
1172 | sorts of things, like timeval and itimerval. */ | ||
1173 | |||
1174 | extern struct timezone sys_tz; | ||
1175 | |||
1176 | asmlinkage long | ||
1177 | sys32_gettimeofday (struct compat_timeval __user *tv, struct timezone __user *tz) | ||
1178 | { | ||
1179 | if (tv) { | ||
1180 | struct timeval ktv; | ||
1181 | do_gettimeofday(&ktv); | ||
1182 | if (put_tv32(tv, &ktv)) | ||
1183 | return -EFAULT; | ||
1184 | } | ||
1185 | if (tz) { | ||
1186 | if (copy_to_user(tz, &sys_tz, sizeof(sys_tz))) | ||
1187 | return -EFAULT; | ||
1188 | } | ||
1189 | return 0; | ||
1190 | } | ||
1191 | |||
1192 | asmlinkage long | ||
1193 | sys32_settimeofday (struct compat_timeval __user *tv, struct timezone __user *tz) | ||
1194 | { | ||
1195 | struct timeval ktv; | ||
1196 | struct timespec kts; | ||
1197 | struct timezone ktz; | ||
1198 | |||
1199 | if (tv) { | ||
1200 | if (get_tv32(&ktv, tv)) | ||
1201 | return -EFAULT; | ||
1202 | kts.tv_sec = ktv.tv_sec; | ||
1203 | kts.tv_nsec = ktv.tv_usec * 1000; | ||
1204 | } | ||
1205 | if (tz) { | ||
1206 | if (copy_from_user(&ktz, tz, sizeof(ktz))) | ||
1207 | return -EFAULT; | ||
1208 | } | ||
1209 | |||
1210 | return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL); | ||
1211 | } | ||
1212 | |||
1213 | struct sel_arg_struct { | 1122 | struct sel_arg_struct { |
1214 | unsigned int n; | 1123 | unsigned int n; |
1215 | unsigned int inp; | 1124 | unsigned int inp; |