Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752949AbaAFKAu (ORCPT ); Mon, 6 Jan 2014 05:00:50 -0500 Received: from smtp02.citrix.com ([66.165.176.63]:37071 "EHLO SMTP02.CITRIX.COM" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751881AbaAFKAs (ORCPT ); Mon, 6 Jan 2014 05:00:48 -0500 X-IronPort-AV: E=Sophos;i="4.95,611,1384300800"; d="scan'208";a="87825660" Message-ID: <1389002445.13274.23.camel@kazak.uk.xensource.com> Subject: Re: [Xen-devel] [PATCH 26/38] xen: xenbus: add missing put_device call From: Ian Campbell To: David Vrabel CC: Levente Kurusa , Stefano Stabellini , Greg Kroah-Hartman , LKML , , Andrew Morton , Boris Ostrovsky Date: Mon, 6 Jan 2014 10:00:45 +0000 In-Reply-To: <52C56F43.6030804@citrix.com> References: <1387465429-3568-2-git-send-email-levex@linux.com> <1387465429-3568-27-git-send-email-levex@linux.com> <52C56F43.6030804@citrix.com> Organization: Citrix Systems, Inc. Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.4.4-3 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.80.2.80] X-DLP: MIA2 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 2014-01-02 at 13:53 +0000, David Vrabel wrote: > On 19/12/13 15:03, Levente Kurusa wrote: > > This is required so that we give up the last reference to the device. > > > > Signed-off-by: Levente Kurusa > > --- > > drivers/xen/xenbus/xenbus_probe.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/xen/xenbus/xenbus_probe.c b/drivers/xen/xenbus/xenbus_probe.c > > index 3c0a74b..4abb9ee 100644 > > --- a/drivers/xen/xenbus/xenbus_probe.c > > +++ b/drivers/xen/xenbus/xenbus_probe.c > > @@ -465,8 +465,10 @@ int xenbus_probe_node(struct xen_bus_type *bus, > > > > /* Register with generic device framework. */ > > err = device_register(&xendev->dev); > > - if (err) > > + if (err) { > > + put_device(&xendev->dev); > > goto fail; > > + } > > > > return 0; > > fail: > > There is a kfree(xendev) here so this introduces a double-free. How? put_device doesn't touch xendev itself, does it? It just drops the ref on the dev member which is not separately dynamically allocated and so not freed either. Ian. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/