Hi:
Here is the version that moves the necessary code above register_netdev
instead of using init. It's against netdev-2.6.
> Feb 15 18:26:20 saturno kernel: Unable to handle kernel NULL pointer
> dereference at virtual address 0000000e
> Feb 15 18:26:20 saturno kernel: printing eip:
> Feb 15 18:26:20 saturno kernel: e1113417
> Feb 15 18:26:20 saturno kernel: *pde = 00000000
> Feb 15 18:26:20 saturno kernel: Oops: 0000 [#1]
> Feb 15 18:26:20 saturno kernel: PREEMPT
> Feb 15 18:26:20 saturno kernel: Modules linked in: sis900 nvidia 8250_pci 8250
> serial_core psmouse
> Feb 15 18:26:20 saturno kernel: CPU: 0
> Feb 15 18:26:20 saturno kernel: EIP: 0060:[<e1113417>] Tainted: P
> VLI
> Feb 15 18:26:20 saturno kernel: EFLAGS: 00010296 (2.6.10-M7)
> Feb 15 18:26:20 saturno kernel: EIP is at sis900_check_mode+0x17/0xa0 [sis900]
OK, this happened because we got preempted before sis900_mii_probe
finished setting the sis_priv->mii. Theoretically this can happen
with SMP as well but I suppose the number of SMP machines with sis900
is fairly small.
Anyway, the fix is to make sure that sis900_mii_probe is done before
the device can be opened. This patch does it by moving the setup
before register_netdevice.
Since the netdev name is not available before register_netdev, I've
changed the relevant printk's to use pci_name instead. Note that
one of those printk's may be called after register_netdev as well.
Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Cheers,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herbert@xxxxxxxxxxxxxxxxxxx>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
p
Description: Text document
|