Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp3277034ybz; Sun, 19 Apr 2020 22:47:50 -0700 (PDT) X-Google-Smtp-Source: APiQypIHhS4/dQURL1cwH7MQCQVK+T8XbNShLV/T2I3RcwkDmp+Us8/V53KhzRX4qTxiny4/B9hk X-Received: by 2002:a17:906:15c3:: with SMTP id l3mr8592869ejd.315.1587361670231; Sun, 19 Apr 2020 22:47:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587361670; cv=none; d=google.com; s=arc-20160816; b=DQI28L7l6GCy51a8uFDC16/0mmDGuiDJB00FgM7CWe86LBVEpVyi3hVRDv3t0+xqLH fxm0cbDflj45941wCMwJJYJ1cqOGV3L5y948U1C5x0GhVv8G+78bOTZMJS//rQu2EYth 0h33qZe77QIAeEAj/+8x4yGTgBT73XkqGaoRHczQgM3oHBdzaZBZynhrmcwdD9F0BxfW UFH7AvDmT9lQsBsEOVz4ROSTZag7Kb0IZgwh90eo2Ro2/AMOBuKzO0eWpB88KRXR9PdA nUrQlR1qWIyb++B0UHhAUIsxUGO63sCl+URNZzUv8XzJlkEaU+sPeROqMLsJ0O6epGrC wnNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature; bh=JviOpAx3FUltdckw21eIkLFZmPpQkTiyb/2L4XnW5Fo=; b=FEzKXWj2rIgFp+y1BvghvXXXBq9/qX8QOkhbGDuAgU+8/Oml5mwhD4xUNyOyUjjA6I 3jpRBRkoc8+MEdfJfKPTX+SL4O2hjawatHQMyOI8gRKMaOSxpoItuBvDVl60XitNH3rI HPJk3wan4rDI2eW9wcppflNA8iZosvcWwmcndyngCjLSdjWfzwMtrZibb6qSaQk/zknS f8jG8dzlhC+Okit2jWSmzOiT/TdIVmThuG3DeWbeKeSpNPp0Ttfcmgqsil+ehKiNei0p 4kxrSIhDJQeQ9cJya7/HglrPVgu4rlAq4rowX4sKTyMO3EJYc+qpRMYV9LQn37+XgNwi JMxg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@fudan.edu.cn header.s=dkim header.b=PT5qDlZS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=fudan.edu.cn Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cw10si8930427edb.54.2020.04.19.22.47.27; Sun, 19 Apr 2020 22:47:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@fudan.edu.cn header.s=dkim header.b=PT5qDlZS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=fudan.edu.cn Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726151AbgDTFpN (ORCPT + 99 others); Mon, 20 Apr 2020 01:45:13 -0400 Received: from mail.fudan.edu.cn ([202.120.224.73]:36007 "EHLO fudan.edu.cn" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725379AbgDTFpN (ORCPT ); Mon, 20 Apr 2020 01:45:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fudan.edu.cn; s=dkim; h=Received:From:To:Cc:Subject:Date: Message-Id; bh=JviOpAx3FUltdckw21eIkLFZmPpQkTiyb/2L4XnW5Fo=; b=P T5qDlZSLUNamPk9bXm9ft1a2QDJkf/fp9hxzODRyVbHOteb7H2W/1pljsbf08XOE av2ipN4aj1tVAMk8z4sRsRp07ZgULcVWrlw5VOcdMLxKG7R0RgXUUpqHAvYSfusT CRdbRseIc/398bSoZkiDCcr7HEfIOi7q/pAROz7fg0= Received: from localhost.localdomain (unknown [120.229.255.67]) by app2 (Coremail) with SMTP id XQUFCgBnGOHdNp1eWQMeAA--.15363S3; Mon, 20 Apr 2020 13:45:02 +0800 (CST) From: Xiyu Yang To: Ian Abbott , H Hartley Sweeten , Greg Kroah-Hartman , Xiyu Yang , Xin Tan , devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org Cc: yuanxzhang@fudan.edu.cn, kjlu@umn.edu Subject: [PATCH] staging: comedi: Fix comedi_device refcnt leak in comedi_open Date: Mon, 20 Apr 2020 13:44:16 +0800 Message-Id: <1587361459-83622-1-git-send-email-xiyuyang19@fudan.edu.cn> X-Mailer: git-send-email 2.7.4 X-CM-TRANSID: XQUFCgBnGOHdNp1eWQMeAA--.15363S3 X-Coremail-Antispam: 1UD129KBjvJXoWxJry5CrW5XrW3Ww18GFy3Jwb_yoW8Gryfpr 48Ja4UtFZ0gF1xCF1DAa17WFyrCw17GryxGFWUu34FyF1rXFyftF1FqFy5tFWUJFySyFyI vF129r45Ca1DAF7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUvl14x267AKxVW8JVW5JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26w1j6s0DM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26F4U JVW0owA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oV Cq3wAac4AC62xK8xCEY4vEwIxC4wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC 0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUAVWUtwAv7VC2z280aVAFwI0_Jr0_Gr 1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IE rcIFxwCY02Avz4vE14v_GrWl42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr 1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE 14v26r1q6r43MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_JFI_Gr1lIxAIcVC0I7 IYx2IY6xkF7I0E14v26F4j6r4UJwCI42IY6xAIw20EY4v20xvaj40_Zr0_Wr1UMIIF0xvE x4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvj DU0xZFpf9x0JUBE_NUUUUU= X-CM-SenderInfo: irzsiiysuqikmy6i3vldqovvfxof0/ Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org comedi_open() invokes comedi_dev_get_from_minor(), which returns a reference of the COMEDI device to "dev" with increased refcount. When comedi_open() returns, "dev" becomes invalid, so the refcount should be decreased to keep refcount balanced. The reference counting issue happens in one exception handling path of comedi_open(). When "cfp" allocation is failed, the refcnt increased by comedi_dev_get_from_minor() is not decreased, causing a refcnt leak. Fix this issue by calling comedi_dev_put() on this error path when "cfp" allocation is failed. Fixes: 20f083c07565 ("staging: comedi: prepare support for per-file read and write subdevices") Signed-off-by: Xiyu Yang Signed-off-by: Xin Tan --- drivers/staging/comedi/comedi_fops.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c index 08d1bbbebf2d..e84b4fb493d6 100644 --- a/drivers/staging/comedi/comedi_fops.c +++ b/drivers/staging/comedi/comedi_fops.c @@ -2725,8 +2725,10 @@ static int comedi_open(struct inode *inode, struct file *file) } cfp = kzalloc(sizeof(*cfp), GFP_KERNEL); - if (!cfp) + if (!cfp) { + comedi_dev_put(dev); return -ENOMEM; + } cfp->dev = dev; -- 2.7.4