lkml.org 
[lkml]   [2003]   [Aug]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: segfault when unloading module loop in 2.6.0-test3+ck patches
    From
    Date
    (I'm resending this because I previously had sendmail configuration
    problems. Sorry if you receive this message twice.)

    Martin Sarsale <lists@runa.sytes.net> writes:

    > Dear all: I was playing with the crypto support, and when I tried to
    > unload the module "loop" I got a segfault and after that lsmod hung
    >
    > dmesg says (I'll include the hda lines in case they've something to do):
    >
    > Unable to handle kernel paging request at virtual address 010000bf
    > printing eip:
    > c01d5564
    > *pde = 00000000
    > Oops: 0000 [#1]
    > CPU: 0
    > EIP: 0060:[<c01d5564>] Not tainted
    > EFLAGS: 00210202
    > EIP is at kobject_del+0x34/0x80
    > eax: 0100007f ebx: d5c9f850 ecx: d5c9f850 edx: 0100007f
    > esi: d4f43960 edi: d4f43a24 ebp: 00000880 esp: cf401eec
    > ds: 007b es: 007b ss: 0068
    > Process rmmod (pid: 27599, threadinfo=cf400000 task=caac72b0)
    > Stack: dbfe7ab8 00200282 d654d200 d5c9f850 c01d55c3 d5c9f850 d5c9f800 c023bb8a
    > d5c9f850 d5c9f800 c023f5de d5c9f800 d4f43960 c037b018 c0240523 d4f43960
    > d4f43960 d4f43960 c017fc0d d4f43960 00000000 00000000 c037b018 00000000
    > Call Trace:
    > [<c01d55c3>] kobject_unregister+0x13/0x30
    > [<c023bb8a>] elv_unregister_queue+0x1a/0x40
    > [<c023f5de>] blk_unregister_queue+0x1e/0x60
    > [<c0240523>] unlink_gendisk+0x13/0x40
    > [<c017fc0d>] del_gendisk+0x6d/0xe0
    > [<dcb7a133>] cleanup_module+0x63/0x7e [loop]
    > [<c012f6f9>] sys_delete_module+0x119/0x1a0
    > [<c01427dc>] do_munmap+0x14c/0x190
    > [<c010929b>] syscall_call+0x7/0xb

    I have the same problem in 2.6.0-test3-bk5 when I unload the loop
    module, even when not using any crypto stuff. The patch below fixes
    it:

    linux-petero/drivers/block/loop.c | 3 ++-
    1 files changed, 2 insertions(+), 1 deletion(-)

    diff -puN drivers/block/loop.c~loop-oops-fix drivers/block/loop.c
    --- linux/drivers/block/loop.c~loop-oops-fix 2003-08-17 19:19:22.000000000 +0200
    +++ linux-petero/drivers/block/loop.c 2003-08-17 20:33:03.000000000 +0200
    @@ -1198,6 +1198,7 @@ int __init loop_init(void)
    lo->lo_queue = blk_alloc_queue(GFP_KERNEL);
    if (!lo->lo_queue)
    goto out_mem4;
    + init_timer(&lo->lo_queue->unplug_timer);
    disks[i]->queue = lo->lo_queue;
    init_MUTEX(&lo->lo_ctl_mutex);
    init_MUTEX_LOCKED(&lo->lo_sem);
    @@ -1237,8 +1238,8 @@ void loop_exit(void)
    int i;

    for (i = 0; i < max_loop; i++) {
    - blk_put_queue(loop_dev[i].lo_queue);
    del_gendisk(disks[i]);
    + blk_put_queue(loop_dev[i].lo_queue);
    put_disk(disks[i]);
    }
    devfs_remove("loop");
    _

    --
    Peter Osterlund - petero2@telia.com
    http://w1.894.telia.com/~u89404340
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:47    [W:0.026 / U:60.740 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site