* [PATCH] Mask out O_LARGEFILE in F_GETFL
@ 2003-09-25 5:25 Andi Kleen
2003-10-01 13:24 ` Andrea Arcangeli
0 siblings, 1 reply; 2+ messages in thread
From: Andi Kleen @ 2003-09-25 5:25 UTC (permalink / raw)
To: marcelo.tosatti; +Cc: linux-fsdevel
This fixes a test in the LSB test suite.
The kernel sets O_LARGEFILE implicitely on 64bit hosts.
According to POSIX it should not appear on F_GETFL then. Just mask it out
always.
This will also mask it out for explicitely set O_LARGEFILE, but that seems
to be ok.
Any flames for this please to the POSIX comittee, not to me.
-Andi
diff -X ../../KDIFX -burpN linux-2.4.23-pre5/fs/fcntl.c linux-merge/fs/fcntl.c
--- linux-2.4.23-pre5/fs/fcntl.c 2002-11-30 00:37:11.000000000 +0100
+++ linux-merge/fs/fcntl.c 2002-11-30 05:22:20.000000000 +0100
@@ -270,7 +270,7 @@ static long do_fcntl(unsigned int fd, un
set_close_on_exec(fd, arg&1);
break;
case F_GETFL:
- err = filp->f_flags;
+ err = filp->f_flags & ~O_LARGEFILE;
break;
case F_SETFL:
lock_kernel();
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] Mask out O_LARGEFILE in F_GETFL
2003-09-25 5:25 [PATCH] Mask out O_LARGEFILE in F_GETFL Andi Kleen
@ 2003-10-01 13:24 ` Andrea Arcangeli
0 siblings, 0 replies; 2+ messages in thread
From: Andrea Arcangeli @ 2003-10-01 13:24 UTC (permalink / raw)
To: Andi Kleen; +Cc: marcelo.tosatti, linux-fsdevel
Hi,
On Thu, Sep 25, 2003 at 07:25:08AM +0200, Andi Kleen wrote:
>
> This fixes a test in the LSB test suite.
>
> The kernel sets O_LARGEFILE implicitely on 64bit hosts.
> According to POSIX it should not appear on F_GETFL then. Just mask it out
> always.
>
> This will also mask it out for explicitely set O_LARGEFILE, but that seems
> to be ok.
>
> Any flames for this please to the POSIX comittee, not to me.
>
> -Andi
>
> diff -X ../../KDIFX -burpN linux-2.4.23-pre5/fs/fcntl.c linux-merge/fs/fcntl.c
> --- linux-2.4.23-pre5/fs/fcntl.c 2002-11-30 00:37:11.000000000 +0100
> +++ linux-merge/fs/fcntl.c 2002-11-30 05:22:20.000000000 +0100
> @@ -270,7 +270,7 @@ static long do_fcntl(unsigned int fd, un
> set_close_on_exec(fd, arg&1);
> break;
> case F_GETFL:
> - err = filp->f_flags;
> + err = filp->f_flags & ~O_LARGEFILE;
> break;
> case F_SETFL:
> lock_kernel();
>
I guess you got bitten because you're running 64bit where glibc isn't
supposed to deal with it.
AFIK it's up to glibc to clean it up on 32bit systems if you don't ask
for largefile mode.
this is what I've on my tree since a long time and it should be the
right fix.
#if BITS_PER_LONG != 32
err = filp->f_flags & ~O_LARGEFILE;
#else
err = filp->f_flags;
#endif
http://www.us.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.4/2.4.22aa1/00_fcntl_getfl-largefile-1
Andrea - If you prefer relying on open source software, check these links:
rsync.kernel.org::pub/scm/linux/kernel/bkcvs/linux-2.[45]/
http://www.cobite.com/cvsps/
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-10-01 13:22 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-09-25 5:25 [PATCH] Mask out O_LARGEFILE in F_GETFL Andi Kleen
2003-10-01 13:24 ` Andrea Arcangeli
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox