1. 18 7月, 2014 1 次提交
  2. 13 7月, 2014 3 次提交
  3. 12 7月, 2014 12 次提交
  4. 11 7月, 2014 24 次提交
    • P
      serial: arc_uart: Use uart_circ_empty() for open-coded comparison · 99ecb001
      Peter Hurley 提交于
      Replace open-coded test for empty tx ring buffer with equivalent
      helper function, uart_circ_empty(). No functional change.
      Signed-off-by: NPeter Hurley <peter@hurleysoftware.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      99ecb001
    • P
      serial: Test for no tx data on tx restart · c557d392
      Peter Hurley 提交于
      Commit 717f3bba,
      'serial_core: Fix conditional start_tx on ring buffer not empty'
      exposes an incorrect assumption in several drivers' start_tx methods;
      the tx ring buffer can, in fact, be empty when restarting tx while
      performing flow control.
      
      Affected drivers:
      sunsab.c
      ip22zilog.c
      pmac_zilog.c
      sunzilog.c
      m32r_sio.c
      imx.c
      
      Other in-tree serial drivers either are not affected or already
      test for empty tx ring buffer before transmitting.
      
      Test for empty tx ring buffer in start_tx() method, after transmitting
      x_char (if applicable).
      Reported-by: NAaro Koskinen <aaro.koskinen@iki.fi>
      Cc: Seth Bollinger <sethb@digi.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
      Signed-off-by: NPeter Hurley <peter@hurleysoftware.com>
      Cc: stable <stable@vger.kernel.org> # 3.15
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c557d392
    • S
      tty: serial: msm: Support big-endian CPUs · 68252424
      Stephen Boyd 提交于
      To support big-endian CPUs use the string versions of the io
      read/write macros on the TX/RX fifos and the non-raw variants of
      the readl/writel macros throughout. This way we don't byteswap
      the characters coming from the fifos but we properly deal with
      the little-endian nature of the serial hardware while controlling
      it.
      Signed-off-by: NStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      68252424
    • D
      serial: txx9: remove duplicate TXX9_SIFCR_TDIL_MASK define · db3a1a43
      Dan Carpenter 提交于
      The TXX9_SIFCR_TDIL_MASK define is cut and pasted twice so we can delete
      the second instance.
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      db3a1a43
    • P
      serial: blackfin: Fix CTS flow control · 8bd67d7d
      Peter Hurley 提交于
      blackfin uart port drivers mistakenly set the struct uart_port
      flags bit UPF_BUG_THRE (which only has meaning to the 8250 core)
      while trying to set ASYNC_CTS_FLOW.
      
      Uart port drivers can override termios settings based on actual
      hardware support in their .set_termios method; the serial core
      sets the appropriate port flags based on the overrides.
      Overriding only the initial termios settings is accomplished
      by only perform those overrides if the old termios parameter is
      NULL.
      
      CC: Sonic Zhang <sonic.zhang@analog.com>
      CC: adi-buildroot-devel@lists.sourceforge.net
      Signed-off-by: NPeter Hurley <peter@hurleysoftware.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8bd67d7d
    • P
      tty: serial: Fix termios/port flags mismatch · c18b55fd
      Peter Hurley 提交于
      Uart port drivers may reconfigure termios settings based on available
      hardware support; set/clear ASYNC_CTS_FLOW and ASYNC_CHECK_CD _after_
      calling the port driver's .set_termios method.
      Signed-off-by: NPeter Hurley <peter@hurleysoftware.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c18b55fd
    • P
      7c6d340f
    • P
      char: synclink: Remove WARN_ON for bad port count · 69fee688
      Peter Hurley 提交于
      tty_port_close_start() already validates the port counts and issues
      a diagnostic if validation fails.
      Signed-off-by: NPeter Hurley <peter@hurleysoftware.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      69fee688
    • P
      tty: Remove tty_hung_up_p() tests from tty drivers' open() · e359a4e3
      Peter Hurley 提交于
      Since at least before 2.6.30, it has not been possible to observe
      a hung up file pointer in a tty driver's open() method unless/until
      the driver open() releases the tty_lock() (eg., before blocking).
      
      This is because tty_open() adds the file pointer while holding
      the tty_lock() _and_ doesn't release the lock until after calling
      the tty driver's open() method. [ Before tty_lock(), this was
      lock_kernel(). ]
      
      Since __tty_hangup() first waits on the tty_lock() before
      enumerating and hanging up the open file pointers, either
      __tty_hangup() will wait for the tty_lock() or tty_open() will
      not yet have added the file pointer. For example,
      
      CPU 0                          |  CPU 1
                                     |
      tty_open                       |  __tty_hangup
        ..                           |    ..
        tty_lock                     |    ..
        tty_reopen                   |    tty_lock  / blocks
        ..                           |
        tty_add_file(tty, filp)      |
        ..                           |
        tty->ops->open(tty, filp)    |
          tty_port_open              |
            tty_port_block_til_ready |
              ..                     |
              while (1)              |
                ..                   |
                tty_unlock           |    / unblocks
                schedule             |    for each filp on tty->tty_files
                                     |      f_ops = tty_hung_up_fops;
                                     |    ..
                                     |    tty_unlock
                tty_lock             |
        ..                           |
        tty_unlock                   |
      
      Note that since tty_port_block_til_ready() and similar drop
      the tty_lock while blocking, when woken, the file pointer
      must then be tested for having been hung up.
      
      Also, fix bit-rotted drivers that used extra_count to track the
      port->count bump.
      
      CC: Mikael Starvik <starvik@axis.com>
      CC: Samuel Ortiz <samuel@sortiz.org>
      CC: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: NPeter Hurley <peter@hurleysoftware.com>
      Acked-by: NJesper Nilsson <jesper.nilsson@axis.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e359a4e3
    • P
      serial: Use UPF_* constants with struct uart_port flags · 5fda7a0e
      Peter Hurley 提交于
      Fix ASYNC_* constant usage that should be the corresponding UPF_*
      constant.
      
      CC: Grant Likely <grant.likely@linaro.org>
      CC: Rob Herring <robh+dt@kernel.org>
      CC: devicetree@vger.kernel.org
      Signed-off-by: NPeter Hurley <peter@hurleysoftware.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5fda7a0e
    • P
      tty: ipwireless: Remove tty->closing abort from ipw_open() · 01261cb9
      Peter Hurley 提交于
      tty->closing cannot be set on ipw_open() because the ipwireless tty
      driver does not call any functions that set tty->closing.
      
      CC: Jiri Kosina <jkosina@suse.cz>
      Signed-off-by: NPeter Hurley <peter@hurleysoftware.com>
      Acked-by: NDavid Sterba <dsterba@suse.cz>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      01261cb9
    • P
      tty: Move tty->closing from port lock critical section · ddc7b758
      Peter Hurley 提交于
      tty->closing informs the line discipline that the hardware will
      be shutting down imminently, and to disable further input other
      than soft flow control (but to still allow additional output).
      
      However, the tty lock is the necessary lock for preventing
      concurrent changes to tty->closing. As shown by the call-tree
      audit [1] of functions that modify tty->closing, the tty lock
      is already held for those functions.
      
      [1]
      Call-tree audit of functions that modify tty->closing
      * does not include call tree to tty_port_close(), tty_port_close_start(),
        or tty_port_close_end() which is already documented in
        'tty: Document locking for tty_port_close{,start,end}' that shows
        callers to those 3 functions hold the tty lock
      
      tty_release()
        tty->ops->close() --+
                            |
      __tty_hangup()        |
        tty->ops->close() --+
                            |
              mp_close():drivers/staging/sb105x/sb_pci_mp.c
              dngc_tty_close():drivers/staging/dgnc/dgnc_tty.c
              dgap_tty_close():drivers/staging/dgap/dgap_tty.c
              dgrp_tty_close():drivers/staging/dgrp/dgrp_tty.c
              rp_close():drivers/tty/rocket.c
              hvsi_close():drivers/tty/hvc/hvsi.c
              rs_close():drivers/tty/serial/68328serial.c
              rs_close():drivers/tty/serial/crisv10.c
              uart_close():drivers/tty/serial/serial_core.c
              isdn_tty_close():drivers/isdn/i4l/isdn_tty.c
              tty3215_close():drivers/s390/char/con3215.c
      
      tty_open()
        tty_ldisc_setup() ----+
                              |
      __tty_hangup()          |
        tty_ldisc_hangup() ---+
                              |
      tty_set_ldisc() --------+
        tty_ldisc_restore() --+
                              |
                              +- tty_ldisc_open()
                                   ld->ops->open() --+
                                                     |
                                                     +- n_tty_open()
      Signed-off-by: NPeter Hurley <peter@hurleysoftware.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ddc7b758
    • P
      tty: Document locking for tty_port_hangup() · 9c9928bd
      Peter Hurley 提交于
      The tty lock is held when the tty driver's hangup() method is called
      (from the lone call-site, __tty_hangup()). The call-tree audit [1]
      of tty_port_hangup() is a closed graph of the callers of
      tty_port_hangup(); ie., all callers originate only from __tty_hangup().
      
      Of these callers, none drop the tty lock prior to calling
      tty_port_hangup().
      
      [1]
      Call-tree audit of tty_port_hangup()
      
      __tty_hangup()
        tty->ops->hangup() --+
                             |
              rs_hangup():arch/ia64/hp/sim/simserial.c
              line_hangup():arch/um/drivers/line.c
              gdm_tty_hangup():drivers/staging/gdm724x/gdm_tty.c
              fwtty_hangup():drivers/staging/fwserial/fwserial.c
              acm_tty_hangup():drivers/usb/class/cdc-acm.c
              serial_hangup():drivers/usb/serial/usb-serial.c
              ipoctal_hangup():drivers/ipack/devices/ipoctal.c
              cy_hangup():drivers/tty/cyclades.c
              isicom_hangup():drivers/tty/isicom.c
              rp_hangup():drivers/tty/rocket.c
              dashtty_hangup():drivers/tty/metag_da.c
              moxa_hangup():drivers/tty/moxa.c
              gsmtty_hangup():drivers/tty/n_gsm.c
              goldfish_tty_hangup():drivers/tty/goldfish.c
              ehv_bc_tty_hangup():drivers/tty/ehv_bytechan.c
              mxser_hangup():drivers/tty/mxser.c
              kgdb_nmi_tty_hangup():drivers/tty/serial/kgdb_nmi.c
              ifx_spi_hangup():drivers/tty/serial/ifx6x60.c
              ntty_hangup():drivers/tty/nozomi.c
              capinc_tty_hangup():drivers/isdn/capi/capi.c
              mgslpc_hangup():drivers/char/pcmcia/synclink_cs.c
              sdio_uart_hangup():drivers/mmc/card/sdio_uart.c
              rfcomm_tty_hangup():net/bluetooth/rfcomm/tty.c
                             |
                             +- tty_port_hangup()
      Signed-off-by: NPeter Hurley <peter@hurleysoftware.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9c9928bd
    • P
      tty: Document locking for tty_port_block_til_ready() · c590f6b6
      Peter Hurley 提交于
      The tty lock is held when the tty driver's open() method is called
      (from tty_open()). The call-tree audit [1] of tty_port_block_til_ready()
      is a closed graph of the callers of tty_port_block_til_ready();
      ie., all callers originate only from tty_open().
      
      Of these callers, none drop the tty lock.
      
      Also, document tty_port_block_til_ready() may drop and reacquire
      the tty lock when blocking, which means the tty or tty_port may have
      changed state.
      
      [1]
      Call-tree audit of tty_port_block_til_ready()
      * does not include call tree of tty_port_open() which is already
        documented in 'tty: Document locking from tty_port_open()'
      
      tty_open()
        tty->ops->open() --+
                           |
              cy_open():drivers/tty/cyclades.c
              rp_open():drivers/tty/rocket.c
              rs_open():drivers/tty/amiserial.c
              moxa_open():drivers/tty/moxa.c
              gsmtty_open():drivers/tty/n_gsm.c
              rs_open():drivers/tty/serial/68328serial.c
              uart_open():drivers/tty/serial/serial_core.c
              isdn_tty_open():drivers/isdn/i4l/isdn_tty.c
              mgslpc_open():drivers/char/pcmcia/synclink_cs.c
                           |
                           +- tty_port_block_til_ready()
      Signed-off-by: NPeter Hurley <peter@hurleysoftware.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c590f6b6
    • P
      tty: Document locking for tty_port_open() · addd4672
      Peter Hurley 提交于
      The tty lock is held when the tty driver's open method is called
      (from the lone call-site, tty_open()). The call-tree audit [1] of
      tty_port_open() is a closed graph of the callers of tty_port_open();
      ie., all callers originate from only tty_open().
      
      Of these callers, none drop the tty lock.
      
      Also, document that tty_port_block_til_ready() may drop and reacquire
      the tty lock when blocking, which means the tty or tty_port may have
      changed state.
      
      [1]
      Call-tree audit of tty_port_open()
      
      tty_open()
        tty->ops->open() --+
                           |
              rs_open():arch/ia64/hp/sim/simserial.c
             *line_open():arch/um/drivers/line.c
              gdm_tty_open():drivers/staging/gdm724x/gdm_tty.c
              fwtty_open():drivers/staging/fwserial/fwserial.c
              acm_tty_open():drivers/usb/class/cdc-acm.c
              serial_open():drivers/usb/serial/usb-serial.c
              pti_tty_driver_open():drivers/misc/pti.c
              ipoctal_open():drivers/ipack/devices/ipoctal.c
              isicom_open():drivers/tty/isicom.c
              dashtty_open():drivers/tty/metag_da.c
              goldfish_tty_open():drivers/tty/goldfish.c
              ehv_bc_tty_open():drivers/tty/ehv_bytechan.c
              mxser_open():drivers/tty/mxser.c
              kgdb_nmi_tty_open():drivers/tty/serial/kgdb_nmi.c
              ifx_spi_open():drivers/tty/serial/ifx6x60.c
              smd_tty_open():drivers/tty/serial/msm_smd_tty.c
              ntty_open():drivers/tty/nozomi.c
              capinc_tty_open():drivers/isdn/capi/capi.c
              tpk_open():drivers/char/ttyprintk.c
              sdio_uart_open():drivers/mmc/card/sdio_uart.c
              rfcomm_tty_open():net/bluetooth/rfcomm/tty.c
                           |
                           +- tty_port_open()
      
      * line_open() is the .open method for 2 um drivers
        declared in ./arch/um/drivers/stdio_console.c and
        in ./arch/um/drivers/ssl.c, and not called directly
      Signed-off-by: NPeter Hurley <peter@hurleysoftware.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      addd4672
    • P
      tty: Document locking for tty_port_close{,start,end}() · 0733db91
      Peter Hurley 提交于
      The tty lock is held when the tty driver's .close method is called
      (from the two lone call-sites of tty_release() and __tty_hangup()).
      The call-tree audit[1] of tty_port_close(), tty_port_close_start,
      and tty_port_close_end() is a closed graph of the callers of these
      3 functions; ie., all callers originate from only tty_release()
      or __tty_hangup().
      
      Of these callers, none drop the tty lock.
      
      Also, document tty_port_close_start() may drop and reacquire the
      tty lock in tty_wait_until_sent_from_close(), which means the tty
      or tty_port may have changed state (but not reopened or hung up).
      
      [1]
      Call-tree audit of tty_port_close, tty_port_close_start, and tty_port_close_end()
      
      tty_release()
        tty->ops->close() --+
                            |
      __tty_hangup()        |
        tty->ops->close() --+
                            |
                            +- rp_close():drivers/tty/rocket.c -------------------+
                            +- uart_close():drivers/tty/serial/serial_core.c -----+
                            |                                                     +- tty_port_close_start()
                            |
                            |
                            +- close():drivers/tty/synclinkmp.c ------------------+
                            +- rs_close():drivers/tty/amiserial.c ----------------+
                            +- gsmtty_close():drivers/tty/n_gsm.c ----------------+
                            +- mxser_close():drivers/tty/mxser.c -----------------+
                            +- close():drivers/tty/synclink_gt.c -----------------+
                            +- mgsl_close():drivers/tty/synclink.c ---------------+
                            +- isdn_tty_close():drivers/isdn/i4l/isdn_tty.c ------+
                            +- mgslpc_close():drivers/char/pcmcia/synclink_cs.c --+
                            +- ircomm_tty_close():net/irda/ircomm/ircomm_tty.c ---+
                            |                                                     |
              rs_close():arch/ia64/hp/sim/simserial.c                             |
             *line_close():arch/um/drivers/line.c                                 |
              gdm_tty_close():drivers/staging/gdm724x/gdm_tty.c
              fwtty_close():drivers/staging/fwserial/fwserial.c
              acm_tty_close():drivers/usb/class/cdc-acm.c
              serial_close():drivers/usb/serial/usb-serial.c
              pti_tty_driver_close():drivers/misc/pti.c
              ipoctal_close():drivers/ipack/devices/ipoctal.c
              cy_close():drivers/tty/cyclades.c
              isicom_close():drivers/tty/isicom.c
              dashtty_close():drivers/tty/metag_da.c
              moxa_close():drivers/tty/moxa.c
              goldfish_tty_close():drivers/tty/goldfish.c
              ehv_bc_tty_close():drivers/tty/ehv_bytechan.c
              kgdb_nmi_tty_close():drivers/tty/serial/kgdb_nmi.c
              ifx_spi_close():drivers/tty/serial/ifx6x60.c
              smd_tty_close():drivers/tty/serial/msm_smd_tty.c
              ntty_close():drivers/tty/nozomi.c
              capinc_tty_close():drivers/isdn/capi/capi.c
              tpk_close():drivers/char/ttyprintk.c
              sdio_uart_close():drivers/mmc/card/sdio_uart.c                      |
              rfcomm_tty_close():net/bluetooth/rfcomm/tty.c                       |
                            |                                                     |
                            +- tty_port_close():drivers/tty/tty_port.c -----------+
                                                                                  |
                                                                                  +- tty_port_close_start()
                                                                                  +- tty_port_close_end()
      
      * line_close() is the .close method for 2 um drivers,
        declared in ./arch/um/drivers/stdio_console.c and
        in ./arch/um/drivers/ssl.c, and not called directly
      Signed-off-by: NPeter Hurley <peter@hurleysoftware.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0733db91
    • S
      serial: fsl_lpuart: calculate DMA burst · ed9891bf
      Stefan Agner 提交于
      The DMA burst size must match the transmit FIFO depth in order
      to make sure all character are transmitted. This patch calculates
      DMA burst size by using FIFO depth rather than use the hardcoded
      16 bytes. This is required since some UARTs (e.g. UART2 on Vybrid)
      have a FIFO depth of 8 bytes.
      Signed-off-by: NStefan Agner <stefan@agner.ch>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ed9891bf
    • A
      clk: exynos5420: Add IDs for clocks used in PD mfc · c0fb262b
      Arun Kumar K 提交于
      Adds IDs for MUX clocks to be used by power domain for MFC
      for doing re-parenting while pd on/off.
      Signed-off-by: NArun Kumar K <arun.kk@samsung.com>
      Signed-off-by: NShaik Ameer Basha <shaik.ameer@samsung.com>
      Acked-by: NTomasz Figa <t.figa@samsung.com>
      Signed-off-by: NKukjin Kim <kgene.kim@samsung.com>
      c0fb262b
    • S
      serial: fsl_lpuart: move DMA RX timeout calculation · 90abef91
      Stefan Agner 提交于
      The DMA RX timeout calculation is done based on FIFO buffer size and
      port timeout when setting up DMA. However, both variables are not
      necessarily initialized at DMA initialization time, which can lead
      to a division by zero.
      
      Move the timeout calculation to set_termios where both variables
      are initialized.
      Signed-off-by: NStefan Agner <stefan@agner.ch>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      90abef91
    • P
      serial: core: Preserve termios c_cflag for console resume · ae84db96
      Peter Hurley 提交于
      When a tty is opened for the serial console, the termios c_cflag
      settings are inherited from the console line settings.
      However, if the tty is subsequently closed, the termios settings
      are lost. This results in a garbled console if the console is later
      suspended and resumed.
      
      Preserve the termios c_cflag for the serial console when the tty
      is shutdown; this reflects the most recent line settings.
      
      Fixes: Bugzilla #69751, 'serial console does not wake from S3'
      Reported-by: NValerio Vanni <valerio.vanni@inwind.it>
      Acked-by: NAlan Cox <alan@linux.intel.com>
      Signed-off-by: NPeter Hurley <peter@hurleysoftware.com>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ae84db96
    • P
      serial: tegra: ack the rx dma desc after transfer terminated · b31245b9
      Pradeep Goudagunta 提交于
      The Rx dma descriptor allocated without the DMA_ACK flags so that
      once after tarnsfer done or terminated, client can ack the descriptor
      to free it for later use.
      
      If the Rx DMA is terminated for some reason then rx-dma descriptor
      is not getting acked which causes the memory leak and list of usage
      desc to grow continuously.
      
      Hence, acknowledge the rx-dma descriptor once transfer is terminated
      to avoid memory leak and desc list to grow.
      Signed-off-by: NLaxman Dewangan <ldewangan@nvidia.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b31245b9
    • P
      serial: tegra: update tx_circular buffer only when TX_DMA is in progress · 5e3dbfca
      Pradeep Goudagunta 提交于
      When channel is require to stop transmit then update the Tx circular
      buffer only when DMA based transfer is in progress. If there is no
      DMA based transfer then no need to update the Tx buffer.
      Signed-off-by: NPradeep Goudagunta <pgoudagunta@nvidia.com>
      Signed-off-by: NLaxman Dewangan <ldewangan@nvidia.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5e3dbfca
    • A
      serial: lpc32xx uart module can't do console · 080029b1
      Arnd Bergmann 提交于
      Every uart driver that provides a console driver needs to
      be built-in for the console code to work, we get a build
      error for modular console drivers.
      
      This changes the SERIAL_HS_LPC32XX_CONSOLE symbol to depend
      on the SERIAL_HS_LPC32XX driver being built-in, just like
      we do for all the other uart drivers.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      080029b1
    • A
      serial: pxa: fix build with !SERIAL_PXA_CONSOLE · 2ee881b7
      Arnd Bergmann 提交于
      When CONFIG_SERIAL_PXA_CONSOLE is disabled, the serial_pxa_get_poll_char
      and serial_pxa_put_poll_char functions are not defined, and we can't
      reference them.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2ee881b7