lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Tue, 23 Aug 2016 18:03:01 +0300
From:   Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
To:     Dinh Nguyen <dinguyen@...nel.org>,
        Thorsten Leemhuis <regressions@...mhuis.info>
Cc:     heikki.krogerus@...ux.intel.com, peter@...leysoftware.com,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
        linux-kernel@...r.kernel.org, linux-serial@...r.kernel.org
Subject: Re: [RFC RESEND] serial: 8250: fix regression in 8250 uart driver

On Tue, 2016-08-23 at 08:53 -0500, Dinh Nguyen wrote:
> Hi Andy,
> 
> On 08/17/2016 06:14 AM, Andy Shevchenko wrote:
> > 
> > 
> > I sent a v2 of the series for internal review, same you may found on
> > [1]. If Heikki is okay to that I'll send it here.
> > 
> > [1] https://bitbucket.org/andy-shev/linux/branch/topic%2Fdw%2Fqrk
> > 
> 
> I tested this branch on SoCFPGA hardware and encountered this
> error[1].
> Doing a bisect led me to this commit[2].

Thanks! Found today the same.

Yes, here is the fix (will push an updated version later):


--- a/drivers/tty/serial/8250/8250_dma.c
+++ b/drivers/tty/serial/8250/8250_dma.c
@@ -260,7 +260,7 @@ void serial8250_release_dma(struct uart_8250_port
*p)
 {
        struct uart_8250_dma *dma = p->dma;

-       if (!dma)
+       if (!dma->in_use)
                return;

        /* Release RX resources */

> 
> Dinh
> 
> 
> --------------------[1]------------------------------
> 
> [    5.907714] ttyS0 - failed to request DMA
> [    5.921937] VFS: Mounted root (nfs filesystem) on device 0:13.
> [    5.928732] devtmpfs: mounted
> [    5.932504] Freeing unused kernel memory: 1024K (c0900000 -
> c0a00000)
> [    6.004532] Unable to handle kernel NULL pointer dereference at
> virtual address 0000000c
> [    6.012619] pgd = ef670000
> [    6.015321] [0000000c] *pgd=2ec0a831, *pte=00000000, *ppte=00000000
> [    6.021609] Internal error: Oops: 17 [#1] SMP ARM
> [    6.026301] Modules linked in:
> [    6.029365] CPU: 1 PID: 1 Comm: init Not tainted
> 4.8.0-rc3-00063-g6ce52b1 #12
> [    6.036476] Hardware name: Altera SOCFPGA
> [    6.040476] task: ef4ac000 task.stack: ef4b0000
> [    6.045007] PC is at _stop+0x4/0x254
> [    6.048579] LR is at pl330_terminate_all+0x4c/0x1e4
> [    6.053447] pc : [<c03c2e5c>]    lr : [<c03c30f8>]    psr: 60000093
> [    6.053447] sp : ef4b1e88  ip : 00000000  fp : 0000a109
> [    6.064890] r10: 00000000  r9 : ef7c7cc0  r8 : eedfaa94
> [    6.070099] r7 : eed30410  r6 : eec2be0c  r5 : 60000013  r4 :
> eec2be70
> [    6.076605] r3 : 00000002  r2 : 00000002  r1 : 00000000  r0 :
> 00000000
> [    6.083113] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM
> Segment none
> [    6.090318] Control: 10c5387d  Table: 2f67004a  DAC: 00000051
> [    6.096046] Process init (pid: 1, stack limit = 0xef4b0218)
> [    6.101603] Stack: (0xef4b1e88 to 0xef4b2000)
> [    6.105953] 1e80:                   eec2be70 60000013 eec2be0c
> eedfaa94 ef7c7cc0 c03c30f8
> [    6.114112] 1ea0: ef4b1ea0 ef4b1ea0 eedfaa00 eed8c02c eec2be20
> 20000013 c0a66208 c03f2b44
> [    6.122272] 1ec0: 00000001 00000000 c0a66208 c0a66208 c0a66324
> 20000013 c0a66208 eedfaa94
> [    6.130432] 1ee0: ef7c7cc0 c03f041c eedfaa00 c0a66208 eedfaa8c
> c03ea774 eedfaa00 ef7cec00
> [    6.138592] 1f00: c0a66208 00000001 eedfaa94 c03eb9a4 ef7cec00
> ef1a2930 00000000 ef41bd90
> [    6.146751] 1f20: ef1a4440 c03d0790 00080040 00080060 00000000
> 00000000 00002710 ef7c7cc0
> [    6.154911] 1f40: ef1a2930 00000000 ef41bd90 ef1a4440 00000008
> ef7c7cc8 0000a109 c021b594
> [    6.163071] 1f60: 00000000 00000000 ef4ac3d4 c0a532f8 00000000
> ef4ac000 c0107884 ef4b0000
> [    6.171231] 1f80: 00000000 c0138a14 ef4b0000 ef4b1fb0 c0107884
> 00000006 c0107884 c010b274
> [    6.179390] 1fa0: 00015500 00000000 bea16c4c c0107714 00000000
> 00000800 00000045 0000c79c
> [    6.187550] 1fc0: 00015500 00000000 bea16c4c 00000006 bea16bc0
> 00009c59 10000000 0000a109
> [    6.195709] 1fe0: 00000000 bea16bb4 0000bf81 b6f6413c 40000010
> 00000002 00000c84 01000002
> [    6.203878] [<c03c2e5c>] (_stop) from [<c03c30f8>]
> (pl330_terminate_all+0x4c/0x1e4)
> [    6.211526] [<c03c30f8>] (pl330_terminate_all) from [<c03f2b44>]
> (serial8250_release_dma+0x30/0x1c8)
> [    6.220640] [<c03f2b44>] (serial8250_release_dma) from [<c03f041c>]
> (serial8250_do_shutdown+0x64/0x144)
> [    6.230019] [<c03f041c>] (serial8250_do_shutdown) from [<c03ea774>]
> (uart_shutdown+0xd0/0x104)
> [    6.238614] [<c03ea774>] (uart_shutdown) from [<c03eb9a4>]
> (uart_close+0x148/0x298)
> [    6.246266] [<c03eb9a4>] (uart_close) from [<c03d0790>]
> (tty_release+0xf0/0x4d4)
> [    6.253658] [<c03d0790>] (tty_release) from [<c021b594>]
> (__fput+0x80/0x1c8)
> [    6.260694] [<c021b594>] (__fput) from [<c0138a14>]
> (task_work_run+0xb8/0xe8)
> [    6.267822] [<c0138a14>] (task_work_run) from [<c010b274>]
> (do_work_pending+0x7c/0xa4)
> [    6.275727] [<c010b274>] (do_work_pending) from [<c0107714>]
> (slow_work_pending+0xc/0x20)
> [    6.283888] Code: e8bd8070 e3a04000 eafffff9 e92d4370 (e590300c)
> [    6.289963] ---[ end trace e214cd70660516e6 ]---
> [    6.294806] Kernel panic - not syncing: Attempted to kill init!
> exitcode=0x0000000b
> [    6.294806]
> [    6.303932] CPU0: stopping
> [    6.306645] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G      D
> 4.8.0-rc3-00063-g6ce52b1 #12
> [    6.315406] Hardware name: Altera SOCFPGA
> [    6.319425] [<c010fef0>] (unwind_backtrace) from [<c010b8a4>]
> (show_stack+0x10/0x14)
> [    6.327159] [<c010b8a4>] (show_stack) from [<c037aa18>]
> (dump_stack+0x84/0x98)
> [    6.334372] [<c037aa18>] (dump_stack) from [<c010edb4>]
> (handle_IPI+0x2a0/0x2bc)
> [    6.341755] [<c010edb4>] (handle_IPI) from [<c01014cc>]
> (gic_handle_irq+0x88/0x8c)
> [    6.349310] [<c01014cc>] (gic_handle_irq) from [<c010c38c>]
> (__irq_svc+0x6c/0x90)
> [    6.356775] Exception stack(0xc0a01f50 to 0xc0a01f98)
> [    6.361815] 1f40:                                     00000000
> ef9cd368 0000153c c01184a0
> [    6.369976] 1f60: c0a00000 c0a024a4 c0a023c0 c0a50390 c0a02454
> 00000001 c0a02454 00000000
> [    6.378135] 1f80: 60000013 c0a01fa0 c01081a8 c01081ac 60000013
> ffffffff
> [    6.384734] [<c010c38c>] (__irq_svc) from [<c01081ac>]
> (arch_cpu_idle+0x38/0x3c)
> [    6.392127] [<c01081ac>] (arch_cpu_idle) from [<c0158cec>]
> (cpu_startup_entry+0x204/0x25c)
> [    6.400379] [<c0158cec>] (cpu_startup_entry) from [<c0900c60>]
> (start_kernel+0x370/0x37c)
> [    6.408542] ---[ end Kernel panic - not syncing: Attempted to kill
> init! exitcode=0x0000000b
> [    6.408542]
> 
> 
> --------------------[2]----------------------------------
> commit 60a0605738814ca8fa180cdfef20fcc2a32ec1ef
> Author: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
> Date:   Mon Jun 13 12:17:03 2016 +0300
> 
>     serial: 8250: allow user to skip using of DMA channels
> 
>     Currently DMA mode is enforced if the certain driver has such
> support. It prevents user to enforce PIO mode for RX, TX, or both.
> 
>     The new module parameters skip_rxdma and skip_txdma allow user to
> choose between auto mode, which is current and default behaviour,
> disable RX, TX, or both DMA channels without hacking a kernel.
> 
>     Signed-off-by: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>

-- 
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
Intel Finland Oy

Powered by blists - more mailing lists