# HG changeset patch # User Florian Pose # Date 1320828958 -3600 # Node ID 6a0296e7d1cdfb305b96d22023d547f776a56330 # Parent 5bb7df22ced26cc8fa420e9e651c75032965f0d6 Fixed null pointer dereference on loading e100 driver for 2.6.32. diff -r 5bb7df22ced2 -r 6a0296e7d1cd devices/e100-2.6.32-ethercat.c --- a/devices/e100-2.6.32-ethercat.c Fri Nov 04 13:19:03 2011 +0100 +++ b/devices/e100-2.6.32-ethercat.c Wed Nov 09 09:55:58 2011 +0100 @@ -2984,18 +2984,15 @@ // offer device to EtherCAT master module nic->ecdev = ecdev_offer(netdev, e100_ec_poll, THIS_MODULE); - if (nic->ecdev) { - if (ecdev_open(nic->ecdev)) { - ecdev_withdraw(nic->ecdev); - goto err_out_free; - } - } else { + + if (!nic->ecdev) { strcpy(netdev->name, "eth%d"); if((err = register_netdev(netdev))) { DPRINTK(PROBE, ERR, "Cannot register net device, aborting.\n"); goto err_out_free; } } + nic->cbs_pool = pci_pool_create(netdev->name, nic->pdev, nic->params.cbs.count * sizeof(struct cb), @@ -3005,6 +3002,13 @@ (unsigned long long)pci_resource_start(pdev, use_io ? 1 : 0), pdev->irq, netdev->dev_addr); + if (nic->ecdev) { + if (ecdev_open(nic->ecdev)) { + ecdev_withdraw(nic->ecdev); + goto err_out_free; + } + } + return 0; err_out_free: