From patchwork Mon Aug 20 00:00:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eugeniu Rosca X-Patchwork-Id: 959471 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="OcGFXEFW"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41tvPC0Ts4z9s4c for ; Mon, 20 Aug 2018 10:11:42 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 908DBC21D74; Mon, 20 Aug 2018 00:10:35 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, KHOP_BIG_TO_CC, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id EF376C21E8A; Mon, 20 Aug 2018 00:07:49 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 0752FC21C93; Mon, 20 Aug 2018 00:05:02 +0000 (UTC) Received: from mail-wm0-f68.google.com (mail-wm0-f68.google.com [74.125.82.68]) by lists.denx.de (Postfix) with ESMTPS id A7F1BC21C2C for ; Mon, 20 Aug 2018 00:05:02 +0000 (UTC) Received: by mail-wm0-f68.google.com with SMTP id o11-v6so12412133wmh.2 for ; Sun, 19 Aug 2018 17:05:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=pvaVV1i87h3mD7e4wv8OQ2j6Ui98FOZGIwbVU2LUlbU=; b=OcGFXEFWj03v5K5830KhJTbiYceWFLuuw/z7wRTKgF60T7TS5b7zKUpa07FozMCmtU UGzoCqI1ysQP4dJXuSFyFqdsVA7Pt8cpnOV0BUwavfLwNccaWdDST54rJmOCA4yG/kJP G/7W0MyfRm5kYXIM0rl0tazvHrmXovuYpfYhV7euK8RvfU+H00Dgd3d120TdOU+UmQc9 kWP6/mxCCQkxxApBE0V3TFBFTSusdXILUMCCbzJA5oGTE4awwr6qzQ/R6Mc4denaQ2uo t0iRqby+4afP0MW+mwtW8b0FJDxN4inMAeD6G8TzdRIucloCd7InxWzcDzGaHEnSxeCo SudQ== 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; bh=pvaVV1i87h3mD7e4wv8OQ2j6Ui98FOZGIwbVU2LUlbU=; b=s5W2GghYiScWVZ4A+n5OA5B4/vcvPPQU3pNtftuRhueFzS6mVJLuM+FrckZtKbsNyn 4SZDJIv35lauUr/QajKuA7OnmLzcUjr70+tg2RBZRzISqEA0aAFykEDw2vWo+n55t/r3 BCflAn+2pIbrRTb1ytKOwP1zkk4wpNXq0g1Oa1pAuF5DPtNHDLivf6ck4L2qYaNFFrLT pxsZh7gTpjjxm8xpY2cQAWHLEFqnud0fZEytqB26EIv0/0nd/nXCcFPeaN7T74Os2/dC 8bda54rl72ko42fshn0ghILgWuJb8TXDZkaSUi/8TH9Zn3jbgU0/T1AKRDnbPXdKmmbA cV4A== X-Gm-Message-State: AOUpUlHcAHRCdojjzwDlpycdqdKaIcjwoXkdVMBoD/HjdIM/XoRlA345 kyhOchKjzgwZesHKcrpIENw= X-Google-Smtp-Source: AA+uWPxpLqfD2g+/ZAbZYdO8AXSl0dr8+JCL7WFWhMjH17gE+Jj01wRXGa0SbVv3fAyUTb/VRnv4Tg== X-Received: by 2002:a1c:ac07:: with SMTP id v7-v6mr19608759wme.110.1534723502347; Sun, 19 Aug 2018 17:05:02 -0700 (PDT) Received: from localhost.localdomain (ipb218f552.dynamic.kabel-deutschland.de. [178.24.245.82]) by smtp.gmail.com with ESMTPSA id w4-v6sm7648194wro.24.2018.08.19.17.04.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 19 Aug 2018 17:05:01 -0700 (PDT) From: Eugeniu Rosca X-Google-Original-From: Eugeniu Rosca To: Tom Rini , Simon Glass , Masahiro Yamada , Andrey Ryabinin , Andre Przywara , Igor Opaniuk , Rasmus Villemoes , Bryan O'Donoghue , Andy Shevchenko , Chris Packham , Alex Kiernan , Alexey Brodkin , Michal Simek , York Sun , "Derald D . Woods" , Miquel Raynal , Baruch Siach , Albert Aribaud , Stephen Warren , Alexander Graf , Rick Chen , Adam Ford , Simon Goldschmidt , Pantelis Antoniou , Marek Vasut , Takeshi Kihara , Bin Meng , Heinrich Schuchardt , Anatolij Gustschin , Jean-Jacques Hiblot , Jaehoon Chung , Peng Fan , Andy Yan , Philipp Tomsich , Nobuhiro Iwamatsu , Mario Six , Grygorii Strashko , Neil Armstrong , Joe Hershberger , Florian Fainelli , Stefan Roese , Zubair Lutfullah Kakakhel , Quentin Schulz Date: Mon, 20 Aug 2018 02:00:31 +0200 Message-Id: <20180820000033.25519-8-erosca@de.adit-jv.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180820000033.25519-1-erosca@de.adit-jv.com> References: <20180820000033.25519-1-erosca@de.adit-jv.com> X-Mailman-Approved-At: Mon, 20 Aug 2018 00:07:41 +0000 Cc: u-boot@lists.denx.de, Eugeniu Rosca Subject: [U-Boot] [PATCH 7/8] mmc: Fix read-past-end-of-array undefined behavior X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Running "mmc dev 0" on R-Car H3 Salvator-X (CONFIG_UBSAN=y) occasionally results in: => mmc dev 0 ================================================================= UBSAN: Undefined behaviour in drivers/mmc/mmc.c:2233:14 index 7 is out of range for type 'int [4]' ================================================================= Currently, fbase[] array consists of 4 elements: -------8<------- static const int fbase[] = { 10000, 100000, 1000000, 10000000, }; -------8<------- Adjust the mask used to compute the fbase[] index accordingly. Fixes: 272cc70b211e ("Add MMC Framework") Signed-off-by: Eugeniu Rosca --- drivers/mmc/mmc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index 447519f46f15..01da99edb084 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -2230,7 +2230,7 @@ static int mmc_startup(struct mmc *mmc) } /* divide frequency by 10, since the mults are 10x bigger */ - freq = fbase[(cmd.response[0] & 0x7)]; + freq = fbase[(cmd.response[0] & 0x3)]; mult = multipliers[((cmd.response[0] >> 3) & 0xf)]; mmc->legacy_speed = freq * mult;