Received: by 10.213.65.68 with SMTP id h4csp473155imn; Tue, 13 Mar 2018 10:08:30 -0700 (PDT) X-Google-Smtp-Source: AG47ELuerj7OyQ8vMxThug7/qQojKS4rmf49wjo+308z2lsLyEWyXL/8kytKYudgOqfBcd7cHdIk X-Received: by 10.99.124.79 with SMTP id l15mr1062713pgn.19.1520960910789; Tue, 13 Mar 2018 10:08:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1520960910; cv=none; d=google.com; s=arc-20160816; b=l3UksdI21GB/LEZ3uMAyS0MVYN6KK5y3q59nYQk/7JnHYY9s1a0Iv0Sy574Mt8WVke N1GhRSpJEvQLo0o3R7bqUKSVx5T9qaTH7hEud9ZjzOzBNq1KL9O0pNBvY0wITqENQ6Yw 5xGVMy6qsxS0wlpogx75eeKdHn3biZzx0Spu/hUg+bxDW0Mexe0hwL3Xi115PxkOlVyZ lA1TxKiwqlXsTu/5ZpqkZQd7krDbm9XY46QXED9ELntdtq3NKMY/BvUwp3f5jXLlLTfo 64ntGy7fwaqNC9f824oJxSEMVvgWBHCMEkMzcfbLXVstWR9ffjXuQKEb9rz7OZ/bLmTp CioA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=rZKKDiWKP2zQIkbxEZoE78wCHXsXH9iNpouSNhK/cog=; b=ezN01Bi8l1lDoE3nImh/uyJPoh0xuxhD+ORl95pLtQailnvxSp5dGpLFASlMfEcQNe 8mj5YjxD7da2qpUjUlhvHNXf/URIwGXImXTfT26D5msZm0E8XVh//iZF2ATbZ31AF+PQ j7vRbfco/YEx8ozJ9qNBC8zgPWwSUM54PMQgKwFeltMIYU4nNHlJ7xc2kWMpcryCHHF7 gJcBGmcKCkvcb7ZlMn9kix/NXqLNdHEu1YxksM/wOozMuY2GkYGYLbJ4MdtqDI4Cx2zU G6AyjoBFvm4UFc53Qx0IkAFU/Fh/6dWyBrYWhuHzDQtNzg+Y4nxyAoaM8VXh/xGuaM4i umeA== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o63si366261pfg.347.2018.03.13.10.08.16; Tue, 13 Mar 2018 10:08:30 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932635AbeCMP2C (ORCPT + 99 others); Tue, 13 Mar 2018 11:28:02 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:57386 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932542AbeCMP2A (ORCPT ); Tue, 13 Mar 2018 11:28:00 -0400 Received: from localhost (LFbn-1-12258-90.w90-92.abo.wanadoo.fr [90.92.71.90]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id B7A8F11CD; Tue, 13 Mar 2018 15:27:59 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Leon Romanovsky , Jason Gunthorpe Subject: [PATCH 4.15 005/146] IB/uverbs: Improve lockdep_check Date: Tue, 13 Mar 2018 16:22:52 +0100 Message-Id: <20180313152321.008018029@linuxfoundation.org> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180313152320.439085687@linuxfoundation.org> References: <20180313152320.439085687@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.15-stable review patch. If anyone has any objections, please let me know. ------------------ From: Jason Gunthorpe commit 104f268d439b3c21c83708e52946a4d8d37f3d0f upstream. This is really being used as an assert that the expected usecnt is being held and implicitly that the usecnt is valid. Rename it to assert_uverbs_usecnt and tighten the checks to only accept valid values of usecnt (eg 0 and < -1 are invalid). The tigher checkes make the assertion cover more cases and is more likely to find bugs via syzkaller/etc. Fixes: 3832125624b7 ("IB/core: Add support for idr types") Signed-off-by: Leon Romanovsky Signed-off-by: Jason Gunthorpe Signed-off-by: Greg Kroah-Hartman --- drivers/infiniband/core/rdma_core.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) --- a/drivers/infiniband/core/rdma_core.c +++ b/drivers/infiniband/core/rdma_core.c @@ -407,13 +407,13 @@ static int __must_check remove_commit_fd return ret; } -static void lockdep_check(struct ib_uobject *uobj, bool exclusive) +static void assert_uverbs_usecnt(struct ib_uobject *uobj, bool exclusive) { #ifdef CONFIG_LOCKDEP if (exclusive) - WARN_ON(atomic_read(&uobj->usecnt) > 0); + WARN_ON(atomic_read(&uobj->usecnt) != -1); else - WARN_ON(atomic_read(&uobj->usecnt) == -1); + WARN_ON(atomic_read(&uobj->usecnt) <= 0); #endif } @@ -452,7 +452,7 @@ int __must_check rdma_remove_commit_uobj WARN(true, "ib_uverbs: Cleanup is running while removing an uobject\n"); return 0; } - lockdep_check(uobj, true); + assert_uverbs_usecnt(uobj, true); ret = _rdma_remove_commit_uobject(uobj, RDMA_REMOVE_DESTROY); up_read(&ucontext->cleanup_rwsem); @@ -482,7 +482,7 @@ int rdma_explicit_destroy(struct ib_uobj WARN(true, "ib_uverbs: Cleanup is running while removing an uobject\n"); return 0; } - lockdep_check(uobject, true); + assert_uverbs_usecnt(uobject, true); ret = uobject->type->type_class->remove_commit(uobject, RDMA_REMOVE_DESTROY); if (ret) @@ -569,7 +569,7 @@ static void lookup_put_fd_uobject(struct void rdma_lookup_put_uobject(struct ib_uobject *uobj, bool exclusive) { - lockdep_check(uobj, exclusive); + assert_uverbs_usecnt(uobj, exclusive); uobj->type->type_class->lookup_put(uobj, exclusive); /* * In order to unlock an object, either decrease its usecnt for