From owner-freebsd-net@FreeBSD.ORG Tue Jan 27 22:36:02 2015 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5AF5E30A; Tue, 27 Jan 2015 22:36:02 +0000 (UTC) Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0136.outbound.protection.outlook.com [157.56.111.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "mail.protection.outlook.com", Issuer "MSIT Machine Auth CA 2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B650D6C6; Tue, 27 Jan 2015 22:36:01 +0000 (UTC) Received: from CO2PR05MB761.namprd05.prod.outlook.com (10.141.227.13) by CO2PR05MB761.namprd05.prod.outlook.com (10.141.227.13) with Microsoft SMTP Server (TLS) id 15.1.65.19; Tue, 27 Jan 2015 21:03:10 +0000 Received: from CO2PR05MB761.namprd05.prod.outlook.com ([10.141.227.13]) by CO2PR05MB761.namprd05.prod.outlook.com ([10.141.227.13]) with mapi id 15.01.0065.013; Tue, 27 Jan 2015 21:03:10 +0000 From: Sreekanth Rupavatharam To: Adrian Chadd , Jack Vogel Subject: Re: Double cleanup in igb_attach Thread-Topic: Double cleanup in igb_attach Thread-Index: AQHQOcQ8M6DG1/D37kKlfeofCj44QJzUW0EA//+AdgCAAIzTgIAAAX8YgAAA4YCAAAQUE4AAAPkAgAADSgD//3xmgA== Date: Tue, 27 Jan 2015 21:03:10 +0000 Message-ID: References: <20150127192814.GA63990@strugglingcoder.info> <26266AD2-4743-4A7B-A87D-F68E2E2425A0@juniper.net> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/14.4.7.141117 x-originating-ip: [66.129.239.13] authentication-results: freebsd.org; dkim=none (message not signed) header.d=none;freebsd.org; dmarc=none action=none header.from=juniper.net; x-dmarcaction-test: None x-microsoft-antispam: BCL:0;PCL:0;RULEID:(3005004);SRVR:CO2PR05MB761; x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:;SRVR:CO2PR05MB761; x-forefront-prvs: 046985391D x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(41574002)(51704005)(479174004)(164054003)(24454002)(377454003)(106116001)(83506001)(2656002)(46102003)(99286002)(19580395003)(93886004)(87936001)(19580405001)(15975445007)(102836002)(77156002)(1720100001)(62966003)(86362001)(77096005)(2950100001)(76176999)(50986999)(54356999)(36756003)(40100003)(66066001)(2900100001)(122556002)(92566002)(6606295002); DIR:OUT; SFP:1102; SCL:1; SRVR:CO2PR05MB761; H:CO2PR05MB761.namprd05.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; Content-Type: text/plain; charset="us-ascii" Content-ID: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: juniper.net X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jan 2015 21:03:10.3126 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR05MB761 Cc: "jfv@freebsd.org" , "freebsd-net@freebsd.org" , hiren panchasara X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jan 2015 22:36:02 -0000 Done, I have also attached the patch in the bug report. -- Thanks, Sreekanth On 1/27/15, 12:54 PM, "Adrian Chadd" wrote: >Hi! > >Sreekanth - this does look like it is valid and needs fixing. Just >file a FreeBSD PR (bugs.freebsd.org/submit/) and we'll assign it to >the intel team. > >Thanks! > > >-a > > >On 27 January 2015 at 12:42, Jack Vogel wrote: >> Yes, I will look them over. >> >> Jack >> >> >> On Tue, Jan 27, 2015 at 12:38 PM, Sreekanth Rupavatharam < >> rupavath@juniper.net> wrote: >> >>> Thanks jack, >>> Now, can you please review these changes? And commit if you deem >>>it >>> fit? >>> >>> Thanks, >>> >>> -Sreekanth >>> >>> On Jan 27, 2015, at 12:24 PM, "Jack Vogel" wrote: >>> >>> Errrr, I am one of those people :) (jack.vogel@intel.com) >>> >>> Jack >>> >>> >>> On Tue, Jan 27, 2015 at 12:21 PM, Sreekanth Rupavatharam < >>> rupavath@juniper.net> wrote: >>> >>>> Definitely, but I didn't have the contact info of those people. >>>> >>>> Thanks, >>>> >>>> -Sreekanth >>>> >>>> On Jan 27, 2015, at 12:15 PM, "Jack Vogel" wrote: >>>> >>>> If you want something committed to an Intel driver, asking Intel >>>>might >>>> be the >>>> courteous thing to do, don't you think? >>>> >>>> Jack >>>> >>>> >>>> On Tue, Jan 27, 2015 at 11:51 AM, Sreekanth Rupavatharam < >>>> rupavath@juniper.net> wrote: >>>> >>>>> Hiren, >>>>> Can you help commit this? >>>>> >>>>> Index: if_igb.c >>>>> >>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>> >>>>> --- if_igb.c (revision 298053) >>>>> >>>>> +++ if_igb.c (working copy) >>>>> >>>>> @@ -723,7 +723,8 @@ igb_attach(device_t dev) >>>>> >>>>> return (0); >>>>> >>>>> >>>>> >>>>> err_late: >>>>> >>>>> - igb_detach(dev); >>>>> >>>>> + if(igb_detach(dev) =3D=3D 0) /* igb_detach did the cleanup */ >>>>> >>>>> + return(error); >>>>> >>>>> igb_free_transmit_structures(adapter); >>>>> >>>>> igb_free_receive_structures(adapter); >>>>> >>>>> igb_release_hw_control(adapter); >>>>> >>>>> -- Thanks, >>>>> >>>>> Sreekanth >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On 1/27/15, 11:28 AM, "hiren panchasara" >>>>> >>>>> wrote: >>>>> >>>>> + Jack >>>>> On Tue, Jan 27, 2015 at 12:00:19AM +0000, Sreekanth Rupavatharam >>>>>wrote: >>>>> >>>>> Apologies if this is not the right forum. In igb_attach function, we >>>>> have this code. >>>>> err_late: >>>>> igb_detach(dev); >>>>> igb_free_transmit_structures(adapter); >>>>> igb_free_receive_structures(adapter); >>>>> igb_release_hw_control(adapter); >>>>> err_pci: >>>>> igb_free_pci_resources(adapter); >>>>> if (adapter->ifp !=3D NULL) >>>>> if_free(adapter->ifp); >>>>> free(adapter->mta, M_DEVBUF); >>>>> IGB_CORE_LOCK_DESTROY(adapter); >>>>> The problem is that igb_detach also does the same cleanup in it?s >>>>> body. Only exception is this case where it just returns EBUSY >>>>> /* Make sure VLANS are not using driver */ >>>>> if (if_vlantrunkinuse(ifp)) { >>>>> device_printf(dev,"Vlan in use, detach first\n"); >>>>> return (EBUSY); >>>>> } >>>>> I think the code in igb_attach should be changed to free up >>>>>resources >>>>> only if the igb_detach returns an error. Here?s the patch for it. >>>>> Index: if_igb.c >>>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>>> --- if_igb.c (revision 298025) >>>>> +++ if_igb.c (working copy) >>>>> @@ -723,7 +723,8 @@ igb_attach(device_t dev) >>>>> return (0); >>>>> err_late: >>>>> - igb_detach(dev); >>>>> + if(igb_detach(dev) =3D=3D 0) /* igb_detach did the cleanup */ >>>>> + return; >>>>> igb_free_transmit_structures(adapter); >>>>> Can anyone comment on it and tell me if my understanding is >>>>> incorrect? >>>>> >>>>> >>>>> Seems reasonable to me at the first glance. >>>>> >>>>> We need to call IGB_CORE_LOCK_DESTROY(adapter) before returning >>>>>though. >>>>> >>>>> cheers, >>>>> Hiren >>>>> >>>>> >>>> >>> >> _______________________________________________ >> freebsd-net@freebsd.org mailing list >> http://lists.freebsd.org/mailman/listinfo/freebsd-net >> To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"