Messages in this thread | | | Date | Fri, 28 Feb 2003 09:08:47 +0100 | From | Andi Kleen <> | Subject | Re: [PATCH][COMPAT] compat_sys_fcntl{,64} 1/9 Generic part |
| |
On Fri, Feb 28, 2003 at 05:33:49AM +0100, Stephen Rothwell wrote: > +static int get_compat_flock(struct flock *kfl, struct compat_flock *ufl) > +{ > + if (!access_ok(VERIFY_READ, ufl, sizeof(*ufl)) || > + __get_user(kfl->l_type, &ufl->l_type) || > + __get_user(kfl->l_whence, &ufl->l_whence) || > + __get_user(kfl->l_start, &ufl->l_start) || > + __get_user(kfl->l_len, &ufl->l_len) || > + __get_user(kfl->l_pid, &ufl->l_pid))
Perhaps there should be really a big fat comment on top of compat.c that it depends on a hole on __PAGE_OFFSET if the arch allows passing 64bit pointers to the compat functions.
> + > +asmlinkage long compat_sys_fcntl(unsigned int fd, unsigned int cmd, > + unsigned long arg) > +{ > + if ((cmd == F_GETLK64) || (cmd == F_SETLK64) || (cmd == F_SETLKW64)) > + return -EINVAL;
That won't work for IA32 emulation. There are programs that call old style fcntl() with F_*LK64. Just drop the if here.
> + return compat_sys_fcntl64(fd, cmd, arg);
-Andi
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |