Lines 204-221
Link Here
|
204 |
return event_tracker != NULL && !event_tracker->is_queue; |
204 |
return event_tracker != NULL && !event_tracker->is_queue; |
205 |
} |
205 |
} |
206 |
|
206 |
|
207 |
static void put_user_pages(struct page **pages, NvU64 page_count) |
207 |
static void nv_put_user_pages(struct page **pages, NvU64 page_count) |
208 |
{ |
208 |
{ |
209 |
NvU64 i; |
209 |
#if ULONG_MAX == ULLONG_MAX |
210 |
for (i = 0; i < page_count; i++) |
210 |
put_user_pages(pages, (unsigned long)page_count); |
211 |
put_page(pages[i]); |
211 |
#else |
|
|
212 |
#error "This patch works only for 64 bits machines!" |
213 |
#endif |
212 |
} |
214 |
} |
213 |
|
215 |
|
214 |
static void unmap_user_pages(struct page **pages, void *addr, NvU64 size) |
216 |
static void unmap_user_pages(struct page **pages, void *addr, NvU64 size) |
215 |
{ |
217 |
{ |
216 |
size = DIV_ROUND_UP(size, PAGE_SIZE); |
218 |
size = DIV_ROUND_UP(size, PAGE_SIZE); |
217 |
vunmap((NvU8 *)addr); |
219 |
vunmap((NvU8 *)addr); |
218 |
put_user_pages(pages, size); |
220 |
nv_put_user_pages(pages, size); |
219 |
uvm_kvfree(pages); |
221 |
uvm_kvfree(pages); |
220 |
} |
222 |
} |
221 |
|
223 |
|
Lines 279-285
Link Here
|
279 |
uvm_kvfree(vmas); |
281 |
uvm_kvfree(vmas); |
280 |
|
282 |
|
281 |
if (ret > 0) |
283 |
if (ret > 0) |
282 |
put_user_pages(*pages, ret); |
284 |
nv_put_user_pages(*pages, ret); |
283 |
else if (ret < 0) |
285 |
else if (ret < 0) |
284 |
status = errno_to_nv_status(ret); |
286 |
status = errno_to_nv_status(ret); |
285 |
|
287 |
|