Received: by 2002:a05:6a10:a852:0:0:0:0 with SMTP id d18csp647623pxy; Wed, 5 May 2021 10:16:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw7G7uCSBD3MOFU8KC17poZ2bltecaA1OhcNwkrIvwZcD1EcYMsZCV4zrQEzwVjuUm4A4VR X-Received: by 2002:a17:902:f203:b029:ee:af8f:8e4b with SMTP id m3-20020a170902f203b02900eeaf8f8e4bmr79388plc.23.1620234979010; Wed, 05 May 2021 10:16:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620234979; cv=none; d=google.com; s=arc-20160816; b=wEtW77l97XJekBTAL7LQQDDHskM/9/D6ODHL8Mz038ZveWSNbXD2bFI+/GES4aSDPq oQ8CzC2P5M2CgBIV83nMOeFnBaOzLqNKeqMNJPCoHqcNAMUV+4Y23u2DyYjzMOOICYXr JkacoTO2GZFxE1q/qHZY+i6amI7lvc8bF6fzTqt4VlcPEx3mR+enQpH1Ibw5I8V9Dp45 VO7mhiQ1km7pikcNesNbvptVOW7LK/QlI0ITSthWxVPYqqynSIy3qfWf63f2fFdl7km+ 96DQMLzFpLYEmnLfjXtNvlNjByN3QSDlffr9tUIDLDAvIAw9ePyyeITP/zSOLuJAAOCH tKUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dmarc-filter:sender:dkim-signature; bh=2NJ2FCJ5eygsO7NmVQKBkrCnohRdJRzGE0EKHDhDgYA=; b=qCLDlnGmEwbxJ31lGB96uz1F/HBshqVOrXyiSZqJumWvk8FK1C9WIu9rlHLYIv2Uzn ddFqCUT+T+vpwP8uDtNYN7wFwkrZeuVH9UDY1g6k1gF1Mdsfu13ilwrmuZRHUSCbkmTs Kzln6/AYpkDyQqf7uxvEciH8a1WWKIKdXl5fc3pgyxt9K06sFlJ62LD2mXi9m5rhFcWz Eu0Biwjm1xLq+m9E1kU+z4CwY5uG+w4kE/N+iV4uvUecwtlzqKFDAUGeyZDIB5KPadLT cpcPlTOSgpOBXaGggRGrZkotBf3XeP7kmqdK/tElZfKEGLQVucPuzIpoVLFhJEUy6kEW U2Bg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=eVO2dj3N; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-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 e15si7741451pgt.362.2021.05.05.10.16.06; Wed, 05 May 2021 10:16:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-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=@mg.codeaurora.org header.s=smtp header.b=eVO2dj3N; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237482AbhEEROB (ORCPT + 99 others); Wed, 5 May 2021 13:14:01 -0400 Received: from so254-9.mailgun.net ([198.61.254.9]:58048 "EHLO so254-9.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239040AbhEERKg (ORCPT ); Wed, 5 May 2021 13:10:36 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1620234579; h=References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=2NJ2FCJ5eygsO7NmVQKBkrCnohRdJRzGE0EKHDhDgYA=; b=eVO2dj3NjJNlHQR73Rav4QC+tr0hdXzH9YlEzoRHV8t9ltQMxKVLK5ccMrni2EtPHf7UWgt3 YsmECZRgL3XsZqapqNsx7odo4alXZihxrGskmHrB8UXUAFMlED5FNR6omtimXi2jk9M6q4sL Z5OiP3sHCknur06s7byaC6kbkkM= X-Mailgun-Sending-Ip: 198.61.254.9 X-Mailgun-Sid: WyI3YTAwOSIsICJsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmciLCAiYmU5ZTRhIl0= Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n01.prod.us-west-2.postgun.com with SMTP id 6092d1398807bcde1d132856 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Wed, 05 May 2021 17:09:13 GMT Sender: bbhatt=codeaurora.org@mg.codeaurora.org Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 567ABC00A28; Wed, 5 May 2021 17:09:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=ALL_TRUSTED,BAYES_00,SPF_FAIL autolearn=no autolearn_force=no version=3.4.0 Received: from malabar-linux.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: bbhatt) by smtp.codeaurora.org (Postfix) with ESMTPSA id A7CD9C43143; Wed, 5 May 2021 17:08:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org A7CD9C43143 Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=fail smtp.mailfrom=bbhatt@codeaurora.org From: Bhaumik Bhatt To: manivannan.sadhasivam@linaro.org Cc: linux-arm-msm@vger.kernel.org, hemantk@codeaurora.org, jhugo@codeaurora.org, linux-kernel@vger.kernel.org, loic.poulain@linaro.org, linux-wireless@vger.kernel.org, kvalo@codeaurora.org, ath11k@lists.infradead.org, Bhaumik Bhatt Subject: [PATCH v3 6/6] bus: mhi: core: Add range checks for BHI and BHIe Date: Wed, 5 May 2021 10:08:21 -0700 Message-Id: <1620234501-30461-7-git-send-email-bbhatt@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1620234501-30461-1-git-send-email-bbhatt@codeaurora.org> References: <1620234501-30461-1-git-send-email-bbhatt@codeaurora.org> Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org When obtaining the BHI or BHIe offsets during the power up preparation phase, range checks are missing. These can help controller drivers avoid accessing any address outside of the MMIO region. Ensure that mhi_cntrl->reg_len is set before MHI registration as it is a required field and range checks will fail without it. Signed-off-by: Bhaumik Bhatt Reviewed-by: Jeffrey Hugo --- drivers/bus/mhi/core/init.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/bus/mhi/core/init.c b/drivers/bus/mhi/core/init.c index 1cc2f22..86ad06e 100644 --- a/drivers/bus/mhi/core/init.c +++ b/drivers/bus/mhi/core/init.c @@ -885,7 +885,8 @@ int mhi_register_controller(struct mhi_controller *mhi_cntrl, if (!mhi_cntrl || !mhi_cntrl->cntrl_dev || !mhi_cntrl->regs || !mhi_cntrl->runtime_get || !mhi_cntrl->runtime_put || !mhi_cntrl->status_cb || !mhi_cntrl->read_reg || - !mhi_cntrl->write_reg || !mhi_cntrl->nr_irqs || !mhi_cntrl->irq) + !mhi_cntrl->write_reg || !mhi_cntrl->nr_irqs || + !mhi_cntrl->irq || !mhi_cntrl->reg_len) return -EINVAL; ret = parse_config(mhi_cntrl, config); @@ -1077,6 +1078,12 @@ int mhi_prepare_for_power_up(struct mhi_controller *mhi_cntrl) dev_err(dev, "Error getting BHI offset\n"); goto error_reg_offset; } + + if (bhi_off >= mhi_cntrl->reg_len) { + dev_err(dev, "BHI offset is out of range\n"); + ret = -EINVAL; + goto error_reg_offset; + } mhi_cntrl->bhi = mhi_cntrl->regs + bhi_off; if (mhi_cntrl->fbc_download || mhi_cntrl->rddm_size) { @@ -1086,6 +1093,12 @@ int mhi_prepare_for_power_up(struct mhi_controller *mhi_cntrl) dev_err(dev, "Error getting BHIE offset\n"); goto error_reg_offset; } + + if (bhie_off >= mhi_cntrl->reg_len) { + dev_err(dev, "BHIe offset is out of range\n"); + ret = -EINVAL; + goto error_reg_offset; + } mhi_cntrl->bhie = mhi_cntrl->regs + bhie_off; } -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project