From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S938756AbcIWKQL (ORCPT ); Fri, 23 Sep 2016 06:16:11 -0400 Received: from smtp02.citrix.com ([66.165.176.63]:44839 "EHLO SMTP02.CITRIX.COM" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932127AbcIWKQJ (ORCPT ); Fri, 23 Sep 2016 06:16:09 -0400 X-IronPort-AV: E=Sophos;i="5.30,381,1470700800"; d="scan'208";a="388429153" Subject: Re: [Xen-devel] [PATCH v3 2/3] xen/pciback: avoid multiple entries in slot list To: Boris Ostrovsky , Juergen Gross , , References: <1474533941-6976-1-git-send-email-jgross@suse.com> <1474533941-6976-3-git-send-email-jgross@suse.com> CC: From: David Vrabel Message-ID: <57E500C3.1000209@citrix.com> Date: Fri, 23 Sep 2016 11:15:31 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-DLP: MIA2 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 22/09/16 22:02, Boris Ostrovsky wrote: > On 09/22/2016 04:45 AM, Juergen Gross wrote: >> The Xen pciback driver has a list of all pci devices it is ready to >> seize. There is no check whether a to be added entry already exists. >> While this might be no problem in the common case it might confuse >> those which consume the list via sysfs. >> >> Modify the handling of this list by not adding an entry which already >> exists. As this will be needed later split out the list handling into >> a separate function. >> >> Signed-off-by: Juergen Gross >> --- >> drivers/xen/xen-pciback/pci_stub.c | 39 ++++++++++++++++++++++++++++++-------- >> 1 file changed, 31 insertions(+), 8 deletions(-) >> >> diff --git a/drivers/xen/xen-pciback/pci_stub.c b/drivers/xen/xen-pciback/pci_stub.c >> index 79a9e4d..0179333 100644 >> --- a/drivers/xen/xen-pciback/pci_stub.c >> +++ b/drivers/xen/xen-pciback/pci_stub.c >> @@ -478,6 +478,36 @@ static int __init pcistub_init_devices_late(void) >> return 0; >> } >> >> +static void pcistub_device_id_add_list(struct pcistub_device_id *new, >> + int domain, int bus, unsigned int devfn) I think this should allocate the new pcistub_device_id if needed. You can pass in GFP flags if needed. Then it can return the newly allocated one, or the existing one. static struct pcistub_device_id *pcistub_device_id_add_list( int domain, int bus, unsigned int devfn) David