Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp2248259ybl; Sun, 18 Aug 2019 22:02:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqwgkddHN0zmA7l607lc5ARalQMTKqjNZn0f+nfc85qOS0nI5rBN9i4L9f+xqVSlsVd318cs X-Received: by 2002:a17:902:40e:: with SMTP id 14mr21579502ple.323.1566190929447; Sun, 18 Aug 2019 22:02:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566190929; cv=none; d=google.com; s=arc-20160816; b=ksFopfJbLRyGBmXYnoqHdIGAoF0ZsOyY79Tk0/cLuEX4Qc/65uX7bWZDwGy0lCjIyu Pm3BWn6tdqGpY5mtN3wm4XqeVGyJ+O/QPGwCUILgGAiU3GrC7Wi+7sQ7flueEts4JXS1 j2GYSUW35i+HA/H/qFG36DX0mQcT3XWtWsGSvpYAsRu9fn6lM/14+zNs6wzRKLojYhAk AGZLZGzGOowM48a4oI4gAxlWTN6kBW5U4KvEMpPpvCF86EQFlhZ7seZ8PN+QoMdM0wr2 nm0iKqpOmg/ssHnlYQCymCojN6Wsoa/wvZYqUtUkOdJ03oaoWQFiK2Fv+pa4D2WkU0oB GWAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=SJQULEh9OiI4wI5LelxKErCulun1I5P8DfD5E64u8Vg=; b=H81E3sxzDHYeugBiCfPQwMdb6DHaanUavV8h53vtDfguxykxumkPVJiQjqjwYEJ96b Z5TnhP3pI/DAaOV0BUmojQxvSKjhXIgoq38bAajEQwFKJ30DBG3XgoTdnrKOU1x9gnZl 1b3Hlz6vToATbc4/tYfkT7avLm14VzPSQvIG+x3/js9k+roENCHbqUnre3X/1/OL+bm2 dOnFmgrJ6ypiGW1kBXxn6PXINJuF9FZPa4gOgowYp7YUUYpnJI2xvkXu7DAgNZiEINfw uovjRzLp3oVBXKXx01GaKwuPIhuPwyqxWS0zFjUn+jCGfazv06qmufykbo4JddRUzk7G 6yIw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d7si8899999pgf.377.2019.08.18.22.01.52; Sun, 18 Aug 2019 22:02:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726366AbfHSFBE (ORCPT + 99 others); Mon, 19 Aug 2019 01:01:04 -0400 Received: from mga04.intel.com ([192.55.52.120]:6236 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725871AbfHSFBE (ORCPT ); Mon, 19 Aug 2019 01:01:04 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Aug 2019 22:01:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,403,1559545200"; d="scan'208";a="378074312" Received: from genxtest-ykzhao.sh.intel.com (HELO [10.239.143.71]) ([10.239.143.71]) by fmsmga006.fm.intel.com with ESMTP; 18 Aug 2019 22:01:02 -0700 Subject: Re: [RFC PATCH 11/15] drivers/acrn: add the support of handling emulated ioreq To: Dan Carpenter Cc: linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org, Yin FengWei , Jason Chen CJ , Liu Shuo References: <1565922356-4488-1-git-send-email-yakui.zhao@intel.com> <1565922356-4488-12-git-send-email-yakui.zhao@intel.com> <20190816133511.GC3632@kadam> From: "Zhao, Yakui" Message-ID: <0986d89b-c428-6e66-315c-dc2343ec4699@intel.com> Date: Mon, 19 Aug 2019 12:54:04 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <20190816133511.GC3632@kadam> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2019年08月16日 21:39, Dan Carpenter wrote: > On Fri, Aug 16, 2019 at 10:25:52AM +0800, Zhao Yakui wrote: >> +int acrn_ioreq_create_client(unsigned short vmid, >> + ioreq_handler_t handler, >> + void *client_priv, >> + char *name) >> +{ >> + struct acrn_vm *vm; >> + struct ioreq_client *client; >> + int client_id; >> + >> + might_sleep(); >> + >> + vm = find_get_vm(vmid); >> + if (unlikely(!vm || !vm->req_buf)) { >> + pr_err("acrn-ioreq: failed to find vm from vmid %d\n", vmid); >> + put_vm(vm); >> + return -EINVAL; >> + } >> + >> + client_id = alloc_client(); >> + if (unlikely(client_id < 0)) { >> + pr_err("acrn-ioreq: vm[%d] failed to alloc ioreq client\n", >> + vmid); >> + put_vm(vm); >> + return -EINVAL; >> + } >> + >> + client = acrn_ioreq_get_client(client_id); >> + if (unlikely(!client)) { >> + pr_err("failed to get the client.\n"); >> + put_vm(vm); >> + return -EINVAL; > > Do we need to clean up the alloc_client() allocation? Thanks for the review. The function of acrn_iocreq_get_client is used to return the client for the given client_id. (The ref_count of client is also added). If it is NULL, it indicates that it is already released in another place. In the function of acrn_ioreq_create_client, we don't need to clean up the alloc_client as it always exists in course of creating_client. > > regards, > dan carpenter > >> + } >> + >> + if (handler) { >> + client->handler = handler; >> + client->acrn_create_kthread = true; >> + } >> + >> + client->ref_vm = vm; >> + client->vmid = vmid; >> + client->client_priv = client_priv; >> + if (name) >> + strncpy(client->name, name, sizeof(client->name) - 1); >> + rwlock_init(&client->range_lock); >> + INIT_LIST_HEAD(&client->range_list); >> + init_waitqueue_head(&client->wq); >> + >> + /* When it is added to ioreq_client_list, the refcnt is increased */ >> + spin_lock_bh(&vm->ioreq_client_lock); >> + list_add(&client->list, &vm->ioreq_client_list); >> + spin_unlock_bh(&vm->ioreq_client_lock); >> + >> + pr_info("acrn-ioreq: created ioreq client %d\n", client_id); >> + >> + return client_id; >> +} >