diff --git a/drivers/gpu/msm/kgsl_timeline.c b/drivers/gpu/msm/kgsl_timeline.c index 0c9be32d9b90..e9ec5ce3b007 100644 --- a/drivers/gpu/msm/kgsl_timeline.c +++ b/drivers/gpu/msm/kgsl_timeline.c @@ -23,14 +23,14 @@ struct kgsl_timeline_fence { }; struct dma_fence *kgsl_timelines_to_fence_array(struct kgsl_device *device, - u64 timelines, u64 count, u64 usize, bool any) + u64 timelines, u32 count, u64 usize, bool any) { void __user *uptr = u64_to_user_ptr(timelines); struct dma_fence_array *array; struct dma_fence **fences; int i, ret = 0; - if (!count) + if (!count || count > INT_MAX) return ERR_PTR(-EINVAL); fences = kcalloc(count, sizeof(*fences), diff --git a/drivers/gpu/msm/kgsl_timeline.h b/drivers/gpu/msm/kgsl_timeline.h index 4392833f2a04..064dad37ea6c 100644 --- a/drivers/gpu/msm/kgsl_timeline.h +++ b/drivers/gpu/msm/kgsl_timeline.h @@ -108,6 +108,6 @@ static inline void kgsl_timeline_put(struct kgsl_timeline *timeline) * encapsulated timeline fences to expire. */ struct dma_fence *kgsl_timelines_to_fence_array(struct kgsl_device *device, - u64 timelines, u64 count, u64 usize, bool any); + u64 timelines, u32 count, u64 usize, bool any); #endif