[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20100108153443.GA14494@lst.de>
Date: Fri, 8 Jan 2010 16:34:43 +0100
From: Christoph Hellwig <hch@....de>
To: Arnd Bergmann <arnd@...db.de>
Cc: Christoph Hellwig <hch@....de>, akpm@...ux-foundation.org,
linux-kernel@...r.kernel.org, linux-arch@...r.kernel.org,
linux@....linux.org.uk, starvik@...s.com, jesper.nilsson@...s.com,
dhowells@...hat.com, ysato@...rs.sourceforge.jp,
takata@...ux-m32r.org, geert@...ux-m68k.org, zippel@...ux-m68k.org,
gerg@...inux.org, ralf@...ux-mips.org, benh@...nel.crashing.org,
schwidefsky@...ibm.com, heiko.carstens@...ibm.com,
lethal@...ux-sh.org, davem@...emloft.net, jdike@...toit.com,
tglx@...utronix.de, mingo@...hat.com, hpa@...or.com,
viro@...iv.linux.org.uk
Subject: Re: [PATCH v3 3/3] generic sys_ipc wrapper
On Fri, Jan 08, 2010 at 11:57:17AM +0100, Arnd Bergmann wrote:
> > Add a generic implementation of the ipc demultiplexer syscall. Except for
> > s390 and sparc64 all implementations of the sys_ipc are nearly identical.
>
> I think the s390 version is trivial to add as well, like
>
> SYSCALL_DEFINE5(s390_ipc, uint, call, int, first, unsigned long, second,
> unsigned long, third, void __user *, ptr)
> {
> if (call == SEMTIMEDOP)
> return sys_semtimedop(first, (struct sembuf __user *)ptr,
> (unsigned) second,
> (const struct timespec __user *)third);
>
> return sys_ipc(call & 0xffff, first, second, third, ptr, 0);
> }
Possiblly. Not sure if it's worth it, though. If the s390 maintainers
want it I'd say do it as a separate patch.
> But while going over the code again, I noticed that you broke sign extension
> at least on powerpc and s390, possibly on all 64 bit machines:
> > + return -EINVAL;
> > + if (get_user(fourth.__pad, (void __user * __user *) ptr))
> > + return -EFAULT;
> > + return sys_semctl(first, second, third, fourth);
>
> return sys_semctl(first, (int)second, third, fourth);
What does the explicit case buy us in terms of sign-extension over
the implicit one given that the second argument to sys_semctl already is
types as int?
> This is needed to make sure the upper half of the register is filled with
> zero-extended or sign-extended correctly and does not contain random garbage
> in the native 64 bit case. IIRC, x86_64 does not have this problem and mips64
> may have the wrong code already. Alpha, parisc and ia64 don't have a native
> sys_ipc and the rest are 32 bit, so they don't care.
I can fix it up, but I don't quite understand the need.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists