Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp810560ybc; Tue, 19 Nov 2019 09:36:39 -0800 (PST) X-Google-Smtp-Source: APXvYqy5MSmmvZygpneYBP4ffl9t8DRvqcXwYhJVVYXS22U5C94z689cwUmwMV/37y9PLQfdaisJ X-Received: by 2002:a17:906:351b:: with SMTP id r27mr37390016eja.120.1574184998982; Tue, 19 Nov 2019 09:36:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574184998; cv=none; d=google.com; s=arc-20160816; b=fYAXRnxNXWul/K3jfozhXJ7YdgjY8pKCYI4MV02VZzTe7sRGhsmxyM7ChDArtBaf5o ao8rwMhKwQxr+RWWQmRjO8lgKj9QECOuYs/cOTiir/oC5Dd6exBk7UawYx3fJWYHowZs XsyPRF904gqMN75u6z+p6PTDh8YngIWADsjJ7ptZoNZ53tTMULjqu+IncNXMak3OpRuH dV+e9Kli3k1bm6Em9kcCQG2LRdHWkoVw9lhmay+oL3r151iTnV4+7N8DIy8CtQz/Qomw /13kC+EDMZwKWYoYhiM6yTEH3UpayFOvwPIS6EI7K3DEPlBqIjS3qk3O4fNdD8EyT1eB y2ew== 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:mime-version :message-id:date:subject:cc:to:from; bh=u3J90CS1dpB6qiN4nBgKnDCZslZ/171b+d7S0f4Jzeg=; b=eki9uyIAm74HtJS0RUJAHsCKV4J+sFw20irmkfPY2R5EInb02ZY49X9Rn0jATTGHSX gXFsqv2snGLmxmmzo81ZOE+AG73cYaKnFFx0P/I7LlKbQG4w+rlMJC3WBC1HS35rTctR b1NFR/7Bl7mEJc7lLY4CroUfFNn8aKwneLMYeVC5x3MGdenkqr/YGmuz/75Y43FaC93R tOps9VTeuiDwHkdl8v2ktpvh6VkezgmiN/DspzW4rI+/ly8RPo0QrsJms6yar7K8ndn7 ipD8K28gvm1LmbDPHw7uBVSW0dZZ5/lv7HkHJ+9Y434gICxitICfUP7F5Ko0wP/YNiXE lO2g== 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=alibaba.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h17si14235962ejy.239.2019.11.19.09.36.13; Tue, 19 Nov 2019 09:36:38 -0800 (PST) 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=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728453AbfKSRfB (ORCPT + 99 others); Tue, 19 Nov 2019 12:35:01 -0500 Received: from out30-56.freemail.mail.aliyun.com ([115.124.30.56]:37670 "EHLO out30-56.freemail.mail.aliyun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728060AbfKSRfB (ORCPT ); Tue, 19 Nov 2019 12:35:01 -0500 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R171e4;CH=green;DM=||false|;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e01e04420;MF=wenyang@linux.alibaba.com;NM=1;PH=DS;RN=6;SR=0;TI=SMTPD_---0Tia1I97_1574184888; Received: from localhost(mailfrom:wenyang@linux.alibaba.com fp:SMTPD_---0Tia1I97_1574184888) by smtp.aliyun-inc.com(127.0.0.1); Wed, 20 Nov 2019 01:34:58 +0800 From: Wen Yang To: Alexander Shishkin Cc: zhiche.yy@alibaba-inc.com, xlpang@linux.alibaba.com, Wen Yang , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Subject: [PATCH] intel_th: avoid double free in error flow Date: Wed, 20 Nov 2019 01:34:47 +0800 Message-Id: <20191119173447.2454-1-wenyang@linux.alibaba.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org There is a possible double free issue in intel_th_subdevice_alloc: 651 err = intel_th_device_add_resources(thdev, res, subdev->nres); 652 if (err) { 653 put_device(&thdev->dev); 654 goto fail_put_device; ---> freed 655 } ... 687 fail_put_device: 688 put_device(&thdev->dev); ---> double freed 689 This patch fix it by removing the unnecessary put_device(). Fixes: a753bfcfdb1f ("intel_th: Make the switch allocate its subdevices") Signed-off-by: Wen Yang Cc: Alexander Shishkin Cc: Greg Kroah-Hartman Cc: linux-kernel@vger.kernel.org --- drivers/hwtracing/intel_th/core.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/hwtracing/intel_th/core.c b/drivers/hwtracing/intel_th/core.c index d5c1821..98d195c 100644 --- a/drivers/hwtracing/intel_th/core.c +++ b/drivers/hwtracing/intel_th/core.c @@ -649,10 +649,8 @@ static inline void intel_th_request_hub_module_flush(struct intel_th *th) } err = intel_th_device_add_resources(thdev, res, subdev->nres); - if (err) { - put_device(&thdev->dev); + if (err) goto fail_put_device; - } if (subdev->type == INTEL_TH_OUTPUT) { if (subdev->mknode) -- 1.8.3.1