The following commit just hit mainline and all my powerpc test boxes are
failing during compilation:
commit f629307c857c030d5a3dd777fee37c8bb395e171
tty: termios locking functions break with new termios type
Failing as follows:
drivers/char/tty_ioctl.c: In function `n_tty_ioctl':
drivers/char/tty_ioctl.c:799: error: implicit declaration of function
`kernel_termios_to_user_termios_1'
drivers/char/tty_ioctl.c:806: error: implicit declaration of function
`user_termios_to_kernel_termios_1'
make[2]: *** [drivers/char/tty_ioctl.o] Error 1
It seems that a lot of architectures already have these varients, but not
powerpc:
include/asm-arm/termios.h
include/asm-blackfin/termios.h
include/asm-cris/termios.h
include/asm-h8300/termios.h
include/asm-i386/termios.h
include/asm-ia64/termios.h
include/asm-m32r/termios.h
include/asm-m68k/termios.h
include/asm-mips/termios.h
include/asm-v850/termios.h
include/asm-x86_64/termios.h
include/asm-xtensa/termios.h
Looking closer there seems to be a generic implementation of the non _1
variants, which seem out of step with the architecture specific
variants? Seems bad.
From i386 we have the following (wrapped for clarity), and they seem
typical:
#define user_termios_to_kernel_termios(k, u)
copy_from_user(k, u, sizeof(struct termios2))
#define kernel_termios_to_user_termios(u, k)
copy_to_user(u, k, sizeof(struct termios2))
#define user_termios_to_kernel_termios_1(k, u)
copy_from_user(k, u, sizeof(struct termios))
#define kernel_termios_to_user_termios_1(u, k)
copy_to_user(u, k, sizeof(struct termios))
Generic versions from asm-generic/termios.h seem to be:
#define user_termios_to_kernel_termios(k, u)
copy_from_user(k, u, sizeof(struct termios))
#define kernel_termios_to_user_termios(u, k)
copy_to_user(u, k, sizeof(struct termios))
So I'd say we've missed a trick on this in the conversion. Alan seems
to be the main source of these changes. From the various commits which
u...