]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/asm-sparc/termios.h
ipw2200: prevent alloc of unspecified size on stack
[linux-2.6-omap-h63xx.git] / include / asm-sparc / termios.h
index d05f83c809893c404a9fc897fdf5164fbac6fbc9..4333232abb9f4e393619585086a408f243868b83 100644 (file)
@@ -45,24 +45,6 @@ struct winsize {
        unsigned short ws_ypixel;
 };
 
-/* line disciplines */
-#define N_TTY          0
-#define N_SLIP         1
-#define N_MOUSE                2
-#define N_PPP          3
-#define N_STRIP                4
-#define N_AX25         5
-#define N_X25          6
-#define N_6PACK                7
-#define N_MASC         8       /* Reserved for Mobitex module <kaz@cafe.net> */
-#define N_R3964                9       /* Reserved for Simatic R3964 module */
-#define N_PROFIBUS_FDL 10      /* Reserved for Profibus <Dave@mvhi.com> */
-#define N_IRDA         11      /* Linux IrDa - http://irda.sourceforge.net/ */
-#define N_SMSBLOCK     12      /* SMS block mode - for talking to GSM data cards about SMS messages */
-#define N_HDLC         13      /* synchronous HDLC */
-#define N_SYNC_PPP     14      /* synchronous PPP */
-#define N_HCI          15  /* Bluetooth HCI UART */
-
 #ifdef __KERNEL__
 #include <linux/module.h>
 
@@ -125,6 +107,48 @@ struct winsize {
 })
 
 #define user_termios_to_kernel_termios(k, u) \
+({ \
+       int err; \
+       err  = get_user((k)->c_iflag, &(u)->c_iflag); \
+       err |= get_user((k)->c_oflag, &(u)->c_oflag); \
+       err |= get_user((k)->c_cflag, &(u)->c_cflag); \
+       err |= get_user((k)->c_lflag, &(u)->c_lflag); \
+       err |= get_user((k)->c_line,  &(u)->c_line); \
+       err |= copy_from_user((k)->c_cc, (u)->c_cc, NCCS); \
+       if ((k)->c_lflag & ICANON) { \
+               err |= get_user((k)->c_cc[VEOF], &(u)->c_cc[VEOF]); \
+               err |= get_user((k)->c_cc[VEOL], &(u)->c_cc[VEOL]); \
+       } else { \
+               err |= get_user((k)->c_cc[VMIN],  &(u)->c_cc[_VMIN]); \
+               err |= get_user((k)->c_cc[VTIME], &(u)->c_cc[_VTIME]); \
+       } \
+       err |= get_user((k)->c_ispeed,  &(u)->c_ispeed); \
+       err |= get_user((k)->c_ospeed,  &(u)->c_ospeed); \
+       err; \
+})
+
+#define kernel_termios_to_user_termios(u, k) \
+({ \
+       int err; \
+       err  = put_user((k)->c_iflag, &(u)->c_iflag); \
+       err |= put_user((k)->c_oflag, &(u)->c_oflag); \
+       err |= put_user((k)->c_cflag, &(u)->c_cflag); \
+       err |= put_user((k)->c_lflag, &(u)->c_lflag); \
+       err |= put_user((k)->c_line, &(u)->c_line); \
+       err |= copy_to_user((u)->c_cc, (k)->c_cc, NCCS); \
+       if (!((k)->c_lflag & ICANON)) { \
+               err |= put_user((k)->c_cc[VMIN],  &(u)->c_cc[_VMIN]); \
+               err |= put_user((k)->c_cc[VTIME], &(u)->c_cc[_VTIME]); \
+       } else { \
+               err |= put_user((k)->c_cc[VEOF], &(u)->c_cc[VEOF]); \
+               err |= put_user((k)->c_cc[VEOL], &(u)->c_cc[VEOL]); \
+       } \
+       err |= put_user((k)->c_ispeed, &(u)->c_ispeed); \
+       err |= put_user((k)->c_ospeed, &(u)->c_ospeed); \
+       err; \
+})
+
+#define user_termios_to_kernel_termios_1(k, u) \
 ({ \
        get_user((k)->c_iflag, &(u)->c_iflag); \
        get_user((k)->c_oflag, &(u)->c_oflag); \
@@ -132,7 +156,7 @@ struct winsize {
        get_user((k)->c_lflag, &(u)->c_lflag); \
        get_user((k)->c_line,  &(u)->c_line); \
        copy_from_user((k)->c_cc, (u)->c_cc, NCCS); \
-       if((k)->c_lflag & ICANON) { \
+       if ((k)->c_lflag & ICANON) { \
                get_user((k)->c_cc[VEOF], &(u)->c_cc[VEOF]); \
                get_user((k)->c_cc[VEOL], &(u)->c_cc[VEOL]); \
        } else { \
@@ -142,7 +166,7 @@ struct winsize {
        0; \
 })
 
-#define kernel_termios_to_user_termios(u, k) \
+#define kernel_termios_to_user_termios_1(u, k) \
 ({ \
        put_user((k)->c_iflag, &(u)->c_iflag); \
        put_user((k)->c_oflag, &(u)->c_oflag); \
@@ -150,7 +174,7 @@ struct winsize {
        put_user((k)->c_lflag, &(u)->c_lflag); \
        put_user((k)->c_line, &(u)->c_line); \
        copy_to_user((u)->c_cc, (k)->c_cc, NCCS); \
-       if(!((k)->c_lflag & ICANON)) { \
+       if (!((k)->c_lflag & ICANON)) { \
                put_user((k)->c_cc[VMIN],  &(u)->c_cc[_VMIN]); \
                put_user((k)->c_cc[VTIME], &(u)->c_cc[_VTIME]); \
        } else { \