This has come before, but I have another one. In set_multicast_list(), bond_mc_list_copy() is called passing in GFP_KERNEL as a flag (which then gets pass to kmalloc() ): /* save master's multicast list */ bond_mc_list_destroy (bond); bond_mc_list_copy (master->mc_list, bond, GFP_KERNEL); write_unlock_irqrestore(&bond->lock, flags); Shouldn't the flag be GFP_ATOMIC? Same goes for the kmalloc() call in bond_enslave() if ((new_slave = kmalloc(sizeof(slave_t), GFP_KERNEL)) == NULL) { write_unlock_irqrestore(&bond->lock, flags); return -ENOMEM; } Thanks, Charlie Brett / HP LOSL - : send the line "unsubscribe linux-net" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html