We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 31499b0 commit e3885f7Copy full SHA for e3885f7
drivers/gpu/drm/nouveau/nouveau_drv.h
@@ -189,21 +189,12 @@ u_free(void *addr)
189
static inline void *
190
u_memcpya(uint64_t user, unsigned int nmemb, unsigned int size)
191
{
192
- void *mem;
193
- void __user *userptr = (void __force __user *)(uintptr_t)user;
+ void __user *userptr = u64_to_user_ptr(user);
+ size_t bytes;
194
195
- size *= nmemb;
196
-
197
- mem = kvmalloc(size, GFP_KERNEL);
198
- if (!mem)
199
- return ERR_PTR(-ENOMEM);
200
201
- if (copy_from_user(mem, userptr, size)) {
202
- u_free(mem);
203
- return ERR_PTR(-EFAULT);
204
- }
205
206
- return mem;
+ if (unlikely(check_mul_overflow(nmemb, size, &bytes)))
+ return NULL;
+ return vmemdup_user(userptr, bytes);
207
}
208
209
#include <nvif/object.h>
0 commit comments