All of lore.kernel.org
 help / color / mirror / Atom feed
From: S Durga Prasad Paladugu <durgaprasad.psdp@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] fpga: zynqpl: Fixed bug in alignment routine
Date: Tue, 18 Mar 2014 11:41:46 +0530	[thread overview]
Message-ID: <CAAhU36hjUdmJ3sNbqGBN1E0D3uN3kEGOgcKpsQG03QMtDysW-w@mail.gmail.com> (raw)
In-Reply-To: <1394916029-12079-1-git-send-email-eli.billauer@gmail.com>

Hi Eli,


On Sun, Mar 16, 2014 at 2:10 AM, Eli Billauer <eli.billauer@gmail.com>wrote:

> The aligned buffer is always with a higher address, so copying should run
> from the end of the buffer to the beginning, and not the other way around.
>
> Signed-off-by: Eli Billauer <eli.billauer@gmail.com>
> ---
>  drivers/fpga/zynqpl.c |    5 +++--
>  1 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/fpga/zynqpl.c b/drivers/fpga/zynqpl.c
> index 160abc7..2888131 100644
> --- a/drivers/fpga/zynqpl.c
> +++ b/drivers/fpga/zynqpl.c
> @@ -173,7 +173,8 @@ int zynq_load(Xilinx_desc *desc, const void *buf,
> size_t bsize)
>  {
>         unsigned long ts; /* Timestamp */
>         u32 partialbit = 0;
> -       u32 i, control, isr_status, status, swap, diff;
> +       u32 control, isr_status, status, swap, diff;
> +       int i;
>         u32 *buf_start;
>
>         /* Detect if we are going working with partial or full bitstream */
> @@ -206,7 +207,7 @@ int zynq_load(Xilinx_desc *desc, const void *buf,
> size_t bsize)
>                 printf("%s: Align buffer at %x to %x(swap %d)\n", __func__,
>                        (u32)buf_start, (u32)new_buf, swap);
>
> -               for (i = 0; i < (bsize/4); i++)
> +               for (i = (bsize/4)-1; i >= 0 ; i--)
>                         new_buf[i] = load_word(&buf_start[i], swap);
>
This looks like not correct because if you look at the code above this, it
always ensuring that the new aligned buffer start is in front of the actual
buffer. That is for example if actual buff start is at 0x6C, then it
provides new buf aligned at 0x00 and copying word by word from 0x6C to 0x00.

 But here if you do copy word by word from the end, it will end up in
corrupting the actual data.(For example if our buff len is some 0x100 the
you are trying to copy from 0x16c to 0x100 which will corrupt the actual
data at 0x100).


Regards,

DP

>
>                 swap = SWAP_DONE;
> --
> 1.7.2.3
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>

  reply	other threads:[~2014-03-18  6:11 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-15 20:40 [U-Boot] [PATCH] fpga: zynqpl: Fixed bug in alignment routine Eli Billauer
2014-03-18  6:11 ` S Durga Prasad Paladugu [this message]
2014-03-18 10:20   ` Eli Billauer
2014-03-18 12:17     ` Michal Simek
2014-03-18 21:14       ` Eli Billauer
2014-03-19  5:50         ` Michal Simek

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=CAAhU36hjUdmJ3sNbqGBN1E0D3uN3kEGOgcKpsQG03QMtDysW-w@mail.gmail.com \
    --to=durgaprasad.psdp@gmail.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.