All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] mmc_write.c: Make mmc_berase do 32bit safe 64bit math
Date: Tue, 16 Jun 2015 11:53:53 +0200	[thread overview]
Message-ID: <557FF231.30605@redhat.com> (raw)
In-Reply-To: <1434070411-28082-1-git-send-email-trini@konsulko.com>

Hi,

On 12-06-15 02:53, Tom Rini wrote:
> We want to see if the requested start or total block count are
> unaligned.  We discard the whole numbers and only care about the
> remainder.  Update the code to use div_u64_rem here and add a comment.
>
> Cc: Hans de Goede <hdegoede@redhat.com>
> Cc: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
> Cc: Bernhard Nortmann <bernhard.nortmann@web.de>
> Reported-by: Simon Glass <sjg@chromium.org>
> Signed-off-by: Tom Rini <trini@konsulko.com>
> Tested-by: Bernhard Nortmann <bernhard.nortmann@web.de>

Thanks for this, looks good to me:

Reviewed-by: Hans de Goede <hdegoede@redhat.com>

Regards,

Hans

> ---
>   drivers/mmc/mmc_write.c |   12 +++++++++++-
>   1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/mmc_write.c b/drivers/mmc/mmc_write.c
> index 3db9669..7aea7e9 100644
> --- a/drivers/mmc/mmc_write.c
> +++ b/drivers/mmc/mmc_write.c
> @@ -10,6 +10,8 @@
>   #include <config.h>
>   #include <common.h>
>   #include <part.h>
> +#include <div64.h>
> +#include <linux/math64.h>
>   #include "mmc_private.h"
>
>   static ulong mmc_erase_t(struct mmc *mmc, ulong start, lbaint_t blkcnt)
> @@ -66,6 +68,7 @@ err_out:
>   unsigned long mmc_berase(int dev_num, lbaint_t start, lbaint_t blkcnt)
>   {
>   	int err = 0;
> +	u32 start_rem, blkcnt_rem;
>   	struct mmc *mmc = find_mmc_device(dev_num);
>   	lbaint_t blk = 0, blk_r = 0;
>   	int timeout = 1000;
> @@ -73,7 +76,14 @@ unsigned long mmc_berase(int dev_num, lbaint_t start, lbaint_t blkcnt)
>   	if (!mmc)
>   		return -1;
>
> -	if ((start % mmc->erase_grp_size) || (blkcnt % mmc->erase_grp_size))
> +	/*
> +	 * We want to see if the requested start or total block count are
> +	 * unaligned.  We discard the whole numbers and only care about the
> +	 * remainder.
> +	 */
> +	err = div_u64_rem(start, mmc->erase_grp_size, &start_rem);
> +	err = div_u64_rem(blkcnt, mmc->erase_grp_size, &blkcnt_rem);
> +	if (start_rem || blkcnt_rem)
>   		printf("\n\nCaution! Your devices Erase group is 0x%x\n"
>   		       "The erase range would be change to "
>   		       "0x" LBAF "~0x" LBAF "\n\n",
>

  parent reply	other threads:[~2015-06-16  9:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-12  0:53 [U-Boot] [PATCH] mmc_write.c: Make mmc_berase do 32bit safe 64bit math Tom Rini
2015-06-12  7:32 ` Bernhard Nortmann
2015-06-16  9:53 ` Hans de Goede [this message]
2015-06-18 22:46 ` [U-Boot] " Tom Rini

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=557FF231.30605@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=u-boot@lists.denx.de \
    /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.