linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: vipin.kumar@st.com (Vipin Kumar)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 09/11] fsmc/nand:FIX: replace change_bit routine
Date: Thu, 11 Oct 2012 09:50:05 +0530	[thread overview]
Message-ID: <507648F5.1030404@st.com> (raw)
In-Reply-To: <20121010204546.GK4625@n2100.arm.linux.org.uk>

On 10/11/2012 2:15 AM, Russell King - ARM Linux wrote:
> On Wed, Oct 10, 2012 at 07:22:04PM +0200, Linus Walleij wrote:
>> On Tue, Oct 9, 2012 at 12:44 PM, Vipin Kumar<vipin.kumar@st.com>  wrote:
>>
>>> change_bit routine accepts only ulong pointers as buffer, so an unaligned char
>>> pointer passed to change_bit may lead to a crash.
>>>
>>> Fix this bug by accessing the buffer as char pointer.
>>
>> Why not see if we can fix change_bit() instead?
>> Since I suspect this is on ARM I bet Russell and Nico
>> want to hear about this if there is a problem.
>
> Not particularly.  There's a reason the argument to change_bit() is typed
> 'unsigned long' and that's not because it can take a void, char, or a
> short.  It's because it _expects_ the buffer to be aligned to an
> "unsigned long" quantity.
>
> That's because on many architectures, misaligned loads and stores are
> not atomic operations - and in this case, load/store exclusive will
> fail when they're misalighed.
>
> So...
>
> -                       change_bit(err_idx[i], (unsigned long *)dat);
>
> is highly invalid code.
>

Thanks. Got your point

>> Can the ARM change_bit() not be fixed, so that
>> long arguments are the only option?
>
> Spot the intentional cast:
>
>>> -                       change_bit(err_idx[i], (unsigned long *)dat);
>
> which tries to work around this.  Remember my attitude towards casts:
> if you're having to use a cast, you are _probably_ doing something
> wrong.  In this case, it's hiding a warning which was saying that
> the code is doing something wrong, and then the result blows up.
> By adding that cast, the wrong wire was cut... you get to keep the
> remains. ;)
> .

I agree with you. Although I was a bit relaxed this time, I would really 
think before adding a cast explicitly just to avoid a warning

-Vipin

  reply	other threads:[~2012-10-11  4:20 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-09 10:44 [PATCH 00/11] mtd/nand: fsmc driver updates Vipin Kumar
2012-10-09 10:44 ` [PATCH 01/11] fsmc/nand:FIX: Change the type for regs to void __iomem * Vipin Kumar
2012-10-09 17:14   ` viresh kumar
2012-10-10 16:49   ` Linus Walleij
2012-10-17 12:30   ` Artem Bityutskiy
2012-10-09 10:44 ` [PATCH 02/11] fsmc/nand: Rearrange the fsmc_nand_data structure and update comments Vipin Kumar
2012-10-09 11:52   ` Jean-Christophe PLAGNIOL-VILLARD
2012-10-11  4:24     ` Vipin Kumar
2012-10-09 17:15   ` viresh kumar
2012-10-09 10:44 ` [PATCH 03/11] fsmc/nand: Support multiple banks connected to controller Vipin Kumar
2012-10-09 11:55   ` Jean-Christophe PLAGNIOL-VILLARD
2012-10-10 10:28     ` Vipin Kumar
2012-10-17 12:31   ` Artem Bityutskiy
2012-10-09 10:44 ` [PATCH 04/11] fsmc/nand: Accept nand timing parameters via DT Vipin Kumar
2012-10-09 11:57   ` Jean-Christophe PLAGNIOL-VILLARD
2012-10-11  4:25     ` Vipin Kumar
2012-10-09 17:20   ` viresh kumar
2012-10-09 10:44 ` [PATCH 05/11] fsmc: Implement ready/busy through gpio pin Vipin Kumar
2012-10-09 11:59   ` Jean-Christophe PLAGNIOL-VILLARD
2012-10-09 17:34   ` viresh kumar
2012-10-09 10:44 ` [PATCH 06/11] fsmc/nand: Modify the wait to uninterruptible Vipin Kumar
2012-10-10 17:10   ` Linus Walleij
2012-10-17 12:47   ` Artem Bityutskiy
2012-10-09 10:44 ` [PATCH 07/11] fsmc/nand: Provide contiguous buffers to dma Vipin Kumar
2012-10-09 17:41   ` viresh kumar
2012-10-10 17:07   ` Linus Walleij
2012-10-11  3:16     ` viresh kumar
2012-10-11  4:07       ` Vipin Kumar
2012-10-11  4:08     ` Vipin Kumar
2012-10-11  4:15     ` viresh kumar
2012-10-11 16:06       ` Linus Walleij
2012-10-11 17:07         ` viresh kumar
2012-10-11 21:51           ` Linus Walleij
2012-10-12  3:55         ` Vipin Kumar
2012-10-15 13:18           ` Artem Bityutskiy
2012-10-15 16:27             ` Brian Norris
2012-10-15 19:51               ` Linus Walleij
2012-10-16  7:14                 ` Artem Bityutskiy
2012-10-16 10:05                   ` Linus Walleij
2012-10-21  7:38                     ` Brian Norris
2012-10-21 11:00                       ` Artem Bityutskiy
2012-10-21 12:02                         ` Artem Bityutskiy
2012-10-16  7:11               ` Artem Bityutskiy
2012-10-21  7:21                 ` Brian Norris
2012-10-09 10:44 ` [PATCH 08/11] fsmc/nand: Use relaxed variants of io accessors Vipin Kumar
2012-10-09 17:42   ` viresh kumar
2012-10-10 17:09   ` Linus Walleij
2012-10-09 10:44 ` [PATCH 09/11] fsmc/nand:FIX: replace change_bit routine Vipin Kumar
2012-10-10 17:22   ` Linus Walleij
2012-10-10 20:21     ` Nicolas Pitre
2012-10-11  4:17       ` Vipin Kumar
2012-10-10 20:45     ` Russell King - ARM Linux
2012-10-11  4:20       ` Vipin Kumar [this message]
2012-10-09 10:44 ` [PATCH 10/11] fsmc/nand: Add sw bch support for ecc calculation/correction Vipin Kumar
2012-10-09 11:50   ` Jean-Christophe PLAGNIOL-VILLARD
2012-10-10 10:33     ` Vipin Kumar
2012-10-09 10:44 ` [PATCH 11/11] nand: Increase the ecc placement locations to 640 Vipin Kumar
2012-10-17 12:47   ` Artem Bityutskiy
2012-10-18  6:36   ` Brian Norris
2012-10-17 12:48 ` [PATCH 00/11] mtd/nand: fsmc driver updates Artem Bityutskiy
2012-10-18  4:13   ` Vipin Kumar

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=507648F5.1030404@st.com \
    --to=vipin.kumar@st.com \
    --cc=linux-arm-kernel@lists.infradead.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 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 NNTP newsgroup(s).