diff options
author | David S. Miller <davem@davemloft.net> | 2013-07-03 17:50:41 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-07-03 17:55:13 -0400 |
commit | 0c1072ae0242fbdffd9a0bba36e7a7033d287f9c (patch) | |
tree | e0f4dbdbf5078d4a707911177e7bdc17a70bdce5 /drivers/net/wan/dlci.c | |
parent | c50cd357887acf9fd7af3a5d492911bd825555a2 (diff) | |
parent | 8bb495e3f02401ee6f76d1b1d77f3ac9f079e376 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/net/ethernet/freescale/fec_main.c
drivers/net/ethernet/renesas/sh_eth.c
net/ipv4/gre.c
The GRE conflict is between a bug fix (kfree_skb --> kfree_skb_list)
and the splitting of the gre.c code into seperate files.
The FEC conflict was two sets of changes adding ethtool support code
in an "!CONFIG_M5272" CPP protected block.
Finally the sh_eth.c conflict was between one commit add bits set
in the .eesr_err_check mask whilst another commit removed the
.tx_error_check member and assignments.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wan/dlci.c')
-rw-r--r-- | drivers/net/wan/dlci.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/drivers/net/wan/dlci.c b/drivers/net/wan/dlci.c index 70ac59929f80..0d1c7592efa0 100644 --- a/drivers/net/wan/dlci.c +++ b/drivers/net/wan/dlci.c | |||
@@ -384,21 +384,37 @@ static int dlci_del(struct dlci_add *dlci) | |||
384 | struct frad_local *flp; | 384 | struct frad_local *flp; |
385 | struct net_device *master, *slave; | 385 | struct net_device *master, *slave; |
386 | int err; | 386 | int err; |
387 | bool found = false; | ||
388 | |||
389 | rtnl_lock(); | ||
387 | 390 | ||
388 | /* validate slave device */ | 391 | /* validate slave device */ |
389 | master = __dev_get_by_name(&init_net, dlci->devname); | 392 | master = __dev_get_by_name(&init_net, dlci->devname); |
390 | if (!master) | 393 | if (!master) { |
391 | return -ENODEV; | 394 | err = -ENODEV; |
395 | goto out; | ||
396 | } | ||
397 | |||
398 | list_for_each_entry(dlp, &dlci_devs, list) { | ||
399 | if (dlp->master == master) { | ||
400 | found = true; | ||
401 | break; | ||
402 | } | ||
403 | } | ||
404 | if (!found) { | ||
405 | err = -ENODEV; | ||
406 | goto out; | ||
407 | } | ||
392 | 408 | ||
393 | if (netif_running(master)) { | 409 | if (netif_running(master)) { |
394 | return -EBUSY; | 410 | err = -EBUSY; |
411 | goto out; | ||
395 | } | 412 | } |
396 | 413 | ||
397 | dlp = netdev_priv(master); | 414 | dlp = netdev_priv(master); |
398 | slave = dlp->slave; | 415 | slave = dlp->slave; |
399 | flp = netdev_priv(slave); | 416 | flp = netdev_priv(slave); |
400 | 417 | ||
401 | rtnl_lock(); | ||
402 | err = (*flp->deassoc)(slave, master); | 418 | err = (*flp->deassoc)(slave, master); |
403 | if (!err) { | 419 | if (!err) { |
404 | list_del(&dlp->list); | 420 | list_del(&dlp->list); |
@@ -407,8 +423,8 @@ static int dlci_del(struct dlci_add *dlci) | |||
407 | 423 | ||
408 | dev_put(slave); | 424 | dev_put(slave); |
409 | } | 425 | } |
426 | out: | ||
410 | rtnl_unlock(); | 427 | rtnl_unlock(); |
411 | |||
412 | return err; | 428 | return err; |
413 | } | 429 | } |
414 | 430 | ||