From: AMEET M. PARANJAPE <aparanja@redhat.com> Date: Wed, 4 Mar 2009 09:57:35 -0500 Subject: [net] ehea: remove adapter from list in error path Message-id: 20090304145547.31816.37104.sendpatchset@squad5-lp1.lab.bos.redhat.com O-Subject: [PATCH RHEL5.4 BZ488254] ehea: Fix: Remove adapter from adapter list in error path Bugzilla: 488254 RH-Acked-by: Andy Gospodarek <gospo@redhat.com> RHBZ#: ====== https://bugzilla.redhat.com/show_bug.cgi?id=488254 Description: =========== There is a problem in the HEA driver error path. The adapter data structure is added to a list and in error case this data structure is freed but not removed from the list. This causes the kernel to produce a stack trace later on in case the error path was entered. RHEL Version Found: ================ RHEL 5.3 kABI Status: ============ No symbols were harmed. Brew: ===== Built on all platforms. http://brewweb.devel.redhat.com/brew/taskinfo?taskID=1712428 Upstream Status: ================ http://git.kernel.org/?p=linux/kernel/git/davem/net-next-2.6.git;a=commit;h=51621fbdb1ea8709ab67170b54e71be6d9fa29ad Test Status: ============ Without this patch the stack trace is produced consistently. The stack trace error is not seen with the patch applied. The patch has passed the following stress tests as well: - ipv4: ping, flood ping, broadcast ping - ipv6: ping, flood ping, TCP traffic - flood ping with big pakets - ftp tests with large files using 4 connections with TSO on/off - ftp long run using 4 connections with TSO on/off - netpipe - netperf - netperf via IPv6 - netperf using LRO - netperf/udp - vlan ping - multicast basic - dlpar memory add - dlpar port add / remove =============================================================== Ameet Paranjape 978-392-3903 ext 23903 IBM on-site partner Proposed Patch: =============== diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h index feab775..f51c878 100644 --- a/drivers/net/ehea/ehea.h +++ b/drivers/net/ehea/ehea.h @@ -40,7 +40,7 @@ #include <asm/io.h> #define DRV_NAME "ehea" -#define DRV_VERSION "EHEA_0092-01" +#define DRV_VERSION "EHEA_0092-03" /* eHEA capability flags */ #define DLPAR_PORT_ADD_REM 1 diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c index a009c7f..ed5eb78 100644 --- a/drivers/net/ehea/ehea_main.c +++ b/drivers/net/ehea/ehea_main.c @@ -3518,6 +3518,7 @@ out_kill_eq: ehea_destroy_eq(adapter->neq); out_free_ad: + list_del(&adapter->list); kfree(adapter); out: