Message ID | 1417616785-5143-1-git-send-email-sasha.levin@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 12/03/2014 04:26 PM, Sasha Levin wrote: > All the bit operations (such as find_first_zero_bit()) read sizeof(long) bytes > at a time. If we allocated less than sizeof(long) bytes for the bitmask we > would be accessing invalid memory when working with the bitmask. > > Change the allocator to allocate sizeof(long) multiples for the bitmask. > > Signed-off-by: Sasha Levin <sasha.levin@oracle.com> > --- > drivers/gpu/drm/amd/amdkfd/kfd_pasid.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c b/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c > index 2458ab7..71699ad 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c > @@ -32,8 +32,7 @@ int kfd_pasid_init(void) > { > pasid_limit = max_num_of_processes; > > - pasid_bitmap = kzalloc(DIV_ROUND_UP(pasid_limit, BITS_PER_BYTE), > - GFP_KERNEL); > + pasid_bitmap = kzalloc(BITS_TO_LONGS(pasid_limit), GFP_KERNEL); > if (!pasid_bitmap) > return -ENOMEM; > > Thanks! Applied to my -next tree. Oded
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c b/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c index 2458ab7..71699ad 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c @@ -32,8 +32,7 @@ int kfd_pasid_init(void) { pasid_limit = max_num_of_processes; - pasid_bitmap = kzalloc(DIV_ROUND_UP(pasid_limit, BITS_PER_BYTE), - GFP_KERNEL); + pasid_bitmap = kzalloc(BITS_TO_LONGS(pasid_limit), GFP_KERNEL); if (!pasid_bitmap) return -ENOMEM;
All the bit operations (such as find_first_zero_bit()) read sizeof(long) bytes at a time. If we allocated less than sizeof(long) bytes for the bitmask we would be accessing invalid memory when working with the bitmask. Change the allocator to allocate sizeof(long) multiples for the bitmask. Signed-off-by: Sasha Levin <sasha.levin@oracle.com> --- drivers/gpu/drm/amd/amdkfd/kfd_pasid.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)