1. 05 Apr, 2011 7 commits
    • Artem Bityutskiy's avatar
      UBIFS: fix debugging failure in dbg_check_space_info · 7da6443a
      Artem Bityutskiy authored
      This patch fixes a debugging failure with which looks like this:
      UBIFS error (pid 32313): dbg_check_space_info: free space changed from 6019344 to 6022654
      
      The reason for this failure is described in the comment this patch adds
      to the code. But in short - 'c->freeable_cnt' may be different before
      and after re-mounting, and this is normal. So the debugging code should
      make sure that free space calculations do not depend on 'c->freeable_cnt'.
      
      A similar issue has been reported here:
      http://lists.infradead.org/pipermail/linux-mtd/2011-April/034647.html
      
      This patch should fix it.
      
      For the -stable guys: this patch is only relevant for kernels 2.6.30
      onwards.
      Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
      Cc: stable@kernel.org [2.6.30+]
      7da6443a
    • Artem Bityutskiy's avatar
      UBIFS: fix error path in dbg_debugfs_init_fs · 95169535
      Artem Bityutskiy authored
      The debug interface is substandard and on error returns either
      NULL or an error code packed in the pointer. So using "IS_ERR"
      for the pointers returned by debugfs function is incorrect.
      Instead, we should use IS_ERR_OR_NULL.
      
      This path is an improved vestion of the original patch from
      Phil Carmody.
      Reported-by: default avatarPhil Carmody <ext-phil.2.carmody@nokia.com>
      Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
      Acked-by: default avatarPhil Carmody <ext-phil.2.carmody@nokia.com>
      95169535
    • Artem Bityutskiy's avatar
      UBIFS: unify error path dbg_debugfs_init_fs · cc6a86b9
      Artem Bityutskiy authored
      This is just a small clean-up patch which simlifies and unifies the
      error path in the dbg_debugfs_init_fs(). We have common error path
      for all failure cases in this function except of the very first
      case. And this patch makes the first failure case use the same
      error path as the other cases by using the 'fname' and 'dent'
      variables.
      Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
      Acked-by: default avatarPhil Carmody <ext-phil.2.carmody@nokia.com>
      cc6a86b9
    • Artem Bityutskiy's avatar
      UBIFS: do not select KALLSYMS_ALL · 81354de3
      Artem Bityutskiy authored
      All UBIFS needs is to make sure we stacktraces when UBIFS debugging
      is enabled. It is enough to select KALLSYMS for this, KALLSYMS_ALL
      is not necessary. Moreover, Randy Dunlap reported that UBIFS causes
      the following Kconfig dependency warning:
      
      warning: (UBIFS_FS_DEBUG && LOCKDEP && LATENCYTOP) selects KALLSYMS_ALL
      which has unmet direct dependencies (DEBUG_KERNEL && KALLSYMS)
      
      The reason is that KALLSYMS_ALL requires DEBUG_KERNEL and KALLSYMS, so
      ideally, to select KALLSYMS_ALL we'd need to select DEBUG_KERNEL and
      KALLSYMS first.
      
      This seems to be too much to select. The easiest way to go is to forget
      about KALLSYMS_ALL and just select KALLSYMS when UBIFS debugging is
      enabled - that should be enough for stackdumps.
      Reported-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
      Acked-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      81354de3
    • Artem Bityutskiy's avatar
      UBIFS: fix assertion warnings · c88ac00c
      Artem Bityutskiy authored
      This patch fixes UBIFS assertion warnings like:
      
      UBIFS assert failed in ubifs_leb_unmap at 135 (pid 29365)
      Pid: 29365, comm: integck Tainted: G          I 2.6.37-ubi-2.6+ #34
      Call Trace:
       [<ffffffffa047c663>] ubifs_lpt_init+0x95e/0x9ee [ubifs]
       [<ffffffffa04623a7>] ubifs_remount_fs+0x2c7/0x762 [ubifs]
       [<ffffffff810f066e>] do_remount_sb+0xb6/0x101
       [<ffffffff81106ff4>] ? do_mount+0x191/0x78e
       [<ffffffff811070bb>] do_mount+0x258/0x78e
       [<ffffffff810da1e8>] ? alloc_pages_current+0xa2/0xc5
       [<ffffffff81107674>] sys_mount+0x83/0xbd
       [<ffffffff81009a12>] system_call_fastpath+0x16/0x1b
      
      They happen when we re-mount from R/O mode to R/W mode. While
      re-mounting, we write to the media, but we still have the c->ro_mount
      flag set. The fix is very simple - just clear the flag before
      starting re-mounting R/W.
      
      These warnings are caused by the following commit:
      2ef13294
      
      For -stable guys: this bug was introduced in 2.6.38, this is materieal
      for 2.6.38-stable.
      Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
      Cc: stable@kernel.org [2.6.38]
      c88ac00c
    • Artem Bityutskiy's avatar
      UBIFS: fix oops on error path in read_pnode · 54acbaaa
      Artem Bityutskiy authored
      Thanks to coverity which spotted that UBIFS will oops if 'kmalloc()'
      in 'read_pnode()' fails and we dereference a NULL 'pnode' pointer
      when we 'goto out'.
      Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
      Cc: stable@kernel.org
      54acbaaa
    • Artem Bityutskiy's avatar
      UBIFS: do not read flash unnecessarily · 8b229c76
      Artem Bityutskiy authored
      This fix makes the 'dbg_check_old_index()' function return
      immediately if debugging is disabled, instead of executing
      incorrect 'goto out' which causes UBIFS to:
      
      1. Allocate memory
      2. Read the flash
      
      On every commit. OK, we do not commit that often, but it is
      still silly to do unneeded I/O anyway.
      
      Credits to coverity for spotting this silly issue.
      Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
      Cc: stable@kernel.org
      8b229c76
  2. 29 Mar, 2011 33 commits