]> Pileus Git - ~andy/linux/commitdiff
Merge tty-next into 3.6-rc1
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 6 Aug 2012 16:48:31 +0000 (09:48 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 6 Aug 2012 16:48:31 +0000 (09:48 -0700)
This handles the merge issue in:
arch/um/drivers/line.c
arch/um/drivers/line.h
And resolves the duplicate patches that were in both trees do to the
tty-next branch not getting merged into 3.6-rc1.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1  2 
drivers/net/ethernet/sgi/ioc3-eth.c
drivers/tty/serial/amba-pl011.c
drivers/tty/serial/imx.c
drivers/usb/class/cdc-acm.c
drivers/usb/serial/keyspan.c
drivers/usb/serial/quatech2.c
drivers/usb/serial/sierra.c
include/linux/Kbuild
net/bluetooth/rfcomm/tty.c

index fcb5b0e0f260d6a0f1c6b18f8e20ab3ff6aa564f,b5ba3084c7fc056db06cc07f1e19b1aae1f71c7a..3e5519a0acc7ebcccb897ed3719b8506a3b585ba
@@@ -583,7 -583,7 +583,7 @@@ static inline void ioc3_rx(struct net_d
        unsigned long *rxr;
        u32 w0, err;
  
-       rxr = (unsigned long *) ip->rxr;                /* Ring base */
+       rxr = ip->rxr;          /* Ring base */
        rx_entry = ip->rx_ci;                           /* RX consume index */
        n_entry = ip->rx_pi;
  
@@@ -903,7 -903,7 +903,7 @@@ static void ioc3_alloc_rings(struct net
        if (ip->rxr == NULL) {
                /* Allocate and initialize rx ring.  4kb = 512 entries  */
                ip->rxr = (unsigned long *) get_zeroed_page(GFP_ATOMIC);
-               rxr = (unsigned long *) ip->rxr;
+               rxr = ip->rxr;
                if (!rxr)
                        printk("ioc3_alloc_rings(): get_zeroed_page() failed!\n");
  
@@@ -1147,17 -1147,15 +1147,17 @@@ static void __devinit ioc3_8250_registe
  {
  #define COSMISC_CONSTANT 6
  
 -      struct uart_port port = {
 -              .irq            = 0,
 -              .flags          = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF,
 -              .iotype         = UPIO_MEM,
 -              .regshift       = 0,
 -              .uartclk        = (22000000 << 1) / COSMISC_CONSTANT,
 -
 -              .membase        = (unsigned char __iomem *) uart,
 -              .mapbase        = (unsigned long) uart,
 +      struct uart_8250_port port = {
 +              .port = {
 +                      .irq            = 0,
 +                      .flags          = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF,
 +                      .iotype         = UPIO_MEM,
 +                      .regshift       = 0,
 +                      .uartclk        = (22000000 << 1) / COSMISC_CONSTANT,
 +
 +                      .membase        = (unsigned char __iomem *) uart,
 +                      .mapbase        = (unsigned long) uart,
 +                }
        };
        unsigned char lcr;
  
        uart->iu_scr = COSMISC_CONSTANT,
        uart->iu_lcr = lcr;
        uart->iu_lcr;
 -      serial8250_register_port(&port);
 +      serial8250_register_8250_port(&port);
  }
  
  static void __devinit ioc3_serial_probe(struct pci_dev *pdev, struct ioc3 *ioc3)
index b81cc31f26572a2e3b0f95077d5ca2571e5e0034,d3553b5d3fcabd851d6cce4b6eab6eb6bca80cbc..92b1ac8db63d8e566573cfc87dc96248dae5bc52
@@@ -53,9 -53,9 +53,9 @@@
  #include <linux/delay.h>
  #include <linux/types.h>
  #include <linux/pinctrl/consumer.h>
+ #include <linux/sizes.h>
  
  #include <asm/io.h>
- #include <asm/sizes.h>
  
  #define UART_NR                       14
  
@@@ -1215,14 -1215,14 +1215,14 @@@ static irqreturn_t pl011_int(int irq, v
        return IRQ_RETVAL(handled);
  }
  
 -static unsigned int pl01x_tx_empty(struct uart_port *port)
 +static unsigned int pl011_tx_empty(struct uart_port *port)
  {
        struct uart_amba_port *uap = (struct uart_amba_port *)port;
        unsigned int status = readw(uap->port.membase + UART01x_FR);
        return status & (UART01x_FR_BUSY|UART01x_FR_TXFF) ? 0 : TIOCSER_TEMT;
  }
  
 -static unsigned int pl01x_get_mctrl(struct uart_port *port)
 +static unsigned int pl011_get_mctrl(struct uart_port *port)
  {
        struct uart_amba_port *uap = (struct uart_amba_port *)port;
        unsigned int result = 0;
@@@ -1285,7 -1285,7 +1285,7 @@@ static void pl011_break_ctl(struct uart
  }
  
  #ifdef CONFIG_CONSOLE_POLL
 -static int pl010_get_poll_char(struct uart_port *port)
 +static int pl011_get_poll_char(struct uart_port *port)
  {
        struct uart_amba_port *uap = (struct uart_amba_port *)port;
        unsigned int status;
        return readw(uap->port.membase + UART01x_DR);
  }
  
 -static void pl010_put_poll_char(struct uart_port *port,
 +static void pl011_put_poll_char(struct uart_port *port,
                         unsigned char ch)
  {
        struct uart_amba_port *uap = (struct uart_amba_port *)port;
@@@ -1637,7 -1637,7 +1637,7 @@@ static const char *pl011_type(struct ua
  /*
   * Release the memory region(s) being used by 'port'
   */
 -static void pl010_release_port(struct uart_port *port)
 +static void pl011_release_port(struct uart_port *port)
  {
        release_mem_region(port->mapbase, SZ_4K);
  }
  /*
   * Request the memory region(s) being used by 'port'
   */
 -static int pl010_request_port(struct uart_port *port)
 +static int pl011_request_port(struct uart_port *port)
  {
        return request_mem_region(port->mapbase, SZ_4K, "uart-pl011")
                        != NULL ? 0 : -EBUSY;
  /*
   * Configure/autoconfigure the port.
   */
 -static void pl010_config_port(struct uart_port *port, int flags)
 +static void pl011_config_port(struct uart_port *port, int flags)
  {
        if (flags & UART_CONFIG_TYPE) {
                port->type = PORT_AMBA;
 -              pl010_request_port(port);
 +              pl011_request_port(port);
        }
  }
  
  /*
   * verify the new serial_struct (for TIOCSSERIAL).
   */
 -static int pl010_verify_port(struct uart_port *port, struct serial_struct *ser)
 +static int pl011_verify_port(struct uart_port *port, struct serial_struct *ser)
  {
        int ret = 0;
        if (ser->type != PORT_UNKNOWN && ser->type != PORT_AMBA)
  }
  
  static struct uart_ops amba_pl011_pops = {
 -      .tx_empty       = pl01x_tx_empty,
 +      .tx_empty       = pl011_tx_empty,
        .set_mctrl      = pl011_set_mctrl,
 -      .get_mctrl      = pl01x_get_mctrl,
 +      .get_mctrl      = pl011_get_mctrl,
        .stop_tx        = pl011_stop_tx,
        .start_tx       = pl011_start_tx,
        .stop_rx        = pl011_stop_rx,
        .flush_buffer   = pl011_dma_flush_buffer,
        .set_termios    = pl011_set_termios,
        .type           = pl011_type,
 -      .release_port   = pl010_release_port,
 -      .request_port   = pl010_request_port,
 -      .config_port    = pl010_config_port,
 -      .verify_port    = pl010_verify_port,
 +      .release_port   = pl011_release_port,
 +      .request_port   = pl011_request_port,
 +      .config_port    = pl011_config_port,
 +      .verify_port    = pl011_verify_port,
  #ifdef CONFIG_CONSOLE_POLL
 -      .poll_get_char = pl010_get_poll_char,
 -      .poll_put_char = pl010_put_poll_char,
 +      .poll_get_char = pl011_get_poll_char,
 +      .poll_put_char = pl011_put_poll_char,
  #endif
  };
  
diff --combined drivers/tty/serial/imx.c
index 0af4eec8c7b1f57e7ace1e216b308ad2a2469b2e,d5c689d6217e3a2eb46223fa1ffd01b77e15e0df..20e911724027a1db5da67423235f1961f76c0077
  #define SERIAL_IMX_MAJOR        207
  #define MINOR_START           16
  #define DEV_NAME              "ttymxc"
- #define MAX_INTERNAL_IRQ      MXC_INTERNAL_IRQS
  
  /*
   * This determines how often we check the modem status signals
@@@ -207,7 -206,7 +206,7 @@@ struct imx_port 
        unsigned short          trcv_delay; /* transceiver delay */
        struct clk              *clk_ipg;
        struct clk              *clk_per;
 -      struct imx_uart_data    *devdata;
 +      const struct imx_uart_data *devdata;
  };
  
  struct imx_port_ucrs {
@@@ -741,10 -740,7 +740,7 @@@ static int imx_startup(struct uart_por
  
                /* do not use RTS IRQ on IrDA */
                if (!USE_IRDA(sport)) {
-                       retval = request_irq(sport->rtsirq, imx_rtsint,
-                                    (sport->rtsirq < MAX_INTERNAL_IRQ) ? 0 :
-                                      IRQF_TRIGGER_FALLING |
-                                      IRQF_TRIGGER_RISING,
+                       retval = request_irq(sport->rtsirq, imx_rtsint, 0,
                                        DRIVER_NAME, sport);
                        if (retval)
                                goto error_out3;
index bb2e37f7db26b49e6824117765595a7ea9af628b,56d6bf66848894b76564ba452e00d6cf37f13416..18f4e62aaa75863b817d94842caf99f00fa2b069
@@@ -826,7 -826,7 +826,7 @@@ static void acm_tty_set_termios(struct 
                                                struct ktermios *termios_old)
  {
        struct acm *acm = tty->driver_data;
 -      struct ktermios *termios = tty->termios;
 +      struct ktermios *termios = &tty->termios;
        struct usb_cdc_line_coding newline;
        int newctrl = acm->ctrlout;
  
@@@ -996,7 -996,7 +996,7 @@@ static int acm_probe(struct usb_interfa
                case USB_CDC_CALL_MANAGEMENT_TYPE:
                        call_management_function = buffer[3];
                        call_interface_num = buffer[4];
-                       if ( (quirks & NOT_A_MODEM) == 0 && (call_management_function & 3) != 3)
+                       if ((quirks & NOT_A_MODEM) == 0 && (call_management_function & 3) != 3)
                                dev_err(&intf->dev, "This device cannot do calls on its own. It is not a modem.\n");
                        break;
                default:
index 6225199119c0c8edba22db13b9dd91ac746e5e44,af0b70eaf032f6617c36b596ce70776842a20d9f..7bcbb47e1449a83b210f9d280d5f60c965607641
@@@ -158,7 -158,7 +158,7 @@@ static void keyspan_set_termios(struct 
  
        p_priv = usb_get_serial_port_data(port);
        d_details = p_priv->device_details;
 -      cflag = tty->termios->c_cflag;
 +      cflag = tty->termios.c_cflag;
        device_port = port->number - port->serial->minor;
  
        /* Baud rate calculation takes baud rate as an integer
        tty_encode_baud_rate(tty, baud_rate, baud_rate);
        /* set CTS/RTS handshake etc. */
        p_priv->cflag = cflag;
-       p_priv->flow_control = (cflag & CRTSCTS)? flow_cts: flow_none;
+       p_priv->flow_control = (cflag & CRTSCTS) ? flow_cts : flow_none;
  
        /* Mark/Space not supported */
 -      tty->termios->c_cflag &= ~CMSPAR;
 +      tty->termios.c_cflag &= ~CMSPAR;
  
        keyspan_send_setup(port, 0);
  }
@@@ -474,7 -474,7 +474,7 @@@ static void usa28_indat_callback(struc
                p_priv = usb_get_serial_port_data(port);
                data = urb->transfer_buffer;
  
-               tty =tty_port_tty_get(&port->port);
+               tty = tty_port_tty_get(&port->port);
                if (tty && urb->actual_length) {
                        tty_insert_flip_string(tty, data, urb->actual_length);
                        tty_flip_buffer_push(tty);
@@@ -557,9 -557,9 +557,9 @@@ static void        usa28_instat_callback(struc
        p_priv->dcd_state = ((msg->dcd) ? 1 : 0);
        p_priv->ri_state = ((msg->ri) ? 1 : 0);
  
-       ifold_dcd_state != p_priv->dcd_state && old_dcd_state) {
+       if (old_dcd_state != p_priv->dcd_state && old_dcd_state) {
                tty = tty_port_tty_get(&port->port);
-               if (tty && !C_CLOCAL(tty)) 
+               if (tty && !C_CLOCAL(tty))
                        tty_hangup(tty);
                tty_kref_put(tty);
        }
@@@ -1036,15 -1036,12 +1036,12 @@@ static int keyspan_write_room(struct tt
  static int keyspan_open(struct tty_struct *tty, struct usb_serial_port *port)
  {
        struct keyspan_port_private     *p_priv;
-       struct keyspan_serial_private   *s_priv;
-       struct usb_serial               *serial = port->serial;
        const struct keyspan_device_details     *d_details;
        int                             i, err;
        int                             baud_rate, device_port;
        struct urb                      *urb;
        unsigned int                    cflag = 0;
  
-       s_priv = usb_get_serial_data(serial);
        p_priv = usb_get_serial_port_data(port);
        d_details = p_priv->device_details;
  
  
        device_port = port->number - port->serial->minor;
        if (tty) {
 -              cflag = tty->termios->c_cflag;
 +              cflag = tty->termios.c_cflag;
                /* Baud rate calculation takes baud rate as an integer
                   so other rates can be generated if desired. */
                baud_rate = tty_get_baud_rate(tty);
        }
        /* set CTS/RTS handshake etc. */
        p_priv->cflag = cflag;
-       p_priv->flow_control = (cflag & CRTSCTS)? flow_cts: flow_none;
+       p_priv->flow_control = (cflag & CRTSCTS) ? flow_cts : flow_none;
  
        keyspan_send_setup(port, 1);
        /* mdelay(100); */
@@@ -1130,10 -1127,8 +1127,8 @@@ static void keyspan_close(struct usb_se
  {
        int                     i;
        struct usb_serial       *serial = port->serial;
-       struct keyspan_serial_private   *s_priv;
        struct keyspan_port_private     *p_priv;
  
-       s_priv = usb_get_serial_data(serial);
        p_priv = usb_get_serial_port_data(port);
  
        p_priv->rts_state = 0;
@@@ -1240,7 -1235,7 +1235,7 @@@ static int keyspan_fake_startup(struct 
  
        if (request_ihex_firmware(&fw, fw_name, &serial->dev->dev)) {
                dev_err(&serial->dev->dev, "Required keyspan firmware image (%s) unavailable.\n", fw_name);
-               return(1);
+               return 1;
        }
  
        dbg("Uploading Keyspan %s firmware.", fw_name);
@@@ -1709,7 -1704,7 +1704,7 @@@ static int keyspan_usa26_send_setup(str
                msg.setPrescaler = 0xff;
        }
  
-       msg.lcr = (p_priv->cflag & CSTOPB)? STOPBITS_678_2: STOPBITS_5678_1;
+       msg.lcr = (p_priv->cflag & CSTOPB) ? STOPBITS_678_2 : STOPBITS_5678_1;
        switch (p_priv->cflag & CSIZE) {
        case CS5:
                msg.lcr |= USA_DATABITS_5;
        }
        if (p_priv->cflag & PARENB) {
                /* note USA_PARITY_NONE == 0 */
-               msg.lcr |= (p_priv->cflag & PARODD)?
+               msg.lcr |= (p_priv->cflag & PARODD) ?
                        USA_PARITY_ODD : USA_PARITY_EVEN;
        }
        msg.setLcr = 0xff;
@@@ -1994,7 -1989,7 +1989,7 @@@ static int keyspan_usa49_send_setup(str
                /* msg.setPrescaler = 0xff; */
        }
  
-       msg.lcr = (p_priv->cflag & CSTOPB)? STOPBITS_678_2: STOPBITS_5678_1;
+       msg.lcr = (p_priv->cflag & CSTOPB) ? STOPBITS_678_2 : STOPBITS_5678_1;
        switch (p_priv->cflag & CSIZE) {
        case CS5:
                msg.lcr |= USA_DATABITS_5;
        }
        if (p_priv->cflag & PARENB) {
                /* note USA_PARITY_NONE == 0 */
-               msg.lcr |= (p_priv->cflag & PARODD)?
+               msg.lcr |= (p_priv->cflag & PARODD) ?
                        USA_PARITY_ODD : USA_PARITY_EVEN;
        }
        msg.setLcr = 0xff;
@@@ -2178,7 -2173,7 +2173,7 @@@ static int keyspan_usa90_send_setup(str
                msg.txMode = TXMODE_BYHAND;
        }
  
-       msg.lcr = (p_priv->cflag & CSTOPB)? STOPBITS_678_2: STOPBITS_5678_1;
+       msg.lcr = (p_priv->cflag & CSTOPB) ? STOPBITS_678_2 : STOPBITS_5678_1;
        switch (p_priv->cflag & CSIZE) {
        case CS5:
                msg.lcr |= USA_DATABITS_5;
        }
        if (p_priv->cflag & PARENB) {
                /* note USA_PARITY_NONE == 0 */
-               msg.lcr |= (p_priv->cflag & PARODD)?
+               msg.lcr |= (p_priv->cflag & PARODD) ?
                        USA_PARITY_ODD : USA_PARITY_EVEN;
        }
        if (p_priv->old_cflag != p_priv->cflag) {
@@@ -2322,7 -2317,7 +2317,7 @@@ static int keyspan_usa67_send_setup(str
        }
        if (p_priv->cflag & PARENB) {
                /* note USA_PARITY_NONE == 0 */
-               msg.lcr |= (p_priv->cflag & PARODD)?
+               msg.lcr |= (p_priv->cflag & PARODD) ?
                                        USA_PARITY_ODD : USA_PARITY_EVEN;
        }
        msg.setLcr = 0xff;
index 7de6d491a859bd9a55e218787e0ad58bcfbec996,151670b6b72a9871bcf88fd5e611b3247bae9904..7df9cdb053ed757dc119c5b3a0b22dc69b0c4dec
@@@ -275,7 -275,7 +275,7 @@@ static void qt2_set_termios(struct tty_
  {
        struct usb_device *dev = port->serial->dev;
        struct qt2_port_private *port_priv;
 -      struct ktermios *termios = tty->termios;
 +      struct ktermios *termios = &tty->termios;
        u16 baud;
        unsigned int cflag = termios->c_cflag;
        u16 new_lcr = 0;
  static int qt2_open(struct tty_struct *tty, struct usb_serial_port *port)
  {
        struct usb_serial *serial;
-       struct qt2_serial_private *serial_priv;
        struct qt2_port_private *port_priv;
        u8 *data;
        u16 device_port;
        serial = port->serial;
  
        port_priv = usb_get_serial_port_data(port);
-       serial_priv = usb_get_serial_data(serial);
  
        /* set the port to RS232 mode */
        status = qt2_control_msg(serial->dev, QT2_GET_SET_QMCR,
        port_priv->device_port = (u8) device_port;
  
        if (tty)
 -              qt2_set_termios(tty, port, tty->termios);
 +              qt2_set_termios(tty, port, &tty->termios);
  
        return 0;
  
  static void qt2_close(struct usb_serial_port *port)
  {
        struct usb_serial *serial;
-       struct qt2_serial_private *serial_priv;
        struct qt2_port_private *port_priv;
        unsigned long flags;
        int i;
  
        serial = port->serial;
-       serial_priv = usb_get_serial_data(serial);
        port_priv = usb_get_serial_port_data(port);
  
        port_priv->is_open = false;
index a4e4f3a16c63e35023ddf3549d8842e8dc110071,0274710cced5ce432504ca02c98de0cab2add0ee..b14ebbd735676d564fc992511d0efa5d5e1d6a61
@@@ -288,9 -288,6 +288,6 @@@ static const struct usb_device_id id_ta
        /* Sierra Wireless HSPA Non-Composite Device */
        { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x6892, 0xFF, 0xFF, 0xFF)},
        { USB_DEVICE(0x1199, 0x6893) }, /* Sierra Wireless Device */
-       { USB_DEVICE(0x1199, 0x68A2),   /* Sierra Wireless MC77xx in QMI mode */
-         .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
-       },
        { USB_DEVICE(0x1199, 0x68A3),   /* Sierra Wireless Direct IP modems */
          .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
        },
@@@ -385,7 -382,7 +382,7 @@@ static int sierra_send_setup(struct usb
  static void sierra_set_termios(struct tty_struct *tty,
                struct usb_serial_port *port, struct ktermios *old_termios)
  {
 -      tty_termios_copy_hw(tty->termios, old_termios);
 +      tty_termios_copy_hw(&tty->termios, old_termios);
        sierra_send_setup(port);
  }
  
diff --combined include/linux/Kbuild
index cf41085e3331203525f0e6f97858e963e6a9f5a9,d9a7544748785d020ba77f74392fb1275fbe02fd..28ea2b4d1b4548036f3ba0d8e90fe66a93f59d98
@@@ -84,6 -84,7 +84,6 @@@ header-y += capability.
  header-y += capi.h
  header-y += cciss_defs.h
  header-y += cciss_ioctl.h
 -header-y += cdk.h
  header-y += cdrom.h
  header-y += cgroupstats.h
  header-y += chio.h
@@@ -92,6 -93,7 +92,6 @@@ header-y += cn_proc.
  header-y += coda.h
  header-y += coda_psdev.h
  header-y += coff.h
 -header-y += comstats.h
  header-y += connector.h
  header-y += const.h
  header-y += cramfs_fs.h
@@@ -138,6 -140,7 +138,6 @@@ header-y += fuse.
  header-y += futex.h
  header-y += gameport.h
  header-y += gen_stats.h
 -header-y += generic_serial.h
  header-y += genetlink.h
  header-y += gfs2_ondisk.h
  header-y += gigaset_dev.h
@@@ -180,7 -183,6 +180,6 @@@ header-y += if_ppp.
  header-y += if_pppol2tp.h
  header-y += if_pppox.h
  header-y += if_slip.h
- header-y += if_strip.h
  header-y += if_team.h
  header-y += if_tun.h
  header-y += if_tunnel.h
@@@ -373,6 -375,7 +372,7 @@@ header-y += tty.
  header-y += types.h
  header-y += udf_fs_i.h
  header-y += udp.h
+ header-y += uhid.h
  header-y += uinput.h
  header-y += uio.h
  header-y += ultrasound.h
@@@ -383,6 -386,7 +383,7 @@@ header-y += utime.
  header-y += utsname.h
  header-y += uuid.h
  header-y += uvcvideo.h
+ header-y += v4l2-common.h
  header-y += v4l2-dv-timings.h
  header-y += v4l2-mediabus.h
  header-y += v4l2-subdev.h
index 363bca12f00d935fd2df48dcb6e7511409edd460,cb960773c002efafeb45b888ee8f3ba3e9208490..87ddd051881b26756d102d1ed931b230a39622fc
  #include <linux/tty_driver.h>
  #include <linux/tty_flip.h>
  
- #include <linux/capability.h>
- #include <linux/slab.h>
- #include <linux/skbuff.h>
- #include <linux/workqueue.h>
  #include <net/bluetooth/bluetooth.h>
  #include <net/bluetooth/hci_core.h>
  #include <net/bluetooth/rfcomm.h>
@@@ -132,7 -127,7 +127,7 @@@ static struct rfcomm_dev *__rfcomm_dev_
        return NULL;
  }
  
- static inline struct rfcomm_dev *rfcomm_dev_get(int id)
+ static struct rfcomm_dev *rfcomm_dev_get(int id)
  {
        struct rfcomm_dev *dev;
  
@@@ -345,7 -340,7 +340,7 @@@ static void rfcomm_wfree(struct sk_buf
        tty_port_put(&dev->port);
  }
  
- static inline void rfcomm_set_owner_w(struct sk_buff *skb, struct rfcomm_dev *dev)
+ static void rfcomm_set_owner_w(struct sk_buff *skb, struct rfcomm_dev *dev)
  {
        tty_port_get(&dev->port);
        atomic_add(skb->truesize, &dev->wmem_alloc);
@@@ -866,7 -861,7 +861,7 @@@ static int rfcomm_tty_ioctl(struct tty_
  
  static void rfcomm_tty_set_termios(struct tty_struct *tty, struct ktermios *old)
  {
 -      struct ktermios *new = tty->termios;
 +      struct ktermios *new = &tty->termios;
        int old_baud_rate = tty_termios_baud_rate(old);
        int new_baud_rate = tty_termios_baud_rate(new);