Re: Define termios_1 functions for powerpc, s390, avr32 and frv
From: Andrew Morton <akpm@linux-foundation.org>
Date: 2007-09-13 10:56:53
Also in:
lkml
On Thu, 13 Sep 2007 18:53:46 +0900 Paul Mundt [off-list ref] wrote:
On Thu, Sep 13, 2007 at 05:22:36PM +1000, Michael Neuling wrote:quoted
quoted
quoted
Commit f629307c857c030d5a3dd777fee37c8bb395e171 introduced uses of kernel_termios_to_user_termios_1 and user_termios_to_kernel_termios_1 on all architectures. However, powerpc, s390, avr32 and frv don't currently define those functions since their termios struct didn't need to be changed when the arbitrary baud rate stuff was added, and thus the kernel won't currently build on those architectures.alpha, parisc, sh, sparc{64,}, xtensa are still broken with this error...They need to include <asm-generic/termios.h> in asm-<arch>/termios.h like in powerpc. Alternatively tonyb's patch should fix them. Could also do that?Is there a consensus for this? It's a bit annoying to have this stuff broken this late in 2.6.23. If Tony's patch gets applied, then this stuff will work itself out. Otherwise everything has to be patched for asm-generic/termios.h. In which case.. here's the patch to define them on sh and sh64.
I think we need to go with Tony's patch. sparc32 and sparc64 are presently broken too, and the patch which converts sparc to use the new interfaces introduces a few build errors. From: Tony Breeds <redacted> Add Guards around TIOCSLCKTRMIOS and TIOCGLCKTRMIOS. Signed-off-by: Tony Breeds <redacted> Cc: Alan Cox <redacted> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Paul Mackerras <redacted> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Heiko Carstens <redacted> Cc: "David S. Miller" <davem@davemloft.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> --- drivers/char/tty_ioctl.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff -puN drivers/char/tty_ioctl.c~sparc64-and-others-fix-tty_ioctlc-build drivers/char/tty_ioctl.c
--- a/drivers/char/tty_ioctl.c~sparc64-and-others-fix-tty_ioctlc-build
+++ a/drivers/char/tty_ioctl.c@@ -795,6 +795,19 @@ int n_tty_ioctl(struct tty_struct * tty, if (L_ICANON(tty)) retval = inq_canon(tty); return put_user(retval, (unsigned int __user *) arg); +#ifndef TCGETS2 + case TIOCGLCKTRMIOS: + if (kernel_termios_to_user_termios((struct termios __user *)arg, real_tty->termios_locked)) + return -EFAULT; + return 0; + + case TIOCSLCKTRMIOS: + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + if (user_termios_to_kernel_termios(real_tty->termios_locked, (struct termios __user *) arg)) + return -EFAULT; + return 0; +#else case TIOCGLCKTRMIOS: if (kernel_termios_to_user_termios_1((struct termios __user *)arg, real_tty->termios_locked)) return -EFAULT;
@@ -806,6 +819,7 @@ int n_tty_ioctl(struct tty_struct * tty, if (user_termios_to_kernel_termios_1(real_tty->termios_locked, (struct termios __user *) arg)) return -EFAULT; return 0; +#endif case TIOCPKT: {
_