Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3522207pxj; Mon, 21 Jun 2021 00:03:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx/SwgtHWGtwebNc9hrFPExa2HMbmFDniKVHMN1YueZXp40I4cdZtb5LYn/KWFAudeHJ7Ca X-Received: by 2002:a92:c88d:: with SMTP id w13mr16818265ilo.170.1624259013060; Mon, 21 Jun 2021 00:03:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624259013; cv=none; d=google.com; s=arc-20160816; b=DuFNskoVopHO8Tn779rBBsK4FEx8Tsv/tFsA9JyKmQjoLDMTWNOC+bKXh0rQzdNU3u iJICrpYOMzWlH22AG+hri033jSna4xf/eDY2Fs8FT05sAqGF4/wbPC1efWICnkPNdMi0 BfiS2UAxX9q8m+mRd3N99rI1ey3d93LVYM2VfMC4TXhsDWIL0STdMz95jQAGPcfKOGV8 0J/4CWRqbHVxru248yZX6TQXxNzp+co/5LUuxCCKMLITykjlzFehyOxGzkwPa5csetZd HMf8Ccx25/v1IclgfteLug/kDYCgh9r8Q3pRaEDPJyNCF6UuoUXxex1jMc+iAp9J9Agb SDqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from :dkim-signature; bh=uMzv+T/Wucp5pVssFwhVMxpuZI8wy6p/j6myJL8r3oQ=; b=Oc9LQMFEcTasgCKK1aeF2YbbGjNV/BKTNB26NGxibAfMUq8IlzTULYHZSfepvNBcuo 6Ca5nhUi0BV0kL8wpuHY6MXh/F5Ionr6jsSJ4F9AboPMEroLCGQUwG6FWNhokYgb/mRR TTVQs2/d6eqKyLyHOh7sXJkB3409pSi7zEiQtzGFKDrMy8OS5tKI7BwRLgh1fLGNdxFJ D6n+5FVM+D47Ftgsmzk6Gl6Iy8+nhfACK/+75VIN4GemfWjO2zUCJuflDOtsUoxBaPnd y3v1REpJNUWBm4q9fx5ZebNGVm733L/BEmMZcOtL9p8dz8KWSUa/czhnrrPepbng7Z0s DL3A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@igel-co-jp.20150623.gappssmtp.com header.s=20150623 header.b=wKAqRToJ; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w14si12029391ilq.87.2021.06.21.00.03.20; Mon, 21 Jun 2021 00:03:33 -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=@igel-co-jp.20150623.gappssmtp.com header.s=20150623 header.b=wKAqRToJ; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229908AbhFUHDb (ORCPT + 99 others); Mon, 21 Jun 2021 03:03:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41326 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229583AbhFUHDa (ORCPT ); Mon, 21 Jun 2021 03:03:30 -0400 Received: from mail-pj1-x1035.google.com (mail-pj1-x1035.google.com [IPv6:2607:f8b0:4864:20::1035]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EA82AC061574 for ; Mon, 21 Jun 2021 00:01:16 -0700 (PDT) Received: by mail-pj1-x1035.google.com with SMTP id l11so5035013pji.5 for ; Mon, 21 Jun 2021 00:01:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=igel-co-jp.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=uMzv+T/Wucp5pVssFwhVMxpuZI8wy6p/j6myJL8r3oQ=; b=wKAqRToJTrozBDWE1bKnJIGWABV2Nbt/tC9DdB6+S2NMCUfWD8eTQvS/6pTK99JD06 VuQM28W+rphsDWblnmVEJ7I4hdRkwxlKxb21NOoe1De3WHR2xO72UmZoU04VDVz9B3Ep uFh6COeB6e9ypG2o977TrCR7MiJh2WlZhfXRNV4CqytbNZHRs0LyBRL4zCxwlFYkHGhP g7XSFUwW812CcwuPKIn6lccsM/5axqAaJ7Q2JXGjbG4zdqJvmOTuaYk6AIkE1uv5UMgK PykvZ3ZsWooOr/SYKpIi0zDAFVwEhgMrxLeotybHUk5IfTqkgIbfFCUyDlxSxDJENY33 /xcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=uMzv+T/Wucp5pVssFwhVMxpuZI8wy6p/j6myJL8r3oQ=; b=bOrdzihWwbg6RvvL85BxR91XsB0k/0xqIZpjHozC69ZzSO3/e9pnSViiwWR0t9nHYQ nldOTl6HX7kWiZ8CnGpig0pTjouxlsTYfMft4YPvOIwycJacLQ5uQThkLm32gIhBBeo/ GG1G2v5rFm4poUTpu0atHA/ycjT/+WHgLUu1aBSrOD/zQuigyS0tae2wKf3MNtiydGtM 1rQ/h2IH8wKtc4Z5fctIkmjQJR4TvMw48L/BCDoXZrMVl79qaz9HY9zPx05vbyOZWUum BGU0iSmTOngMfjvBK6hauxDJaF1D4oW+tU/IDKWGVBganjVywaguPCI1icKDR3U0Y0f2 b8TQ== X-Gm-Message-State: AOAM531o0V3FhPrNBEeLPG6Uj6/Qy2ttFVDZdE6JjTYLnoeMsjUf+RVk Ilgzf4chvuilZYxq1/CXNhujwg== X-Received: by 2002:a17:902:720b:b029:113:19d7:2da7 with SMTP id ba11-20020a170902720bb029011319d72da7mr16531354plb.55.1624258876483; Mon, 21 Jun 2021 00:01:16 -0700 (PDT) Received: from tyrell.hq.igel.co.jp (napt.igel.co.jp. [219.106.231.132]) by smtp.gmail.com with ESMTPSA id n5sm12098478pgf.35.2021.06.21.00.01.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jun 2021 00:01:16 -0700 (PDT) From: Shunsuke Mie To: kishon@ti.com Cc: lorenzo.pieralisi@arm.com, bhelgaas@google.com, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, mie@igel.co.jp Subject: [PATCH] PCI: endpoint: Fix use after free in pci_epf_remove_cfs() Date: Mon, 21 Jun 2021 16:00:58 +0900 Message-Id: <20210621070058.37682-1-mie@igel.co.jp> X-Mailer: git-send-email 2.17.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org All of entries are freed in a loop, however, the freed entry is accessed by list_del() after the loop. When epf driver that includes pci-epf-test unload, the pci_epf_remove_cfs() is called, and occurred the use after free. Therefore, kernel panics randomly after or while the module unloading. I tested this patch with r8a77951-Salvator-xs boards. Fixes: ef1433f ("PCI: endpoint: Create configfs entry for each pci_epf_device_id table entry") Signed-off-by: Shunsuke Mie --- drivers/pci/endpoint/pci-epf-core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/pci/endpoint/pci-epf-core.c b/drivers/pci/endpoint/pci-epf-core.c index e9289d10f822..538e902b0ba6 100644 --- a/drivers/pci/endpoint/pci-epf-core.c +++ b/drivers/pci/endpoint/pci-epf-core.c @@ -202,8 +202,10 @@ static void pci_epf_remove_cfs(struct pci_epf_driver *driver) return; mutex_lock(&pci_epf_mutex); - list_for_each_entry_safe(group, tmp, &driver->epf_group, group_entry) + list_for_each_entry_safe(group, tmp, &driver->epf_group, group_entry) { + list_del(&group->group_entry); pci_ep_cfs_remove_epf_group(group); + } list_del(&driver->epf_group); mutex_unlock(&pci_epf_mutex); } -- 2.17.1