Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp1424599pxb; Wed, 12 Jan 2022 14:35:11 -0800 (PST) X-Google-Smtp-Source: ABdhPJwRjCi60Aa1LJW1Wfbikct5sErbip4tBvuLnddqs0N9LFERSV88Z/A1JhpPCnoki0LPfQ58 X-Received: by 2002:a17:907:728c:: with SMTP id dt12mr1329919ejc.313.1642026911260; Wed, 12 Jan 2022 14:35:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642026911; cv=none; d=google.com; s=arc-20160816; b=bZzMBVE1cDM3gIJDZ5FFRFxTOwxFISMGfztkM73SINUzGekumfDagpEklTHyOqZzYn +qCd93GX99XPHOt4H1jysySB49vWrvvpymgSwra8IRfdVX+31Xo76o5xZfmvrD88SgEg ThWVd0Ftbxqw9W+PbvAXruKjhVB7dxom2g7fd94toOzpH/VjD8XPIUj8bnSLHCcXKNL5 1p+S5O8FEVeydn57deSwDAEA6aF6Ww9WgOfEH46VxFQVtXVxSfaZvsUfdZM4y9FdKsgz /fiY/JsLNCv4+IoFmCbYxz6nHe0RTauFXFHtSi0ri1YwacLYEwtz+c/HhRxOpvyNOdDD VVLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:date:message-id:user-agent:cc:to:references :in-reply-to:from:subject:content-transfer-encoding:mime-version :dkim-signature; bh=h3axxqM2FOhD2zdhSZq0CsNW10z5YIQ4MiPdYa39naQ=; b=u//RIpSx+Ist+EVTDEbKlgdr6PyKMZmunJThxeCRdm5BuGa1o2LGiVmcs79pYZMYlx XiZR6RWevzpZGylWtViKa6BZ0Err0tk8NXy7ct+jw96qaAoLVWCdAMXF2nbUo3+kWOg5 HcyvITt177Dgog154xVc5NVikOKO6j1rOJLkhhMNSpNRQ2Rzr2WYDKgdzLjAwfxcA19q cL3xVWyAR9lZEsDFtGdZExa4ghdwUsh4RGKt4xdEi9d97FlqSPXvmuk/VjYgiTGclhi9 Zs3PGx2t8kboj9WKoDwfdhNWHa7TF3bfeWYZS93WVe8upmYwTSuB5Ib6c0vuLZVU2jot IBzw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=dCMCCg6W; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w15si521257edv.256.2022.01.12.14.34.54; Wed, 12 Jan 2022 14:35:11 -0800 (PST) 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=@kernel.org header.s=k20201202 header.b=dCMCCg6W; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1351486AbiALIOC (ORCPT + 71 others); Wed, 12 Jan 2022 03:14:02 -0500 Received: from dfw.source.kernel.org ([139.178.84.217]:40782 "EHLO dfw.source.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237613AbiALIOB (ORCPT ); Wed, 12 Jan 2022 03:14:01 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 269E161731; Wed, 12 Jan 2022 08:14:01 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 29354C36AEC; Wed, 12 Jan 2022 08:13:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1641975240; bh=sVNfXg6usJJoEU9t5/A5dvhFxSpMOUHjwCWedxCuoVE=; h=Subject:From:In-Reply-To:References:To:Cc:Date:From; b=dCMCCg6Wotk2I1eqDR1vIv9p6OqOLo4eDqR87Hgz+Qd9zUGdf6Y9+TuFBQOLT4+gh HhP/aLd3SI5j2Ma/BiJWRCz2qcV7kWqFKPDd6B0EdFoxJrGqaeTvpRir0j8INXKlCp 2IJdJnp1Sy3Dj/0cwZXYOcG8X5R2qZuT0aPBmCVnRpeJSeYP0H91J/f0OGmPLM7ZHn Kv2ToO00Gn54GXj7XuePdBs7ozKIr9bPxqU1WRftiXI5duKtSqZ3sffsch08qOA1yl aI20WJGnvmgUMhMbbMcRz/noWpUPwkj1mGHNkb4X03zu6+7UG6c7kXUQLfb37z5gek u8mOpyu+eHS0w== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Re: [PATCH] ath5k: fix OOB in ath5k_eeprom_read_pcal_info_5111 From: Kalle Valo In-Reply-To: References: To: Zekun Shen Cc: bruceshenzk@gmail.com, Jiri Slaby , Nick Kossifidis , Luis Chamberlain , "David S. Miller" , Jakub Kicinski , linux-wireless@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, brendandg@nyu.edu User-Agent: pwcli/0.1.0-git (https://github.com/kvalo/pwcli/) Python/3.7.3 Message-ID: <164197523645.14338.13517394288080922684.kvalo@kernel.org> Date: Wed, 12 Jan 2022 08:13:57 +0000 (UTC) Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Zekun Shen wrote: > The bug was found during fuzzing. Stacktrace locates it in > ath5k_eeprom_convert_pcal_info_5111. > When none of the curve is selected in the loop, idx can go > up to AR5K_EEPROM_N_PD_CURVES. The line makes pd out of bound. > pd = &chinfo[pier].pd_curves[idx]; > > There are many OOB writes using pd later in the code. So I > added a sanity check for idx. Checks for other loops involving > AR5K_EEPROM_N_PD_CURVES are not needed as the loop index is not > used outside the loops. > > The patch is NOT tested with real device. > > The following is the fuzzing report > > BUG: KASAN: slab-out-of-bounds in ath5k_eeprom_read_pcal_info_5111+0x126a/0x1390 [ath5k] > Write of size 1 at addr ffff8880174a4d60 by task modprobe/214 > > CPU: 0 PID: 214 Comm: modprobe Not tainted 5.6.0 #1 > Call Trace: > dump_stack+0x76/0xa0 > print_address_description.constprop.0+0x16/0x200 > ? ath5k_eeprom_read_pcal_info_5111+0x126a/0x1390 [ath5k] > ? ath5k_eeprom_read_pcal_info_5111+0x126a/0x1390 [ath5k] > __kasan_report.cold+0x37/0x7c > ? ath5k_eeprom_read_pcal_info_5111+0x126a/0x1390 [ath5k] > kasan_report+0xe/0x20 > ath5k_eeprom_read_pcal_info_5111+0x126a/0x1390 [ath5k] > ? apic_timer_interrupt+0xa/0x20 > ? ath5k_eeprom_init_11a_pcal_freq+0xbc0/0xbc0 [ath5k] > ? ath5k_pci_eeprom_read+0x228/0x3c0 [ath5k] > ath5k_eeprom_init+0x2513/0x6290 [ath5k] > ? ath5k_eeprom_init_11a_pcal_freq+0xbc0/0xbc0 [ath5k] > ? usleep_range+0xb8/0x100 > ? apic_timer_interrupt+0xa/0x20 > ? ath5k_eeprom_read_pcal_info_2413+0x2f20/0x2f20 [ath5k] > ath5k_hw_init+0xb60/0x1970 [ath5k] > ath5k_init_ah+0x6fe/0x2530 [ath5k] > ? kasprintf+0xa6/0xe0 > ? ath5k_stop+0x140/0x140 [ath5k] > ? _dev_notice+0xf6/0xf6 > ? apic_timer_interrupt+0xa/0x20 > ath5k_pci_probe.cold+0x29a/0x3d6 [ath5k] > ? ath5k_pci_eeprom_read+0x3c0/0x3c0 [ath5k] > ? mutex_lock+0x89/0xd0 > ? ath5k_pci_eeprom_read+0x3c0/0x3c0 [ath5k] > local_pci_probe+0xd3/0x160 > pci_device_probe+0x23f/0x3e0 > ? pci_device_remove+0x280/0x280 > ? pci_device_remove+0x280/0x280 > really_probe+0x209/0x5d0 > > Reported-by: Brendan Dolan-Gavitt > Signed-off-by: Zekun Shen > Signed-off-by: Kalle Valo Patch applied to ath-next branch of ath.git, thanks. 564d4eceb97e ath5k: fix OOB in ath5k_eeprom_read_pcal_info_5111 -- https://patchwork.kernel.org/project/linux-wireless/patch/YckvDdj3mtCkDRIt@a-10-27-26-18.dynapool.vpn.nyu.edu/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches