From db7a839aa7cb5c57d2a1155a82ac1f13f1f7f740 Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Thu, 14 Dec 2006 15:50:34 -0800 Subject: [PATCH] --- yaml --- r: 44655 b: refs/heads/master c: 81dcd1690697efbdf8126e78fbbf7c76d359377f h: refs/heads/master i: 44653: 913dfd8b3e93068a474cec1f7d55add54550adc0 44651: b268bcb4213002b814c45ca8fadb9f709384c3b3 44647: 435294722825db5bc30a2fbb238f63a045abf647 44639: 5a993ac7d8ee5453103ed236c58a8bccb1e3fce3 v: v3 --- [refs] | 2 +- trunk/net/ax25/ax25_iface.c | 7 ++++--- trunk/net/netrom/nr_dev.c | 24 ++++++++++++++++++------ trunk/net/rose/af_rose.c | 3 ++- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/[refs] b/[refs] index 46727b04973e..b61d1ba56fec 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8d5cf596d10d740b69b5f4bbdb54b85abf75810d +refs/heads/master: 81dcd1690697efbdf8126e78fbbf7c76d359377f diff --git a/trunk/net/ax25/ax25_iface.c b/trunk/net/ax25/ax25_iface.c index dd9b7fee3df8..51e293420b7f 100644 --- a/trunk/net/ax25/ax25_iface.c +++ b/trunk/net/ax25/ax25_iface.c @@ -154,7 +154,7 @@ int ax25_listen_register(ax25_address *callsign, struct net_device *dev) return 0; if ((listen = kmalloc(sizeof(*listen), GFP_ATOMIC)) == NULL) - return 0; + return -ENOMEM; listen->callsign = *callsign; listen->dev = dev; @@ -164,7 +164,7 @@ int ax25_listen_register(ax25_address *callsign, struct net_device *dev) listen_list = listen; spin_unlock_bh(&listen_lock); - return 1; + return 0; } EXPORT_SYMBOL(ax25_listen_register); @@ -225,7 +225,8 @@ int ax25_listen_mine(ax25_address *callsign, struct net_device *dev) spin_lock_bh(&listen_lock); for (listen = listen_list; listen != NULL; listen = listen->next) - if (ax25cmp(&listen->callsign, callsign) == 0 && (listen->dev == dev || listen->dev == NULL)) { + if (ax25cmp(&listen->callsign, callsign) == 0 && + (listen->dev == dev || listen->dev == NULL)) { spin_unlock_bh(&listen_lock); return 1; } diff --git a/trunk/net/netrom/nr_dev.c b/trunk/net/netrom/nr_dev.c index 9b8eb54971ab..4700d5225b78 100644 --- a/trunk/net/netrom/nr_dev.c +++ b/trunk/net/netrom/nr_dev.c @@ -128,25 +128,37 @@ static int nr_header(struct sk_buff *skb, struct net_device *dev, unsigned short return -37; } -static int nr_set_mac_address(struct net_device *dev, void *addr) +static int __must_check nr_set_mac_address(struct net_device *dev, void *addr) { struct sockaddr *sa = addr; + int err; + + if (!memcmp(dev->dev_addr, sa->sa_data, dev->addr_len)) + return 0; + + if (dev->flags & IFF_UP) { + err = ax25_listen_register((ax25_address *)sa->sa_data, NULL); + if (err) + return err; - if (dev->flags & IFF_UP) ax25_listen_release((ax25_address *)dev->dev_addr, NULL); + } memcpy(dev->dev_addr, sa->sa_data, dev->addr_len); - if (dev->flags & IFF_UP) - ax25_listen_register((ax25_address *)dev->dev_addr, NULL); - return 0; } static int nr_open(struct net_device *dev) { + int err; + + err = ax25_listen_register((ax25_address *)dev->dev_addr, NULL); + if (err) + return err; + netif_start_queue(dev); - ax25_listen_register((ax25_address *)dev->dev_addr, NULL); + return 0; } diff --git a/trunk/net/rose/af_rose.c b/trunk/net/rose/af_rose.c index 1605069e5db1..09f8a06bf806 100644 --- a/trunk/net/rose/af_rose.c +++ b/trunk/net/rose/af_rose.c @@ -1314,7 +1314,8 @@ static int rose_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) if (copy_from_user(&rose_callsign, argp, sizeof(ax25_address))) return -EFAULT; if (ax25cmp(&rose_callsign, &null_ax25_address) != 0) - ax25_listen_register(&rose_callsign, NULL); + return ax25_listen_register(&rose_callsign, NULL); + return 0; case SIOCRSGL2CALL: