Skip to content

Commit

Permalink
[PATCH] m68knommu: fix find_next_zero_bit in bitops.h
Browse files Browse the repository at this point in the history
We're starting a number of big applications (memory footprint app.
1MByte) on our Arcturus uC5272.  Therefore memory fragmentation is a
real pain for us.  We've switched to uClinux-2.4.27-uc1 and found that
page_alloc2 fragments the memory heavily.

Digging into it we found a bug in the find_next_zero_bit function in the
m68knommu/bitops.h file.  if the size isn't a multiple of 32 than the
upper bits of the last word to be searched should be masked.  But the
functions masks the lower bits of the last word because it uses a right
shift instead of a left shift operator.

Patch submitted by Sascha Smejkal <s.smejkal@centersystems.at>

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Greg Ungerer authored and Linus Torvalds committed Jan 10, 2006
1 parent 845884d commit 3960f2f
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion include/asm-m68knommu/bitops.h
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ static __inline__ int find_next_zero_bit (const void * addr, int size, int offse
tmp = *p;

found_first:
tmp |= ~0UL >> size;
tmp |= ~0UL << size;
found_middle:
return result + ffz(tmp);
}
Expand Down

0 comments on commit 3960f2f

Please sign in to comment.