aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/ia64/ia32/sys_ia32.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/arch/ia64/ia32/sys_ia32.c b/arch/ia64/ia32/sys_ia32.c
index d430d36ae49d..0afb4fe7c35b 100644
--- a/arch/ia64/ia32/sys_ia32.c
+++ b/arch/ia64/ia32/sys_ia32.c
@@ -1267,6 +1267,10 @@ sys32_getdents (unsigned int fd, struct compat_dirent __user *dirent, unsigned i
1267 struct getdents32_callback buf; 1267 struct getdents32_callback buf;
1268 int error; 1268 int error;
1269 1269
1270 error = -EFAULT;
1271 if (!access_ok(VERIFY_WRITE, dirent, count))
1272 goto out;
1273
1270 error = -EBADF; 1274 error = -EBADF;
1271 file = fget(fd); 1275 file = fget(fd);
1272 if (!file) 1276 if (!file)
@@ -1283,10 +1287,10 @@ sys32_getdents (unsigned int fd, struct compat_dirent __user *dirent, unsigned i
1283 error = buf.error; 1287 error = buf.error;
1284 lastdirent = buf.previous; 1288 lastdirent = buf.previous;
1285 if (lastdirent) { 1289 if (lastdirent) {
1286 error = -EINVAL;
1287 if (put_user(file->f_pos, &lastdirent->d_off)) 1290 if (put_user(file->f_pos, &lastdirent->d_off))
1288 goto out_putf; 1291 error = -EFAULT;
1289 error = count - buf.count; 1292 else
1293 error = count - buf.count;
1290 } 1294 }
1291 1295
1292out_putf: 1296out_putf: