summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bsd-core/drm_bufs.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/bsd-core/drm_bufs.c b/bsd-core/drm_bufs.c
index c9b5dc4e..60f57cfd 100644
--- a/bsd-core/drm_bufs.c
+++ b/bsd-core/drm_bufs.c
@@ -1099,11 +1099,12 @@ int drm_mapbufs(struct drm_device *dev, void *data, struct drm_file *file_priv)
int drm_order(unsigned long size)
{
int order;
- unsigned long tmp;
- for (order = 0, tmp = size; tmp >>= 1; ++order);
+ if (size == 0)
+ return 0;
- if (size & ~(1 << order))
+ order = ffsl(size) - 1;
+ if (size & ~(1ul << order))
++order;
return order;