kernel-ark/fs/ubifs
Adrian Hunter 727d2dc045 UBIFS: do not read unnecessary bytes when unpacking bits
Fixes the following Oops:

BUG: unable to handle kernel paging request at f8d24000
IP: [<f8ff0657>] :ubifs:ubifs_unpack_bits+0xcd/0x231
*pde = 34333067 *pte = 00000000
Oops: 0000 [#1] PREEMPT SMP
Modules linked in: deflate zlib_deflate lzo lzo_decompress lzo_compress
ubifs ubi nandsim nand nand_ids nand_ecc mtd nfsd lockd sunrpc exportfs
[last unloaded: nand_ecc]

Pid: 7450, comm: sync Not tainted (2.6.27-rc8-ubifs-2.6 #27)
EIP: 0060:[<f8ff0657>] EFLAGS: 00010206 CPU: 0
EIP is at ubifs_unpack_bits+0xcd/0x231 [ubifs]
EAX: 00000000 EBX: 00000000 ECX: d7e43dc0 EDX: 0000ff00
ESI: 00000004 EDI: f8d23ffe EBP: d7e43db4 ESP: d7e43d8c
DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
Process sync (pid: 7450, ti=d7e42000 task=eb6f9530 task.ti=d7e42000)
Stack: 00000400 c0103db4 dc5e8090 d7e43dc0 d7e43dc0 d7e43dc4 0000001c 00000004
      f496d1e0 f8d23ffc d7e43dd4 f8ffac7e f8d23ffe 00000000 f8d23ffe f2b7af68
      f496d1e0 f8d23ffc d7e43e2c f8ffadc5 00000000 0001f000 00000000 c03b10a7
Call Trace:
[<c0103db4>] ? restore_nocheck_notrace+0x0/0xe
[<f8ffac7e>] ? is_a_node+0x43/0x92 [ubifs]
[<f8ffadc5>] ? dbg_check_ltab+0xf8/0x5c9 [ubifs]
[<c03b10a7>] ? mutex_lock_nested+0x1b2/0x2a0
[<f8ffc86e>] ? ubifs_lpt_start_commit+0x49/0xecb [ubifs]
[<c03b0ef3>] ? mutex_unlock+0xd/0xf
[<f8fef017>] ? ubifs_tnc_start_commit+0x1cf/0xef8 [ubifs]
[<f8fe65d8>] ? do_commit+0x18f/0x52d [ubifs]
[<f8fe69f6>] ? ubifs_run_commit+0x80/0xca [ubifs]
[<f8fd8d35>] ? ubifs_sync_fs+0xdb/0xf6 [ubifs]
[<c0181a07>] ? sync_filesystems+0xc6/0x10c
[<c019f279>] ? do_sync+0x3b/0x6a
[<c019f2ba>] ? sys_sync+0x12/0x18
[<c0103ced>] ? sysenter_do_call+0x12/0x35
=======================
Code: 4d ec 89 01 8b 45 e8 89 10 89 d8 89 f1 d3 e8 85 c0 74 07 29 d6 83 fe
20 75 2a 89 d8 83 c4 1c 5b 5e 5f 5d c3 0f b6 57 01 c1 e2 08 <0f> b6 47 02
c1 e0 10 09 c2 0f b6 07 09 c2 0f b
EIP: [<f8ff0657>] ubifs_unpack_bits+0xcd/0x231 [ubifs] SS:ESP 0068:d7e43d8c
---[ end trace 1bbb4c407a6dd816 ]---

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
2008-10-19 13:01:21 +03:00
..
budget.c UBIFS: add a print, fix comments and more minor stuff 2008-09-30 11:12:55 +03:00
commit.c UBIFS: increment commit number earlier 2008-08-13 11:27:47 +03:00
compress.c UBIFS: add new flash file system 2008-07-15 17:35:15 +03:00
debug.c UBIFS: add more debugging messages for LPT 2008-09-30 11:12:59 +03:00
debug.h UBIFS: add more debugging messages for LPT 2008-09-30 11:12:59 +03:00
dir.c UBIFS: fix printk format warnings 2008-09-18 09:57:57 +03:00
file.c UBIFS: fix bulk-read handling uptodate pages 2008-09-30 11:12:59 +03:00
find.c UBIFS: remove unneeded unlikely() 2008-09-30 11:12:55 +03:00
gc.c UBIFS: improve garbage collection 2008-09-30 11:12:59 +03:00
io.c UBIFS: check data CRC when in error state 2008-09-30 11:12:57 +03:00
ioctl.c UBIFS: add new flash file system 2008-07-15 17:35:15 +03:00
journal.c UBIFS: xattr bugfixes 2008-08-14 12:46:20 +03:00
Kconfig UBIFS: include to compilation 2008-07-15 17:35:24 +03:00
key.h UBIFS: add bulk-read facility 2008-09-30 11:12:56 +03:00
log.c UBIFS: increment commit number earlier 2008-08-13 11:27:47 +03:00
lprops.c UBIFS: inline one-line functions 2008-09-30 11:12:56 +03:00
lpt_commit.c UBIFS: check buffer length when scanning for LPT nodes 2008-09-30 11:12:59 +03:00
lpt.c UBIFS: do not read unnecessary bytes when unpacking bits 2008-10-19 13:01:21 +03:00
Makefile UBIFS: include to compilation 2008-07-15 17:35:24 +03:00
master.c UBIFS: add new flash file system 2008-07-15 17:35:15 +03:00
misc.h UBIFS: inline one-line functions 2008-09-30 11:12:56 +03:00
orphan.c UBIFS: increment commit number earlier 2008-08-13 11:27:47 +03:00
recovery.c UBIFS: add new flash file system 2008-07-15 17:35:15 +03:00
replay.c UBIFS: add new flash file system 2008-07-15 17:35:15 +03:00
sb.c UBIFS: add new flash file system 2008-07-15 17:35:15 +03:00
scan.c UBIFS: add no_chk_data_crc mount option 2008-09-30 11:12:56 +03:00
shrinker.c UBIFS: add new flash file system 2008-07-15 17:35:15 +03:00
super.c UBIFS: allow for sync_fs when read-only 2008-09-30 11:12:58 +03:00
tnc_commit.c UBIFS: minor tweaks in commit 2008-08-13 11:38:19 +03:00
tnc_misc.c UBIFS: correct key comparison 2008-09-30 11:12:57 +03:00
tnc.c UBIFS: correct condition to eliminate unecessary assignment 2008-09-30 11:12:59 +03:00
ubifs-media.h UBIFS: ensure data read beyond i_size is zeroed out correctly 2008-09-30 11:12:57 +03:00
ubifs.h UBIFS: add more debugging messages for LPT 2008-09-30 11:12:59 +03:00
xattr.c UBIFS: remove unneeded unlikely() 2008-09-30 11:12:55 +03:00