Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp3888951pxv; Mon, 19 Jul 2021 11:11:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy67zGWlYmbqeb2HwyeIwodcBLM3ECRFJm8RQ1q4e78cg4uRyRQlzQkvO0dqBdY6CPXMRuR X-Received: by 2002:a05:6602:1203:: with SMTP id y3mr12638084iot.192.1626718291375; Mon, 19 Jul 2021 11:11:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626718291; cv=none; d=google.com; s=arc-20160816; b=cZx0NIlFm/hEVuvf8zFcf8I5qVWr67eGY1r9IUlR5+KleJXMVxByYUS3LfH9rjql1d uh/be8JDNkWb6jQrfoWTbZAYbBTzPYksdSjTGALfpQchWX1B/d+RqwN2WBEDhZ+BTgbR MPAfE1Tp8ONPu9BC12pI7Xp+fnKhTthLlXOaaSO5Yx3HhoqofT3y2e7MEwtUe6BFDQce V/NqCko1txZDKuc9CSsJ75ZbLSpvCO3B76O3bOf3zmSz0GwlR4cKDGuizJL8orW3tjpf vQIse+t+Jzuu1CRDtlTmM8jsJZo+yDdxBfy6fLPnuNVmN6/M3fogNzjT/sJykgV1KrdF DcYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=/+20+HBa68/eUVrVNNZwThkH/DeE8zG24Unjurbqyn8=; b=qFeeZJvEDMSboWamV9yj9TPiMNNcGWcNVW6P1FgLkvvjMcr4wM7FmjtHMpKHyVq260 Unnd5k9+SMJX3UyDAbTOP5g5XdPs123GczUb8XbetWAofZzHTMncK/VlX5oiCTzpJ1Ok HyauLnAU/9N86gMiuOVCzHbHSGGK0WoH5cWBn1fPjy6Aps4TcXP3HEhE2i3gX7LI5R12 yJANk4+zbQuqVMZApiy4xV3n3JPZD4U4RaxqPZFL6y+ejgPqarwdxCTavFtvmbxslmFl r42N6g5OGH1x/OwoTBfuUMUhJgOH7+aYh2QGXDNtCO2MndoAhwg17XsKExQtjB4ZF1lZ BHMQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=JqRxXpP7; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j17si18412053ilq.87.2021.07.19.11.11.19; Mon, 19 Jul 2021 11:11:31 -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=@linuxfoundation.org header.s=korg header.b=JqRxXpP7; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1380413AbhGSR2J (ORCPT + 99 others); Mon, 19 Jul 2021 13:28:09 -0400 Received: from mail.kernel.org ([198.145.29.99]:47304 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1347473AbhGSPpz (ORCPT ); Mon, 19 Jul 2021 11:45:55 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 225D661166; Mon, 19 Jul 2021 16:26:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626711993; bh=scFsY1NGDBz0F+RDxTz8nFdjYLG0Qt4hPIotrS/R4x0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JqRxXpP7X/pz3GuI5NXVLv+6LKAxFm6FknT6Zt2ex2q+X5NEW2wgjPwp5ehgDNBIG c6fwaRBxAM3/wYqtffL98fJ1RmTo2aBs5gOz7PAfuA/207RMqIAen/Gp7WjJp8D3F7 tJzJAFfbEVuzjTK09IfDKzl0I3oD7Ad8+CBeDyFM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Eli Cohen , "Michael S. Tsirkin" , Jason Wang , Sasha Levin Subject: [PATCH 5.12 209/292] vdpa/mlx5: Fix possible failure in umem size calculation Date: Mon, 19 Jul 2021 16:54:31 +0200 Message-Id: <20210719144949.872070943@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210719144942.514164272@linuxfoundation.org> References: <20210719144942.514164272@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Eli Cohen [ Upstream commit 71ab6a7cfbae27f86a3901daab10bfe13b3a1e3a ] umem size is a 32 bit unsigned value so assigning it to an int could cause false failures. Set the calculated value inside the function and modify function name to reflect the fact it updates the size. This bug was found during code review but never had real impact to this date. Fixes: 1a86b377aa21 ("vdpa/mlx5: Add VDPA driver for supported mlx5 devices") Signed-off-by: Eli Cohen Link: https://lore.kernel.org/r/20210530090349.8360-1-elic@nvidia.com Signed-off-by: Michael S. Tsirkin Acked-by: Jason Wang Signed-off-by: Sasha Levin --- drivers/vdpa/mlx5/net/mlx5_vnet.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c b/drivers/vdpa/mlx5/net/mlx5_vnet.c index fc7834a34695..d5ea956a3a3a 100644 --- a/drivers/vdpa/mlx5/net/mlx5_vnet.c +++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c @@ -611,8 +611,8 @@ static void cq_destroy(struct mlx5_vdpa_net *ndev, u16 idx) mlx5_db_free(ndev->mvdev.mdev, &vcq->db); } -static int umem_size(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_virtqueue *mvq, int num, - struct mlx5_vdpa_umem **umemp) +static void set_umem_size(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_virtqueue *mvq, int num, + struct mlx5_vdpa_umem **umemp) { struct mlx5_core_dev *mdev = ndev->mvdev.mdev; int p_a; @@ -635,7 +635,7 @@ static int umem_size(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_virtqueue *mvq *umemp = &mvq->umem3; break; } - return p_a * mvq->num_ent + p_b; + (*umemp)->size = p_a * mvq->num_ent + p_b; } static void umem_frag_buf_free(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_umem *umem) @@ -651,15 +651,10 @@ static int create_umem(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_virtqueue *m void *in; int err; __be64 *pas; - int size; struct mlx5_vdpa_umem *umem; - size = umem_size(ndev, mvq, num, &umem); - if (size < 0) - return size; - - umem->size = size; - err = umem_frag_buf_alloc(ndev, umem, size); + set_umem_size(ndev, mvq, num, &umem); + err = umem_frag_buf_alloc(ndev, umem, umem->size); if (err) return err; -- 2.30.2