Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp3199233pxv; Mon, 12 Jul 2021 11:40:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyF9T00O1SaCA1Bq1VXAHaXBTUd95Fmg5Bd6tzK4hNC8sLRC6jInDk9TVKiljD+EMyj2ipC X-Received: by 2002:a05:6402:26ca:: with SMTP id x10mr229675edd.319.1626115215041; Mon, 12 Jul 2021 11:40:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626115215; cv=none; d=google.com; s=arc-20160816; b=0Gjp1WJHxqhi9T40kn1+J7CyZIFtYS1RUVHZsUE/09Z2A2CR5QDUdZZ1cYiJyoKq8C WpeVA2YVNLmym4yIGSksxt+IuJnxOmPkINBeHvxFAxzghl/oaMwcIJ8dM9A0qmCbRVhM Fk1V7SUeOffCJnSIj1QcrUhj8Dr9TjLEh8pLOZl8GyPBwg+DgjSuP0RUrW0T9EBa8RoF yCfdIUqeKV/lrVxZnoLY+HDAuQM9rs+0rs7BDA1qt9wrpx+7cE1GB6qnQhj4FC0gZw3t UpM5ltfbtBWPZbjON8BJuL/PgN704pRVArfXapDmAe8xH0KY3+bPtedCXtnYqbuVIVML dm0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=FZWI809EM0kWSYKdDeR8M3Ek3N/OKceTmzxiJRrMjv0=; b=Jt99pE7lRDZSa+qZ0Zyh1owkH9+iBkfll+GV+NvVubB0fN8MGmISDkdfPaF2FVd+ls lVmcEKCU9pqFJwR9axZn5pUwwob/8HiZYkoz5wjPlAa87vnkX/+9auoRl/YA3+TDKBOR o4RuW8qQTci9fPndbLWufR4iLi2RDxiM9dxLqlobwScaOL1ekfp82TpV4xAezmdByQbh 9uQ1kZK/n35Ar0vMNyOqsLNHfXHEhHielyyaa+tKf2YCbruNDUY8F9oXEdbYrcT5ze+j Mch7IInQuKgOB09zf7DedJ1QvF9XQdiGQAAXkUAFc73TnDEMfEI4APam+2SEnpkYiy0G jeGw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b="U/qz5/PV"; 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=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s9si17145840eds.27.2021.07.12.11.39.52; Mon, 12 Jul 2021 11:40:15 -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=@chromium.org header.s=google header.b="U/qz5/PV"; 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=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235920AbhGLSlr (ORCPT + 99 others); Mon, 12 Jul 2021 14:41:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235899AbhGLSlp (ORCPT ); Mon, 12 Jul 2021 14:41:45 -0400 Received: from mail-ot1-x32e.google.com (mail-ot1-x32e.google.com [IPv6:2607:f8b0:4864:20::32e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E4DDBC0613DD for ; Mon, 12 Jul 2021 11:38:56 -0700 (PDT) Received: by mail-ot1-x32e.google.com with SMTP id w15-20020a056830144fb02904af2a0d96f3so19869805otp.6 for ; Mon, 12 Jul 2021 11:38:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=FZWI809EM0kWSYKdDeR8M3Ek3N/OKceTmzxiJRrMjv0=; b=U/qz5/PV6oqvmMd/Zt16iUeVPD3wWnzAUca3PgKD2HuN28lr4NPCgx6/NISCFp3Lvf 6NnmIqLkvibjMtlj4qMqP4PURjO1zanRe/ubXj94xzlYNIrJ1A6uZsOF6LWwg/0dAY7M 4ycBW0KE8kBx+CyIvNgS+m5OR9aU+vOSCtF2w= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=FZWI809EM0kWSYKdDeR8M3Ek3N/OKceTmzxiJRrMjv0=; b=aAQ7NynwYUSVHqvGEH6q1UWrEDJ1nOvjFHYj099YO7OuWBC4rEjvx68LnAt3A15Yiy G2prp/dveqJRv9BVZoGg1enj8TS6apoYTWq6KLIie4ltjGmgzbKHSS/DW/nVuisSPtvY 8TaUEMYLihIasGPuSC5l0sildbs1wG+WpG1zoYG9+rnETurJi4wG7GqzG8aaNFtU7GPW PpnNJqFSlacCHFcrVZP5NLWRIZV3hDT63LMJku3mvvA4kLIA7h2xd+icbrS1n35AtjZ6 O+Ei0UH6bxum2xMGZn/WhxXkjaAERsLOmLZ0xEZLkxNTyNWqpLzzadT9Iw8bex3iegGu y+Og== X-Gm-Message-State: AOAM530XBuK0DYx+ecGV0H6Nyo/743qB6fql0qm+dnp6BYTiG7FSQT6+ RWCagW/q9KHSrOYHzQ9SWnPcQC67+BrRIA== X-Received: by 2002:a9d:ea2:: with SMTP id 31mr336313otj.200.1626115136119; Mon, 12 Jul 2021 11:38:56 -0700 (PDT) Received: from mail-oi1-f178.google.com (mail-oi1-f178.google.com. [209.85.167.178]) by smtp.gmail.com with ESMTPSA id t5sm3245424otk.39.2021.07.12.11.38.55 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 12 Jul 2021 11:38:55 -0700 (PDT) Received: by mail-oi1-f178.google.com with SMTP id s23so10842530oij.0 for ; Mon, 12 Jul 2021 11:38:55 -0700 (PDT) X-Received: by 2002:a05:6808:112:: with SMTP id b18mr3729139oie.77.1626115134537; Mon, 12 Jul 2021 11:38:54 -0700 (PDT) MIME-Version: 1.0 References: <20210711141634.6133-1-len.baker@gmx.com> In-Reply-To: From: Brian Norris Date: Mon, 12 Jul 2021 11:38:43 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] rtw88: Fix out-of-bounds write To: Pkshih Cc: Len Baker , Yan-Hsuan Chuang , Kalle Valo , "David S. Miller" , Jakub Kicinski , Stanislaw Gruszka , "linux-wireless@vger.kernel.org" , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "stable@vger.kernel.org" Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Jul 11, 2021 at 6:43 PM Pkshih wrote: > > -----Original Message----- > > From: Len Baker [mailto:len.baker@gmx.com] > > > > In the rtw_pci_init_rx_ring function the "if (len > TRX_BD_IDX_MASK)" > > statement guarantees that len is less than or equal to GENMASK(11, 0) or > > in other words that len is less than or equal to 4095. However the > > rx_ring->buf has a size of RTK_MAX_RX_DESC_NUM (defined as 512). This > > way it is possible an out-of-bounds write in the for statement due to > > the i variable can exceed the rx_ring->buff size. > > > > Fix it using the ARRAY_SIZE macro. > > > > Cc: stable@vger.kernel.org > > Addresses-Coverity-ID: 1461515 ("Out-of-bounds write") Coverity seems to be giving a false warning here. I presume it's taking the |len| comparison as proof that |len| might be as large as TRX_BD_IDX_MASK, but as noted below, that's not really true; the |len| comparison is really just dead code. > > Fixes: e3037485c68ec ("rtw88: new Realtek 802.11ac driver") > > Signed-off-by: Len Baker > To prevent the 'len' argument from exceeding the array size of rx_ring->buff, I > suggest to add another checking statement, like > > if (len > ARRAY_SIZE(rx_ring->buf)) { > rtw_err(rtwdev, "len %d exceeds maximum RX ring buffer\n", len); > return -EINVAL; > } That seems like a better idea, if we really need to patch anything. > But, I wonder if this a false alarm because 'len' is equal to ARRAY_SIZE(rx_ring->buf) > for now. Or to the point: rtw_pci_init_rx_ring() is only ever called with a fixed constant -- RTK_MAX_RX_DESC_NUM (i.e., 512) -- so the alleged overflow cannot happen. Brian