Re: [PATCH] dup2: Fix return value with oldfd == newfd and invalidfd

From: Al Viro
Date: Mon May 11 2009 - 15:11:54 EST


On Mon, May 11, 2009 at 11:40:56AM -0700, Linus Torvalds wrote:
>
>
> On Mon, 11 May 2009, Jeff Mahoney wrote:
> >
> > The return value of dup2 when oldfd == newfd and the fd isn't valid is not
> > getting properly sign extended. We end up with 4294967287 instead of -EBADF.
>
> Indeed.
>
> > This patch uses a signed int for the error value so it is properly extended.
>
> However, I'd rather move the new variable into the block where it is used,
> and keep the whole corner-case thing self-contained.
>
> So can you verify that this trivial variation on the patch is ok by you,
> and I'll commit it as yours with your message? (I realize it's really
> trivial, and I could just do this myself, but good to get the change
> ack'ed anyway).

I'm not sure that it's a right fix, actually. Note that userland declaration
of that sucker is int dup2(int, int); so should we really take unsigned int
as arguments?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/