Re: crash on CONFIG_CFAG12864B=y in 2.6.20-rc3-mm1

From: Miguel Ojeda
Date: Thu Feb 01 2007 - 12:13:27 EST


On 2/1/07, Daniel Walker <dwalker@xxxxxxxxxx> wrote:
On Thu, 2007-02-01 at 16:16 +0100, Miguel Ojeda wrote:
> The problem is easy:
>
> ks0108_init() prints the error message and exit with -EINVAL, so the
> module isn't loaded properly.
>
> However, cfag12864b_init() is called, although ks0108 failed. It
> returns 0 and after a while cfag12864b calls ks0108_writecontrol()
> which dereferences the uninitialized pointer ks0108_parport:
>
> parport_write_control(ks0108_parport, byte ^ (bit(0) | bit(1) | bit(3)));
>
> Why is cfag12864b_init() called if ks0108 module didn't load properly?
> Is that normal? If so, how a module should alarm other modules about
> it failed loading?

I don't know if this matters, but I had this driver built-in , and not a
module ..

Daniel



Well, I use the word "module" for both cases: When I modprobe
cfag12864b, if ks0108 fails, it doesn't get linked. So I thought the
same happen for built-in drivers (in other words, I didn't think
cfag12864b would be linked if ks0108 failed).

So I'm waiting until someone tell me what is the right way to avoid
drivers like cfag12864b been inited if their dependencies failed.

Anyway, thanks for discovering the bug (I wouldn't have discovered it
as my motherboard has parallel port ;).

Miguel

--
Miguel Ojeda
http://maxextreme.googlepages.com/index.htm
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/