Fix mount oops with wrong name
Subsystems (2)
PATCH 1/1 Fix mount oops with wrong name
Also remove white space
/ # mount -t ubifs ubiubifs /tmp
Unable to handle kernel NULL pointer dereference at virtual address 00000000 pgd = c783c000 [00000000] *pgd=8786d031, *pte=00000000, *ppte=00000000 Internal error: Oops: 17 [#1] Modules linked in: ubifs ubi CPU: 0 Not tainted (2.6.23 #15) PC is at ubi_get_volume_info+0xc/0x84 [ubi] LR is at ubifs_get_sb+0x4c0/0xfe4 [ubifs] pc : [<bf0038c8>] lr : [<bf017f58>] psr: 60000013
sp : c783bcfc ip : c783bd10 fp : c783bd0c
r10: bf03dc70 r9 : c7e1d000 r8 : c7e1d37c
r7 : c7e1d374 r6 : c7e1d0a0 r5 : c02b0534 r4 : 00000000 r3 : 00000002 r2 : 00000075 r1 : c7e1d330 r0 : 00000000
Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
Control: 00c5387f Table: 8783c000 DAC: 00000015 Process mount (pid: 283, stack limit = 0xc783a258)
Stack: (0xc783bcfc to 0xc783c000) Backtrace: [<bf0038bc>] (ubi_get_volume_info+0x0/0x84 [ubi]) from [<bf017f58>] (ubifs_get_) r4:00000000 [<bf017a98>] (ubifs_get_sb+0x0/0xfe4 [ubifs]) from [<c0083c10>] (vfs_kern_mount) [<c0083bb0>] (vfs_kern_mount+0x0/0xc0) from [<c0083cb8>] (do_kern_mount+0x48/0x) r8:c7f4b000 r7:bf03d66c r6:c7899000 r5:c78ee000 r4:00000000 [<c0083c70>] (do_kern_mount+0x0/0xf4) from [<c0099d24>] (do_mount+0x604/0x640) r8:00000000 r7:00000000 r6:c7f97000 r5:c78ee000 r4:00000000 [<c0099720>] (do_mount+0x0/0x640) from [<c009a078>] (sys_mount+0xa4/0xec) [<c0099fd4>] (sys_mount+0x0/0xec) from [<c001ee40>] (ret_fast_syscall+0x0/0x2c) r7:00000015 r6:00000000 r5:c0ed0000 r4:00084050 Code: bf012734 e1a0c00d e92dd810 e24cb004 (e5900000)
---
fs/ubifs/build.c +5 -3
@@ -323,7 +323,7 @@ static int alloc_wbufs(struct ubifs_info *c)if (err)return err; - c->jheads[i].wbuf.sync_callback = &bud_wbuf_callback; + c->jheads[i].wbuf.sync_callback = &bud_wbuf_callback; c->jheads[i].wbuf.jhead = i; }
@@ -962,10 +962,12 @@ static int open_ubi(struct ubifs_info *c, const char *name, int mode) c->ubi =ubi_open_volume_nm (dev, ++endptr, mode);if (IS_ERR (c->ubi))return PTR_ERR (c->ubi); - }else -return -EINVAL ; + } } +if (!c->ubi) +return -EINVAL ; +ubi_get_volume_info (c->ubi, &c->vi);ubi_get_device_info (c->vi.ubi_num, &c->di);return 0 ;
Quoted 53 lines · Kyungmin Park
Also remove white space
/ # mount -t ubifs ubiubifs /tmp
Unable to handle kernel NULL pointer dereference at virtual address 00000000 pgd = c783c000 [00000000] *pgd=8786d031, *pte=00000000, *ppte=00000000 Internal error: Oops: 17 [#1] Modules linked in: ubifs ubi CPU: 0 Not tainted (2.6.23 #15) PC is at ubi_get_volume_info+0xc/0x84 [ubi] LR is at ubifs_get_sb+0x4c0/0xfe4 [ubifs] pc : [<bf0038c8>] lr : [<bf017f58>] psr: 60000013sp :
c783bcfcip :c783bd10fp :c783bd0c
r10:bf03dc70r9 :c7e1d000r8 :c7e1d37c
r7 :c7e1d374r6 :c7e1d0a0r5 :c02b0534r4 : 00000000 r3 : 00000002 r2 : 00000075 r1 :c7e1d330r0 : 00000000
Flags: nZCv IRQs on FIQs on ModeSVC_32ISA ARM Segment user
Control:00c5387fTable:8783c000DAC: 00000015 Process mount (pid: 283, stack limit =0xc783a258)Stack: (0xc783bcfc to 0xc783c000) Backtrace: [<bf0038bc>] (ubi_get_volume_info+0x0/0x84 [ubi]) from [<bf017f58>] (ubifs_get_) r4:00000000 [<bf017a98>] (ubifs_get_sb+0x0/0xfe4 [ubifs]) from [<c0083c10>] (vfs_kern_mount) [<c0083bb0>] (vfs_kern_mount+0x0/0xc0) from [<c0083cb8>] (do_kern_mount+0x48/0x) r8:c7f4b000 r7:bf03d66c r6:c7899000 r5:c78ee000 r4:00000000 [<c0083c70>] (do_kern_mount+0x0/0xf4) from [<c0099d24>] (do_mount+0x604/0x640) r8:00000000 r7:00000000 r6:c7f97000 r5:c78ee000 r4:00000000 [<c0099720>] (do_mount+0x0/0x640) from [<c009a078>] (sys_mount+0xa4/0xec) [<c0099fd4>] (sys_mount+0x0/0xec) from [<c001ee40>] (ret_fast_syscall+0x0/0x2c) r7:00000015 r6:00000000 r5:c0ed0000 r4:00084050 Code: bf012734 e1a0c00d e92dd810 e24cb004 (e5900000)Signed-off-by Kyungmin Park <[email protected]>---
fs/ubifs/build.c +1
-2@@ -323,7 +323,7 @@ static int alloc_wbufs(struct ubifs_info *c)if (err)return err; - c->jheads[i].wbuf.sync_callback = &bud_wbuf_callback; + c->jheads[i].wbuf.sync_callback = &bud_wbuf_callback; c->jheads[i].wbuf.jhead = i; }@@ -962,10 +962,12 @@ static int open_ubi(struct ubifs_info *c, const char *name, int mode) c->ubi =ubi_open_volume_nm (dev, ++endptr, mode);if (IS_ERR (c->ubi))return PTR_ERR (c->ubi); - }else
fs/ubifs/build.c static int open_ubi(struct ubifs_info *c, const char *name, int mode) · line 973
Quoted 10 lines
fs/ubifs/build.c +4
-1-return -EINVAL ; + } } +if (!c->ubi) +return -EINVAL ; +ubi_get_volume_info (c->ubi, &c->vi);ubi_get_device_info (c->vi.ubi_num, &c->di);return 0 ;
Thank you