--- /dev/null
+From 06e9d9f9783860fe4c602ef491f47211804ccc96 Mon Sep 17 00:00:00 2001
+From: Dhananjay Phadke <dhananjay@netxen.com>
+Date: Wed, 14 Jan 2009 20:49:22 -0800
+Subject: netxen: cleanup mac list on driver unload
+Acked-by: Karsten Keil <kkeil@novell.com>
+Reference: bnc#472416
+
+This fixes a tiny memory leak when driver is unloaded. The mac
+address list maintained in netxen_adapter needs to deleted when
+driver is going down.
+
+Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/netxen/netxen_nic.h | 1 +
+ drivers/net/netxen/netxen_nic_hw.c | 13 +++++++++++++
+ drivers/net/netxen/netxen_nic_main.c | 3 +++
+ 3 files changed, 17 insertions(+), 0 deletions(-)
+
+Index: linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic.h
+===================================================================
+--- linux-2.6.27-kketmp.orig/drivers/net/netxen/netxen_nic.h
++++ linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic.h
+@@ -1478,6 +1478,7 @@ int netxen_process_cmd_ring(struct netxe
+ u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctx, int max);
+ void netxen_p2_nic_set_multi(struct net_device *netdev);
+ void netxen_p3_nic_set_multi(struct net_device *netdev);
++void netxen_p3_free_mac_list(struct netxen_adapter *adapter);
+ int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32);
+ int netxen_config_intr_coalesce(struct netxen_adapter *adapter);
+
+Index: linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic_hw.c
+===================================================================
+--- linux-2.6.27-kketmp.orig/drivers/net/netxen/netxen_nic_hw.c
++++ linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic_hw.c
+@@ -627,6 +627,19 @@ int netxen_p3_nic_set_promisc(struct net
+ (struct cmd_desc_type0 *)&req, 1);
+ }
+
++void netxen_p3_free_mac_list(struct netxen_adapter *adapter)
++{
++ nx_mac_list_t *cur, *next;
++
++ cur = adapter->mac_list;
++
++ while (cur) {
++ next = cur->next;
++ kfree(cur);
++ cur = next;
++ }
++}
++
+ #define NETXEN_CONFIG_INTR_COALESCE 3
+
+ /*
+Index: linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic_main.c
+===================================================================
+--- linux-2.6.27-kketmp.orig/drivers/net/netxen/netxen_nic_main.c
++++ linux-2.6.27-kketmp/drivers/net/netxen/netxen_nic_main.c
+@@ -975,6 +975,9 @@ static void __devexit netxen_nic_remove(
+ netxen_free_hw_resources(adapter);
+ netxen_release_rx_buffers(adapter);
+ netxen_free_sw_resources(adapter);
++
++ if (NX_IS_REVISION_P3(adapter->ahw.revision_id))
++ netxen_p3_free_mac_list(adapter);
+ }
+
+ if (adapter->portnum == 0)