From patchwork Sat Jan 12 02:31:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Gunthorpe X-Patchwork-Id: 10760871 X-Patchwork-Delegate: jgg@ziepe.ca Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0D55A1869 for ; Sat, 12 Jan 2019 02:31:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F2AAC2A0EE for ; Sat, 12 Jan 2019 02:31:37 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E65162A138; Sat, 12 Jan 2019 02:31:37 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8F24D2A0EE for ; Sat, 12 Jan 2019 02:31:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726509AbfALCbg (ORCPT ); Fri, 11 Jan 2019 21:31:36 -0500 Received: from mail-pl1-f194.google.com ([209.85.214.194]:32787 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726433AbfALCbg (ORCPT ); Fri, 11 Jan 2019 21:31:36 -0500 Received: by mail-pl1-f194.google.com with SMTP id z23so7595563plo.0 for ; Fri, 11 Jan 2019 18:31:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziepe.ca; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MBhsHDl3upbG5mylYHP2a8ceMQtU1CZGZn+5VM/LlVA=; b=iiM7BpYQnxdNoWoCtTQ5BJzSda1datMDb5w5UKs9xkFQT1IXBmtuq3B5PNCU2TvAfq JlD7VxRb8fkjhTsXizTEGxHQrnBrWqDuOl27Gjha2OqG4DRUZHi0l3NXsrzLRraAcNHG e8cklbqOgAnmWv1bA+rNYrlCJQ5KyzH8tpFGs89/IWMZgB27PRLLwz9qw1uNnPFMnmzN j5/ReNd3VhtPD4zN8503n2mZHsv3WlWI5UvbcJQlWJl0ygE4l0E+7vRpLsYR6hYOlRxi AD6I4ruAMOpS9SQSFNeHyaRrHBilkv2m8crQPbAdmMKSXojG9X1NMISlVc0s97yiBnZM r3/Q== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=MBhsHDl3upbG5mylYHP2a8ceMQtU1CZGZn+5VM/LlVA=; b=bgAO5I5UI4u+Scqhr0fKtATjYuO/a5nK89C02rWO4O72r19mAJRH/SO9FDg+bl1sqG YhGkpuWsEsv8UFl2sO3kfpgfPsGiAecQDRdRMQHPze9M6RI+9JBoiYiL/euGKG7yn2w7 KWq1/gJIEVD2hjqTZhhYhwsmnj8r32TQVexQ5Y0mKb2vC2VJ2UYGTeQxho40qkVsOZj2 FZ0rgf58vsOZVJlnIRo69+t95wC6epwmI/z5JNwd7TdPlRmIHtgP3J0Vr3PINARs607v sG0lQ+fCp0MgdzTiIq60xA/MGvk1H+umfMA5+3pWFi76geDnTwLu31C7GKGe1tceyUEa RRag== X-Gm-Message-State: AJcUukch68rhy+u7WFWXydLJKnpOw05dwOCoz2nzvMYc+kCTXCfIlA6L DzWva+4nPbMss1VO003YKHmPVsHAQVY= X-Google-Smtp-Source: ALg8bN6BrYYcX4GaLuaEPRoWoLBAA60nLBMoywDDRqogLey+qWEppuqT7t6tmobcZ3eLYRQs5hZuZg== X-Received: by 2002:a17:902:bd4a:: with SMTP id b10mr17104231plx.232.1547260294830; Fri, 11 Jan 2019 18:31:34 -0800 (PST) Received: from ziepe.ca (S010614cc2056d97f.ed.shawcable.net. [174.3.196.123]) by smtp.gmail.com with ESMTPSA id e128sm116177039pfe.67.2019.01.11.18.31.33 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 11 Jan 2019 18:31:33 -0800 (PST) Received: from jgg by mlx.ziepe.ca with local (Exim 4.90_1) (envelope-from ) id 1gi95B-0006NG-0G; Fri, 11 Jan 2019 19:31:33 -0700 From: Jason Gunthorpe To: linux-rdma@vger.kernel.org, Moni Shoua Cc: Jason Gunthorpe Subject: [PATCH for-rc 2/2] IB/mlx5: Fix how advise_mr() launches async work Date: Fri, 11 Jan 2019 19:31:24 -0700 Message-Id: <20190112023124.21647-3-jgg@ziepe.ca> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190112023124.21647-1-jgg@ziepe.ca> References: <20190112023124.21647-1-jgg@ziepe.ca> MIME-Version: 1.0 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Jason Gunthorpe Work must hold a kref on the ib_device otherwise the dev pointer can become free before the work runs. Remove the bogus use of 'reg_state': - While in uverbs the reg_state is guaranteed to always be REGISTERED - Testing reg_state with no locking is bogus. Use ib_device_try_get() to get back into a region that prevents unregistration. Fixes: 813e90b1aeaa ("IB/mlx5: Add advise_mr() support") Signed-off-by: Jason Gunthorpe Reviewed-by: Moni Shoua --- drivers/infiniband/hw/mlx5/odp.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/infiniband/hw/mlx5/odp.c b/drivers/infiniband/hw/mlx5/odp.c index 8d46b1dc56580f..a241a65834d4ca 100644 --- a/drivers/infiniband/hw/mlx5/odp.c +++ b/drivers/infiniband/hw/mlx5/odp.c @@ -1595,10 +1595,12 @@ static void mlx5_ib_prefetch_mr_work(struct work_struct *work) struct prefetch_mr_work *w = container_of(work, struct prefetch_mr_work, work); - if (w->dev->ib_dev.reg_state == IB_DEV_REGISTERED) + if (ib_device_try_get(&w->dev->ib_dev)) { mlx5_ib_prefetch_sg_list(w->dev, w->pf_flags, w->sg_list, w->num_sge); - + ib_device_put(&w->dev->ib_dev); + } + put_device(&w->dev->ib_dev.dev); kfree(w); } @@ -1617,15 +1619,13 @@ int mlx5_ib_advise_mr_prefetch(struct ib_pd *pd, return mlx5_ib_prefetch_sg_list(dev, pf_flags, sg_list, num_sge); - if (dev->ib_dev.reg_state != IB_DEV_REGISTERED) - return -ENODEV; - work = kvzalloc(struct_size(work, sg_list, num_sge), GFP_KERNEL); if (!work) return -ENOMEM; memcpy(work->sg_list, sg_list, num_sge * sizeof(struct ib_sge)); + get_device(&dev->ib_dev.dev); work->dev = dev; work->pf_flags = pf_flags; work->num_sge = num_sge;