Re: Kernel Oops on device_create

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Peter Teoh wrote:
> On Mon, Jan 12, 2009 at 5:43 AM, Frank Thieme <frank@xxxxxxxxxxx> wrote:
>> Unable to handle kernel NULL pointer dereference at virtual address 00000000
>> pgd = c349c000
>>     
>
> my guess:   some structures not properly initialized before accessing it?
>   
Somewhat like that ist my guess, too. But I didn't see where...

>> Backtrace:
>> [<c0109a04>] (vsnprintf+0x0/0x5c8) from [<c012c698>]
>> (device_create+0x78/0xb4)
>> [<c012c624>] (device_create+0x4/0xb4) from [<bf000368>]
>> (init_module+0x14c/0x1f)
>>     
This leads to vsnprintf which is called in the 2.6.22 and the 2.6.27
version...
> and because u mentioned it worked in later kernel, so why not take the
> diff between device_create() between the two kernel versions and
> analyze from there:
>   
I looked there already. The only difference seemed to me the way the
kernel handles the "fmt, ..." args. In 2.6.22 all is handled in
device_create() whereas in 2.6.27 this is handled in device_create and
vsnprintf is called in device_create_vargs().
> my analysis is that both version have the same initialization in
> device_create() implementation except for
>
>         dev->devt = devt;
>         dev->class = class;
>         dev->parent = parent;
>         dev->release = device_create_release;
>         dev_set_drvdata(dev, drvdata);=============> this is NOT done in 2.6.22.
>
>         vsnprintf(dev->bus_id, BUS_ID_SIZE, fmt, args);
>         retval = device_register(dev);
>
>
> So what if u add this into the 2.6.22 - does it solve the problem?
>   
dev_set_drvdata() does

static inline void dev_set_drvdata(struct device *dev, void *data)
{
        dev->driver_data = data;
}

this shouldn't do any difference in the vsnprintf() call, should it?

Bye...Frank


--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux