In the function netxen_pinit_from_rom there is this code... buf = kcalloc(n, sizeof(struct crb_addr_pair), GFP_KERNEL); if (buf == NULL) { printk("%s: netxen_pinit_from_rom: Unable to calloc memory.\n", netxen_nic_driver_name); return -ENOMEM; } for (i = 0; i < n; i++) { if (netxen_rom_fast_read(adapter, 8*i + 4*offset, &val) != 0 || netxen_rom_fast_read(adapter, 8*i + 4*offset + 4, &addr) != 0) return -EIO; There should be a kfree of buf before the "return -EIO". This bug was found with cppcheck - http://cppcheck.wiki.sourceforge.net/
Patch submitted and applied