Received: by 2002:ab2:620c:0:b0:1ef:ffd0:ce49 with SMTP id o12csp102885lqt; Mon, 18 Mar 2024 02:42:38 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUocgXAgRf50Tn9IPf60Lnp1rYPwwJmZgtx+8PhSQ8AZBaTMoXN/KgZrO/sYCAlAnnQXOcpwXYvpFbllTlzZhg/V+BSTo9v6TQygby6rg== X-Google-Smtp-Source: AGHT+IGWU/rjLIV8VnJdvoglOosxBUN+4fkmQdw6/fV6Vc3vexWv5aAE/umxCGBbZnbQj4CxTCfC X-Received: by 2002:a17:906:ef08:b0:a46:bdde:553f with SMTP id f8-20020a170906ef0800b00a46bdde553fmr1899101ejs.25.1710754958299; Mon, 18 Mar 2024 02:42:38 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1710754958; cv=pass; d=google.com; s=arc-20160816; b=sxSy3MbpyR5S614OjmCtn+5RTUIw2XYI7pgMMR1Vo0mb9hFTlkzNgXPO3YPoExQeZi ahh396gTchDETvWVwfaj+VfaO4s6LymKuOL4fQXEWA77y/Oj0o3iUVQUxr9JgqroVQkz lJcKqaHw893HCfT+qjuZKbGTSSwSkxfhQPi3PVdbnEBQnlTjY29PN2I8EdsL6p/GKswD oBtGLoJt8Ycon8QB8KahWh6KyrBTXzoqSuN0F0p1QY+q9Qtz3I513olt0kYjVtfqluAn WCClzNI97ypSVzQbM5e/eX8qepPIyt2iMiQNXkcd2P/a8Zs6L4Gz//FeTsDvNEYxPlSf V1IA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from; bh=6f883qzBe3ydDCHiuvEPI2n3UzxcO2OpyWGxOyRF780=; fh=rQIpxaj7U5IOgaPrskSTE3OdZMI/grwJHa0Zaqkodmg=; b=YH5O8BmofYlmTtwfSTF5dTXyj0pyuEozVBUvbUeQ1U/y1pGTskg925EwCWvFx/2hl2 x21+G8uJ/ZFE2P/bDOJU3r93ZX2jfSGBQXkSHaGgFcVzW/sQZnJmRikKpibyLI09g5pc h/DHkPxS2TLkTGJPmaF0eb6R8jYuo04BGYG57uZRN10vKXBarNwyH5zbHKWRJmPotGF3 DDgg3PxEvDIPHIeXu9iFsWajhXDBvAz871e0CXUGWLcU7TY84sbQ83kuLz1HUaEvLH3m Mre/j1eP0GNS/nCMf7eDTcD+bQh8uc9nDK70kbldy6Qi/Rf3Bfsr/oPHutKy7usYhR9D isEw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=huawei.com dmarc=pass fromdomain=huawei.com); spf=pass (google.com: domain of linux-kernel+bounces-105895-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-105895-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id k6-20020a17090632c600b00a46aee4f7cesi1567750ejk.265.2024.03.18.02.42.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Mar 2024 02:42:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-105895-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=huawei.com dmarc=pass fromdomain=huawei.com); spf=pass (google.com: domain of linux-kernel+bounces-105895-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-105895-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 0C9DA1F220FD for ; Mon, 18 Mar 2024 09:42:38 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6264D2C6B0; Mon, 18 Mar 2024 09:42:29 +0000 (UTC) Received: from szxga06-in.huawei.com (szxga06-in.huawei.com [45.249.212.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 03C4C28DAE; Mon, 18 Mar 2024 09:42:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.32 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710754948; cv=none; b=ahEYq8yK4jXPO9upYAhPVfkg3a/Z+cIUC6mlP3OfpOR2dBB63b9q5WNL7MCrfVQwPiOuZ7+2hjJWUWc1dYPFC43fIujJIMZTYtXj4XvcgdiQLbNAdscd6bqiC+3Jq7KOCB/yR3RyzAkSh/SMCqSAgiiRKbvuIBSdPhAYPPzcLo4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710754948; c=relaxed/simple; bh=3oso5PLbImGkfoKsWCngxnTBzg9vtA8Zgmipm9DvaWs=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=X3HVibUfL/v5COoisogdNKrrdSf2REaMfTjpsqUGmTiv3iGtFECHbSjenKoa/S2zcwxkrqhKM0OxfEWn1k/e04EtcwYJu+5pE+vXC0VBTH3ljujUVdE8hbl0w7pzVHdOz+Fm7KrCbHo2VWYsmj3SK1MueLgzQbB1ktsJ4srzE8k= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=huawei.com; arc=none smtp.client-ip=45.249.212.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huawei.com Received: from mail.maildlp.com (unknown [172.19.163.17]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4TyqFP72W2z1vx2t; Mon, 18 Mar 2024 17:24:57 +0800 (CST) Received: from kwepemm600012.china.huawei.com (unknown [7.193.23.74]) by mail.maildlp.com (Postfix) with ESMTPS id 59E0F1A0172; Mon, 18 Mar 2024 17:25:43 +0800 (CST) Received: from build.huawei.com (10.175.101.6) by kwepemm600012.china.huawei.com (7.193.23.74) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Mon, 18 Mar 2024 17:25:42 +0800 From: Wenchao Hao To: Jason Gunthorpe , Leon Romanovsky , , CC: Wenchao Hao , Subject: [PATCH v2] RDMA/restrack: Fix potential invalid address access Date: Mon, 18 Mar 2024 17:23:20 +0800 Message-ID: <20240318092320.1215235-1-haowenchao2@huawei.com> X-Mailer: git-send-email 2.32.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To kwepemm600012.china.huawei.com (7.193.23.74) struct rdma_restrack_entry's kern_name was set to KBUILD_MODNAME in ib_create_cq(), while if the module exited but forgot del this rdma_restrack_entry, it would cause a invalid address access in rdma_restrack_clean() when print the owner of this rdma_restrack_entry. These code is used to help find one forgotten PD release in one of the ULPs. But it is not needed anymore, so delete them. Signed-off-by: Wenchao Hao --- drivers/infiniband/core/restrack.c | 51 +----------------------------- 1 file changed, 1 insertion(+), 50 deletions(-) diff --git a/drivers/infiniband/core/restrack.c b/drivers/infiniband/core/restrack.c index 01a499a8b88d..438ed3588175 100644 --- a/drivers/infiniband/core/restrack.c +++ b/drivers/infiniband/core/restrack.c @@ -37,22 +37,6 @@ int rdma_restrack_init(struct ib_device *dev) return 0; } -static const char *type2str(enum rdma_restrack_type type) -{ - static const char * const names[RDMA_RESTRACK_MAX] = { - [RDMA_RESTRACK_PD] = "PD", - [RDMA_RESTRACK_CQ] = "CQ", - [RDMA_RESTRACK_QP] = "QP", - [RDMA_RESTRACK_CM_ID] = "CM_ID", - [RDMA_RESTRACK_MR] = "MR", - [RDMA_RESTRACK_CTX] = "CTX", - [RDMA_RESTRACK_COUNTER] = "COUNTER", - [RDMA_RESTRACK_SRQ] = "SRQ", - }; - - return names[type]; -}; - /** * rdma_restrack_clean() - clean resource tracking * @dev: IB device @@ -60,47 +44,14 @@ static const char *type2str(enum rdma_restrack_type type) void rdma_restrack_clean(struct ib_device *dev) { struct rdma_restrack_root *rt = dev->res; - struct rdma_restrack_entry *e; - char buf[TASK_COMM_LEN]; - bool found = false; - const char *owner; int i; for (i = 0 ; i < RDMA_RESTRACK_MAX; i++) { struct xarray *xa = &dev->res[i].xa; - if (!xa_empty(xa)) { - unsigned long index; - - if (!found) { - pr_err("restrack: %s", CUT_HERE); - dev_err(&dev->dev, "BUG: RESTRACK detected leak of resources\n"); - } - xa_for_each(xa, index, e) { - if (rdma_is_kernel_res(e)) { - owner = e->kern_name; - } else { - /* - * There is no need to call get_task_struct here, - * because we can be here only if there are more - * get_task_struct() call than put_task_struct(). - */ - get_task_comm(buf, e->task); - owner = buf; - } - - pr_err("restrack: %s %s object allocated by %s is not freed\n", - rdma_is_kernel_res(e) ? "Kernel" : - "User", - type2str(e->type), owner); - } - found = true; - } + WARN_ON(!xa_empty(xa)); xa_destroy(xa); } - if (found) - pr_err("restrack: %s", CUT_HERE); - kfree(rt); } -- 2.32.0