diff options
-rw-r--r-- | drivers/scsi/fcoe/fcoe.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c index 17ce2efc3c19..b15ec996b477 100644 --- a/drivers/scsi/fcoe/fcoe.c +++ b/drivers/scsi/fcoe/fcoe.c | |||
@@ -266,6 +266,7 @@ static int fcoe_interface_setup(struct fcoe_interface *fcoe, | |||
266 | if ((netdev->priv_flags & IFF_MASTER_ALB) || | 266 | if ((netdev->priv_flags & IFF_MASTER_ALB) || |
267 | (netdev->priv_flags & IFF_SLAVE_INACTIVE) || | 267 | (netdev->priv_flags & IFF_SLAVE_INACTIVE) || |
268 | (netdev->priv_flags & IFF_MASTER_8023AD)) { | 268 | (netdev->priv_flags & IFF_MASTER_8023AD)) { |
269 | FCOE_NETDEV_DBG(netdev, "Bonded interfaces not supported\n"); | ||
269 | return -EOPNOTSUPP; | 270 | return -EOPNOTSUPP; |
270 | } | 271 | } |
271 | 272 | ||
@@ -323,6 +324,7 @@ static int fcoe_interface_setup(struct fcoe_interface *fcoe, | |||
323 | static struct fcoe_interface *fcoe_interface_create(struct net_device *netdev) | 324 | static struct fcoe_interface *fcoe_interface_create(struct net_device *netdev) |
324 | { | 325 | { |
325 | struct fcoe_interface *fcoe; | 326 | struct fcoe_interface *fcoe; |
327 | int err; | ||
326 | 328 | ||
327 | fcoe = kzalloc(sizeof(*fcoe), GFP_KERNEL); | 329 | fcoe = kzalloc(sizeof(*fcoe), GFP_KERNEL); |
328 | if (!fcoe) { | 330 | if (!fcoe) { |
@@ -341,7 +343,13 @@ static struct fcoe_interface *fcoe_interface_create(struct net_device *netdev) | |||
341 | fcoe->ctlr.update_mac = fcoe_update_src_mac; | 343 | fcoe->ctlr.update_mac = fcoe_update_src_mac; |
342 | fcoe->ctlr.get_src_addr = fcoe_get_src_mac; | 344 | fcoe->ctlr.get_src_addr = fcoe_get_src_mac; |
343 | 345 | ||
344 | fcoe_interface_setup(fcoe, netdev); | 346 | err = fcoe_interface_setup(fcoe, netdev); |
347 | if (err) { | ||
348 | fcoe_ctlr_destroy(&fcoe->ctlr); | ||
349 | kfree(fcoe); | ||
350 | dev_put(netdev); | ||
351 | return NULL; | ||
352 | } | ||
345 | 353 | ||
346 | return fcoe; | 354 | return fcoe; |
347 | } | 355 | } |