Commit a159aaa3 authored by Ralf Baechle's avatar Ralf Baechle Committed by David S. Miller
Browse files

[AX.25]: Fix unchecked rose_add_loopback_node uses

parent a4282717
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -93,20 +93,34 @@ static int rose_rebuild_header(struct sk_buff *skb)
static int rose_set_mac_address(struct net_device *dev, void *addr)
{
	struct sockaddr *sa = addr;
	int err;

	if (!memcpy(dev->dev_addr, sa->sa_data, dev->addr_len))
		return 0;

	if (dev->flags & IFF_UP) {
		err = rose_add_loopback_node((rose_address *)dev->dev_addr);
		if (err)
			return err;

		rose_del_loopback_node((rose_address *)dev->dev_addr);
	}

	memcpy(dev->dev_addr, sa->sa_data, dev->addr_len);

	rose_add_loopback_node((rose_address *)dev->dev_addr);

	return 0;
}

static int rose_open(struct net_device *dev)
{
	int err;

	err = rose_add_loopback_node((rose_address *)dev->dev_addr);
	if (err)
		return err;

	netif_start_queue(dev);
	rose_add_loopback_node((rose_address *)dev->dev_addr);

	return 0;
}