1. 27 3月, 2015 8 次提交
  2. 26 3月, 2015 5 次提交
  3. 03 3月, 2015 1 次提交
  4. 28 2月, 2015 2 次提交
    • R
      mtd: pxa3xx_nand: fix driver when num_cs is 0 · e423c90a
      Robert Jarzmik 提交于
      As the devicetree binding doesn't require num_cs to exist or be strictly
      positive, and neither does the platform data case, a bug appear when
      num_cs is set to 0 and panics the kernel.
      
      The issue is that in alloc_nand_resource(), chip is dereferenced without
      having a value assigned when num_cs == 0.
      
      Fix this by returning ENODEV is num_cs == 0.
      
      The panic seen is :
      Unable to handle kernel NULL pointer dereference at virtual address 000002b8
      pgd = c0004000
      [000002b8] *pgd=00000000
      Internal error: Oops: 5 [#1] PREEMPT ARM
      Modules linked in:
      Hardware name: Marvell PXA3xx (Device Tree Support)
      task: c3822aa0 ti: c3826000 task.ti: c3826000
      PC is at alloc_nand_resource+0x180/0x4a8
      LR is at alloc_nand_resource+0xa0/0x4a8
      pc : [<c0275b90>]    lr : [<c0275ab0>]    psr: 68000013
      sp : c3827d90  ip : 00000000  fp : 00000000
      r10: c3862200  r9 : 0000005e  r8 : 00000000
      r7 : c3865610  r6 : c3862210  r5 : c3924210  r4 : c3862200
      r3 : 00000000  r2 : 00000000  r1 : 00000000  r0 : 00000000
      Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
      Control: 0000397f  Table: 80004018  DAC: 00000035
      Process swapper (pid: 1, stack limit = 0xc3826198)
      Stack: (0xc3827d90 to 0xc3828000)
      ...zip...
      [<c0275b90>] (alloc_nand_resource) from [<c0275ff8>] (pxa3xx_nand_probe+0x140/0x978)
      [<c0275ff8>] (pxa3xx_nand_probe) from [<c0258c40>] (platform_drv_probe+0x48/0xa4)
      [<c0258c40>] (platform_drv_probe) from [<c0257650>] (driver_probe_device+0x80/0x21c)
      [<c0257650>] (driver_probe_device) from [<c0257878>] (__driver_attach+0x8c/0x90)
      [<c0257878>] (__driver_attach) from [<c0255ec4>] (bus_for_each_dev+0x58/0x88)
      [<c0255ec4>] (bus_for_each_dev) from [<c0256ec8>] (bus_add_driver+0xd8/0x1d4)
      [<c0256ec8>] (bus_add_driver) from [<c0257f14>] (driver_register+0x78/0xf4)
      [<c0257f14>] (driver_register) from [<c00088a8>] (do_one_initcall+0x80/0x1e4)
      [<c00088a8>] (do_one_initcall) from [<c048ed08>] (kernel_init_freeable+0xec/0x1b4)
      [<c048ed08>] (kernel_init_freeable) from [<c0377d8c>] (kernel_init+0x8/0xe4)
      [<c0377d8c>] (kernel_init) from [<c00095f8>] (ret_from_fork+0x14/0x3c)
      Code: e503b234 e5953008 e1530001 caffffd1 (e59002b8)
      ---[ end trace a5770060c8441895 ]---
      Signed-off-by: NRobert Jarzmik <robert.jarzmik@free.fr>
      Acked-by: NEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
      e423c90a
    • M
      mtd: nand: pxa3xx: Fix PIO FIFO draining · 8dad0386
      Maxime Ripard 提交于
      The NDDB register holds the data that are needed by the read and write
      commands.
      
      However, during a read PIO access, the datasheet specifies that after each 32
      bytes read in that register, when BCH is enabled, we have to make sure that the
      RDDREQ bit is set in the NDSR register.
      
      This fixes an issue that was seen on the Armada 385, and presumably other mvebu
      SoCs, when a read on a newly erased page would end up in the driver reporting a
      timeout from the NAND.
      
      Cc: <stable@vger.kernel.org> # v3.14
      Signed-off-by: NMaxime Ripard <maxime.ripard@free-electrons.com>
      Reviewed-by: NBoris Brezillon <boris.brezillon@free-electrons.com>
      Acked-by: NEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
      8dad0386
  5. 24 2月, 2015 1 次提交
  6. 15 2月, 2015 1 次提交
  7. 13 2月, 2015 2 次提交
  8. 08 2月, 2015 2 次提交
  9. 06 2月, 2015 9 次提交
  10. 02 2月, 2015 2 次提交
  11. 29 1月, 2015 1 次提交
  12. 28 1月, 2015 6 次提交
    • R
      832b52a1
    • H
      UBI: fix soft lockup in ubi_check_volume() · 9aa272b4
      hujianyang 提交于
      Running mtd-utils/tests/ubi-tests/io_basic.c could cause
      soft lockup or watchdog reset. It is because *updatevol*
      will perform ubi_check_volume() after updating finish
      and this function will full scan the updated lebs if the
      volume is initialized as STATIC_VOLUME.
      
      This patch adds *cond_resched()* in the loop of lebs scan
      to avoid soft lockup.
      
      Helped by Richard Weinberger <richard@nod.at>
      
      [ 2158.067096] INFO: rcu_sched self-detected stall on CPU { 1}  (t=2101 jiffies g=1606 c=1605 q=56)
      [ 2158.172867] CPU: 1 PID: 2073 Comm: io_basic Tainted: G           O 3.10.53 #21
      [ 2158.172898] [<c000f624>] (unwind_backtrace+0x0/0x120) from [<c000c294>] (show_stack+0x10/0x14)
      [ 2158.172918] [<c000c294>] (show_stack+0x10/0x14) from [<c008ac3c>] (rcu_check_callbacks+0x1c0/0x660)
      [ 2158.172936] [<c008ac3c>] (rcu_check_callbacks+0x1c0/0x660) from [<c002b480>] (update_process_times+0x38/0x64)
      [ 2158.172953] [<c002b480>] (update_process_times+0x38/0x64) from [<c005ff38>] (tick_sched_handle+0x54/0x60)
      [ 2158.172966] [<c005ff38>] (tick_sched_handle+0x54/0x60) from [<c00601ac>] (tick_sched_timer+0x44/0x74)
      [ 2158.172978] [<c00601ac>] (tick_sched_timer+0x44/0x74) from [<c003f348>] (__run_hrtimer+0xc8/0x1b8)
      [ 2158.172992] [<c003f348>] (__run_hrtimer+0xc8/0x1b8) from [<c003fd9c>] (hrtimer_interrupt+0x128/0x2a4)
      [ 2158.173007] [<c003fd9c>] (hrtimer_interrupt+0x128/0x2a4) from [<c0246f1c>] (arch_timer_handler_virt+0x28/0x30)
      [ 2158.173022] [<c0246f1c>] (arch_timer_handler_virt+0x28/0x30) from [<c0086214>] (handle_percpu_devid_irq+0x9c/0x124)
      [ 2158.173036] [<c0086214>] (handle_percpu_devid_irq+0x9c/0x124) from [<c0082bd8>] (generic_handle_irq+0x20/0x30)
      [ 2158.173049] [<c0082bd8>] (generic_handle_irq+0x20/0x30) from [<c000969c>] (handle_IRQ+0x64/0x8c)
      [ 2158.173060] [<c000969c>] (handle_IRQ+0x64/0x8c) from [<c0008544>] (gic_handle_irq+0x3c/0x60)
      [ 2158.173074] [<c0008544>] (gic_handle_irq+0x3c/0x60) from [<c02f0f80>] (__irq_svc+0x40/0x50)
      [ 2158.173083] Exception stack(0xc4043c98 to 0xc4043ce0)
      [ 2158.173092] 3c80:                                                       c4043ce4 00000019
      [ 2158.173102] 3ca0: 1f8a865f c050ad10 1f8a864c 00000031 c04b5970 0003ebce 00000000 f3550000
      [ 2158.173113] 3cc0: bf00bc68 00000800 0003ebce c4043ce0 c0186d14 c0186cb8 80000013 ffffffff
      [ 2158.173130] [<c02f0f80>] (__irq_svc+0x40/0x50) from [<c0186cb8>] (read_current_timer+0x4/0x38)
      [ 2158.173145] [<c0186cb8>] (read_current_timer+0x4/0x38) from [<1f8a865f>] (0x1f8a865f)
      [ 2183.927097] BUG: soft lockup - CPU#1 stuck for 22s! [io_basic:2073]
      [ 2184.002229] Modules linked in: nandflash(O) [last unloaded: nandflash]
      Signed-off-by: NWang Kai <morgan.wang@huawei.com>
      Signed-off-by: Nhujianyang <hujianyang@huawei.com>
      Signed-off-by: NRichard Weinberger <richard@nod.at>
      9aa272b4
    • R
      UBI: Fastmap: Care about the protection queue · 4f5e3b6f
      Richard Weinberger 提交于
      Fastmap can miss a PEB if it is in the protection queue
      and not jet in the used tree.
      Treat every protected PEB as used.
      Signed-off-by: NRichard Weinberger <richard@nod.at>
      Signed-off-by: NArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
      4f5e3b6f
    • A
      UBI: do propagate positive error codes up · 0e707ae7
      Artem Bityutskiy 提交于
      UBI uses positive function return codes internally, and should not propagate
      them up, except in the place this path fixes. Here is the original bug report
      from Dan Carpenter:
      
      The problem is really in ubi_eba_read_leb().
      
      drivers/mtd/ubi/eba.c
         412                  err = ubi_io_read_vid_hdr(ubi, pnum, vid_hdr, 1);
         413                  if (err && err != UBI_IO_BITFLIPS) {
         414                          if (err > 0) {
         415                                  /*
         416                                   * The header is either absent or corrupted.
         417                                   * The former case means there is a bug -
         418                                   * switch to read-only mode just in case.
         419                                   * The latter case means a real corruption - we
         420                                   * may try to recover data. FIXME: but this is
         421                                   * not implemented.
         422                                   */
         423                                  if (err == UBI_IO_BAD_HDR_EBADMSG ||
         424                                      err == UBI_IO_BAD_HDR) {
         425                                          ubi_warn("corrupted VID header at PEB %d, LEB %d:%d",
         426                                                   pnum, vol_id, lnum);
         427                                          err = -EBADMSG;
         428                                  } else
         429                                          ubi_ro_mode(ubi);
      
      On this path we return UBI_IO_FF and UBI_IO_FF_BITFLIPS and it
      eventually gets passed to ERR_PTR().  We probably dereference the bad
      pointer and oops.  At that point we've gone read only so it was already
      a bad situation...
      
         430                          }
         431                          goto out_free;
         432                  } else if (err == UBI_IO_BITFLIPS)
         433                          scrub = 1;
         434
      Reported-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
      0e707ae7
    • A
      UBI: clean-up printing helpers · 39990c6e
      Artem Bityutskiy 提交于
      Let's prefix UBI messages with 'ubiX' instead of 'UBI-X' - this is more
      consistent with the way we name UBI devices.
      
      Also, commit "32608703 UBI: Extend UBI layer debug/messaging capabilities"
      added the function name print to 'ubi_msg()' - lets revert this change, since
      these messages are supposed to be just informative messages, and not debugging
      messages.
      Signed-off-by: NArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
      39990c6e
    • T
      UBI: extend UBI layer debug/messaging capabilities - cosmetics · 45fc5c81
      Tanya Brokhman 提交于
      Some cosmetic fixes to the patch "UBI: Extend UBI layer debug/messaging
      capabilities".
      Signed-off-by: NTanya Brokhman <tlinder@codeaurora.org>
      Signed-off-by: NArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
      45fc5c81