public inbox for ecos-bugs@sourceware.org help / color / mirror / Atom feed
From: bugzilla-daemon@bugs.ecos.sourceware.org To: ecos-bugs@ecos.sourceware.org Subject: [Bug 1001568] New: fis load reads incorrect data if bad blocks are present Date: Sun, 22 Apr 2012 03:43:00 -0000 [thread overview] Message-ID: <bug-1001568-13@http.bugs.ecos.sourceware.org/> (raw) Please do not reply to this email. Use the web interface provided at: http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001568 Summary: fis load reads incorrect data if bad blocks are present Product: eCos Version: unknown Platform: All OS/Version: All Status: UNCONFIRMED Severity: major Priority: low Component: RedBoot AssignedTo: unassigned@bugs.ecos.sourceware.org ReportedBy: trent.lillehaugen@red.com CC: ecos-bugs@ecos.sourceware.org Class: Advice Request Note: I found this bug in an older version of red boot and have not confirmed the bug in the latest code and therefore am not able to submit a patch. However, after examining the source code via CVSweb it certainly appears as though the bug does still exist. I came across the problem when trying to load a kernel image using 'fis load'. If there happened to be a bad block within the region of the kernel image - the image would not run. I traced it down to the function 'cyg_flash_read' in ecos/packages/io/flash/current/src/flash.c In this function there is a while loop that will call 'dev->funs->flash_read' for each block in the region to be read. The driver function will skip bad blocks correctly, however, 'cyg_flash_read' is unaware that the driver skipped any bad blocks and incorrectly increments 'addr' by 'this_read'. If there is a bad block the block immediately after the bad block ends up being read twice and the image is corrupted. My fix was to not limit 'this_read' to the size of a block. In my case I verified that the driver function would work with sizes larger than one block - I have not looked through the current code to see if that is guaranteed or not. That way, instead of looping and calling 'dev->funs->flash_read' multiple times, I simply called it once with the entire length. Since the driver code correctly handled skipping over bad blocks my image was no longer being corrupted when I called 'fis load'. -- Configure bugmail: http://bugs.ecos.sourceware.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
next reply other threads:[~2012-04-22 3:43 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-04-22 3:43 bugzilla-daemon [this message] -- strict thread matches above, loose matches on Subject: below -- 2012-04-22 3:43 bugzilla-daemon
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=bug-1001568-13@http.bugs.ecos.sourceware.org/ \ --to=bugzilla-daemon@bugs.ecos.sourceware.org \ --cc=ecos-bugs@ecos.sourceware.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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).