On Thu, Nov 09, 2006 at 12:02:45AM +0000, Xen patchbot-linux-ppc-2.6 wrote:

> +struct page *alloc_foreign_page(void)
> +{
> +     int bit;
> +     do {
> +             bit = find_first_zero_bit(foreign_map_bitmap,
> +                                       foreign_map_pgs);

bit should be 'unsigned long'.

> +             if (bit >= foreign_map_pgs)
> +                     return NULL;

I would print a message that the allocator has been exhausted here -
it's a common source of bugs. Also, tiny optimization, but perhaps you
next fit rather than first fit?

> +     } while (test_and_set_bit(bit, foreign_map_bitmap) == 1);
> +
> +     return pfn_to_page(foreign_map_pfn + bit);
> +}
> +
> +void free_foreign_page(struct page *page)
> +{
> +     int bit = page_to_pfn(page) - foreign_map_pfn;
> +
> +     BUG_ON(bit < 0);
> +     BUG_ON(bit >= foreign_map_pgs);

I would add BUG_ON(!test_bit(bit, foreign_map_bitmap)) here to catch
another common source of bugs.

Cheers,
Muli

_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@lists.xensource.com
http://lists.xensource.com/xen-ppc-devel

Reply via email to