aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-iops.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-10-10 16:39:22 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-10-10 16:39:22 -0400
commit1a7809e3499921a016d203b9ee51a77d3cc1dc98 (patch)
tree5b9186f201cb85565f9f85c0bd1e8679bb204645 /drivers/ide/ide-iops.c
parent3c619ffd48d7fdb3b17f0df67c4eb4b0bd80e253 (diff)
ide: re-code ide_fixstring() loop to be less evil
On Friday 25 July 2008, Linus Torvalds wrote: > > On Fri, 25 Jul 2008, Ben Dooks wrote: > > > > personally, i would much prefer to see the loop being less evil > > like: > > > > for (p = s; p < end; p += 2) > > be16_to_cpus((u16 *)p); > > Well, in this case, the code actually depends on 'p' being back at the > start of the buffer by the end of it all, so it would need some more > changes than that. > > But yes, I applied David's patch, but I _also_ suspect that we would be > better off without code that does horrid things like casts and assignments > inside the function arguments. > > So it would be nice to re-code that loop to be more readable. But due to > the reliance of 'p' being 's' after the loop, the minimal patch would be > something like the appended. > > Bartlomiej - take this or not, I'm not going to commit it - I haven't > tested it, nor do I even have any machines that would trigger it. So this > is more a "maybe something like this" than anything else. From: Linus Torvalds <torvalds@linux-foundation.org> CC: Ben Dooks <ben-linux@fluff.org> Cc: David Miller <davem@davemloft.net> Cc: harvey.harrison@gmail.com Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/ide-iops.c')
-rw-r--r--drivers/ide/ide-iops.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
index 8cfa6125c7a4..004803030f64 100644
--- a/drivers/ide/ide-iops.c
+++ b/drivers/ide/ide-iops.c
@@ -423,14 +423,16 @@ void ide_fix_driveid(u16 *id)
423 423
424void ide_fixstring (u8 *s, const int bytecount, const int byteswap) 424void ide_fixstring (u8 *s, const int bytecount, const int byteswap)
425{ 425{
426 u8 *p = s, *end = &s[bytecount & ~1]; /* bytecount must be even */ 426 u8 *p, *end = &s[bytecount & ~1]; /* bytecount must be even */
427 427
428 if (byteswap) { 428 if (byteswap) {
429 /* convert from big-endian to host byte order */ 429 /* convert from big-endian to host byte order */
430 for (p = end ; p != s;) 430 for (p = s ; p != end ; p += 2)
431 be16_to_cpus((u16 *)(p -= 2)); 431 be16_to_cpus((u16 *) p);
432 } 432 }
433
433 /* strip leading blanks */ 434 /* strip leading blanks */
435 p = s;
434 while (s != end && *s == ' ') 436 while (s != end && *s == ' ')
435 ++s; 437 ++s;
436 /* compress internal blanks and strip trailing blanks */ 438 /* compress internal blanks and strip trailing blanks */