[ENBD] enbd module 2.6.13-15 kernel fails to modprobe or insmod

Norbert Pieroth pieroth.n at zdf.de
Tue Aug 22 02:47:49 MDT 2006


Peter T. Breuer wrote:
> I should add ... 
> 
> 
>>ENBD #5353[0]: enbd_init Enhanced Network Block Device 2.4.30 $Date: 2002/09/17
>>16:33:22 $ by ptb at it.uc3m.es
>>Unable to handle kernel NULL pointer dereference at virtual address 0000033e
>>  printing eip:
> 
> 
> This is in the enbd_init routine, very early on.
> 
> 
>>  [<cd800140>] init_module+0x140/0xdd1 [enbd]
> 
> 
> It's only 300-odd bytes into the routine. Somewhere like here:
> 
>         ENBD_INFO ("Enhanced Network Block Device " ENBD_VERSION " by "
>                   "ptb at it.uc3m.es\n");
> 
>         for (i = 0; i < MAX_NBD; i++) {
> 
>                 struct enbd_device *lo = &enbd_dev[i];
>                 struct gendisk *disk = alloc_disk(ENBD_MAXCONN);
>                 memset (lo, 0, sizeof (*lo));
>                 if (!disk) {
>                         ENBD_ERROR(
>                             "Not enough memory to make a gendisk struct\n");
>                         goto out_nomem;
>                 }
>                 lo->disk = disk;
>                 spin_lock_init(&lo->lock);
>                 disk->queue = blk_init_queue(do_enbd_request, &lo->lock);
>                 if (!disk->queue) {
>                         put_disk(disk);
>                         lo->disk = NULL;
>                         ENBD_ERROR(
>                             "Not enough memory to make a queue struct\n");
>                         goto out_nomem;
>                 }
>                 enbd_init_queue(lo, disk->queue);
>         }
>         if (register_blkdev (major, "nbd")) {
>                 ENBD_ERROR ("Unable to register major number %d for NBD\n",
>                            major);
>                 return -EIO;
>         }
>         ENBD_INFO ("registered device at major %d\n", major);
> 
> It never got to that last line, though it started at the first line OK.
> The only significant kernel functions called are
> 
>     alloc_disk
>     blk_init_queue
>     register_blkdev
> 
> though enbd_init_queue also calls
> 
>     blk_queue_max_sectors
> 
> and if I were to guess (always a bad idea.  without evidence) I would
> guess that one of those interface functions signatures in your kernel
> doesn't match its use here.  It does in my kernel!  (2.6.15.4) You might
> want to reassure me (and yourself) that you are using a vanilla kernel
> and source by downloading one from kernel.org.
> 
> 
> 
> Peter
> 
> 
> 
> _______________________________________________
> ENBD mailing list
> ENBD at lists.community.tummy.com
> http://lists.community.tummy.com/mailman/listinfo/enbd
> 
Hi Peter,
sorry for not responding directly. I was out of the office a few days.
I followed your suggestions by disabling the DEBUG switch and changing
the name of the log function. But it all changed nothing on the behaviour.

As next I've set up a SuSE 10.0 with kernel version 2.6.15.4 from kernel.org.
The build worked, the machine is running nice, but the kernelmodule (enbd.ko) couldn't be loaded.
There was an unknown symbol (enbd: unknown symbol strcpy) in the module.

So I think I'm doing some final tests with nbd. If this doesn't work either
I have to look for another solution.


With kind regards
N.Pieroth


More information about the ENBD mailing list