From: Jaehoon Chung <jh80.chung@samsung.com>
To: Seung-Woo Kim <sw0312.kim@samsung.com>,
ulf.hansson@linaro.org, linux-mmc@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3] mmc: dw_mmc: remove UBSAN warning in dw_mci_setup_bus()
Date: Wed, 22 Jun 2016 10:27:13 +0900 [thread overview]
Message-ID: <5769E971.3040501@samsung.com> (raw)
In-Reply-To: <1466395785-3715-1-git-send-email-sw0312.kim@samsung.com>
Hi Seung-Woo,
On 06/20/2016 01:09 PM, Seung-Woo Kim wrote:
> This patch removes following UBSAN warnings in dw_mci_setup_bus().
>
> UBSAN: Undefined behaviour in drivers/mmc/host/dw_mmc.c:1102:14
> shift exponent 250 is too large for 32-bit type 'unsigned int'
> Call trace:
> [<ffffff90080908a8>] dump_backtrace+0x0/0x380
> [<ffffff9008090c3c>] show_stack+0x14/0x20
> [<ffffff90087457b8>] dump_stack+0xe0/0x120
> [<ffffff90087b1360>] ubsan_epilogue+0x18/0x68
> [<ffffff90087b1a94>] __ubsan_handle_shift_out_of_bounds+0x18c/0x1bc
> [<ffffff9008d89cb8>] dw_mci_setup_bus+0x3a0/0x438
> [...]
>
> UBSAN: Undefined behaviour in drivers/mmc/host/dw_mmc.c:1132:27
> shift exponent 250 is too large for 32-bit type 'unsigned int'
> Call trace:
> [<ffffff90080908a8>] dump_backtrace+0x0/0x380
> [<ffffff9008090c3c>] show_stack+0x14/0x20
> [<ffffff90087457b8>] dump_stack+0xe0/0x120
> [<ffffff90087b1360>] ubsan_epilogue+0x18/0x68
> [<ffffff90087b1a94>] __ubsan_handle_shift_out_of_bounds+0x18c/0x1bc
> [<ffffff9008d89c9c>] dw_mci_setup_bus+0x384/0x438
> [...]
>
> The warnings are caused because of bit shift which is used to
> filter spamming message for CONFIG_MMC_CLKGATE, but the config is
> already removed. So this patch just removes the shift.
>
> Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Applied this patch on my repository.
Thanks!
Best Regards,
Jaehoon Chung
> ---
> drivers/mmc/host/dw_mmc.c | 14 +++++---------
> drivers/mmc/host/dw_mmc.h | 4 ----
> 2 files changed, 5 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index 2cc6123..bada11e 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -1099,12 +1099,11 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit)
>
> div = (host->bus_hz != clock) ? DIV_ROUND_UP(div, 2) : 0;
>
> - if ((clock << div) != slot->__clk_old || force_clkinit)
> - dev_info(&slot->mmc->class_dev,
> - "Bus speed (slot %d) = %dHz (slot req %dHz, actual %dHZ div = %d)\n",
> - slot->id, host->bus_hz, clock,
> - div ? ((host->bus_hz / div) >> 1) :
> - host->bus_hz, div);
> + dev_info(&slot->mmc->class_dev,
> + "Bus speed (slot %d) = %dHz (slot req %dHz, actual %dHZ div = %d)\n",
> + slot->id, host->bus_hz, clock,
> + div ? ((host->bus_hz / div) >> 1) :
> + host->bus_hz, div);
>
> /* disable clock */
> mci_writel(host, CLKENA, 0);
> @@ -1127,9 +1126,6 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit)
>
> /* inform CIU */
> mci_send_cmd(slot, sdmmc_cmd_bits, 0);
> -
> - /* keep the clock with reflecting clock dividor */
> - slot->__clk_old = clock << div;
> }
>
> host->current_speed = clock;
> diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
> index 1e8d838..5961037 100644
> --- a/drivers/mmc/host/dw_mmc.h
> +++ b/drivers/mmc/host/dw_mmc.h
> @@ -245,9 +245,6 @@ extern int dw_mci_resume(struct dw_mci *host);
> * @queue_node: List node for placing this node in the @queue list of
> * &struct dw_mci.
> * @clock: Clock rate configured by set_ios(). Protected by host->lock.
> - * @__clk_old: The last updated clock with reflecting clock divider.
> - * Keeping track of this helps us to avoid spamming the console
> - * with CONFIG_MMC_CLKGATE.
> * @flags: Random state bits associated with the slot.
> * @id: Number of this slot.
> * @sdio_id: Number of this slot in the SDIO interrupt registers.
> @@ -262,7 +259,6 @@ struct dw_mci_slot {
> struct list_head queue_node;
>
> unsigned int clock;
> - unsigned int __clk_old;
>
> unsigned long flags;
> #define DW_MMC_CARD_PRESENT 0
>
prev parent reply other threads:[~2016-06-22 1:28 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20160608040654epcas1p2be228e3e02e35a640cb1e65228df79ad@epcas1p2.samsung.com>
2016-06-08 4:07 ` [PATCH] mmc: dw_mmc: remove UBSAN warning in dw_mci_setup_bus() Seung-Woo Kim
2016-06-09 12:38 ` Jaehoon Chung
2016-06-10 1:29 ` Seung-Woo Kim
2016-06-10 1:29 ` Seung-Woo Kim
2016-06-17 1:30 ` Jaehoon Chung
2016-06-17 4:07 ` Seung-Woo Kim
2016-06-17 4:07 ` Seung-Woo Kim
2016-06-17 5:16 ` [PATCH v2] " Seung-Woo Kim
2016-06-20 2:34 ` Jaehoon Chung
2016-06-20 3:30 ` Seung-Woo Kim
2016-06-20 3:45 ` Seung-Woo Kim
2016-06-20 4:09 ` [PATCH v3] " Seung-Woo Kim
2016-06-22 1:27 ` Jaehoon Chung [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5769E971.3040501@samsung.com \
--to=jh80.chung@samsung.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=sw0312.kim@samsung.com \
--cc=ulf.hansson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.