From 98a61a827c35e74509c7ffe019b97b420e37ffa9 Mon Sep 17 00:00:00 2001 From: Jiri Pirko Date: Fri, 8 May 2009 13:30:17 +0000 Subject: [PATCH] --- yaml --- r: 150203 b: refs/heads/master c: ab9c73ccb52f40576ce017528d542eda3c6ae766 h: refs/heads/master i: 150201: 84e0bbf3e193d452f61ceeaff37cfb235923b817 150199: 22e8b73a0851180a4013ea68b4d91f09134c50fc v: v3 --- [refs] | 2 +- trunk/net/core/dev.c | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 26d0d0726ed4..ece2c9323f36 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9948bb6a6db6ad6a8bf2ccaaceb780404f1f43df +refs/heads/master: ab9c73ccb52f40576ce017528d542eda3c6ae766 diff --git a/trunk/net/core/dev.c b/trunk/net/core/dev.c index 637ea71b0a0d..14dd725aaab7 100644 --- a/trunk/net/core/dev.c +++ b/trunk/net/core/dev.c @@ -5007,13 +5007,16 @@ struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name, if (!tx) { printk(KERN_ERR "alloc_netdev: Unable to allocate " "tx qdiscs.\n"); - kfree(p); - return NULL; + goto free_p; } dev = (struct net_device *) (((long)p + NETDEV_ALIGN_CONST) & ~NETDEV_ALIGN_CONST); dev->padded = (char *)dev - (char *)p; + + if (dev_addr_init(dev)) + goto free_tx; + dev_net_set(dev, &init_net); dev->_tx = tx; @@ -5022,13 +5025,19 @@ struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name, dev->gso_max_size = GSO_MAX_SIZE; - dev_addr_init(dev); netdev_init_queues(dev); INIT_LIST_HEAD(&dev->napi_list); setup(dev); strcpy(dev->name, name); return dev; + +free_tx: + kfree(tx); + +free_p: + kfree(p); + return NULL; } EXPORT_SYMBOL(alloc_netdev_mq);